BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Nguyễn Ngọc Điệp

NGHIÊN CỨU, XÂY DỰNG GIẢI PHÁP TÍCH HỢP MẬT MÃ VÀO QUÁ TRÌNH TRUYỀN TIN ĐẢM BẢO AN TOÀN THÔNG TIN TRÊN MẠNG MÁY TÍNH

LUẬN ÁN TIẾN SĨ KỸ THUẬT

Hà Nội - 2017

BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Nguyễn Ngọc Điệp

NGHIÊN CỨU, XÂY DỰNG GIẢI PHÁP TÍCH HỢP MẬT MÃ VÀO QUÁ TRÌNH TRUYỀN TIN ĐẢM BẢO AN TOÀN THÔNG TIN TRÊN MẠNG MÁY TÍNH

CHUYÊN NGÀNH: HỆ THỐNG THÔNG TIN

LUẬN ÁN TIẾN SĨ KỸ THUẬT

MÃ SỐ: 62.48.01.04

NGƯỜI HƯỚNG DẪN KHOA HỌC:

PGS.TS HOÀNG MINH

Hà Nội - 2017

ii

LỜI CAM ĐOAN

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Các nội dung, số

liệu và kết quả nghiên cứu trình bày trong luận án là hoàn toàn trung thực và chưa có

tác giả nào công bố trong bất cứ một công trình nào khác, các dữ liệu tham khảo được

trích dẫn đầy đủ.

Người cam đoan Nguyễn Ngọc Điệp

i

LỜI CẢM ƠN

Luận án này được thực hiện tại Học viện Công nghệ Bưu chính Viễn thông - Bộ

Thông tin và Truyền thông.

Nghiên cứu sinh xin được bày tỏ lòng biết ơn sâu sắc đến Thầy giáo PGS. TS.

Hoàng Minh đã tận tình hướng dẫn, giúp đỡ, trang bị phương pháp nghiên cứu, kiến

thức khoa học để tôi hoàn thành các nội dung nghiên cứu của luận án.

Nghiên cứu sinh xin bày tỏ lòng biết ơn chân thành tới các thầy, cô của Học

viện Công nghệ Bưu chính Viễn thông, các nhà khoa học thuộc Viện Khoa học - Công

nghệ mật mã, Học viện Kỹ thuật mật mã đã đóng góp nhiều ý kiến quý báu giúp tôi

hoàn thành các nội dung nghiên cứu của luận án.

Nghiên cứu sinh xin trân trọng cảm ơn Học viện Công nghệ Bưu chính Viễn

thông, Khoa Khoa Quốc tế và Đào tạo Sau đại học là cơ sở đào tạo và đơn vị quản lý,

các đồng chí Lãnh đạo Viện Khoa học - Công nghệ mật mã, nơi tôi đang công tác đã

tạo điều kiện thuận lợi, hỗ trợ và giúp đỡ tôi trong suốt quá trình học tập, nghiên cứu

thực hiện luận án.

Tôi xin trân trọng cảm ơn các bạn bè người thân và gia đình đã cổ vũ, động viên

giúp đỡ, tạo điều kiện cho tôi hoàn thành luận án.

Nghiên cứu sinh

ii

MỤC LỤC

LỜI CAM ĐOAN ............................................................................................................ i

LỜI CẢM ƠN ................................................................................................................. ii

MỤC LỤC ...................................................................................................................... iii

DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT .................................................... vi

DANH MỤC CÁC HÌNH VẼ...................................................................................... viii

DANH MỤC CÁC BẢNG ............................................................................................. ix

MỞ ĐẦU .......................................................................................................................... 1

CHƯƠNG I: TỔNG QUAN VỀ GIẢI PHÁP CAN THIỆP MẬT MÃ VÀO HỆ THỐNG MẠNG DÙNG GIAO THỨC TCP/IP .............................................................. 7 1.1. TỔNG QUAN VỀ AN TOÀN THÔNG TIN TRÊN MẠNG .................................. 7 1.1.1. Một số khái niệm cơ bản về an toàn thông tin ....................................................... 7 1.1.2. Các nguy cơ mất an toàn thông tin ......................................................................... 8 1.1.3. Các hình thức tấn công thông tin trên mạng .......................................................... 8 1.1.4. Một số biện pháp an toàn ..................................................................................... 10 1.1.5. Các dịch vụ an toàn .............................................................................................. 10 1.1.5.1. Dịch vụ bí mật ................................................................................................... 11 1.1.5.2. Dịch vụ xác thực ................................................................................................ 12 1.1.5.3. Dịch vụ toàn vẹn dữ liệu. .................................................................................. 13 1.1.5.4. Dịch vụ không thể chối bỏ ................................................................................. 14 1.1.5.5. Dịch vụ kiểm soát truy nhập ............................................................................. 14 1.2. TÍCH HỢP MẬT MÃ VÀO HỆ THỐNG MẠNG DÙNG GIAO THỨC TCP/IP 15 1.2.1. Cấu trúc giao thức TCP/IP ................................................................................... 15 1.2.2. Tích hợp mật mã vào các tầng của giao thức TCP/IP .......................................... 17 1.2.2.1. Tích hợp mật mã vào tầng ứng dụng ................................................................ 19 1.2.2.2. Tích hợp mật mã vào tầng vận tải ..................................................................... 20 1.2.2.3. Tích hợp mật mã vào tầng Internet ................................................................... 21 1.2.2.4. Tích hợp mật mã vào tầng truy nhập mạng ...................................................... 22 1.2.3. Cài đặt các dịch vụ an toàn dùng kỹ thuật mật mã .............................................. 22 1.3. GIẢI PHÁP BẢO MẬT DỮ LIỆU TRÊN ĐƯỜNG TRUYỀN ............................ 27 1.3.1. Một số chuẩn về an toàn và bảo mật thông tin..................................................... 27 1.3.2. Chuẩn về an toàn tầng vận tải SSL/TLS .............................................................. 31 1.3.2.1. Giới thiệu bộ giao thức ..................................................................................... 31 1.3.2.2. Các thành phần trong giao thức SSL ................................................................ 31 1.3.3. Một số tấn công cơ bản đối với giao thức SSL .................................................... 34 1.3.3.1. Tấn công quay lui phiên bản, quay lui thuật toán mã hóa. .............................. 34

iii

1.3.3.2. Tấn công làm mất thông điệp ChangeCipherSpec............................................ 35 1.3.3.3. Tấn công quay lui thuật toán trao đổi khoá ...................................................... 36 1.3.3.4. Tấn công padding CBC ..................................................................................... 37 1.3.3.5. Lỗ hổng HeartBleed trong OpenSSL ................................................................ 38 1.3.4. Giải pháp tích hợp mật mã nâng cao độ an toàn và hiệu quả cho bộ giao thức SSL/TLS ......................................................................................................................... 40 KẾT LUẬN CHƯƠNG 1 ............................................................................................... 42

CHƯƠNG II: NÂNG CAO HIỆU QUẢ THỰC THI, ĐỘ AN TOÀN CỦA CÁC THAM SỐ HỆ MẬT RSA VÀ THUẬT TOÁN MÃ KHỐI ......................................... 44 2.1. GIỚI THIỆU CHUNG ............................................................................................ 44 2.2. XÂY DỰNG TIÊU CHUẨN THAM SỐ CHO HỆ MẬT RSA ............................ 46 2.2.1. Một số tiêu chuẩn tham số RSA an toàn đã được công bố .................................. 47 2.2.2. Phương pháp xác định ngưỡng an toàn của Lenstra và Verheul ......................... 49 2.2.2.1. Ngưỡng an toàn ................................................................................................. 49 2.2.2.2. Độ dài modulo của hệ mật RSA ........................................................................ 50 2.2.2.3. Bảng tính ngưỡng an toàn và độ dài modulo an toàn cho hệ mật RSA ............ 51 2.2.3. Xác định ngưỡng an toàn theo quan điểm riêng .................................................. 51 2.2.3.1. Luận cứ xác định đối tượng tấn công ............................................................... 51 2.2.3.2. Công thức xác định các ngưỡng an toàn cho đến năm y (y2016) .................. 52 2.2.4. Phương pháp mã hóa liên tiếp và tiêu chuẩn cho số công khai ........................... 55 2.2.4.1. Một số công thức, định nghĩa ............................................................................ 55 2.2.4.2. Giải bài toán RSA bằng phương pháp mã hóa liên tiếp ................................... 56 2.2.4.3. Phân tích modulo n của hệ RSA bằng phương pháp mã hóa liên tiếp ............. 57 2.2.4.4. Tiêu chuẩn cho tham số e .................................................................................. 59 2.3. MỘT ĐỀ XUẤT MA TRẬN AN TOÀN, HIỆU QUẢ CHO TẦNG TUYẾN TÍNH TRONG CÁC MÃ PHÁP DẠNG AES .............................................................. 61 2.3.1. Một số định nghĩa, khái niệm ............................................................................... 63 2.3.2. Phép MixColumns sử dụng ma trận dịch vòng và ma trận tựa vòng 4x4 ............ 64 2.3.3. Phân tích phép biến đổi MixColumns của AES ................................................... 66 2.3.4. Đề xuất ma trận tuyến tính tựa vòng cho AES .................................................... 68 2.3.5. Đánh giá cài đặt theo quan điểm phần mềm ........................................................ 71 2.3.6. Đánh giá về độ an toàn, số điểm bất động của tầng tuyến tính ............................ 74 2.3.7. Kết quả cài đặt thực nghiệm ................................................................................. 76 KẾT LUẬN CHƯƠNG 2 ............................................................................................... 79

CHƯƠNG III: TÍCH HỢP MẬT MÃ TRONG GIAO THỨC VÀ BỘ PHẦN MỀM BẢO MẬT DỮ LIỆU TRÊN ĐƯỜNG TRUYỀN ........................................................ 81 3.1. BỘ PHẦN MỀM OPENVPN ................................................................................. 81 3.1.1. Giới thiệu bộ phần mềm OpenVPN ..................................................................... 81 3.1.2. Sơ đồ tổng quát .................................................................................................... 82 3.1.3. Sơ đồ dòng dữ liệu ............................................................................................... 83

iv

3.2. MỘT SỐ MODULE CHÍNH TRONG BỘ PHẦN MỀM ...................................... 85 3.2.1. Module VPN Daemon - Vận hành VPN theo cơ chế dịch vụ hệ thống ............... 85 3.2.2. Module TUN/TAP - quản lý giao diện mạng ảo .................................................. 87 3.2.3. Trao đổi khoá trong OpenVPN ............................................................................ 89 3.2.4. Mã hoá trong OpenVPN....................................................................................... 90 3.2.5. Xác thực tính toàn vẹn gói dữ liệu trong OpenVPN ............................................ 90 3.2.6. Giao thức trong OpenVPN ................................................................................... 91 3.3. TÍCH HỢP THAM SỐ RSA AN TOÀN VÀ THUẬT TOÁN MÃ KHỐI BC_VPN TRONG GIAO THỨC SSL/TLS. ................................................................. 93 3.3.1. Sử dụng tham số RSA an toàn trong giao thức SSL/TLS .................................... 94 3.3.2. Tích hợp thuật toán mã khối BC_VPN vào trong bộ giao thức SSL/TLS. .......... 98 3.3.3. Thử nghiệm, đánh giá bộ phần mềm bảo mật đường truyền PMBM_VPN. ..... 100 KẾT LUẬN CHƯƠNG III........................................................................................... 105

KẾT LUẬN .................................................................................................................. 107 A. Các kết quả Luận án đã đạt được: ........................................................................... 107 B. Những đóng góp mới của luận án: .......................................................................... 108 C. Hướng nghiên cứu tiếp theo: ................................................................................... 108

DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ ............................. 109

TÀI LIỆU THAM KHẢO ............................................................................................ 110

PHỤ LỤC: CÁC MODULE CHƯƠNG TRÌNH, KẾT QUẢ THỬ NGHIỆM .......... 115

v

DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT

Lực lượng của a Lực lượng của b

#(a) #(b) #{(X,Y)} Lực lượng của tập X, Y #S

Số các phần tử của S Vành số nguyên với phép cộng và phép nhân rút gọn theo modulo N

Gcd(a,b) Ước số chung lớn nhất của a và b Lmc(a,b) Bội số chung nhỏ nhất của a và b AES ACL DLP DoS DDoS Advanced Encryption Standard Access Control List Discrete Logarithm Problem Denial of Service Distributed Denial of Service

Nhóm nhân cực đại của của vành N là bội của e, còn e là ước của N Chuẩn mã hóa dữ liệu mở rộng Danh sách điều khiển truy nhập Bài toán Logarith rời rạc Tấn công từ chối dịch vụ Tấn công từ chối dịch vụ phân tán Hệ mật Elliptic Đóng gói mã hóa dữ liệu

ECC ESP FPGA HMAC Hàm băm có xác thực

KDF IKE IDPS Elliptic Curve Cryptosystem Encapsulating Security Payload Field Programmable Gate Array Mảng cổng lập trình dạng trường Hash Message Authentication Code Key Derivation Function Internet Key Exchange Intruction Detection Prevention System

Hàm dẫn xuất khóa Trao đổi khóa trên Internet Hệ thống phát hiện và ngăn chặn truy cập Giao thức liên mạng Giao thức bảo mật IP Tổ chức tiêu chuẩn quốc tế IP IPSec ISO

Internet Protocol Internet Protocol Security International Organization for Standardization Local Area Network Maximum Distance Separable Man In The Middle Multi Protocol Label Switching Open System Interconnection

LAN MDS MITM MPLS OSI

Quality Of Service Mạng cục bộ Phân tách có khoảng cách cực đại Tấn công kẻ đứng giữa Chuyển mạch nhãn đa giao thức Mô hình tương tác giữa các hệ thống mở. Chất lượng dịch vụ

QoS

vi

SPN Mạng thay thế - hoán vị

Substitution Permutation Network Secure Sockets Layer Rivest, Shamir and Adlemen Transport Control Protocol Transport Layer Security User Datagram Protocol Virtual Networking Interface Virtual Private Network Giao thức bảo mật tầng Socket Hệ mật khóa công khai RSA Giao thức điều khiển truyền tin Giao thức bảo mật tầng vận tải Giao thức gói dữ liệu người dùng Giao diện mạng ảo Mạng riêng ảo

SSL RSA TCP TLS UDP VNI VPN

vii

DANH MỤC CÁC HÌNH VẼ

Hình 1.1: Các hình thức tấn công thông tin trên mạng máy tính ................................... 9

Hình 1.2: Cấu trúc của giao thức TCP/IP .................................................................... 16

Hình 1.3: Cấu trúc gói tin IP ........................................................................................ 17

Hình 1.4: Mô hình bảo mật thông tin dùng kỹ thuật mật mã ........................................ 23

Hình 1.5: Mô hình mã hóa khóa đối xứng .................................................................... 24

Hình 1.6: Mô hình mã hoá dùng khoá công khai .......................................................... 25

Hình 1.7: Giao thức bắt tay SSL ................................................................................... 32

Hình 1.8: Giao thức bản ghi SSL .................................................................................. 33

Hình 1.9: Tấn công ChangeCipherSpec ....................................................................... 35

Hình 1.10: Tấn công quay lui thuật toán trao đổi khóa ............................................... 37

Hình 3.1: Sơ đồ khối tổng quát của OpenVPN ............................................................. 82

Hình 3.2: Sơ đồ dòng dữ liệu được tương tác xử lý trong OpenVPN ........................... 84

Hình 3.3: Sơ đồ khối của VPN Daemon ....................................................................... 86

Hình 3.4: Sơ đồ khối hoạt động của module TUN/TAP ................................................ 88

Hình 3.5: Lưu đồ mã hoá và xác thực của OpenVPN ................................................... 91

Hình 3.6: Lưu đồ giải mã và xác thực trong OpenVPN ............................................... 91

Hình 3.7: UDP/TCP Format ......................................................................................... 92

Hình 3.8: Tích hợp tham số RSA và thuật toán mã khối trong OpenVPN .................... 93

Hình 3.9: Lưu đồ mã hoá và xác thực gói tin trong PMBM_VPN ............................... 98

Hình 3.10: Lưu đồ giải mã và xác thực gói tin trong PMBM_VPN ............................. 99

Hình 3.11: Đóng gói và bảo vệ gói tin IP trong PMBM_VPN ..................................... 99

Hình 3.12: Mô hình thử nghiệm phần mềm PMBM_VPN .......................................... 100

Hình 3.13: Cấu hình cho VPN Server ......................................................................... 102

Hình 3.14: Cấu hình cho VPN Client ......................................................................... 102

Hình 3.15: Trạng thái hiện thời của hệ thống VPN đã kết nối thành công ................ 103

Hình 3.16: Tốc độ của phần mềm PMBM_VPN (1 luồng) ......................................... 104

Hình 3.17: Tốc độ của phần mềm PMBM_VPN (4 luồng) ......................................... 104

viii

DANH MỤC CÁC BẢNG

Bảng 1.1. Bảo vệ các thành phần của gói IP trong giao thức TCP/IP

18

Bảng 1.2. Các dịch vụ an toàn được cài đặt tại các tầng trong giao thức 18

TCP/IP

Bảng 2.1. Bảng tính a(y) và n(y) cho lĩnh vực kinh tế - xã hội 51

của Lenstra và Verheul

Bảng 2.2. Bảng tính các giá trị a(y) và n(y) cho lĩnh vực kinh tế - xã hội 54

Bảng 2.3. Bảng tính các giá trị ngưỡng an toàn theo các phương pháp 54

70 Bảng 2.4. Danh sách 16 đa thức nguyên thủy bậc 8 trên

Bảng 2.5. So sánh cài đặt kiểu bit-slice các ma trận MDS 4x4 74

Bảng 2.6. Kết quả cài đặt thực nghiệm thuật toán cho 1 vòng mã hóa 76

Bảng 2.7. Kết quả cài đặt thực nghiệm tốc độ mã hóa của BC_VPN 77

Bảng 2.8. Số lượng S-hộp tích cực vi sai và độ phức tạp trước thám mã vi 78

sai của AES và BC_VPN

Bảng 2.9. Số lượng S-hộp tích cực vi sai và độ phức tạp trước thám mã 79

tuyến tínhcủa AES và BC_VPN

105 Bảng 3.1. So sánh tốc độ từ PMBM_VPN client đến PMBM_VPN server

ix

MỞ ĐẦU

1.1 Tính cấp thiết của đề tài luận án

Mạng máy tính là một hệ thống mở bao gồm nhiều máy tính và các thiết bị

được kết nối với nhau nhằm chia sẻ tài nguyên chung và liên lạc với nhau. Mạng

máy tính đã kết hợp được khả năng xử lý thông tin của các máy tính đơn lẻ và chức

năng truyền thông. Các mạng máy tính ở Việt nam hiện nay chủ yếu là các mạng sử

dụng hệ điều hành Windows, Linux, Unix với bộ giao thức truyền thông TCP/IP.

Sự phát triển bùng nổ của Internet đã tạo điều kiện cho các loại hình xâm

nhập trái phép vào các hệ thống công nghệ thông tin cả về chiều rộng (lây lan trên

quy mô toàn thế giới) lẫn chiều sâu (can thiệp vào hạt nhân hệ thống đích). Mỗi

ngày, các hệ thống mạng phải đối phó với hàng loạt đợt tấn công của tin tặc, khiến

nhiều hệ thống bị đình trệ, tắc nghẽn và tê liệt, gây ra những tổn hại to lớn. Các

phương thức tấn công ngày càng tinh vi, phức tạp có thể dẫn đến mất mát, sai lệch

thông tin, thậm chí có thể làn sụp đổ hoàn toàn hệ thống thông tin của các cơ quan

chính phủ, các ngân hàng, doanh nghiệp. Trong quá trình đẩy mạnh ứng dụng, phát

triển công nghệ thông tin, hội nhập quốc tế, với sự phát triển nhanh chóng của các

mạng thông tin truyền thông, các hệ thống thông tin phân tán và đặc biệt là mạng

thông tin toàn cầu Internet thì nhu cầu đảm bảo an ninh an toàn thông tin càng trở

lên cấp thiết. An toàn thông tin một vấn đề vừa mang tính thời sự, vừa mang tính

thách thức không chỉ đối với các chuyên gia tin học mà còn đối với sự phát triển của

các hệ thống thông tin toàn cầu.

Đã từ lâu vấn đề bảo mật thông tin là một công việc quan trọng đối với mọi

Quốc gia, nó nhằm mục đích giữ cho thông tin được an toàn bằng kỹ thuật mật mã.

Khi chưa có mạng máy tính, thông tin được lưu trữ trên các máy tính được bảo vệ

chủ yếu bằng các biện pháp vật lý, nghiệp vụ. Các thông tin cần giữ bí mật sẽ được

mã hóa trước khi truyền trên kênh công khai. Khi các máy tính được kết nối với

nhau thành mạng, do nhu cầu sử dụng tài nguyên chung và liên lạc với nhau, các

thông tin trên mỗi máy tính dễ dàng bị truy nhập từ một máy tính khác. Đồng thời,

1

các thông tin trao đổi trên môi trường mạng cũng dễ dàng bị đánh cắp, sửa đổi, giả

mạo [51], [53], [62], [63].

An toàn mạng máy tính là tổng thể các giải pháp về mặt tổ chức và kỹ thuật

nhằm ngăn cản mọi nguy cơ làm tổn hại đến hệ thống mạng. Sự cần thiết phải hội

nhập các dịch vụ vào cùng một hạ tầng cơ sở mạng thống nhất (tất cả trong một) là

một xu thế tất yếu. Các nhà quản lý, cung cấp dịch vụ mạng cố gắng triển khai

những công nghệ mới nhất vào hạ tầng cơ sở mạng của mình, an ninh mạng trở

thành một chức năng then chốt trong việc xây dựng và duy trì các mạng hiện đại

của mọi tổ chức. Các nguyên tắc nền tảng để xây dựng hệ thống mạng an toàn bao

gồm: tính bí mật, tính toàn vẹn, tính sẵn sàng [7], [8], [26], [49], [53]. Tùy thuộc

vào từng ứng dụng, dịch vụ và hoàn cảnh cụ thể, mà các nguyên tắc này sẽ được

xác định mức độ quan trọng khác nhau.

Vấn đề bảo vệ thông tin bằng mật mã đã và đang được nhiều quốc gia trên

thế giới đặc biệt quan tâm, đã có rất nhiều các nghiên cứu tạo ra các chuẩn bảo mật,

các hệ mật và các giải pháp bảo mật cho hệ thống mạng. Song theo quan điểm mật

mã, chúng ta không thể sử dụng các sản phẩm bảo mật thông tin của nước ngoài để

bảo mật thông tin trên mạng thuộc phạm vi bí mật Nhà nước như: lĩnh vực An ninh

Quốc phòng. Vấn đề đặt ra là chúng ta phải chủ động tạo ra các sản phẩm bảo mật

thông tin trên mạng máy tính, với các module mật mã kiểm soát hoàn toàn và độ an

toàn của sản phẩm do các module mật mã quyết định.

Nhận thấy sự cấp thiết, tính thời sự của lĩnh vực an toàn, bảo mật thông tin

trên mạng máy tính và nhu cầu thực tế công tác, nghiên cứu sinh đã lựa chọn luận

án: “Nghiên cứu, xây dựng giải pháp tích hợp mật mã vào quá trình truyền tin

đảm bảo an toàn thông tin trên mạng máy tính”.

1.2 Mục tiêu nghiên cứu

Bảo vệ thông tin trên kênh truyền công khai là chức năng chính của bài toán

tích hợp mật mã để bảo mật thông tin trên mạng. Cốt lõi của quá trình này là can

thiệp kỹ thuật mật mã nhằm mã hóa và giải mã các thông tin cần bảo vệ.

2

Mục tiêu chính của Luận án là:

- Nghiên cứu, lựa chọn giải pháp tích hợp mật mã vào mô hình mạng TCP/IP

để bảo mật dữ liệu trên đường truyền.

- Nghiên cứu đề xuất giải pháp nâng cao tính an ninh, an toàn và hiệu quả

thực thi các thuật toán mật mã trong bảo mật thông tin trên mạng.

1.3 Đối tượng nghiên cứu

Mô hình, hệ thống mạng sử dụng bộ giao thức TCP/IP cần bảo đảm an ninh,

an toàn. Các chuẩn giao thức bảo mật mạng, tập trung vào các giải pháp mật mã và

khả năng tích hợp các thành tố mật mã vào bộ giao thức SSL/TLS để bảo mật dữ

liệu trên đường truyền.

1.4 Phạm vi nghiên cứu

- Luận án tập trung vào nghiên cứu, lựa chọn giải pháp tích hợp mật mã vào

giao thức bảo mật dữ liệu trên đường truyền trong mô hình mạng TCP/IP.

- Nghiên cứu đề xuất giải pháp nâng cao hiệu quả thực thi, độ an toàn của giao

thức SSL/TLS, hệ mật RSA và thuật toán mã hóa dữ liệu cho bài toán bảo

mật dữ liệu trên đường truyền.

1.5 Cách tiếp cận và phương pháp nghiên cứu

- Tổng hợp các kết quả nghiên cứu mới, các giải pháp về an toàn và bảo mật

thông tin trên các máy tính và trên hệ thống mạng.

- Trên cơ sở kiến trúc an ninh chung của mô hình OSI, các giao thức bảo mật

mạng, thông qua khảo sát, phân tích, đánh giá các kết quả đã nghiên cứu từ

đó đề xuất giải pháp nâng cao hiệu quả bảo mật dữ liệu trên đường truyền.

- Dựa trên phương pháp phân tích lý thuyết (sử dụng lý thuyết và kỹ thuật mật

mã hiện đại), tính toán giải tích, chứng minh bằng toán học và kiểm chứng

thông qua việc cài đặt, thử nghiệm thực tế để chứng minh tính đúng đắn,

hiệu quả của các kết quả nghiên cứu.

3

1.6 Nội dung nghiên cứu

- Nghiên cứu, lựa chọn giải pháp tích hợp mật mã vào giao thức bảo mật dữ

liệu trên đường truyền trong mô hình mạng TCP/IP để bảo mật thông tin trên

mạng. Phân tích cấu trúc giao thức SSL/TLS, các điểm yếu an ninh và một

số tấn công cơ bản dựa trên các điểm yếu còn tồn tại của bộ giao thức.

- Nghiên cứu đề xuất giải pháp để nâng cao hiệu quả thực thi các thuật toán

mật mã, đảm bảo hiệu quả về tốc độ, độ an toàn và bảo mật cho bài toán bảo

mật dữ liệu trên đường truyền.

- Thiết kế và xây dựng bộ chương trình thử nghiệm giải pháp bảo mật dữ liệu

trên đường truyền với thuật toán mã khối và tham số mật mã được nghiên

cứu đề xuất.

- Thử nghiệm, đánh giá độ an toàn và hiệu quả của bộ chương trình bảo mật

dữ liệu trên đường truyền.

1.7 Ý nghĩa khoa học và thực tiễn

- Ý nghĩa khoa học: Quá trình nghiên cứu luận án sẽ cho thấy rõ cơ sở khoa

học của việc nghiên cứu, đề xuất cải tiến thuật toán mật mã và ứng dụng một

số nguyên thủy mật mã vào bài toán bảo mật thông tin trên đường truyền.

- Ý nghĩa thực tiễn: Cải tiến, nâng cao tốc độ tính toán, hiệu năng thực thi các

thuật toán mật mã đảm bảo tính hiệu quả, giảm thời gian tính toán và tài

nguyên của hệ thống đồng thời tăng cường tính an toàn, bảo mật cho bộ giao

thức SSL/TLS đáp ứng bài toán bảo mật dữ liệu trên đường truyền.

Giải pháp tích hợp mật mã để bảo mật thông tin trên đường truyền của luận

án cho phép chúng ta xây dựng các mạng cục bộ, mạng diện rộng có độ an toàn cao

dựa trên kênh truyền Internet và các mạng công cộng khác. Hơn nữa, giải pháp này

cho phép ta bảo mật được cơ bản các ứng dụng, dịch vụ truyền tin trên mạng dùng

giao thức TCP/IP bao gồm cả hình ảnh động, âm thanh mà không can thiệp vào cấu

trúc của ứng dụng. Điều này đã giải quyết được yêu cầu thực tế ở Việt Nam, có rất

nhiều ứng dụng cần được bảo vệ thông tin nhưng chúng ta không được can thiệp

mật mã vào cấu trúc của nó.

4

1.8 Giới thiệu bố cục của luận án

Bố cục của luận án gồm Lời nói đầu, 3 chương nội dung, phần Kết luận, Danh

mục các công trình, bài báo khoa học đã công bố của nghiên cứu sinh và phần Phụ

lục của luận án.

Phần mở đầu: Phân tích tình hình hiện tại, tính cấp thiết của vấn đề nghiên cứu

và đề xuất nhiệm vụ nghiên cứu.

Chương 1: Tổng quan về giải pháp can thiệp mật mã vào hệ thống mạng dùng

giao thức TCP/IP.

Chương này hệ thống hóa các khái niệm cơ bản về an ninh an toàn trên mạng

máy tính. Phân tích bộ giao thức TCP/IP và khả năng tích hợp mật mã vào các tầng

trong mô hình giao thức TCP/IP để bảo mật thông tin;

Phân tích bộ giao thức SSL/TLS, các thành phần cơ bản trong bộ giao thức,

chỉ ra những điểm yếu mất an ninh, an toàn trong giao thức và những giải pháp khắc

phục. Xác định rõ vai trò của hệ mật RSA và thuật toán mã khối trong giao thức

SSL/TLS để xây dựng ứng dụng bảo mật dữ liệu trên đường truyền.

Chương 2: Nâng cao hiệu quả thực thi, độ an toàn của các tham số hệ mật

RSA và thuật toán mã khối.

Trong chương này, luận án trình bày một số kết quả nghiên cứu đề xuất mới

về tiêu chuẩn số mũ công khai trong hệ mật RSA trong lĩnh vực kinh tế - xã hội và

thuật toán mã hóa dữ liệu định hướng cho ứng dụng bảo mật dữ liệu trên đường

truyền.

- Thứ nhất, luận án đưa ra một tiêu chuẩn mới đối với số mũ công khai trong hệ

mật RSA (kết quả nghiên cứu được đăng trong bài báo số 05) và cập nhật bổ

sung giả thiết xác định độ dài modulo an toàn.

- Thứ hai, luận án nghiên cứu đề xuất được ma trận an toàn và cài đặt hiệu quả

dựa trên ma trận tựa vòng cho tầng tuyến tính trong các mã khối dạng AES

(kết quả nghiên cứu được đăng trong bài báo số 06).

Chương 3: Tích hợp mật mã trong giao thức và bộ phần mềm bảo mật dữ liệu

trên đường truyền.

5

Chương 3 tập trung phân tích mô hình, cấu trúc hoạt động của bộ phần mềm

OpenVPN. Kiểm soát và từng bước làm chủ bộ phần mềm mã nguồn mở. Thực hiện

các giải pháp tích hợp mật mã vào các thành phần trong bộ phần mềm OpenVPN.

- Cài đặt, tích hợp bộ tham số an toàn của hệ mật RSA vào quá trình xác thực,

trao đổi khóa trong bộ giao thức SSL/TLS.

- Xây dựng bộ phần mềm thử nghiệm bảo mật đường truyền dựa trên công nghệ

OpenVPN có tích hợp các tham số và thuật toán mã khối an toàn, hiệu quả

khắc phục được một số điểm yếu của bộ giao thức SSL/TLS đã phân tích; Thử

nghiệm và đánh giá tính an ninh an toàn và hiệu năng của bộ phần mềm.

Phần kết luận: Trình bày những kết quả nghiên cứu chính của luận án, nêu bật

các đóng góp mới của luận án và định hướng nghiên cứu tiếp theo.

Phần Phụ lục: Trình bày một số kết quả cài đặt, thử nghiệm thuật toán tích

hợp vào bộ phần mềm bảo mật dữ liệu trên đường truyền.

6

CHƯƠNG I: TỔNG QUAN VỀ GIẢI PHÁP CAN THIỆP MẬT MÃ VÀO HỆ THỐNG MẠNG DÙNG GIAO THỨC TCP/IP

Xây dựng các hệ thống bảo mật thông tin trên mạng máy tính đòi hỏi một giải

pháp tổng thể bao gồm nhiều cơ chế an toàn như điều khiển truy nhập, mã hóa dữ

liệu, chữ ký số, xác thực, bảo vệ vật lý [8], [26], [49], [53],... Kỹ thuật mật mã đóng

một vai trò rất quan trọng trong việc bảo vệ thông tin trên mạng, nó cho phép chúng

ta cài đặt hầu hết các dịch vụ an toàn bao gồm các dịch vụ bí mật, xác thực, toàn

vẹn và không thể chối bỏ. Ngoài ra nó góp phần quan trọng trong việc cài đặt dịch

vụ điều khiển truy nhập.

1.1. TỔNG QUAN VỀ AN TOÀN THÔNG TIN TRÊN MẠNG

1.1.1. Một số khái niệm cơ bản về an toàn thông tin

Trong hoạt động xã hội, thông tin được thể hiện dưới nhiều hình thức khác

nhau như văn bản, hình ảnh, âm thanh. Trên mạng máy tính, thông tin được lưu trữ

trong các thiết bị vật lý như ổ đĩa, thẻ nhớ…hoặc được truyền qua kênh công khai.

Những thông tin có giá trị luôn luôn chịu những mối đe dọa của những người không

được ủy quyền. Họ có thể là những kẻ tấn công bất hợp pháp hoặc những người

trong nội bộ cơ quan, tổ chức có thông tin cần bảo vệ. Khái niệm “An toàn thông

tin” (Information security) chỉ ra các yêu cầu đối với việc bảo vệ thông tin bao gồm:

- Tính bí mật (Confidentality): Đảm bảo rằng thông tin không bị lộ hoặc bị

khám phá bởi những người không được ủy quyền.

- Tính xác thực (Authentication): Đảm bảo rằng người gửi và người nhận

thông tin không bị mạo danh.

- Tính toàn vẹn (Integrity): Đảm bảo rằng thông tin không bị thay đổi hoặc bị

phá hủy bởi những người không được ủy quyền.

- Tính sẵn sàng (Availibility): Đảm bảo rằng những người hợp pháp không bị

từ chối truy nhập một cách không chính đáng tới thông tin và tài nguyên.

Một mối đe doạ (threat) là một người, một vật, một sự kiện, hay một ý định

gây ra một số nguy hiểm đối với tài nguyên, dưới dạng tính bí mật, toàn vẹn, sự khả

dụng, hoặc tính sử dụng hợp pháp của tài nguyên. Một cuộc tấn công (attack) là thể

7

hiện thực tế của một mối đe doạ. Các biện pháp bảo vệ (safeguard) là các điều khiển

vật lý, các cơ chế, các chính sách và các thủ tục bảo vệ các tài nguyên khỏi các mối

đe doạ. Những điểm có thể bị tổn thương (vulnerability) là những điểm yếu trong

một cách bảo vệ, hay nơi thiếu sự bảo vệ.

Sự rủi ro (risk) là độ đo đánh giá tính dễ bị tổn thương thực sự kết hợp với

khả năng tấn công thành công. Độ rủi ro cao nếu giá trị của tài sản có thể bị tổn

thương cao, và khả năng tấn công thành công cao. Ngược lại, độ rủi ro thấp nếu giá

trị của tài sản có thể bị tổn thương thấp, và khả năng tấn công thành công thấp. Việc

phân tích độ rủi ro có thể cung cấp một cách định lượng để xác định xem chi phí

trong các cách bảo vệ có được đảm bảo hay không.

1.1.2. Các nguy cơ mất an toàn thông tin

Do hoạt động trong môi trường mở và phân tán, thông tin được lưu thông rộng khắp và dưới rất nhiều hình thức nên mạng máy tính phải chịu nhiều mối đe doạ từ nhiều phía. Các mối đe doạ chủ yếu trực tiếp bao gồm:

- Sự rò rỉ thông tin: Thông tin bị lộ hoặc bị khám phá do một người hoặc thực

thể được phép. Điều này có thể liên quan đến những tấn công trực tiếp, chẳng

hạn nghe trộm hoặc những kiểu theo dõi thông tin tinh tế hơn.

- Vi phạm tính toàn vẹn: Tính nhất quán của dữ liệu bị tổn thương thông qua

việc tạo, thay đổi trái phép hay phá hoại dữ liệu.

- Từ chối dịch vụ: Việc truy nhập thông tin hoặc các tài nguyên khác bị cản trở

một cách có chủ tâm.

- Sử dụng trái phép: Một tài nguyên được sử dụng bởi một người không có

quyền hoặc theo một cách không được phép.

1.1.3. Các hình thức tấn công thông tin trên mạng

Hình 1.1 minh họa luồng thông tin được truyền từ nơi gửi (nguồn thông tin)

đến nơi nhận (đích thông tin). Trên đường truyền công khai thông tin bị tấn công

bởi những người không được ủy quyền nhận tin, ta gọi là kẻ tấn công. Theo [53] các

hình thức tấn công thông tin trên mạng được chia làm 4 loại cơ bản sau:

8

Nguồn thông tin

Đích thông tin

(a) Luồng bình thường

Nguồn thông tin

Nguồn thông tin

Đích thông tin

Đích thông tin

(c) Chặn bắt thông tin

(b) Ngăn chặn thông tin

Nguồn thông tin

Đích thông tin

Đích thông tin

(d) Thay đổi thông tin

(e) Chèn thông tin giả

Nguồn thông tin

Hình 1.1: Các hình thức tấn công thông tin trên mạng máy tính

- Ngăn chặn thông tin (Interruption): Tài nguyên thông tin bị phá hủy, không

sẵn sàng phục vụ hoặc không sử dụng được. Đây là hình thức tấn công làm

mất khả năng sẵn sàng phục vụ của thông tin.

- Chặn bắt thông tin (Interception): Kẻ tấn công có thể truy nhập tới tài nguyên

thông tin. Đây là hình thức tấn công vào tính bí mật của thông tin.

- Sửa đổi thông tin (Modification): Kẻ tấn công truy nhập, chỉnh sửa thông tin

trên mạng. Đây là hình thức tấn công lên tính toàn vẹn của thông tin

- Chèn thông tin giả (Fabrication): Kẻ tấn công chèn thông tin và dữ liệu giả

vào hệ thống. Đây là hình thức tấn công lên tính xác thực của thông tin. Nó

có thể là việc chèn các thông báo giả mạo vào mạng hay thêm các bản ghi

vào mạng hay các bản ghi vào tệp tin.

9

1.1.4. Một số biện pháp an toàn

Có một số biện pháp bảo vệ chống đe doạ như sau:

- An toàn truyền thông: là bảo vệ thông tin trong khi nó được truyền từ hệ

thống này sang hệ thống khác.

- An toàn máy tính: là bảo vệ thông tin trong một hệ thống máy tính, nó bao

gồm các lớp con như là an toàn hệ điều hành và an toàn cơ sở dữ liệu.

- An toàn vật lý: an toàn các khoá hoặc các điều khiển truy nhập vật lý khác;

ngăn cản phá rối thiết bị nhạy cảm; điều khiển môi trường.

- An toàn nhân sự: nhận dạng vị trí nhạy cảm; các tiến trình bảo vệ nhân viên;

đào tạo và nhận thức về an toàn.

- An toàn hành chính: quản lý nhập khẩu phần mềm nước ngoài; các thủ tục

thẩm tra sự vi phạm luật lệ an toàn.

- An toàn môi trường: bảo vệ nơi lưu trữ thông tin; kiểm tra việc ghi dấu, sao

chép, và sự phá hoại thông tin nhạy cảm.

- An toàn nguồn phát: kiểm soát tần số radio (RF) và các nguồn phát tín hiệu

điện từ khác (gọi là bảo vệ TEMPEST).

- Kiểm soát chu kỳ sống: thiết kế, thực thi, đánh giá, xác nhận hệ thống đáng

tin cậy; lập trình các chuẩn và các điều khiển, quản lý tài liệu.

Để đảm bảo an toàn mạng máy tính một cách hiệu quả cần phải sử dụng phối

hợp các biện pháp đối phó từ các lớp khác nhau. Những biện pháp bảo vệ có thể bảo

đảm chống lại hầu hết các mối đe doạ, nhưng mỗi sự bảo vệ đều có giá của nó. Mỗi

cơ quan, tổ chức sử dụng mạng cần xem xét một cách cẩn thận chi phí bảo vệ so với

giá tiềm năng của một cuộc tấn công thành công.

1.1.5. Các dịch vụ an toàn

Trong ngữ cảnh truyền thông máy tính, các cách bảo vệ an toàn chính được

gọi là các dịch vụ an toàn. Các dịch vụ an toàn tổng quát (khái niệm dịch vụ an toàn

và các dịch vụ an toàn tổng quát xuất phát từ chuẩn kiến trúc an toàn ISO/IEC

7498-2) bao gồm:

10

- Dịch vụ giữ bí mật (Confidentiality service): bảo vệ chống lại thông tin bị lộ

hoặc bị khám phá do các thực thể không được phép.

- Dịch vụ xác thực (Authentication service): cung cấp sự đảm bảo về định danh

của thực thể nào đó (một người hoặc một hệ thống).

- Dịch vụ toàn vẹn dữ liệu (Data integrity service): bảo vệ chống lại dữ liệu bị

thay đổi, xoá, hoặc thay thế trái phép.

- Dịch vụ chống chối bỏ (Non-repudiation service): bảo vệ chống lại một nhóm

trao đổi truyền thông từ chối một cách không đúng khi trao đổi xảy ra.

- Dịch vụ kiểm soát truy nhập (Access control service): bảo vệ chống lại việc

sử dụng hoặc thao tác trái phép trên các tài nguyên.

Chính sách an toàn đối với một vùng an toàn sẽ định ra dịch vụ an toàn nào

được sử dụng trong miền đó hoặc trong các cuộc truyền thông giữa vùng đó và các

vùng khác. Nó cũng sẽ định ra với tình huống nào thì một dịch vụ an toàn được sử

dụng và những hạn chế gì được đặt trong các tham biến của một dịch vụ.

1.1.5.1. Dịch vụ bí mật

Dịch vụ bí mật bảo đảm rằng thông tin trong hệ thống máy tính và thông tin

được truyền được đọc bởi những bên được ủy quyền. Thao tác đọc bao gồm in ấn,

hiển thị thông tin. Nói cách khác, dịch vụ bí mật bảo vệ dữ liệu được truyền chống

lại các tấn công bị động nhằm khám phá nội dung thông tin. Dịch vụ này còn cung

cấp khả năng bảo vệ luồng thông tin khỏi bị tấn công phân tích tình huống. Có một

sự khác nhau giữa thông tin (information) và dữ liệu (data) [49]. Thông tin luôn có

một ý nghĩa nào đó, một mục dữ liệu (data item) là một xâu các bít được dùng để

lưu trữ hoặc truyền thông tin. Từ đó, một mục dữ liệu được chứa hoặc được truyền

tạo thành một dạng của kênh thông tin. Trong an toàn truyền thông máy tính có hai

kiểu của dịch vụ bí mật:

- Bí mật dữ liệu (data confidentiality): đảm bảo rằng không thể suy ra thông tin

nhậy cảm (sensitive information) từ nội dung hoặc kích cỡ của mục dữ liệu

nhận được.

11

- Bí mật luồng giao dịch mạng (traffic flow confidentiality): đảm bảo rằng

không thể suy ra thông tin nhạy cảm từ việc quan sát các luồng giao dịch

mạng.

Việc xem xét các dịch vụ bí mật dữ liệu có một vài biến thể phụ thuộc vào

việc phân nhỏ chúng, nghĩa là với mỗi mục dữ liệu thì dịch vụ bí mật nào được áp

dụng. Có ba dạng khác nhau của dịch vụ bí mật dữ liệu, đó là:

- Dịch vụ bí mật kết nối (connection confidentiality service): bảo vệ tất cả dữ

liệu trong một kết nối. Dịch vụ này được dùng cho giao thức kết nối như

TCP trong bộ giao thức TCP/IP.

- Dịch vụ bí mật không kết nối (connectionless confidentiality service): bảo vệ

dữ liệu của một khối dữ liệu không kết nối. Dịch vụ này được dùng cho giao

thức không kết nối như IP trong bộ giao thức TCP/IP.

- Dịch vụ bí mật trường lựa chọn (selective field confidentiality): chỉ bảo vệ

các trường được chỉ định trong một khối dữ liệu. Dịch vụ này thường được

dùng trong việc bảo vệ các cơ sở dữ liệu.

1.1.5.2. Dịch vụ xác thực

Các dịch vụ xác thực cung cấp sự đảm bảo về định danh của người hoặc vật

nào đó. Điều này có nghĩa là khi một ai đó đòi hỏi có một định danh cụ thể (ví dụ,

tên người dùng cụ thể), thì một dịch vụ xác thực sẽ cung cấp một phương tiện khẳng

định yêu cầu này là đúng. Dịch vụ xác thực đảm bảo rằng việc truyền thông là xác

thực nghĩa là cả người gửi và người nhận không bị mạo danh. Trong trường hợp có

một thông báo đơn như một thư điện tử hay một yêu cầu kết nối, dịch vụ xác thực

đảm bảo với bên nhận rằng thông báo đến từ đúng bên nêu danh. Trong trường hợp

có một giao dịch đang xảy ra, dịch vụ xác thực đảm bảo rằng hai bên giao dịch là

xác thực và không có kẻ nào giả danh làm một trong các bên trao đổi. Nói một cách

khác, dịch vụ xác thực yêu cầu nguồn gốc của thông báo được nhận dạng đúng với

các định danh đúng. Xác thực là rất quan trọng trong các dịch vụ an toàn, bởi vì tất

cả các dịch vụ an toàn khác chỉ có ý nghĩa khi thông tin được xác thực. Xác thực là

12

cách thức để chống lại sự giả danh mà nó có thể dẫn tới sự tổn thương của các dịch

vụ khác.

Xác thực áp dụng trong một ngữ cảnh cụ thể, nghĩa là ngữ cảnh mà ở đó định

danh được đưa ra. Hai trường hợp quan trọng trong dịch vụ xác thực là:

- Một định danh được đưa ra bởi một nhóm từ xa tham gia vào một liên kết

hoặc phiên truyền thông. Dịch vụ xác thực trong trường hợp này được hiểu là

xác thực thực thể (entity authentication).

- Một định danh được yêu cầu là bộ khởi sinh của một mục dữ liệu được đưa

ra cùng với mục dữ liệu đó. Dịch vụ xác thực trong trường hợp này được

hiểu là xác thực nguồn gốc dữ liệu (data origin authentication).

1.1.5.3. Dịch vụ toàn vẹn dữ liệu.

Dịch vụ toàn vẹn dữ liệu đòi hỏi rằng các tài nguyên của hệ thống máy tính

và thông tin được truyền không bị sửa đổi trái phép. Việc sửa đổi bao gồm các thao

tác chèn, xóa, thay đổi dữ liệu, nó cũng bao gồm cả việc thay đổi thứ tự, làm trễ

hoặc dừng các thông báo được truyền. Dịch vụ toàn vẹn dữ liệu có thể áp dụng cho

một thông báo, một luồng thông báo hay chỉ một số trường trong thông báo. Dịch

vụ toàn vẹn kết nối (connection integrity) [49] áp dụng cho một luồng thông báo,

tức là tất cả dữ liệu được truyền trong một kết nối và nó đảm bảo rằng các thông

báo được nhận có nội dung giống như khi được gửi, không bị nhân bản, chèn, sửa,

thay đổi trật tự hay dùng lại kể cả hủy hoại số liệu. Như vậy, dịch vụ toàn vẹn định

hướng kết nối quan tâm cả đến việc thay đổi thông báo và từ chối dịch vụ. Dịch vụ

toàn vẹn phi kết nối (connectionless integrity) [49] áp dụng cho tất cả dữ liệu của

một mục dữ liệu được truyền và chỉ quan tâm đến việc giữ cho thông báo không bị

sửa đổi. Dịch vụ toàn vẹn này liên quan đến các tấn công chủ động nên nó thiên về

phát hiện hơn là ngăn chặn. Dịch vụ toàn vẹn trường lựa chọn (selective field

integrity service) [49] chỉ áp dụng cho các trường được chỉ định trong một khối dữ

liệu. Tất cả các dịch vụ toàn vẹn dữ liệu nhằm chống lại việc tạo hoặc thay đổi dữ

liệu, tuy nhiên chúng không thể chống lại việc sao chép hoặc xóa dữ liệu.

13

1.1.5.4. Dịch vụ không thể chối bỏ

Dịch vụ không thể chối bỏ ngăn chặn người gửi hay người nhận chối bỏ

thông báo được truyền. Khi thông báo được gửi đi người nhận có thể chứng minh

rằng người gửi nêu danh đã gửi nó đi. Khi thông báo nhận được người gửi có thể

chứng minh thông báo đã nhận được bởi người nhận hợp pháp. Mục đích chính của

dịch vụ không thể chối bỏ là bảo vệ những người dùng truyền thông chống lại các

mối đe doạ từ những ngườì dùng hợp pháp khác, mà không phải là những kẻ tấn

công lạ mặt. Dịch vụ này có thể đảm bảo rằng các bằng chứng để giải quyết việc

tranh cãi là không thể bác bỏ được.

Về cơ bản, không thể chối bỏ có thể áp dụng cho bất kỳ một loại sự kiện nào

ảnh hưởng tới hai hoặc nhiều nhóm. Nếu chúng ta chỉ hạn chế các mối quan tâm tới

các môi trường mạng máy tính, thì kịch bản không thừa nhận có thể được chia

thành hai trường hợp phân biệt:

- Không thừa nhận nguồn gốc: Không thừa nhận là có một nhóm cụ thể khởi

sinh một mục dữ liệu cụ thể.

- Không thừa nhận sự phân phát: Không thừa nhận một mục dữ liệu cụ thể

được phát cho một nhóm cụ thể.

1.1.5.5. Dịch vụ kiểm soát truy nhập

Kiểm soát truy nhập là khả năng hạn chế và kiểm soát truy nhập đến các hệ

thống máy tính và các ứng dụng theo các đường truyền thông. Mỗi thực thể muốn

truy nhập đều phải được định danh hay xác nhận có quyền truy nhập phù hợp. Mục

đích của điều khiển truy nhập là bảo vệ chống lại truy nhập trái phép tới tài nguyên

mạng. Khái niệm truy nhập trái phép bao gồm sử dụng trái phép, tiết lộ trái phép,

thay đổi trái phép, sự phá hoại trái phép và việc đưa ra các lệnh trái phép. Điều

khiển truy nhập tham gia trực tiếp vào việc thực hiện các dịch vụ bí mật, toàn vẹn

và sẵn sàng của thông tin. Dễ nhận thấy vai trò của kiểm soát truy nhập đối với tính

bí mật và tính toàn vẹn của thông tin. Đối với thuộc tính sẵn sàng nó kiểm soát:

- Ai có thể đưa ra các câu lệnh quản trị mạng mà các lệnh này ảnh hưởng trực

tiếp tới tính sẵn sàng của mạng;

14

- Ai có thể giữ lại các tài nguyên để sử dụng chúng một cách không hiệu quả;

- Ai có thể biết được thông tin có thể được sử dụng tiếp theo trong một tấn

công từ chối dịch vụ.

Kiểm soát truy nhập là một cách thức yêu cầu các bên tham gia truyền thông

tiến hành đúng các thao tác mà mình được ủy quyền. Đây là vấn đề cần thiết cho cả

an toàn máy tính và an toàn truyền thông. Tuy nhiên, nó rất cần thiết cho các giao

thức truyền thông bởi vì cần phải truyền thông tin điều khiển truy nhập giữa các hệ

thống. Một khía cạnh khác của kiểm soát truy nhập là ngăn chặn những thông tin

nhạy cảm được truyền qua môi trường mà ở đó có thể bị rủi ro.

1.2. TÍCH HỢP MẬT MÃ VÀO HỆ THỐNG MẠNG DÙNG GIAO THỨC

TCP/IP

Kỹ thuật mật mã đóng một vai trò rất quan trọng trong việc bảo vệ thông tin

trên mạng. Để bảo mật thông tin trên mạng, người ta sử dụng các phương pháp mật

mã, đó là quá trình chuyển đổi thông tin từ thông tin dạng gốc sang thông tin dạng

mật. Trong phần này sẽ nghiên cứu và chỉ ra những điểm có thể tích hợp các thủ tục

mật mã vào các tầng trong mô hình giao thức TCP/IP để bảo mật thông tin trên

mạng [8], [26].

1.2.1. Cấu trúc giao thức TCP/IP

Hình 1.2 là cấu trúc của giao thức TCP/IP được mô tả trong [45], [48].

TCP/IP là một họ các giao thức cùng kết hợp với nhau để cung cấp dịch vụ truyền

thông liên mạng.

Trong bộ giao thức này, dữ liệu được truyền từ tầng trên xuống tầng dưới,

mỗi tầng sẽ tự động thêm thông tin điều khiển vào để đảm bảo rằng dữ liệu được

truyền chính xác. Thông tin điều khiển được gọi là Header và nó được đặt ở phía

trước dữ liệu cần truyền. Mỗi tầng đều quan niệm tất cả thông tin nhận được của

tầng trên như là dữ liệu và một thông tin Header của tầng đó được đặt vào phía

trước của dữ liệu nhận được. Khi nhận dữ liệu quá trình diễn ra ngược lại, mỗi tầng

có một cấu trúc dữ liệu riêng của nó và không quan tâm đến cấu trúc dữ liệu được

sử dụng của các tầng trên hay tầng dưới.

15

Tầng ứng dụng

Tiến trình người dùng

Tiến trình người dùng

Tầng vận tải

TCP

UDP

IGMP

Tầng Internet

IP

ICMP

ARP

RARP

Tầng truy nhập mạng

Giao diện phần cứng

Đường truyền

Hình 1.2: Cấu trúc của giao thức TCP/IP

- Tầng truy nhập mạng (Network Access): Đây là tầng thấp nhất trong mô

hình TCP/IP. Các giao thức ở tầng này cung cấp cách thức để hệ thống chuyển dữ

liệu tới các thiết bị khác đang kết nối trên mạng. Tầng này xác định cách sử dụng

mạng vật lý để chuyển các gói tin IP của tầng mạng. Tầng truy nhập mạng phải biết

hết các chi tiết của tầng vật lý ở dưới như cấu trúc thông tin, cách đánh địa chỉ... để

định dạng dữ liệu chuyển xuống cho phù hợp với các điều kiện của mạng vật lý.

Trong mô hình TCP/IP tầng truy nhập mạng có thể thực hiện các chức năng của hai

tầng phía dưới trong mô hình OSI (tầng liên kết dữ liệu và tầng vật lý). Chức năng

của tầng truy nhập mạng là nhận gói thông tin của tầng IP và tạo frame thông tin để

có thể chuyển trên mạng, đồng thời phải tạo được sự tương ứng giữa địa chỉ vật lý

và địa chỉ IP [45].

- Tầng Internet (Internet Layer): Là tầng phía trên tầng truy nhập mạng trong

mô hình TCP/IP. Giao thức Internet hay còn gọi là giao thức IP là giao thức quan

16

trọng nhất trong tầng Internet. Giao thức IP cung cấp dịch vụ để truyền gói tin và

mạng TCP/IP được xây dựng dựa trên dịch vụ này. Tất cả các giao thức của tầng

phía trên (TCP/UDP) và tầng phía dưới (Ethernet, FDDI,...) của tầng Internet đều sử

dụng giao thức IP để truyền dữ liệu [45]. Tất cả các dữ liệu dù đến hay đi của mô

hình TCP/IP đều đi qua tầng IP không phụ thuộc vào đích cuối.

- Tầng vận tải (Transport Layer): Tầng vận tải nằm ở phía trên của tầng

Internet, hai giao thức quan trọng của tầng này là giao thức điều khiển truyền tin

TCP (Transport Control Protocol) và giao thức gói dữ liệu người dùng UDP (User

Datagram Protocol). Giao thức TCP là giao thức truyền tin có liên kết, có sửa sai

đầu cuối. Giao thức UDP là giao thức truyền tin không liên kết.

- Tầng ứng dụng (Application Layer): Tầng ứng dụng là tầng trên cùng trong

cấu trúc bộ giao thức TCP/IP. Tầng này bao gồm tất cả các chương trình có sử dụng

tầng vận tải để truyền dữ liệu. Có rất nhiều giao thức ứng dụng như: Telnet, FTP,

HTTP [45].

1.2.2. Tích hợp mật mã vào các tầng của giao thức TCP/IP

Cấu trúc giao thức TCP/IP cho phép chúng ta can thiệp mật mã vào một tầng

bất kỳ tùy theo chính sách an toàn được đưa ra. Dưới đây là một số căn cứ khi lựa

chọn tầng để tích hợp mật mã.

Lựa chọn thành phần của gói IP để bảo vệ:

Một gói IP chứa dữ liệu bao gồm 3 thành phần: dữ liệu ứng dụng (data),

Header tầng vận tải (TCP/UDP Header), Header tầng Internet (IP Header) như trong

hình sau:

IP header TCP/IP header Dữ liệu ứng dụng

Hình 1.3: Cấu trúc gói tin IP

Khi dữ liệu được chuyển từ tầng vận tải xuống các tầng dưới, tại mỗi tầng

Header điều khiển được gắn vào phía bên trái của dữ liệu do tầng trên chuyển

xuống. Mỗi Header có cấu trúc riêng và có vai trò trong việc chuyển dữ liệu từ ứng

dụng của máy nguồn tới ứng dụng của máy đích. Dựa vào [52], ta có bảng 1.1 chỉ ra

17

khả năng bảo vệ các thành phần của gói IP khi tích hợp mật mã vào các tầng trong

giao thức TCP/IP.

Tầng Data TCP/UDP header IP header

Tầng ứng dụng x

Tầng vận tải x x

Tầng Internet x x x

Tầng truy nhập mạng x x x

Bảng 1.1: Bảo vệ các thành phần của gói IP trong giao thức TCP/IP

Nhìn vào bảng 1.1 chúng ta thấy rằng, để bảo vệ dữ liệu ứng dụng chúng ta

có thể can thiệp mật mã vào một trong bốn tầng. Nhưng để bảo vệ Header tầng vận

tải chúng ta chỉ có thể can thiệp mật mã vào một trong ba tầng dưới. Tầng ứng dụng

không quan tâm đến Header của tầng vận tải được nối vào đầu khối dữ liệu.

Tích hợp mật mã vào các tầng trong giao thức TCP/IP

- Lựa chọn dịch vụ cần cài đặt.

Dịch vụ an toàn Tầng ứng Tầng vận Tầng Tầng truy

dụng tải Internet nhập mạng

Bí mật kết nối x x (TCP) x

Bí mật không kết nối x x (UDP) x x

Bí mật trường lựa chọn x

Bí mật luồng giao dịch x x x

Xác thực thực thể x x (TCP)

Xác thực nguồn gốc dữ liệu x x (UDP) x

Toàn vẹn kết nối khôi phục x x (TCP)

Toàn vẹn không kết nối x x (UDP) x

Toàn vẹn trường lựa chọn x

Không chối bỏ x

Bảng 1.2: Các dịch vụ an toàn được cài đặt tại các tầng trong giao thức TCP/IP

Theo tài liệu [49], trong chuẩn ISO 7489-2 đã chỉ ra các dịch vụ an toàn được

cài đặt tại các tầng trong mô hình OSI. Đối chiếu mô hình TCP/IP với mô hình OSI,

18

chúng ta có các dịch vụ an toàn được cài đặt bằng kỹ thuật mật mã tại các tầng của

giao thức TCP/IP như trong bảng 1.2, ta có một số nhận xét sau:

- Tại tầng ứng dụng chúng ta có thể cài đặt tất cả các dịch vụ an toàn.

- Tầng vận tải có hai giao thức TCP và UDP, trong đó TCP là giao thức kết

nối và UDP là giao thức không kết nối. Tại tầng vận tải chúng ta có thể cài

đặt cả dịch vụ an toàn kết nối và không kết nối.

- Giao thức IP là giao thức không kết nối, các dịch vụ cài đặt tại tầng IP là

các dịch vụ không kết nối.

- Tại tầng truy nhập mạng ta chỉ có thể cài đặt một số dịch vụ bí mật.

1.2.2.1. Tích hợp mật mã vào tầng ứng dụng

Theo [49] lựa chọn tích hợp mật mã vào tầng ứng dụng được đưa ra khi:

- Dịch vụ an toàn cần được tích hợp vào một ứng dụng cụ thể như ứng dụng

thư điện tử, ứng dụng Web,… Khi tạo ra các sản phẩm an toàn tầng ứng dụng,

chúng ta quan tâm đến các yêu cầu gắn liền với ứng dụng. Chẳng hạn với ứng dụng

truyền file, ta cần quan tâm đến điều khiển truy nhập file và cập nhật các danh sách

điều khiển truy nhập file. Trong các trường hợp khác chúng ta phải truy nhập được

vào các trường lựa chọn của dữ liệu nhằm cài đặt các dịch vụ bí mật trường lựa

chọn, toàn vẹn trường lựa chọn.

- Dữ liệu cần bảo vệ phải đi qua bộ chuyển tiếp các ứng dụng.

Thư điện tử là một ví dụ điển hình về ứng dụng trong đó dữ liệu cần bảo vệ

phải đi qua bộ chuyển tiếp ứng dụng. Trường nội dung thư được bảo vệ bằng kỹ

thuật mật mã, các trường khác như trường địa chỉ, trường vết được giữ nguyên vì

các hệ thống trung gian cần nhận biết thông tin này. Trong các trường hợp như vậy,

dịch vụ an toàn phải được cài đặt ở mức ứng dụng.

Ưu điểm của việc tích hợp mật mã vào tầng ứng dụng:

+ Có thể cài đặt được tất cả các dịch vụ an toàn.

+ Có thể quyết định các cách thức bảo vệ cho từng loại dữ liệu của ứng dụng.

+ Không đòi hỏi sự can thiệp vào các tầng thấp hơn khi cài đặt dịch vụ an

toàn.

19

Hạn chế của việc tích hợp mật mã vào tầng ứng dụng:

+ Phải can thiệp vào cấu trúc của mỗi ứng dụng cần bảo mật.

+ Phải can thiệp vào tất cả các máy đang chạy ứng dụng cần bảo vệ.

+ Ảnh hưởng đến tính toàn vẹn của ứng dụng, khó khăn trong việc di chuyển

ứng dụng sang hệ thống khác.

+ Người dùng phải thay đổi thói quen trong việc sử dụng các ứng dụng.

1.2.2.2. Tích hợp mật mã vào tầng vận tải

Theo [49] những yếu tố quyết định việc lựa chọn tích hợp mật mã vào tầng

vận tải được đưa ra khi:

- Khả năng tạo các dịch vụ bảo vệ trong suốt với các ứng dụng.

- Khả năng tạo ra dịch vụ bảo vệ luồng dữ liệu có hiệu năng cao nhờ khả

năng thao tác trên các khối dữ liệu lớn và xử lý dữ liệu của nhiều dịch vụ theo cách

thức chung.

- Việc quản lý chính sách an toàn cho toàn hệ thống đầu cuối do một người

quản trị thống nhất, không phân biệt từng ứng dụng riêng rẽ.

- Cần bảo vệ Header tầng vận tải của gói IP.

- Thừa nhận hệ thống đầu cuối (máy tính hiện thời) là tin cậy, nhưng tất cả

mạng truyền thông là không tin cậy.

- Các yêu cầu an toàn được đưa ra bởi người có thẩm quyền của hệ thống đầu

cuối và áp dụng cho tất cả các giao dịch không quan tâm đến ứng dụng cụ thể.

Ưu điểm của việc tích hợp mật mã vào tầng vận tải:

+ Có thể bảo mật được dữ liệu ở tất cả các ứng dụng dùng giao thức TCP/IP.

+ Không đòi hỏi sự can thiệp sửa đổi các ứng dụng hiện có.

+ Trong suốt với người dùng; cho phép bảo vệ dữ liệu của từng kết nối dùng

giao thức TCP/IP.

Hạn chế của việc tích hợp mật mã vào tầng vận tải:

+ Không cài đặt được tất cả các dịch vụ an toàn như đã chỉ ra trong bảng 1.2.

+ Chỉ có một cơ chế bảo mật chung cho dữ liệu của tất cả các ứng dụng.

20

+ Phải cài đặt dịch vụ an toàn tại tất cả các máy có thông tin cần bảo mật.

1.2.2.3. Tích hợp mật mã vào tầng Internet

Theo [49] những yếu tố quyết định việc lựa chọn tích hợp mật mã vào tầng

Internet là:

- Khả năng tạo các dịch vụ bảo vệ trong suốt với ứng dụng.

- Tạo ra dịch vụ bảo vệ luồng dữ liệu có hiệu năng cao nhờ khả năng thao tác

trên các khối dữ liệu lớn và xử lý dữ liệu của nhiều ứng dụng theo cách thức chung.

- Hạn chế số điểm cần cài đặt dịch vụ an toàn. Mỗi mạng nội bộ chỉ cần

chọn, cài đặt một thiết bị Gateway để bảo mật gói IP. Tất cả các gói IP được sinh ra

bởi các ứng dụng trong mạng con sẽ được can thiệp mật mã tại các GateWay trước

khi ra kênh công khai.

- Quan tâm đến thông tin định tuyến của gói IP, chẳng hạn cần tích hợp với

ứng dụng Firewall lọc gói.

- Cần bảo vệ các thành phần của gói IP kể cả IP Header.

- Việc quản lý chính sách an toàn hệ thống đầu cuối do một người quản trị

phụ trách, không phân biệt ứng dụng riêng rẽ.

Ưu điểm của việc tích hợp mật mã vào tầng Internet:

+ Có thể bảo mật được dữ liệu ở tất cả các ứng dụng dùng giao thức TCP/IP.

+ Không đòi hỏi sự can thiệp sửa đổi các ứng dụng hiện có.

+ Trong suốt với người dùng.

+ Tăng cường khả năng của Firewall.

+ Giảm số đầu mối can thiệp dịch vụ an toàn.

+ Cho phép bảo vệ dữ liệu của một số ứng dụng thời gian thực.

Hạn chế của việc tích hợp mật mã vào tầng Internet:

+ Không có khả năng cài đặt một số dịch vụ an toàn.

+ Mạng nội bộ đứng sau Gateway bảo vệ gói IP phải an toàn.

+ Người quản trị phải có kiến thức tốt về công nghệ mạng và quản trị mạng.

21

1.2.2.4. Tích hợp mật mã vào tầng truy nhập mạng

- Việc tích hợp mật mã cho phép bảo vệ dữ liệu của các Frame chứa gói IP.

Nó không quan tâm đến cấu trúc gói IP cũng như các gói thông tin khác được chứa

trong Frame. Chính vì vậy, tại các nút trung gian trên đường truyền, Frame phải

được mã hóa, giải mã để các Router biết thông tin định tuyến gói IP sau đó Frame

được mã hóa trở lại để chuyển tiếp.

- Thường dùng thiết bị phần cứng để bảo vệ dữ liệu mức truy nhập mạng.

Ưu điểm của việc tích hợp mật mã vào tầng truy nhập mạng:

+ Cho phép bảo vệ toàn bộ gói IP và các gói điều khiển khác.

+ Cho phép tạo ra các thiết bị cầu (Bridge) có chức năng bảo vệ thông tin

bằng kỹ thuật mật mã.

+ Cho phép tạo ra các thiết bị mã luồng tốc độ cao.

Hạn chế của việc tích hợp mật mã vào tầng truy nhập mạng:

+ Chỉ có thể cài đặt mật mã dùng phương thức theo tuyến truyền (Link To

Link).

+ Mỗi thiết bị chuyển mạch trung gian phải tiến hành giải mã toàn bộ dữ liệu

để thu được thông tin định tuyến sau đó phải mã lại dữ liệu đó để truyền đi theo

tuyến mới.

+ Chỉ cài đặt được một số dịch vụ an toàn.

1.2.3. Cài đặt các dịch vụ an toàn dùng kỹ thuật mật mã

Kỹ thuật mật mã đóng một vai trò quan trọng và là phương tiện kỹ thuật có

tính quyết định trong việc bảo mật thông tin trên mạng máy tính [8], [26]. Các hệ

thống mật mã được chia thành hai loại chính: mật mã khóa bí mật và mật mã khóa

công khai. Trong mật mã khóa bí mật, khóa mã và khóa dịch là như nhau hoặc có

thể dễ dàng suy ra được từ nhau. Trong mật mã khóa công khai, khóa mã và khóa

dịch là khác nhau và từ khóa mã không thể tính được khóa dịch theo nghĩa độ phức

tạp tính toán. Đây là những đặc trưng quan trọng, quyết định đến quá trình cài đặt

các dịch vụ an toàn dùng kỹ thuật mật mã.

Mô hình bảo mật thông tin dùng kỹ thuật mật mã được thực hiện theo hình 1.4.

22

QUẢN

KHOÁ

(Decryption Key)

(Encryption Key)

Kd Ke

Bên nhận

Bên gửi

BẢN MÃ C

BẢN MÃ C

BẢN RÕ M

Kd Ke

Giải mã

Mã hoá

Kênh truyền tin

(Decryption Key)

(Encryption Key)

BẢN RÕ Bản rõ M M

Hình 1.4: Mô hình bảo mật thông tin dùng kỹ thuật mật mã

Trong đó:

M: là văn bản gốc (Plaintext), văn bản chưa được mã hoá.

C: là văn bản mã hóa (CipherText).

E: là hàm mã hoá (Encryption Function).

D: là hàm giải mã (Decryption Function).

Khoá (Key): gồm một số hữu hạn các bit thường được biểu diễn dưới dạng

các xâu ký tự, chữ số, số thập phân. Mặc dù độ dài của khoá có thể lấy bằng văn

bản gốc nhưng thực tế thường dùng các khoá 8 ký tự. Khóa thường được tạo ngẫu

nhiên và không dùng lại cho các phiên làm việc khác nhau.

Với quá trình mã hoá: dùng khoá Ke (khóa mã hóa)

C = EKe(M)

Với quá trình giải mã: dùng khoá Kd (khóa giải mã)

M = DKd(C) = DKd(EKe(M))

23

Hệ mật khóa bí mật thường dùng cùng một khoá để mã hoá và giải mã, khi

đó khoá phải được giữ bí mật tuyệt đối. Người ta thường gọi đó là hệ mật khóa đối

xứng hoặc một khoá.

Hệ mật khoá công khai (còn gọi là hệ mật bất đối xứng hay hai khoá), trong đó

khoá để mã hoá và khoá để giải mã là khác nhau. Các khoá này tạo thành bởi một

cặp chuyển đổi ngược nhau và không khoá nào có thể suy ra được từ khoá kia.

Khoá mã hoá có thể công khai, nhưng khoá giải mã thì phải được giữ bí mật.

Một vấn đề quan trọng là việc quản lý các khoá mật mã, bao gồm tất cả các

thủ tục để khởi tạo, phân phối, sử dụng, lưu trữ và huỷ bỏ các khoá mật mã [40].

Với các hệ thống sử dụng ít khoá thì có thể dùng phương pháp quản lý phân phối

khóa thủ công. Song đối với hệ thống mạng máy tính lớn thì việc quản lý, phân phối

khóa phải được thực hiện tự động để cho phép các khoá được trao đổi nhanh chóng,

hiệu quả, mềm dẻo, an toàn và chi phí thấp.

Mô hình mã hóa khóa đối xứng

Bên gửi

Bên nhận

Mạng

Khoá bí mật K (kênh truyền an toàn)

1.Lấy khoá K 2.Nhận{M}K 3.f-1(K,{M}K)M

1.Lấy khoá K 2.f(K,M){M}K 3.Gửi {M}K

{M}K

Hình 1.5: Mô hình mã hóa khóa đối xứng

Trong đó :

Bản rõ M được truyền đi ở dạng mã hoá {M}K từ bên gửi tới bên nhận.

Trước khi việc truyền tin có thể xảy ra cả hai bên đều phải có khoá bí mật K thông

qua một kênh an toàn.

24

Trong hệ mật khóa đối xứng nguồn tin được mã hoá bằng việc áp dụng một

hàm mã hoá đã quy định trước để mã hoá bản tin với khoá bí mật. Việc giải mã

được thực hiện bởi hàm nghịch đảo với bản mã nhưng vẫn cùng một khoá bí mật.

Vì các khoá được giữ bí mật nên các hàm mã hoá và giả mã không cần thiết phải

che dấu. Cả hai bên gửi và nhận đều phải có hàm mã hoá (hoặc hàm nghịch đảo của

nó) và một khoá bí mật dùng chung.

Hệ mật khóa đối xứng đòi hỏi phải có cùng một khoá để mã hóa và giải mã

vì thế mà khoá mã phải được phân phối theo một kênh hoàn toàn bí mật, đây chính

là nhược điểm của hệ mật. Tuy nhiên, hệ mật này có một điểm vô cùng mạnh đó là

có thể dùng khoá ngẫu nhiên vì thế hệ mật có thể đạt tới độ mật lý tưởng. Hệ mật

này thường được dùng để mã các thông tin được phân loại là “mật” và “tối mật”.

Ưu điểm của hệ mật là tốc độ mã hóa, giải mã nhanh và thường được dùng để mã

hóa dữ liệu lớn. Như vậy, có thể dùng hệ mật khóa đối xứng để mã hoá các thông

tin lưu trữ khi phân phối khoá không trở thành vấn đề nan giải.

Mô hình mã hóa khóa công khai

CƠ SỞ DỮ LIỆU KHOÁ CÔNG KHAI

Yêu cầu khoá Ke

Ke

Ke

Bên nhận B

Bên gửi A

1) Tính toán Ke, Kd

1) Lấy khoá Ke

{ M}Ke

2) E(Ke, M)  {M}Ke 3) Gửi {M}Ke

2) Đưa ra Ke, bí mật Kd 3) Nhận {M}Ke 4) D(Kd, {M}Ke) M

Hình 1.6: Mô hình mã hoá dùng khoá công khai

Lược đồ mã hoá dùng khoá công khai hình 1.6 do Whitfield Diffie và Martin

Hellman lần đầu tiên đề xuất (1976) như là phương pháp mã hóa bỏ qua tính tin cậy

25

giữa các kênh truyền thông. Trong hệ mật khóa công khai, mỗi người dùng có một

cặp khóa mã Ke và khóa dịch Kd, trong đó khóa mã Ke được công bố công khai

nhưng phải được xác thực và khóa dịch Kd được giữ bí mật. Giữa khóa mã và khóa

dịch phải có mối quan hệ nào đó với nhau thì mới có thể mã hóa và giải mã được.

Tuy nhiên một yêu cầu rất quan trọng của hệ mật là việc tính khóa dịch Kd từ khóa

mã Ke phải là bất khả thi về mặt thời gian.

Để có được cặp khóa Ke và Kd như trên, người ta thường dùng các hàm một

chiều (oneway function) để xác định quan hệ giữa hai khoá mà rất khó xác định Kd

nếu chỉ biết Ke. Hàm một chiều là hàm f(X) = Y nào đó mà nếu có giá trị Y thì cũng

rất khó xác định được giá trị tương ứng của X do độ phức tạp tính toán. Như vậy, f(X) là hàm một chiều, nên việc tính X = f -1(Y) rất khó. Nhưng nếu có thêm thông tin về cửa sập z nào đó để việc tính toán X = f -1(Y) trở nên dễ dàng thì f(X) được

gọi là hàm cửa sập một chiều.

Phương pháp trên được gọi là mã hoá dùng khoá công khai và nó tránh được

sự cần thiết phải truyền các khoá bí mật giữa các bên tham gia truyền thông. Nó dựa

trên hai hàm tách biệt E, D và hai khoá tách biệt Ke, Kd để mã hoá và giải mã.

Chẳng hạn nếu đối tượng B muốn nhận thông tin bí mật từ các đối tượng

khác thì B sinh ra một cặp khoá Ke và Kd, B công khai khoá Ke và giữ bí mật khoá

Kd. Có thể làm điều này hoặc bằng cách gửi Ke trực tiếp cho các đối tượng mà nó

mong muốn nhận thông tin từ chúng hoặc bằng cách gửi Ke cho dịch vụ phân phối

khoá công khai.

Một đối tượng nào đó muốn gửi thông tin bí mật M cho B thì lấy khoá công

khai Ke của B và dùng E(Ke, M) để sinh ra {M}Ke rồi gửi nó cho B. Chỉ B mới biết

Kd và có thể áp dụng D(Kd, {M}Ke) để giải mã thông báo. Ý tưởng này được minh

hoạ trong hình 1.6, ở đó A truyền thông báo bí mật cho B sau khi có được khoá

công khai của B từ dịch vụ phân phối khoá.

Một vài thuật toán đã được đề xuất để sinh và sử dụng cặp khoá trong

phương pháp mã hoá dùng khoá công khai. Rivest, Shamir và Adelman đã thiết kế

26

một giải thuật mã hoá dùng khoá công khai RSA (1977) dựa trên tính khó giải của

bài toán phân tích số nguyên tố lớn.

Nhận xét về các phương pháp mã hóa

Để so sánh các phương pháp mã hóa cần dựa vào các yếu tố như độ phức tạp

tính toán, thời gian mã hoá, giải mã và vấn đề quản lý, phân phối khoá trong môi

trường mạng nhiều người sử dụng. Với hai phương pháp mã hoá trên ta có nhận xét:

- Tính an toàn: độ an toàn của các thuật toán mã hóa phụ thuộc vào kích cỡ

khóa, phương pháp thiết kế và độ phức tạp tính toán. Với những giải thuật

mã hoá và khoá thích hợp, cả hai phương pháp mã hóa khóa bí mật và mã

hóa khóa công khai đều đủ an toàn đối với mục đích bảo mật thông tin.

- Tính tiện lợi: mã hoá dùng khoá công khai có thể tiện lợi cho việc triển khai

trên hệ thống mạng bởi vì phương pháp này không đòi hỏi một kênh truyền

bí mật để phân phối khoá (nhưng cần phải có sự xác nhận về thông tin khóa

công khai). Khi có một server phân phối khoá, mã hoá dùng khoá công khai

có thể được dùng để thiết lập mối liên hệ ban đầu giữa các đối tượng mới

tham gia vào hệ thống với server để truyền khoá công khai tương ứng của đối

tượng, khóa công khai này sẽ được dùng cho tất cả các phiên liên lạc sau đó.

- Tốc độ thực hiện: tốc độ mã hóa, giải mã của phương pháp mã hoá dùng

khoá bí mật nhanh hơn rất nhiều so với mã hoá dùng khoá công khai.

Trong thực tế, để bảo mật thông tin truyền trên mạng người ta thường dùng

kết hợp hệ mật khóa bí mật và hệ mật khóa công khai. Hệ mật khóa công khai được

dùng để thiết lập khóa bí mật cho mỗi phiên trao đổi dữ liệu. Lúc này khóa bí mật

được gọi là khóa phiên (session key), các phiên trao đổi dữ liệu khác

nhau sẽ dùng các khóa bí mật khác nhau và dữ liệu được mã hóa bằng hệ mật khóa

bí mật với khóa phiên đã được thiết lập.

1.3. GIẢI PHÁP BẢO MẬT DỮ LIỆU TRÊN ĐƯỜNG TRUYỀN

1.3.1. Một số chuẩn về an toàn và bảo mật thông tin

Việc nghiên cứu các giải pháp can thiệp mật mã vào các tầng trong cấu trúc

giao thức TCP/IP đã được đặc biệt quan tâm trên thế giới. Trong quá trình đó, các

27

chuẩn về an toàn Internet đã được hình thành nhằm thống nhất và chuẩn hóa các sản

phẩm an toàn thông tin. Theo [25] IETF (Internet Engineering Task Force) thuộc ủy

ban kiến trúc Internet IAB (Internet Architecture Board) đưa ra các chuẩn về an

toàn Internet như sau:

- Các chuẩn PEM, PGP, S/MIME về an toàn thư tín điện tử [8].

- Chuẩn SSL/TLS về an toàn tầng vận tải [3], [13], [37], [53].

- Chuẩn S-HTTP về an toàn Web [27].

- Chuẩn IPSec về an toàn tầng Internet [24], [52], [53].

- Chuẩn SOCKS về an toàn Firewall [25].

- Chuẩn PKCS về mật mã khóa công khai [9], [15], [17], [38].

- Chuẩn X.509 về xác thực người dùng [26], [53].

Ngoài ra còn một số giải pháp khác đang được sử dụng rộng rãi như SSH,

SNMP security, SET...

Trên thế giới các sản phẩm bảo mật mạng hiện nay đều sử dụng một trong

các giao thức trên. Các sản phẩm trong bảo mật an toàn thông tin có thể chia thành

hai nhóm chính: sản phẩm bằng phần mềm và sản phẩm bằng phần cứng. Các giải

pháp phần mềm hiện nay như OpenSwan, StrongSwan (IPSec), OpenSSH (SSH),

OpenVPN, SoftEther VPN (SSL/TLS), các sản phẩm này có thể triển khai dễ dàng

trên các máy tính thông dụng nhưng thường bị hạn chế về hiệu năng bởi khả năng

xử lý mã hóa/giải mã của bộ xử lý máy tính. Một số giải pháp phần mềm cho phép

kết hợp với các thiết bị phần cứng mã hóa, giải mã để tăng tốc độ mã hóa dữ liệu.

Các giải pháp phần cứng thiết bị chuyên dụng như các sản phẩm của Cisco,

Checkpoint, Jupiter Network, Fortinet..., giải pháp này thường có hiệu năng cao hơn

giải pháp phần mềm do tích hợp sẵn các bộ đồng xử lý mật mã (crypto co-

processor) thiết kế trên công nghệ FPGA/ASIC. Hàng loạt các giải pháp bảo mật,

sản phẩm mật mã đã ra đời dựa trên các chuẩn bảo mật trên nhằm đáp ứng nhu cầu

bảo mật và an toàn hệ thống mạng, trong đó các sản phẩm thường gặp là hệ thống

mã hóa luồng thông tin (thoại, luồng IP…), hệ thống xác thực chữ ký số, hệ thống

mạng riêng ảo VPN (Virtual Private Network), hệ thống tường lửa (Firewall), hệ

thống giám sát an ninh mạng, hệ thống phát hiện và chống truy cập trái phép

28

(IDPS). Trong hầu hết các sản phẩm nói trên các hệ mật đóng vai trò đặc biệt quan

trọng. Các hệ mật không chỉ giúp cho việc mã hóa dữ liệu mà nó còn là công cụ để

xác thực định danh, xác thực nguồn gốc và tính toàn vẹn của dữ liệu. Tuy nhiên, với

các sản phẩm bảo mật an toàn thông tin của nước ngoài chúng ta không hoàn toàn

kiểm soát và làm chủ về mật mã tích hợp trong sản phẩm.

Trong nước đã có những nghiên cứu về chuẩn an toàn và bảo mật thông tin,

các giải pháp xây dựng sản phẩm bảo mật, an toàn thông tin [64], [66], đặc biệt là

giải pháp bảo mật mạng máy tính [65] bao gồm: bảo mật dữ liệu tại chỗ, bảo mật

mật dữ liệu trên đường truyền và bảo mật các ứng dụng, dịch vụ mạng. Với giải

pháp và sản phẩm bảo mật mạng công nghệ chuyển mạch nhãn đa giao thức MPLS

[60], [67], đây là giải pháp bảo mật tầng IP (giao thức IPSec) tập trung bảo mật tại

các Gateway và đường biên của hệ thống mạng, giải pháp này có thể bảo mật được

luồng thông tin tốc độ cao nhưng chưa linh hoạt, tùy biến trong cấu hình, cài đặt,

tích hợp sản phẩm vào hệ thống mạng thực tế. Với giải pháp bảo mật các dịch vụ,

ứng dụng cụ thể trong nước có các dòng sản phẩm bảo mật Mail, bảo mật Web, bảo

mật cơ sở dữ liệu và sản phẩm bảo mật hội nghị truyền hình. Trong giải pháp trên

chúng ta phải thực hiện can thiệp mật mã vào cấu trúc của từng ứng dụng, dịch vụ

cụ thể làm thay đổi cấu trúc, ảnh hưởng đến tính toàn vẹn và thói quen sử dụng các

dịch vụ, ứng dụng.

Lựa chọn giải pháp tích hợp mật mã cho bài toán bảo mật dữ liệu trên

đường truyền.

Hiện nay, các nghiên cứu về bảo mật dữ liệu trên đường truyền chủ yếu được

thực hiện bằng giải pháp tạo ra các mạng riêng ảo VPN kết hợp với kỹ thuật mật

mã. Mỗi VPN sẽ tạo ra một đường hầm ảo kết nối giữa hai điểm đầu và cuối, các dữ

liệu trao đổi bên trong đường hầm sẽ được đảm bảo bảo mật bằng kỹ thuật mật mã.

VPN cung cấp tính năng bảo mật bằng cách sử dụng các giao thức đường hầm

(Tunnelling protocol) và qua các thủ tục bảo mật như mã hóa, xác thực. Mô hình

bảo mật VPN cung cấp:

- Tính bí mật: Ngay cả khi giao thông mạng bị chặn thu ở mức gói tin, kẻ tấn

công chỉ thu được các dữ liệu đã mã hóa.

29

- Xác thực người gửi: Ngăn chặn người sử dụng truy cập trái phép VPN.

- Toàn vẹn thông điệp: Phát hiện các thông điệp giả mạo hay bị sửa đổi.

Hiện nay, trên thế giới có nhiều nhà cung cấp đưa ra các sản phẩm với giải

pháp VPN kết hợp giao thức bảo mật ở các tầng khác nhau được coi là giải pháp

hữu hiệu trong bảo mật dữ liệu trên đường truyền:

- Giao thức SSL/TLS (Secure Sockets Layer/Transport Layer Security) có

thể được sử dụng để tạo đường hầm bảo vệ toàn bộ giao thông mạng (như trong

OpenVPN/SoftEther VPN) hoặc đảm bảo một kết nối riêng lẻ. SSL/TLS VPN đáp

ứng được hầu hết các mục tiêu an ninh, an toàn: xác thực, tính toàn vẹn, bảo mật và

linh hoạt trong cấu hình, triển khai thực hiện, đặc biệt trong trường hợp hạ tầng

mạng có sử dụng dịch vụ chuyển đổi địa chỉ (NAT) hay bị hạn chế bởi tường lửa.

- Giao thức IPSec (Internet Protocol Security) đáp ứng được cơ bản các mục

tiêu an ninh: xác thực, tính toàn vẹn và bảo mật, IPSec mã hóa và đóng gói gói tin

IP bên trong IPSec, giải mã các gói tin gốc ở cuối đường hầm và chuyển tiếp gói tin

đến đích.

- DTLS (Datagram Transport Layer Security) được sử dụng trong một số sản

phẩm như Cisco AnyConnect VPN và OpenConnet VPN như một biện pháp khắc

phục các vấn đề gặp phải khi sử dụng SSL/TLS qua UDP.

- SSH VPN (Secure Shell): OPenSSH cung cấp VPN tunnelling để bảo vệ

kết nối từ xa với một mạng hoặc liên kết liên mạng. OPenSSH cung cấp một số giới

hạn các đường hầm đồng thời.

Yêu cầu bảo mật dữ liệu trên đường truyền đòi hỏi phải bảo vệ tất cả các dịch

vụ trên mạng, về mặt kỹ thuật IPSec và SSL/TLS [1] đều có những tính chất riêng

biệt, tùy theo yêu cầu bảo mật mà chọn lựa IPsec hay SSL/TLS. Do tính linh hoạt

trong việc cấu hình, triển khai thực hiện trên các mô hình, môi trường mạng khác

nhau và tính an ninh an toàn, bảo mật cao của SSL/TLS - VPN nên đây là giải pháp

chính, hữu hiệu nghiên cứu sinh lựa chọn để tích hợp các tham số an toàn và thuật

toán mật mã vào bộ giao thức thực hiện bài toán bảo mật dữ liệu trên đường truyền.

Giao thức SSL/TLS và công nghệ VPN không chỉ được phát triển ở dạng

phần mềm trên các môi trường hệ điều hành khác nhau, mà nó còn được tích hợp

30

vào các thiết bị phần cứng mạng như Router, Switch để tạo thành bộ sản phẩm với

các chức năng mạng rất hoàn chỉnh (định tuyến, an ninh an toàn, bảo mật…).

Với giải pháp tích hợp các tham số an toàn và thuật toán mật mã vào bộ giao

thức SSL/TLS để thực hiện bài toán bảo mật dữ liệu trên đường truyền, chúng ta có

thể chủ động tạo ra sản phẩm bảo mật thông tin trên mạng máy tính, với các module

mật mã kiểm soát làm chủ hoàn toàn và độ an toàn của sản phẩm do các module

mật mã quyết định.

1.3.2. Chuẩn về an toàn tầng vận tải SSL/TLS

1.3.2.1. Giới thiệu bộ giao thức

Giao thức SSL/TLS là một giao thức có thể được đặt ở giữa giao thức tầng

mạng kết nối định hướng tin tưởng (TCP/IP) và tầng giao thức ứng dụng (FTP,

HTTP, telnet ...). SSL/TLS cung cấp dịch vụ truyền thông có bảo mật giữa client và

server bằng việc cho phép client và server xác thực lẫn nhau sử dụng chữ ký số và

bảo mật thông tin trao đổi qua lại bằng cách mã hóa các thông tin đó.

Giao thức này được thiết kế để có thể trợ giúp một loạt các thuật toán sử

dụng cho việc mã hóa, hàm băm và chữ ký số. Giao thức SSLv3 đây là giao thức

SSL phiên bản 3.0 do Netscape Corporation thiết kế, đã có trợ giúp chuỗi các chứng

chỉ điện tử và hiện phiên bản này của giao thức SSL đã được hỗ trợ cho tất cả các

trình duyệt phổ thông.

Trên cơ sở phiên bản SSLv3, IETF đã thiết kế và công bố giao thức

Transport Layer Security version 1.0 (TLSv1). Ngoài ra IETF còn phát triển thêm

hai phiên bản TLS v1.1 và TLS v1.2, trong đó TLS v1.1 được bổ sung các tính năng

nhằm chống lại các tấn công liên quan đến chế độ mã hoá CBC (Cipher Block

Chaining), còn phiên bản TLS v1.2 [74] có hỗ trợ tích hợp các thuật toán mật mã

mới như: chuẩn mã hoá tiên tiến (AES), hàm băm SHA2,… Tuy nhiên, các phiên

bản mới của giao thức TLS hiện vẫn chưa được tích hợp cho một số các trình duyệt

đang được dùng phổ biến hiện nay.

1.3.2.2. Các thành phần trong giao thức SSL

Giao thức SSL gồm 4 thành phần chính [13], [74]:

31

- Giao thức bắt tay SSL (SSL Hanshake Protocol): Thực hiện chức năng bắt

tay giữa ứng dụng khách và ứng dụng chủ (thỏa thuận các thuật toán trao đổi

tham số, trao đổi khóa, xác thực server và client).

- Giao thức bản ghi SSL (SSL Record Protocol): Giao thức trao đổi dữ liệu có

bảo mật giữa ứng dụng khách và ứng dụng chủ.

- Giao thức báo lệnh SSL (SSL Alert Protocol): Thông báo lỗi trả về trong quá

trình thực hiện giao thức.

- Giao thức xác định thay đổi mã pháp SSL (SSL Change Cipher Spec

Protocol): Thông báo việc thực hiện thực hiện thiết lập các thuộc tính mật mã

cho phiên liên lạc đã hoàn thành.

ClientHello

ServerHello

Thiết lập protocol version, ID phiên, thuật toán mã hoá, phương pháp nén, trao đổi giá trị random

Certificate

Certificate Request

Server gửi certificate và yêu cầu Client gửi lại certificate nếu được thiết lập xác thực client

ServerHelloD one Certificate

Client gửi certificate nếu được yêu cầu

Certificate Verify ChangeCipherS pec Finished

Change CipherSuit và kết thúc giai đoạn Handshake

ChangeCipherS pec

Finished

Server

Giao thức bắt tay SSL

Client

Hình 1.7: Giao thức bắt tay SSL

Các tham số mật mã liên quan đến một phiên liên lạc được thực hiện thông

qua giao thức bắt tay SSL, giao thức này nằm ngay bên trên giao thức bản ghi SSL.

Khi SSL client và SSL server bắt đầu một phiên liên lạc chúng cần thống nhất về

32

phiên bản của giao thức sẽ được dùng, lựa chọn thuật toán mã hoá cho phiên liên

lạc, có thể có hoặc không việc xác thực lẫn nhau, và sử dụng thuật toán mã hoá

khoá công khai để sinh khoá chung cho phiên liên lạc đó. Tất cả các thông điệp trao

đổi qua lại giữa server và client phải được biểu diễn theo một cấu trúc định trước.

Tầng giao thức bản ghi SSL

Giao thức bản ghi SSL là một tầng giao thức. Đối với mỗi tầng giao thức nói

chung, một gói dữ liệu sẽ bao gồm các trường độ dài, mô tả và nội dung dữ liệu.

SSLv3 record nhận dữ liệu cần gửi từ tầng trên phân nhỏ thành từng block, nén dữ

liệu, bổ sung dữ liệu kiểm tra, mã hoá và gửi. Khi nhận dữ liệu về tiến trình được

thực hiện ngược lại: giải mã, kiểm tra, gỡ nén và sắp xếp lại rồi gửi lên tầng trên.

Trong đó dữ liệu tầng ứng dụng (Application data) có thể là dữ liệu của giao thức

bắt tay SSL, hoặc dữ liệu của các ứng dụng khác như HTTP, Telnet, ... Để phân biệt

được từng loại dữ liệu đó trong mỗi khối dữ liệu của SSL record đều có phần header

để phân biệt.

Application Data

Frame Frame Frame

Phân mảnh dữ liệu

Nén dữ liệu

Mã hoá và MAC

Chuyển xuống tầng TCP

TCP Frame

Cụ thể có thể diễn giải các giai đoạn trong giao thức này như sau:

Hình 1.8: Giao thức bản ghi SSL

Trong đó dữ liệu tầng ứng dụng (Application data) có thể là dữ liệu của giao

thức bắt tay SSL, hoặc dữ liệu của các ứng dụng khác như HTTP, Telnet, ... Để

33

phân biệt được từng loại dữ liệu đó trong mỗi khối dữ liệu của SSL record đều có

phần header để phân biệt.

Các giao thức ChangeCipherSpec và Alert.

 Giao thức ChangeCipherSpec

Giao thức này chỉ bao gồm một thông điệp trong đó thực hiện chức năng

thông báo việc thiết lập các thuộc tính mật mã cho phiên liên lạc đã hoàn thành.

Thông điệp này chỉ có một byte duy nhất với giá trị là 1.

enum{change_cipher_Spec(1),(255)} type;

struct{ }ChangeCipherSpec;

Thông điệp ChangeCipherSpec được gửi từ cả máy client lẫn máy server để

thông báo cho bên nhận biết bắt đầu từ các frame dữ liệu tiếp theo sẽ được mã hoá

bởi CipherSpec và khoá vừa thiết lập được. Client gửi thông điệp này ngay sau khi

gửi xong thông điệp KeyExchange, còn server gửi ngay sau khi nhận và xử lý xong

thông điệp KeyExchange từ client.

 Alert protocol

Một trong những kiểu dữ liệu được hỗ trợ bởi tầng giao thức bản ghi SSL là

kiểu alert (thông điệp cảnh báo). Các thông điệp cảnh báo truyền tải các thông báo

lỗi trong quá trình thiết lập cũng như trao đổi dữ liệu của một phiên liên lạc. Cũng

như các loại thông điệp khác, thông điệp cảnh báo cũng được mã hoá và nén.

1.3.3. Một số tấn công cơ bản đối với giao thức SSL

1.3.3.1. Tấn công quay lui phiên bản, quay lui thuật toán mã hóa.

 Nguồn gốc: Tấn công này được đưa ra bởi tác giả David Wagner và Bruce

Schneier [11], [31].

 Mô tả tấn công: Do tính tương thích ngược nên phiên bản SSL/TLS được

đưa ra có thể kết nối được với phiên bản SSL 2.0 kẻ tấn công lợi dụng. Đối

với SSL phiên bản 2.0 kẻ tấn công có thể thiết lập việc sử dụng thuật toán mã

hoá yếu cho client và server thông qua việc sửa danh sách các thuật toán mã

hoá dữ liệu được trợ giúp trong các thông điệp Hello.

34

 Giải pháp khắc phục

Loại bỏ hoặc không thiết lập dùng giao thức SSL 2.0, chỉ chấp nhận thiết lập

kết nối khi version giữa Client và Server là 3.0 trở lên. Khi thiết lập các thuật toán

mã hóa cần loại bỏ những thuật toán yếu

1.3.3.2. Tấn công làm mất thông điệp ChangeCipherSpec

 Nguồn gốc: Tấn công này được đưa ra bởi tác giả David Wagner và Bruce

Schneier [11].

 Mô tả tấn công: Thông điệp ChangeCipherSpec không thuộc giai đoạn Bắt

tay nên thông điệp này không được xác thực trong thông điệp Finished. Đây

sẽ là một lỗ hổng cho kiểu tấn công làm mất thông điệp ChangeCipherSpec

(Hình 1.9).

Ba giai đoạn đầu tiên của Hanshake protocol đó thiết lập được các khóaMAC bí mật

Man in the middle

ChangCipherSpec

Gửi trạng thái cần cập nhật

Finc, MACk1(Finc)

Finc

Nhận trạng thái không được cập nhật, Finc được chấp nhận

ChangeCipherSpec

Fins, MACk2(Fins)

Gửi trạng thái cần cập nhật

Fins

Nhận trạng thái không được cập nhật, Fins được chấp nhận

data, MACk1(data)

Modified data

Client Server

Hình 1.9: Tấn công ChangeCipherSpec

Trong đó Finc, Fins là các thông điệp Finished của client và server.

35

Với cách tấn công trên, kẻ tấn công ở giữa sẽ làm mất hiệu lực việc cập nhật

thuật toán mã hóa dữ liệu, các tham số khác sẽ được dùng để bảo vệ dữ liệu trao đổi

ở tầng bản ghi.

 Giải pháp khắc phục

Dưới đây là hai cách sửa lỗ hổng làm mất thông điệp ChangeCipherSpec được

đề xuất trong [11]:

- Cách thứ nhất: Cả client và server đều yêu cầu nhận được thông điệp

ChangeCipherSpec mới thực hiện việc xử lý thông điệp Finished. Đây là

cách mà phiên bản SSL 3.0 dùng để chống lại tấn công này. Trong bộ

chương trình OpenSSL đã sử dụng cách sửa này nhờ vào cờ nhớ s->s3-

>change_cipher_spec. Trước khi nhận được gói ChangeCipherSpec giá trị cờ

nhớ trên được thiết lập là 0. Chỉ khi nào nhận được gói ChangeCipherSpec

thì nó mới được thiết lập là 1. Đồng thời cờ s->s3->change_cipher_spec

được kiểm tra trước khi xử lý gói Finished để đảm bảo là đã nhận được thông

điệp ChangeCipherSpec. Sau đó giá trị cờ này lại được gán trả về giá trị 0.

- Cách thứ hai: Tính toán giá trị MAC của thông điệp Finished bao gồm cả

thông điệp ChangeCipherSpec.

1.3.3.3. Tấn công quay lui thuật toán trao đổi khoá

 Nguồn gốc: Tấn công này được đưa ra bởi tác giả David Wagner và Bruce

Schneier [11] và được tổng hợp trong tài liệu [31].

 Mô tả tấn công: Trong quá trình trao đổi khoá, chỉ thông điệp trao đổi khoá

của server được xác thực (sử dụng chữ ký số), hơn nữa việc xác thực thông

điệp trao đổi của server chỉ đảm bảo tính toàn vẹn của các tham số còn định

danh thuật toán trao đổi khoá không được xác thực. Đây là điều kiện để thực

hiện loại tấn công quay lui thuật toán trao đổi khoá (hình 1.10).

Với cách tấn công như trên, kẻ thực hiện tấn công sẽ có khóa k để mã/giải mã

dữ liệu ở tầng record trong giao dịch với client và khóa k' để mã/giải mã dữ liệu ở

tầng record trong giao dịch với server.

36

Man in the middle

Client Hello: SSL_RSA…

Client Hello: SSL_DHE…

Server Hello: SSL_DHE…

Server Hello: SSL_RSA…

Certificate

ServerKeyExchange: Certificate p, g, gy mod p, signature

ServerKeyExchange: p, g, gy mod p, signature

RSA modulus: p RSA Exponent: g

ClientKeyExchange: kg mod p

ClientKeyExchange: gx mod p

k’= gxy mod p

Tính: k’ = gxy mod p

Khôi phục k dễ dàng bằng cách tính căn bậc g (vì p là nguyên tố)

Client Server

Hình 1.10: Tấn công quay lui thuật toán trao đổi khóa

 Giải pháp khắc phục

- Giải pháp ngăn chặn kiểu tấn công trên là thực hiện ký cả định danh thuật

toán trong thông điệp ServerKeyExchange.

- Sử dụng khóa bí mật chia sẻ trước để loại bỏ ngay từ đầu những gói tin lạ.

1.3.3.4. Tấn công padding CBC

 Nguồn gốc: Tấn công này được trình bày trong tài liệu [6] bởi các tác giả

Bodo Moeller, Bill Frantz.

 Mô tả tấn công: Các bài báo trên đã đưa ra hai phương pháp tấn công khác

nhau nhưng đều dựa trên mô hình tiên đoán Oracle. Trong OpenSSL sử dụng

mã khối CBC với dữ liệu padding là độ dài cần pad, byte cuối cùng lưu độ

dài padding. Giả sử kẻ tấn công bắt được hai khối mã liên tiếp là :

o A = AA AA AA AA AA AA AA a

o B = BB BB BB BB BB BB BB b

o Bản rõ tương ứng với B là: P = PP PP PP PP PP PP PP p

37

Kẻ tấn công muốn tấn công vào bản mã B để tìm ra P và dự đoán p==y nào

đó. Nó thực hiện việc gửi hai khối mã liên tiếp là A’ || B đến Server, với :

o A’ = AA AA AA AA AA AA AA (a XOR y)

Khi giải mã, Server sẽ tính được byte cuối cùng là :

o p’=(a xor y) xor (Decrypt(b))=(p xor y) vì a xor (Decrypt(b))=p

Nếu kẻ tấn công dự đoán đúng thì p’=0, như vậy độ dài padding sẽ bằng 0. Do

gói tin đã bị thay đổi nên kẻ tấn công sẽ nhận được thông báo "lỗi MAC". Nếu

kẻ tấn công dự đoán sai thì p’≠ 0 và kẻ tấn công sẽ nhận được thông báo "lỗi

padding".

 Điều kiện tấn công: Tấn công kiểu padding CBC chỉ được áp dụng nếu có

các điều kiện sau đây :

- Thông tin được mã lại nhiều lần trong không gian có thể dự đoán được

(password chẳng hạn)

- Sử dụng chế độ mã CBC

- Kẻ tấn công có thể chặn bắt ở giữa và thực hiện việc tấn công trực tiếp

(Server có thể trả lời với bất kỳ gói tin lỗi nào)

- Kẻ tấn công có thể phân biệt sự khác nhau về thời gian của hai kiểu lỗi là

padding và MAC

 Giải pháp khắc phục:

- Sử dụng phiên bản OpenSSL 0.9.7g trở lên sẽ đảm bảo đã được vá những lỗi

kể trên.

- Việc sử dụng khoá bí mật lưu trong thiết bị chuyên dụng để xác thực những

gói tin ngay từ giai đoạn đầu tiên của quá trình Handshack, điều này làm cho

tấn công padding CBC là không thể thực hiện được do kẻ tấn công không thể

kết nối đến server mà nhận lại thông báo lỗi padding hoặc MAC.

1.3.3.5. Lỗ hổng HeartBleed trong OpenSSL

 Mô tả lỗ hổng bảo mật:

38

Một lỗ hổng nghiêm trọng trong hệ thống giao dịch trực tuyến được công bố

đầu tháng 4 năm 2014, lỗ hổng mang tên Heartbleed (Trái tim rỉ máu) nằm trong

phần mềm OpenSSL. Theo đó, các phiên bản OpenSSL từ 1.0.1 đến 1.0.1f đã có

một lỗi nghiêm trọng liên quan đến vấn đề xử lý bộ nhớ trong việc thực hiện phần

mở rộng Heartbeat trong giao thức TLS. Lỗi này có thể được sử dụng để kẻ tấn

công khám phá lên đến 64 KB bộ nhớ của ứng dụng với mọi yêu cầu mở rộng

heartbeat. Bằng cách đọc bộ nhớ của máy chủ web, những kẻ tấn công có thể truy

cập dữ liệu nhạy cảm, bao gồm cả khóa bí mật của máy chủ Web. Điều này có thể

cho phép kẻ tấn công giải mã thông tin liên lạc bị nghe trộm trước đó nếu sử dụng

giao thức mã hóa không đảm bảo tính chất PFS (an toàn hoàn thiện về phía trước).

Biết được khóa bí mật cũng có thể cho phép kẻ tấn công gắn kết một cuộc tấn công

kẻ đứng giữa MITM để thu thập lại bất kỳ thông tin liên lạc trong tương lai. Lỗ

hổng này cũng có thể tiết lộ những thông báo nhạy cảm không được mã hóa của

người dùng, bao gồm cả cookie phiên và mật khẩu, từ đó cho phép kẻ tấn công có

thể chiếm quyền điều khiển danh tính của người sử dụng.

Lỗ hổng này xuất phát từ một lỗi lập trình trong hàm

tls1_process_heartbeat() của file ssl/t1_lib.c (tương tự trong hàm

dtls1_process_heartbeat() của file ssl/d1_lic.c nếu sử dụng DTLS) của thư viện

OpenSSL.

 Giải pháp khắc phục

- Phương pháp1: Không sử dụng phần mở rộng HeartBeat trong OpenSSL

(loại bỏ trong mã nguồn hoặc không biên dịch với tùy chọn -

DOPENSSL_NO_HEARTBEATS).

- Phương pháp 2:

+ Cập nhật bản vá cho các phiên bản OpenSSL bị lỗi. Phần quan trọng nhất của

bản vá lỗi là thực hiện hai việc kiểm tra. Đầu tiên là kiểm tra để dừng lại

HeartBeat nếu không đúng kiểu. Kiểm tra thứ hai để đảm bảo rằng chiều dài

thực tế của gói tin nhận được (trong biến s->s3->rrec.length) là phù hợp với

chiều dài được gửi kèm theo trong request packet (biến payload).

39

+ Nâng cấp OpenSSL lên phiên bản OpenSSL-1.0.1g hoặc cao hơn.

1.3.4. Giải pháp tích hợp mật mã nâng cao độ an toàn và hiệu quả cho bộ giao

thức SSL/TLS

Bộ giao thức SSL/TLS có vai trò quan trọng trong việc trao đổi thông tin trên

môi trường mạng, rất nhiều ứng dụng đã, đang và sẽ sử dụng bộ giao thức này để

giải quyết vấn đề đảm bảo an toàn, bảo mật thông tin trên đường truyền. Tuy nhiên,

mỗi thành phần của giao thức còn tồn tại những điểm yếu mất an ninh an toàn mà

qua đó kẻ tấn công có thể khai thác, làm thay đổi hoặc mất mát thông tin. Theo báo

cáo kết quả tổng hợp của Tạp chí An toàn thông tin, vào đầu tháng 3/2016, lỗ hổng

DROWN (Decrypting RSA with Obsolete and Weakened eNcryption) đã được phát

hiện và công bố [62].

Vấn đề đặt ra đối với sản phẩm bảo mật dữ liệu trên đường truyền trong triển

khai thực tế đó là việc đảm bảo độ an toàn và hiệu năng của hệ thống khi có nhiều

yêu cầu kết nối bảo mật đồng thời. Giao thức SSL/TLS có hai giai đoạn chính ảnh

hưởng tới độ an toàn và tốc độ thực thi:

- Giai đoạn thiết lập, trao đổi khóa: Thiết lập các tham số an toàn, các thuật

toán mã hóa, giải mã, xác thực và trao đổi khóa.

- Giai đoạn mã hóa và giải mã gói tin: Sử dụng các thuật toán mã khối với chế

độ mã an toàn để bảo mật dữ liệu.

Thực tế đã có nhiều giải pháp nghiên cứu cải tiến giao thức bảo mật

SSL/TLS để nâng cao độ an toàn, hiệu năng, tốc độ thực thi mã hóa, giải mã:

Giai đoạn thiết lập và trao đổi khóa: các nghiên cứu tập trung vào nâng cao

độ an toàn, hiệu quả thực thi giao thức trao đổi khóa trong SSL/TLS. Trên cơ sở

phân tích, đánh giá những tấn công vào quá trình thiết lập, trao đổi khóa trong bộ

giao thức SSL/TLS [11], [36], [40], các nghiên cứu tập trung đề xuất tiêu chuẩn

tham số an toàn cho các thuật toán mật mã khóa công khai RSA cả về tiêu chuẩn an

toàn, cài đặt an toàn, hiệu quả và cách sử dụng hệ mật, tham số an toàn [61], [64],

[65], [66].

40

Trong tài liệu [65], [66] tác giả đã phân tích, đánh giá các tấn công hệ mật và

trình bày giải pháp "Sử dụng hệ RSA ra sao cho an toàn". Ta biết rằng hệ RSA có

hai ứng dụng đó là "Phân phối mầm khoá cho một hệ mật đối xứng nào đó" (dưới

góc độ một hệ mật) và "Xác thực thông tin" (dưới góc độ một hệ chữ ký số). Xuất

phát từ những yêu cầu khác nhau về các hệ được sử dụng (hệ mật hay hệ chữ ký)

nên khái niệm "An toàn" tương ứng cũng không như nhau và dẫn đến việc sử dụng

chúng sao cho an toàn cũng không giống nhau hoàn toàn. Mặc dù mục đích sử dụng

khác nhau nhưng cả hai ứng dụng trên của hệ RSA có một điểm chung về tính an

toàn đó là chúng đều được dựa vào tính "Khó giải được của bài toán RSA". Nếu

giải được bài toán RSA thì mọi ứng dụng của hệ RSA đều bị phá vỡ cho nên việc

nghiên cứu cách sử dụng hệ RSA an toàn đồng nghĩa với việc "Tìm cách làm cho hệ

thống này không tiềm ẩn một ngoại lệ nào dẫn đến bài toán RSA trở thành dễ giải".

Trong [4], [56], [57], [61], [64], [65], [66] các tác giả tập trung nghiên cứu đề xuất

xây dựng hệ tiêu chuẩn cho các số nguyên tố p, q và tham số khóa e, d cùng quan hệ

giữa chúng đảm bảo an toàn và hiệu quả cân bằng giữa độ an toàn, năng lực xử lý

tính toán và thời gian thực thi thuật toán. Ở một khía cạnh khác, trong tài liệu [65],

[66] tác giả đã nghiên cứu đề xuất cách dùng hệ mật và tham số an toàn, hiệu quả

loại bỏ được “lớp đầu vào yếu” của bài toán RSA, hạn chế được tấn công thám mã

theo phương pháp lựa chọn bản mã và giả mạo theo phương pháp lựa chọn bản rõ.

Giai đoạn mã hóa, giải mã gói tin: Sau khi đã thiết lập, trao đổi khóa và

thống nhất được thuật toán, khóa mã cho quá trình mã hóa và giải mã gói tin truyền

trên mạng thì độ an toàn và tốc độ mã hóa dữ liệu hoàn toàn phụ thuộc vào thuật

toán mã khối với chế độ mã phù hợp.

Đã có nhiều nghiên cứu phân tích, đánh giá các hệ mã khối theo ba tiêu chí

quan trọng là độ an toàn, chi phí cài đặt, hiệu năng thực hiện. Các tiêu chí này

thường được xem xét và phân tích tỉ mỉ trong các dự án lựa chọn chuẩn mã khối

trên thế giới như dự án CRYPTREC [75], dự án NESSIA [76] và NIST [77]. Trong

đó, đối với việc phân tích chi phí cài đặt và hiệu năng của thuật toán thường được

xem xét và đánh giá dựa trên cài đặt phần cứng và phần mềm trên nhiều nền tảng và

thiết bị khác nhau dựa trên định hướng của môi trường sử dụng. Một số nghiên cứu,

41

phân tích, đánh giá thuật toán mã khối gắn với giao thức bảo mật cụ thể và chế độ

mã hóa an toàn [5], [6], [12], [18], [19], [22]. Dựa trên các tiêu chuẩn đánh giá mã

khối, đã có nhiều nghiên cứu đề xuất thiết kế, xây dựng thuật toán mã khối an toàn,

hiệu quả tích hợp trong các ứng dụng bảo mật cụ thể [29], [55], [65], [66], [67]

nhằm tăng tốc độ mã hóa, tính linh hoạt trong triển khai ứng dụng. Các nghiên cứu

tập trung vào thiết kế, xây dựng cấu trúc, các thành phần cơ bản của mã khối đảm

bảo an toàn và hiệu quả như: thiết kế chung (cấu trúc, kích thước khối, kích thước

khóa, số vòng trong mã khối), thiết kế lược đồ khóa, thiết kế tầng tuyến tính, thiết

kế tầng phi tuyến và các chế độ sử dụng trong mã khối. Các tác giả đã thiết kế và

lập trình cài đặt thuật toán mã khối trên cả môi trường phần mềm và thiết bị phần

cứng đảm bảo an toàn, hiệu quả (hoàn thiện về cơ sở toán học, an toàn về cài đặt

kháng lại được tấn công thám mã đã biết và đảm bảo được tốc độ thực thi thuật toán

trong các môi trường ứng dụng cụ thể).

Trên cơ sở nghiên cứu, phân tích bộ giao thức SSL/TLS, các thành phần cơ

bản trong bộ giao thức, luận án đề xuất giải pháp tích hợp các thành phần mật mã để

nâng cao độ an toàn và hiệu quả cho giao thức SSL/TLS như sau:

- Nghiên cứu đề xuất tiêu chuẩn tham số an toàn đối với hệ mật RSA trong quá

trình tích hợp vào bộ giao thức SSL/TLS để nâng cao tính an toàn của giao

thức SSL/TLS.

- Nghiên cứu đề xuất cải tiến thuật toán mã khối và tối ưu hóa cài đặt theo tiêu

chí đảm bảo tính bảo mật và hiệu năng về tốc độ mã hóa dữ liệu để tích hợp

vào bộ giao thức SSL/TLS.

- Tiến hành một số giải pháp khắc phục và hạn chế một số điểm yếu mất an

ninh an toàn của bộ giao thức.

KẾT LUẬN CHƯƠNG 1

Trong chương này luận án đã trình bày các kết quả chính dưới đây:

- Trình bày các khái niệm cơ bản về an ninh an toàn trên mạng máy tính. Phân

tích bộ giao thức TCP/IP và khả năng bảo vệ thông tin khi can thiệp mật mã

vào các tầng trong mô hình giao thức TCP/IP để bảo mật thông tin; trong đó

42

bộ giao thức bảo mật SSL/TLS đóng vai trò quan trọng trong việc bảo mật dữ

liệu trên đường truyền.

- Phân tích bộ giao thức SSL/TLS, các thành phần cơ bản trong bộ giao thức,

chỉ ra một số điểm yếu mất an ninh, an toàn trong giao thức và những giải

pháp khắc phục điểm yếu. Xác định rõ vai trò của hệ mật RSA và thuật toán

mã khối trong giao thức bảo mật SSL/TLS, do đó các chương tiếp theo của

luận án sẽ tập trung nghiên cứu đề xuất nâng cao hiệu quả thực hiện thuật

toán mã khối theo hướng đảm bảo an toàn và tốc độ mã hóa giải mã dữ liệu;

đề xuất tiêu chuẩn an toàn đối với hệ mật RSA trong quá trình tích hợp vào

bộ giao thức SSL/TLS để xây dựng ứng dụng bảo mật đường truyền.

43

CHƯƠNG II: NÂNG CAO HIỆU QUẢ THỰC THI, ĐỘ AN TOÀN CỦA CÁC THAM SỐ HỆ MẬT RSA VÀ THUẬT TOÁN MÃ KHỐI

Trong chương này, luận án tập trung trình bày một số kết quả nghiên cứu đề

xuất mới về thuật toán, tham số mật mã phục vụ việc tích hợp vào giao thức bảo

mật dữ liệu trên đường truyền. Thứ nhất, luận án cập nhật bổ sung giả thiết xác định

độ dài modulo an toàn và một tiêu chuẩn mới đối với số mũ công khai trong hệ mật

RSA. Thứ hai, luận án đề xuất ma trận an toàn và cài đặt hiệu quả dựa trên ma trận

tựa vòng cho tầng tuyến tính trong các mã pháp dạng AES.

2.1. GIỚI THIỆU CHUNG

Với các hệ mật khóa công khai nói chung và hệ mật RSA nói riêng đều có độ

an toàn dựa trên độ phức tạp tính toán. Cụ thể, hệ mật RSA có độ an toàn dựa vào

tính khó giải của bài toán phân tích số nguyên lớn, nếu có thể phân tích được số

modulo N thì hệ mật này hoàn toàn bị phá vỡ. Để có thể thiết kế và lựa chọn các hệ

mật nói trên thì bài toán cơ bản đầu tiên cần giải quyết là xác định ngưỡng an toàn

theo chi phí thám mã. Tiếp đến, như một hệ quả, các hệ mật được sử dụng phải

chứng tỏ (trên cơ sở các kỹ thuật thám mã hiện hành và các dự đoán về sự phát triển

của các hệ mật) chi phí thực tế để thám các hệ mật này phải không dưới ngưỡng an

toàn đã đưa ra.

Trong mục 2.2, luận án trình bày phương pháp luận để xác định ngưỡng an

toàn cho những hệ mật có độ an toàn dựa vào độ phức tạp tính toán theo các luận cứ

riêng với mốc thời gian tính từ năm 2016. Từ đó, đưa ra các giá trị về ngưỡng an

toàn trong lĩnh vực kinh tế - xã hội làm cơ sở để lựa chọn độ dài modulo N cho hệ

mật RSA an toàn. Hơn nữa, trình bày về một tấn công hiệu quả sử dụng phương

pháp "mã hóa liên tiếp" để giải bài toán RSA trong trường hợp số mũ công khai e

có cấp ( ) đủ nhỏ. Dựa vào đó, luận án phát triển thuật toán giải bài toán

RSA thành thuật toán phân tích modulo N của hệ RSA hiệu quả trong trường hợp

chỉ cần hoặc đủ nhỏ. Với phát triển trên, luận án đề xuất bổ sung

44

thêm một tiêu chuẩn cho mũ công khai e cùng với việc tìm các số nguyên tố chứng

minh được sự thỏa mãn tiêu chuẩn đã đưa ra cho hệ RSA.

Về các hệ mật khóa bí mật, từ năm 2000 với việc thuật toán của Rijndael được

công nhận thành chuẩn mã dữ liệu nâng cao (AES), đã có nhiều nguyên thủy mới sử

dụng các thành phần tương tự như trong mã pháp AES [58]. Chiến lược vệt lan rộng

là một cách thức tinh tế của việc bảo đảm tính chất khuếch tán tốt cũng như cho

phép các nhà thiết kế dễ dàng đưa ra cận an toàn cho khả năng chống lại thám mã vi

sai và tuyến tính cho mã pháp nhận được [30]. Hơn nữa, một lợi ích khác là phân ra

sự lựa chọn của tầng tuyến tính và tầng phi tuyến một cách riêng biệt. Tóm lại, một

hộp thế bất kỳ khi kết hợp với tầng tuyến tính tốt sẽ tạo ra một mã pháp có khả năng

chống lại tấn công tuyến tính và vi sai.

Đối với các mã pháp dạng AES, tầng tuyến tính được kết hợp bởi hai thành

phần: một là giống với phép biến đổi MixColumns và một là giống với phép biến

đổi ShiftRows. Phép biển đổi giống MixColumns là phép nhân ma trận với một cột

của trạng thái và phép toán giống ShiftRow là một hoán vị các từ của trạng thái [29].

Trong thiết kế mã khối, tham số đặc trưng cho khả năng khuếch tán của một

tầng tuyến tính chính là số nhánh của nó. Nói một một cách ngắn gọn, số nhánh

tương ứng với giá trị nhỏ nhất số lượng các hộp thế hoạt động trong một cột đầu

vào và đầu ra miễn là cột đầu vào là hoạt động (số lượng các S-hộp hoạt động là

công cụ cơ bản cho việc đánh giá khả năng kháng lại tấn công tuyến tính vi sai và

tuyến tính). Do đó, để đạt được độ an toàn cao thông thường các nhà thiết kế thường

chọn lựa các ma trận có tính chất MDS [33] trong thiết kế của mình.

Tuy nhiên, khi thiết kế một tầng tuyến tính ngoài tính chất về độ an toàn,

chúng ta cần phải lựa chọn các tham số làm sao tầng tuyến tính nhận được phải dễ

dàng cài đặt trong cả môi trường phần mềm và phần cứng. Chiến lược thiết kế này

đôi khi dẫn đến sự thỏa hiệp giữa các tham số an toàn và tham số cài đặt với nhau.

Như trong tầng khuếch tán của AES, ma trận MDS sử dụng là một ma trận vòng

được lựa chọn kỹ lưỡng trên cơ sở đảm bảo độ an toàn và khả năng cài đặt. Tuy

nhiên, theo đánh giá trên quan điểm điểm bất động được tác giả Z’aba M. R. công

45

bố trong luận án tiến sỹ của mình thì tầng khuếch tán này lại có 216 điểm bất động

[55].

Trong [43] nhóm tác giả đề xuất một số ma trận MDS cuộn có dạng

Hadamard hiệu quả trong cài đặt phần cứng. Cụ thể trong tài liệu này đưa ra số cổng

XOR cần thiết đối với mỗi một ma trận đề xuất. Tuy nhiên, những tầng tuyến tính

dạng AES mà sử dụng ma trận MDS Hadamard cuộn lại có nhiều điểm bất động.

Mặt khác, việc lựa chọn các hệ số hiệu quả trong cài đặt lại phụ thuộc cả vào

bản thân đa thức sinh của trường hữu hạn. Luận án sẽ khai thác đặc điểm này để đề xuất các ma trận tựa vòng 4x4 trên trường GF(28) hiệu quả sử dụng trong thiết kế

tầng tuyến tính của các mã pháp dạng AES.

Trong mục 2.3, luận án đề xuất và đánh giá tầng tuyến tính có tính chất cài đặt

hiệu quả trong phần cứng dựa trên ma trận tựa vòng có thể sử dụng trong thiết kế

tầng tuyến tính cho các mã pháp dạng AES. Dựa trên cơ sở lý thuyết những nghiên

cứu trước đó, luận án đánh giá số lượng điểm bất động của tầng khuếch tán nhận

được. Bên cạnh đó luận án khảo sát và đánh giá các ma trận tựa vòng nhằm lựa

chọn ra một ma trận phù hợp cho việc xây dựng một tầng khuếch tán cho mã khối

có cấu trúc SPN có kích thước khối 128 bit.

2.2. XÂY DỰNG TIÊU CHUẨN THAM SỐ CHO HỆ MẬT RSA

Hệ mật mã hóa khóa công khai RSA

Hệ thống mật mã RSA được phát minh bởi ba tác giả Ron Rivest, Adi Shamir

và Leonard Adleman. Độ an toàn của hệ thống mật mã RSA dựa trên tính khó của

bài toán phân tích số nguyên ra các thừa số nguyên tố. Hiện nay RSA là hệ thống

mật mã khóa công khai được dùng phổ biến nhất trong các ứng dụng bảo mật thông

tin. Nó được sử dụng để cung cấp sự đảm bảo tính bí mật và các chữ ký số.

- Bộ tham số hệ mật RSA: (N, e, d) được gọi là bộ tham số RSA

- Số nguyên N được gọi là RSA modulo.

- Khóa công khai RSA là cặp (N, e), khóa bí mật là cặp (N, d)

46

Độ an toàn: là một giá trị có liên quan đến lượng công việc cần phải thực hiện

(số lượng phép toán) để phá vỡ một thuật toán hoặc một hệ thống mật mã.

2.2.1. Một số tiêu chuẩn tham số RSA an toàn đã được công bố

 Tiêu chuẩn tham số RSA trong ANSI X9.31 [2]

Chuẩn X9.31 do Viện Chuẩn Quốc gia Mỹ (ANSI) phê chuẩn vào tháng 09

năm 1998.

- Tiêu chuẩn tham số cho e và d

+ e là số nguyên dương thoả mãn

e có thể là cố định hoặc được chọn ngẫu nhiên.

và thoả mãn

+ d được tính bởi công thức

- Tiêu chuẩn về độ dài modulo

Trong chuẩn X9.31 không đề xuất cụ thể về độ dài modulo tối thiểu được

dùng đến một năm nào đó, mà chỉ đưa ra độ phức tạp tính toán, dung lượng lưu trữ

khi sử dụng thuật toán sàng trường số để phân tích một số modulo có độ dài cho

trước. Chuẩn X9.31 khuyến cáo sử dụng modulo có độ dài 1024+256s, s0

 Tiêu chuẩn tham số RSA có trong NIST 800-57 [57]

NIST 800-57 được NIST công bố vào tháng 3 năm 2007. Dưới đây là bảng liệt

kê độ an toàn tối thiểu của hệ mật RSA tương ứng với các độ dài modulo được đưa

ra bởi NIST 800-57.

nlen 1024 2048 3072

security_strength min. 80 min. 112 min. 128 - Độ dài tối thiểu của RSA modulo

Độ dài tối thiểu của RSA modulo dùng đến một năm cho trước

Thời gian sống an toàn của thuật toán Đến năm 2010 Độ dài tối thiểu modulo (nlen) 1024 bít

47

Đến năm 2030 Sau năm 2030 2048 bít 3072 bít

 Tiêu chuẩn tham số RSA trong FIPS 186-3 [16]

Chuẩn FIPS 186-3 do Viện Công nghệ Tiêu chuẩn quốc gia Mỹ (NIST) phê

duyệt và công bố chính thức vào tháng 6 năm 2009.

- Tiêu chuẩn cho số mũ công khai e

Số mũ công khai e nên được chọn trước khi sinh p, q và số mũ bí mật d. Số mũ

e là số nguyên lẻ thoả mãn: 216 < e < 2256

- Tiêu chuẩn cho số mũ bí mật d

Số mũ bí mật d là giá trị nguyên dương thoả mãn d > 2nlen/2,

và .

 Tiêu chuẩn Việt nam TCVN 7635:2007 [64]

- Độ dài tối thiểu của RSA modulo

Thời gian sử dụng Độ an toàn Nlen tối thiểu

Tới năm 2010 80 1024 bit

Tới năm 2030 112 2048 bit

Sau năm 2030 128 3072 bit

- Tiêu chuẩn cho số mũ công khai e

Chọn trước e là số mũ công khai thỏa mãn

- Tiêu chuẩn cho số mũ bí mật d

Số mũ bí mật d là giá trị nguyên dương thoả mãn d > 2nlen/2,

và .

Ngoài các tiêu chuẩn đã công bố, trong một số nghiên cứu, luận án tiến sỹ

cũng đã tập trung nghiên cứu, đề xuất tiêu chuẩn tham số an toàn và cách sinh tham

số, sử dụng an toàn hệ mật RSA [61] trong một số lĩnh vực chuyên biệt. Tuy nhiên,

các nghiên cứu này mới đưa ra về mặt định tính cho các lựa chọn tham số e mà

chưa đưa ra cơ sở khoa học để chứng minh và tiêu chuẩn an toàn của tham số khóa

công khai e.

48

2.2.2. Phương pháp xác định ngưỡng an toàn của Lenstra và Verheul

Để làm cơ sở nền tảng, đầu tiên luận án trình bày phương pháp của Arjen

K.Lenstra và Eric R.Verheul, vận dụng phương pháp của hai tác giả trên cơ sở các

luận cứ riêng của tác giả để xác định ngưỡng an toàn theo các luận cứ này.

Một số căn cứ để giải quyết bài toán xác định ngưỡng an toàn và xác định độ

dài modulo tối thiểu cho hệ mật RSA được Lenstra và Verheul đưa ra trong [4], [5]

như sau:

2.2.2.1. Ngưỡng an toàn

Ta có thể định nghĩa về ngưỡng an toàn đến thời điểm y là số lượng các phép

tính mà đối tượng tấn công không thể thực hiện được cho đến thời điểm trên.

Lenstra và Verheul đã xác định tham số trên theo các giả thiết dưới đây:

Giả thiết 1: Hệ mật DES được phép sử dụng cho đến năm 1982, có nghĩa là, hệ

mật này được chấp nhận còn an toàn cho đến năm 1982. Biết rằng, để thám hệ mật

này, ta cần đến một chi phí tính toán cỡ 0,5 MY, với MY là số phép toán thực hiện

được trong 1 năm của một bộ vi xử lý có tốc độ 1 Mega flops, hay:

1MY = 10631.536.000  244,8 (2.1)

Để ước lượng sức mạnh tính toán mà đối tượng tấn công có được trong tương

lai, Lenstra và Verhuel đã sử dụng theo luật Moore như sau.

Giả thiết 2 (Định luật Moore): Sức mạnh tính toán của bộ vi xử lý được nhân

đôi sau mỗi 18 tháng với giá thành không đổi.

Từ cách áp dụng luật Moore, ta có thể xem xét sự thay đổi về tiềm năng kinh

tế. Ví dụ, tổng sản phẩm quốc nội Mỹ chỉ ra xu hướng tăng gấp đôi sau mỗi 10 năm,

cụ thể năm 1975 là 1630 tỷ USD, năm 1985 là 4180 tỷ USD, năm 1995 là 7269 tỷ

USD.

Giả thiết 3: Điều trên dẫn đến giả thiết là sức mạnh kinh tế của mỗi tổ chức

cũng được tăng gấp đôi sau mỗi 10 năm.

49

Ký kiệu IMY(y) là số các MY không thể thực hiện vào năm đó hay là ngưỡng

an toàn tại năm y tính theo đơn vị MY. Dựa trên các giả thiết từ 1 đến 3, giá trị

IMY(y) được tính theo công thức dưới đây:

IMY(y) = 0,5 (MY)   = (2.2) (MY)

2.2.2.2. Độ dài modulo của hệ mật RSA

a) Giả thiết về tiến bộ mã thám

Khi phân tích những tiến bộ về việc giải bài toán phân tích số nguyên ra thừa

số nguyên tố từ những năm 70 đến năm 2000, Lenstra và Verheul đưa ra giả thiết 4

trong [4] như sau:

Giả thiết 4: Đối với hệ mật RSA, tác dụng của các tiến bộ mã thám cũng tăng

trưởng theo luật Moore, cụ thể cứ sau 18 tháng thì việc phá vỡ hệ mật này sẽ giảm

chi phí đi một nửa.

Phương pháp tiên tiến nhất để giải bài toán phân tích số nguyên ra thừa số là

phương pháp sàng trường số NFS (Number Field Sieve). Thời gian tính tiệm cận

theo phương pháp này được cho bởi công thức sau:

(2.3)

Xuất phát từ cơ sở là khóa RSA-512 được phá trong năm 1999 bằng phương pháp NFS với chi phí không đến 104 MY mà theo công thức (2.3) thì chi phí để phá

khóa nói trên phải là:

(2.4)

Như vậy, ta có thể coi chi phí thật của việc phá các khóa RSA-n, ký hiệu là

T[2n], được tính theo công thức sau:

(2.5)

b) Công thức tính độ dài modulo cho hệ mật RSA

50

Kết hợp với giả thiết 4 thì hệ mật RSA-n muốn an toàn đến năm y cần phải

thỏa mãn bất đẳng thức dưới đây:

(2.6)

2.2.2.3. Bảng tính ngưỡng an toàn và độ dài modulo an toàn cho hệ mật RSA

Từ (2.2) và (2.6), Lenstra và Verheul đưa ra bảng tính 2 tham số a(y) là số mũ

lũy thừa 2 của vế phải (2.2) và n(y) là độ dài modulo cho hệ mật RSA theo các năm

y từ 2015 đến 2025, được trình bày trong bảng 2.1.

a(y) n(y) y a(y) y a(y) n(y) y n(y)

2015 82 1613 2016 83 1664

2017 83 1717 2018 84 1771 2019 85 1825

2020 86 1881 2021 86 1937 2022 87 1995

2023 88 2054 2024 88 2113 2025 89 2174

Bảng 2.1. Bảng tính a(y) và n(y) cho lĩnh vực kinh tế - xã hội

của Lenstra và Verheul

2.2.3. Xác định ngưỡng an toàn theo quan điểm riêng

Phần này trình bày việc đưa ra các luận cứ để xây dựng lại các giả thiết và từ

đó đưa ra công thức tính ngưỡng an toàn cho các năm tương lai thứ y với năm gốc

tính toán là y0 = 2016.

2.2.3.1. Luận cứ xác định đối tượng tấn công

Đối tượng tấn công vào các thông tin kinh tế - xã hội có tiềm năng nhất về mặt

tính toán là đối tượng có trong tay siêu máy tính với tốc độ cao nhất tại thời điểm

hiện tại.

Theo tin từ [71], đến tháng 6 năm 2016, siêu máy tính mạnh nhất trên thế giới

là Sunway TaihuLight của Trung Quốc có tốc độ 33,86 petaflop/s. Như vậy, số

phép toán trong 1 năm mà siêu máy tính này thực hiện được là:

33,869  244,8  290,5 (2.7)

51

Giả sử rằng đối tượng tấn công vào khu vực thông tin kinh tế - xã hội sẽ có

năng lực của siêu máy tính mạnh nhất trên thế giới với giá thành 100 triệu USD.

Với khả năng tính toán tối đa như trên, ta hoàn toàn có thể đưa ra ngưỡng an toàn là

con số gấp 10 lần khả năng nói trên, nghĩa là cỡ .

Do vậy, giả thiết mà nghiên cứu sinh muốn đưa ra là:

Giả thiết 5: Ngưỡng an toàn trong lĩnh vực kinh tế - xã hội tại thời điểm 2016,

ký hiệu là A(2016) được cho như sau:

A(2016) = 294 (2.8)

Nếu giả thiết 2 trong phần trên chỉ là sức mạnh tính toán của bộ vi xử lý được

nhân đôi sau mỗi 18 tháng với giá thành không đổi thì trong thời gian gần đây có

nhiều ý kiến cho rằng, thông số trên được rút ngắn chỉ còn là sức mạnh tính toán

của bộ vi xử lý được nhân đôi sau mỗi 12 tháng với giá thành không đổi. Thay cho

giả thiết 2 trong phần 1 (có lẽ đã lạc hậu ở thời điểm hiện tại), luận án đưa ra giả

thiết 6 dưới đây:

Giả thiết 6: Sức mạnh tính toán của bộ vi xử lý được nhân đôi sau mỗi một

năm với giá thành không đổi.

2.2.3.2. Công thức xác định các ngưỡng an toàn cho đến năm y (y2016)

Với các phân tích để đưa ra các giả thiết mới trong mục trên, ta sẽ tính được

các ngưỡng an toàn cho đến năm y cho các thông tin cần bảo vệ trong lĩnh vực Kinh

tế - Xã hội, ký hiệu là A(y), bởi công thức dưới đây:

(2.9)

Với ngưỡng an toàn được tính theo công thức (2.9) nên công thức tính độ dài

modulo cho hệ mật RSA cũng thay đổi. Cụ thể, công thức xác định tham số này

(vẫn giữ nguyên giả thiết 4 về tiến bộ mã thám cũng như công thức (2.5) về chi phí

phân tích thực tế của số n bits theo phương pháp NFS) từ (2.6) ta thu được:

(2.10)

52

Để tường minh trong việc tính toán, trước hết tác giả tính toán và biểu diễn

dưới dạng lũy thừa 2 của hệ số và biểu thức L[2n].

Để thuận lợi cho tính toán, ta biến đổi công thức (2.2) về thời gian tính của

phương pháp NFS với N = 2n.

Logarit cơ số 2 hai vế của (2.2) sau khi đã bỏ qua đại lượng giống như

lập luận của Lenstra và Verheul, ta thu được:

Với n = 512 ta có:

Từ công thức (2.1) ta có: 104 MY  258.1

Do đó, ta có:

Khi đó, (2.10) tương đương với bất đẳng thức dưới đây:

(2.11)

Chú ý rằng, theo giả thiết 5 thì log2(A(2016)) = 94. Nghiên cứu sinh đã thực

hiện tính toán các giá trị a(y) (số mũ lũy thừa 2 của A(y)) và n(y) (giá trị n tương

ứng với năm y trong công thức 2.11, là kích thước tối thiểu của modulo của hệ mật

RSA để cho hệ mật này an toàn đến năm y) với y từ 2016 đến 2025. Kết quả tính

được trình bày trong bảng 2.2 sau đây (sử dụng công cụ tính toán online từ trang

web Wolframalpha.com).

53

2016

94

1821

2021

100

2180

2017

96

1890

2022

101

2257

2018

97

1960

2023

102

2335

2019

98

2032

2024

103

2415

2020

99

2105

2025

104

2496

y a(y) n(y) y a(y) n(y)

Bảng 2.2. Bảng tính các giá trị a(y) và n(y) cho lĩnh vực Kinh tế - Xã hội

Tóm lại, vấn đề quan trọng nhất đạt được ở phần trên là phương pháp luận để

xác định ngưỡng an toàn cho những hệ mật có độ an toàn dựa trên độ phức tạp tính

toán. Các giá trị về ngưỡng an toàn trong lĩnh vực kinh tế - xã hội là cơ sở để xây

dựng hệ tiêu chuẩn cho hệ mật RSA và lựa chọn hệ mật dùng trong các ứng dụng.

So sánh với kết quả được công bố trên thế giới theo [73], tính theo năm 2016,

các phương pháp đưa ra độ an toàn như bảng sau đây.

Phương pháp Năm

Kích thước khóa an toàn Độ an toàn cho DLP Độ an toàn cho ECC

83 96 Độ an toàn cho phân tích số (RSA) 1664 1776 158 192 158 192 Độ an toàn cho hàm băm 158 192

112 2048 224 224 224 Lenstra&Verhuel ECRYPT II (Châu Âu) NIST (Mỹ)

128 100 2048 2048 256 200 256 200 256 200 BSI (Đức) ANSSI (Mỹ)

Luận án 94 -104 1821 - 2835 2016 2016- 2020 2011- 2030 2016 2014- 2020 2016- 2025

Bảng 2.3. Bảng giá trị ngưỡng an toàn theo các phương pháp

Theo kết quả thống kê trong bảng 2.3 giá trị ngưỡng an toàn và độ dài modulo

của hệ mật RSA do luận án đề xuất trong lĩnh vực kinh tế - xã hội là hoàn toàn phù

hợp với chuẩn chung của thế giới đã công bố và đảm bảo tính an toàn theo thời gian

đến năm 2025.

54

2.2.4. Phương pháp mã hóa liên tiếp và tiêu chuẩn cho số công khai

Trong mục này luận án trình bày về một tấn công hiệu quả sử dụng phương

pháp "mã hóa liên tiếp" để giải bài toán RSA trong trường hợp số mũ công khai e

có đủ nhỏ. Dựa vào đó, luận án phát triển thuật toán giải bài toán RSA

thành thuật toán phân tích modulo N của hệ RSA hiệu quả trong trường hợp chỉ cần

hoặc đủ nhỏ. Kết quả là luận án đề xuất bổ xung thêm một tiêu

chuẩn cho số mũ công khai e cùng với việc tìm các số nguyên tố chứng minh được

sự thỏa mãn tiêu chuẩn đã đưa ra cho hệ RSA.

2.2.4.1. Một số công thức, định nghĩa

Hàm -Euler. . Ta có:

(2.12)

Cấp của phần tử trong nhóm.

 Cho G là một nhóm nhân hữu hạn với đơn vị ký hiệu là 1. Khi đó với mọi

phần tử luôn tồn tại số tự nhiên d sao cho , ký hiệu là

, bằng đơn vị. Tức là

(2.13)

 Giá trị d nhỏ nhất thỏa mãn công thức (2.13) được gọi là cấp của a trong

G và được ký hiệu là . Trong trường hợp thì còn

được ký hiệu là .

 (N): Cấp lớn nhất của các phần tử trong nhóm .

Công thức tính (N) và (N). Nếu với pi là các số nguyên tố khác

nhau thì

(2.14)

55

(2.15)

Ngưỡng an toàn tính toán

Ngưỡng an toàn tính toán (thường được xét đến một thời điểm cụ thể) là một

con số, ký hiệu là A, sao cho mọi tổ chức, cá nhân đều không thể thực hiện được A

phép tính cho đến thời điểm được xét.

2.2.4.2. Giải bài toán RSA bằng phương pháp mã hóa liên tiếp

Bài toán RSA. Cho bản mã C được mã hóa bởi hệ mật RSA với tham số công

khai (N, e). Hãy tìm M sao cho

.

a) Thuật toán 1

Tấn công mã hóa liên tiếp [28], [32] nhằm tìm bản rõ M từ bản mã C theo hệ

mật RSA với bộ tham số công khai (N, e) được thực hiên theo thuật toán sau đây.

;

;

Thuật toán 1. (Mã hóa liên tiếp giải bài toán RSA) Input: C, (N, e) Ouput: M thỏa mãn 1. M  C; 2. X  3. while (X  C) do 3.1 M  X; 3.2 X  4. return M; b) Phân tích thuật toán 1

Trước hết chúng ta thấy rằng nếu thuật toán dừng tức là X = C thì với X được

tính theo bước 2 hoặc bước 3.2

ta có ngay:

Đẳng thức trên có nghĩa đầu ra của thuật toán đúng là bản rõ cần tìm. Việc còn

lại của chúng ta ở đây là chứng tỏ thuật toán 1 luôn dừng và xác định độ phức tạp

tính toán của nó.

Kết quả 1. Thuật toán 1 sẽ dừng sau đúng vòng lặp ở bước 3.

Chứng minh.

56

Với M xuất phát từ bước 1 chính là C nên X thu được tại bước 2, ký hiệu là X0

chính là

(2.16)

Ký hiệu giá trị X tính được tại vòng lặp thứ t (t  1) ở bước 3 là Xt, theo bước

3.2 ta có và theo bước 3.1 thì M = Xt1 vậy ta có

(2.17)

Từ (2.16) và (2.17) ta thu được

(2.18)

Với thì (2.18) trở thành

(2.19)

Biết rằng với mọi giá trị và với mọi số nguyên dương m ta có:

(2.20)

theo định nghĩa về cấp thì nên thay (2.20) với

vào (2.19) thì vế phải của nó chính là C vậy Kết quả 1 đã được chứng minh. 

Từ kết quả trên ta có

Hệ quả 1. Chi phí tính toán của thuật toán 1 là phép lũy thừa với số

mũ e trong .

Như vậy, nếu e có đủ nhỏ thì theo hệ quả 1, người tấn công sẽ luôn

giải được bài toán RSA và khi này hệ RSA sẽ không an toàn.

2.2.4.3. Phân tích modulo n của hệ RSA bằng phương pháp mã hóa liên tiếp

a) Thuật toán 2

Việc phân tích modulo N của hệ mật RSA với bộ tham số công khai (N, e)

theo phương pháp mã hóa liên tiếp được thực hiện theo thuật toán sau.

57

Thuật toán 2. (Mã hóa liên tiếp phân tích modulo N)

Input: (N, e) là bộ tham số khóa công khai RSA;

Ouput: p là ước nguyên tố của N;

1. X  random(1, N); Y  X;

2. p  gcd(X, N);

3. while (p  {1, N}) do

3.1 X  Xe mod N;

3.2 p  gcd(X  Y, N);

4. return p

b) Phân tích thuật toán 2

Kết quả 2. Giả sử N = pq và nếu các điều kiện sau đây được thỏa mãn:

(2.21)

Giá trị Y lấy trong bước 1 thỏa mãn

(2.22)

thì thuật toán 2 sẽ dừng với đầu ra là ước nguyên tố p của N.

Chứng minh.

Không giảm tính tổng quát, giả sử , giống như lập luận đã

sử dụng để chứng minh Kết quả 1 ta có giá trị X tính được ở vòng lặp thứ t, ký hiệu

mod N với X là giá trị được lấy trong bước 1 là Xt, của bước 3 chính là

và do đó ta có

(2.23)

Xét phần dư theo phép chia cho p cả hai vế của (2.23) ta được

(2.24)

58

Với ta có và vì vậy vế phải của (2.24) chính là

hay

(2.25)

Tương tự, xét phần dư theo phép chia cho q cả hai vế của (2.33) ta được

(2.26)

Từ giả thiết nên giá trị

đồng thời với giả thiết (2.22) ta có

(2.27)

Từ (2.25) và (2.27) cho thấy là bội của p nhưng không là bội của q và

điều này dẫn đến

Cho nên thuật toán dừng và đầu ra chính là ước nguyên tố của N. Tóm lại Kết

quả 2 đã được chứng minh. 

Giống như Kết quả 1 ta có hệ quả sau.

Hệ quả 2. Chi phí tính toán của thuật toán 2 là

phép lũy thừa với số mũ e và m phép tìm ước chung lớn nhất của hai số nguyên

trong .

2.2.4.4. Tiêu chuẩn cho tham số e

a) Tiêu chuẩn

Để chống được tấn công thám mã được đưa ra trong Thuật toán 1 ta cần đến

điều kiện về tham số e là

, (2.28)

với A là ngưỡng an toàn tính toán, bởi vì khi này theo hệ quả 1 thì chi phí để thực

hiện Thuật toán 1 là vượt quá khả năng của người tấn công.

59

Để chống được tấn công phân tích số N được đưa ra trong Thuật toán 2 chúng

ta có thể đưa ra đề xuất về tham số e đó là thỏa mãn ít nhất một trong hai điều kiện

sau:

(2.29)

Hoặc

(2.30)

Hiển nhiên (2.29) là điều kiện không thành công của Thuật toán 2, còn (2.30)

làm cho chi phí để thực hiện thành công Thuật toán 2 là vượt quá khả năng của kẻ

tấn công.

Rõ ràng nếu thỏa mãn điều kiện (2.30) thì (2.28) cũng được thỏa mãn, do đó

việc thỏa mãn (2.30) là đủ để chống lại cả hai tấn công đã trình bày. Cho nên tiêu

chuẩn cho tham số e được luận án đưa ra như sau:

Tiêu chuẩn: Số mũ công khai e thỏa mãn điều kiện (2.30)

b) Vấn đề kiểm tra sự thỏa mãn tiêu chuẩn của tham số e

Biết rằng trong tất cả các tiêu chuẩn cho bộ tham số của hệ RSA đã được ban

hành trên thế giới chẳng hạn [2], [16], [17], [64], thì việc sinh các tham số luôn

được bắt đầu từ chọn e sau đó rồi mới đến tìm các tham số nguyên tố p và q sao cho

bộ tham số thỏa mãn toàn bộ các tiêu chuẩn.

Bây giờ muốn kiểm tra điều kiện (2.30) cho tham số e ta cần tính được hay ít

ra cũng phải ước lượng được hai giá trị và . Do là ước

của và là ước của nên việc ước lượng hai giá trị nói

trên có thể được thực hiện bởi kết quả sau đây.

Bổ đề 1. Cho N là một số nguyên dương, r là ước nguyên tố của .

Khi đó nếu

(2.31)

60

thì là bội của với .

Như vậy, nếu giá trị r nêu trong Bổ đề 1 thỏa mãn thì ta có ngay

cho nên bằng cách chỉ ra được các số nguyên tố và không nhỏ

hơn A tương ứng là ước của và thì việc kiểm tra sự thỏa mãn

Tiêu chuẩn 1 được thực hiện dễ dàng thông qua sự thỏa mãn điều kiện (2.31) với N

lần lượt thay bằng p và q. Khi đó cặp sẽ là bằng chứng thỏa mãn

tiêu chuẩn.

c) Vấn đề tìm số nguyên tố thỏa mãn tiêu chuẩn cho e

Hiển nhiên các số nguyên tố p có đủ bằng chứng thỏa mãn tiêu chuẩn với tham

số e phải thỏa mãn hai điều kiện sau:

Thứ nhất:

có ước nguyên tố (2.32)

Thứ hai:

(2.33)

Từ đó bằng việc sinh ngẫu nhiên một số nguyên tố rồi tìm ngẫu nhiên

một số nguyên tố trong tập { nguyên dương} thì các số nguyên tố

p trong tập { nguyên dương} sẽ thỏa mãn . Nói một cách

khác là điều kiện (2.32) đã được thỏa mãn. Bằng kiểm tra thêm điều kiện (2.33) để

có được số nguyên tố cần tìm.

2.3. MỘT ĐỀ XUẤT MA TRẬN AN TOÀN, HIỆU QUẢ CHO TẦNG TUYẾN

TÍNH TRONG CÁC MÃ PHÁP DẠNG AES

Trong thiết kế mã khối, Shannon đã đưa ra 2 nguyên lý cơ bản là xáo trộn

(confusion) và khuếch tán (diffusion) [42]. Nguyên lý xáo trộn được mô tả là sử

dụng các biến đổi mã hóa làm phức tạp quan hệ thống kê của bản mã vào bản rõ,

hoặc nói ngắn gọn là làm cho quan hệ giữa khóa và bản mã càng phức tạp càng tốt.

61

Trong khi đó tính khuyếch tán tốt là tính dàn trải ảnh hưởng của các đặc tính bản rõ

ban đầu qua bản mã càng nhiều càng tốt, do đó giấu đi các tính chất của bản rõ.

Các mã khối thông thường được đánh giá qua các tiêu chí quan trọng là độ an

toàn, chi phí cài đặt, hiệu năng thực hiện. Các tiêu chí này thường được xem xét và

phân tích chi tiết trong các dự án lựa chọn chuẩn mã khối trên thế giới như dự án

CRYPTREC [75], dự án NESSIA [76] và NIST [77] để lựa chọn chuẩn mã khối

AES. Trong đó, đối với việc phân tích chi phí cài đặt và hiệu năng của thuật toán

thường được xem xét và đánh giá dựa trên cài đặt phần cứng và phần mềm trên

nhiều nền tảng và thiết bị khác nhau dựa trên định hướng của môi trường sử dụng.

+ Độ an toàn: đây là yếu tố quan trọng nhất trong đánh giá mã khối. Các chức

năng trong nhóm này gồm khả năng chống lại các tấn công thám mã đã biết,

có tính hoàn thiện về cơ sở toán học, tính ngẫu nhiên của đầu ra.

+ Tính hiệu quả: là tiêu chuẩn quan trọng thứ hai mà nó bao gồm các yêu cầu về

tính hiệu quả trong tính toán (tốc độ) trên nhiều platform khác nhau, yêu cầu

về bộ nhớ.

+ Các đặc trưng cài đặt và thuật toán: bao gồm độ phức tạp, khả năng cài đặt

trên phần cứng, phần mềm, tính đơn giản của thuật toán.

Các thành phần của mã khối:

Để thực hiện hai nguyên lý là “khuếch tán” và “xáo trộn” thì trong mỗi vòng

của mã khối thường được thiết kế với 2 tầng biến đổi riêng và đan xen nhau:

+ Tầng tuyến tính (còn gọi là tầng khuếch tán): thường được thực hiện bởi một

biến đổi tuyến tính như nhân ma trận, dịch hàng hoặc hoán vị trí của các bít.

+ Tầng phi tuyến (tầng xáo trộn): thường được thực hiện bởi phép biến đổi phi

tuyến - có thể là bởi một biến đổi thay thế (S-Box) hoặc bởi một cấu trúc đặc

biệt có tính chất phi tuyến.

Trong mục này, luận án đề xuất và đánh giá tầng tuyến tính có tính chất cài đặt

hiệu quả trong phần cứng dựa trên ma trận tựa vòng có thể sử dụng trong thiết kế

tầng tuyến tính cho các mã pháp dạng AES. Trên cơ sở lý thuyết những nghiên cứu

62

trước đó, luận án đánh giá số lượng điểm bất động của tầng khuếch tán nhận được.

Đồng thời tiến hành khảo sát và đánh giá các ma trận tựa vòng nhằm lựa chọn ra

một ma trận phù hợp cho việc xây dựng một tầng khuếch tán cho mã khối có cấu

trúc SPN có kích thước khối 128 bit.

2.3.1. Một số định nghĩa, khái niệm

Trước hết, luận án nêu lại một số định nghĩa, khái niệm cũng như những kiến

thức cần thiết trong nghiên cứu của luận án. Đầu tiên chúng ta sẽ xem xét khái niệm

ma trận dịch vòng (hay còn gọi là ma trận vòng) và ma trận tựa vòng.

Định nghĩa 1. Ma trận dịch vòng là ma trận mà các hàng (hoặc các cột) của

nó nhận được từ hàng (cột) trước nó bằng cách dịch vòng đi một phần tử.

Theo đó một ma trận có dạng:

(2.34)

được gọi là ma trận dịch vòng (circulant matrix), ký hiệu là

. Trong trường hợp thiết kế tầng tuyến tính như trong AES, ma

trận tuyến tính sử dụng phải có kích thước 4x4, có nghĩa rằng d = 4.

Định nghĩa 2 [35]. Ma trận tựa vòng kích thước là ma trận có dạng

,

trong đó , , với .

Ma trận này về sau ký hiệu là .

Trong thiết kế mã khối cần đảm bảo số nhánh lớn nhất có thể, để đảm bảo tính

chất này trong thiết kế của nhiều mã pháp thực tế sử dụng các ma trận MDS [12].

Xét định nghĩa ma trận MDS sau đây.

63

Định nghĩa 3 [33]. Ma trận vuông kích thước dxd là một ma trận MDS khi và chỉ

khi tất cả các ma trận con vuông của nó không suy biến.

Đối với mỗi ma trận MDS kích thước dxd được sử dụng trong tầng tuyến tính.

Số nhánh của nó chính bằng khoảng cách nhỏ nhất giữa các từ của mã tuyến tính,

với điều kiện mã tuyến tính này sử dụng ma trận MDS nói trên trong thành phần ma

trận sinh của nó [33]. Trong trường hợp này, số nhánh sẽ bằng d + 1.

Một tham số nữa liên quan đến độ an toàn của tầng tuyến tính đó là số điểm

bất động. Trong [12] tác giả đưa ra khái niệm điểm bất động của tầng tuyến tính

, trong đó , A là ma trận không suy biến kích thước

dxd. Như vậy, số lượng điểm bất động của biến đổi tuyến tính trên chính là số

nghiệm của hệ phương trình

,

trong đó I là ma trận đơn vị kích thước . Từ đó, số lượng điểm bất động cho

biến đổi tuyến tính nói trên được tính theo công thức sau:

.

Như vậy, số lượng các điểm bất động phụ thuộc vào hạng của ma trận

Tồn tại nhiều tầng tuyến tính mà ở đó có nhiều điểm bất động, tuy nhiên số nhánh

của tầng tuyến tính này vẫn được đảm bảo mặc dù giá trị đầu ra không bị ảnh hưởng

bởi tác động của biến đổi tuyến tính này. Nhưng thực tế trong [55] đưa ra những

nghiên cứu chứng tỏ tồn tại những tấn công tiềm ẩn khi sử dụng điểm bất động của

tầng tuyến tính.

Trong phần tiếp theo, luận án sẽ đánh giá độ phức tạp khi cài đặt đối với ma

trận dịch vòng MDS và tựa vòng sử dụng trong biến đổi MixColumns.

2.3.2. Phép MixColumns sử dụng ma trận dịch vòng và ma trận tựa vòng 4x4

Khi phân tích đề xuất ma trận 4x4 tựa vòng và khi so sánh với các ma trận

vòng luận án chỉ qua tâm đến hai dạng ma trận là và

.

64

Đối với tầng tuyến tính sử dụng ma trận dạng (như trong AES),

phép biến đổi MixColumns trong đó thực hiện phép nhân ma trận :

,

trong đó .

Để tính được một phần tử, ví dụ , ta cần thực hiện phép cộng XOR 4 số hạng.

Trong hầu hết các tài liệu khi đánh giá về tài nguyên cài đặt đối với tầng tuyến

tính dạng này, thường chỉ xét đến đánh giá độ phức tạp của phép nhân một hàng

trong ma trận tuyến tính với một cột trong ma trận dữ liệu.

Trong trường hợp sử dụng ma trận tựa vòng, phép biến đổi MixColumns đó

thực hiện phép nhân ma trận :

,

trong đó . Để tính được các phần tử

, ví dụ đối với , ta cần thực hiện

Đối với các phần tử còn lại trong ma trận Y, ví dụ đối với , ta cần thực hiện

Tiếp theo luận án cũng sẽ phân tích độ phức tạp của một số ma trận 4x4 sử

dụng trong tầng biến đổi tuyến tính dạng AES.

65

2.3.3. Phân tích phép biến đổi MixColumns của AES

Ma trận tuyến tính trong biến đổi MixColumns của chuẩn mã hóa AES là một

ma trận 4x4 với các phần tử thuộc trường hữu hạn với đa thức sinh là đa thức

bất khả quy .

Để thực hiện phép biến đổi này ta cần thực hiện phép nhân với phần tử 2 (biểu

diễn ở dạng nhị phân là 00000010) và 3 (00000011) trong trường hữu hạn đang xét.

Biểu thức phép nhân phần tử a với 2 trên trường đang xét có dạng như trong công

thức (2.35).

(2.35) (2.36) , (2.37)

trong đó . Như vậy, phép

nhân này cần sử dụng 3 cổng XOR với đầu vào 2 bit và đầu ra 1 bit. Tuy nhiên, khi

thực hiện phép nhân với 3 yêu cầu 11 cổng. Biểu thức cho phép nhân phần tử a với

3 có dạng như trong công thức (2.36). Trong (2.36) ta thấy biểu thức tính các cặp bit

hoặc có một số thành phần giống nhau. Như vậy ta có thể viết lại

biểu thức tính các bít đầu ra khi thực hiện phép nhân với phần tử 3 như trong biểu

66

thức (2.37). Theo đó phép nhân này chỉ yêu cầu 9 cổng XOR thay vì 11 như những

cài đặt trước đó.

Như vậy số cổng XOR cần thiết cho cài đặt phép nhân một hàng của ma trận

trong MixColumns với một cột của ma trận dữ liệu bằng 12 + 3x8 = 36. Còn để

thực hiện toàn bộ biến đổi MixColumns sẽ cần 16x36 = 576 cổng XOR.

Trong [43], nhóm tác giả đã đề xuất một dạng ma trận MDS Hadamard có tính

chất cuộn. Tính chất cuộn ở đây có nghĩa rằng ma trận tuyến tính cũng chính là

nghịch đảo của nó, tính chất cuộn nhằm hướng đến mục đích cho những thiết kế

hạng nhẹ vì khi đó chỉ cần sử dụng một modul mà có thể dùng cho cả quá trình mã

và giải mã. Tuy nhiên, khi áp dụng vào mô hình tầng tuyến tính dạng AES thì những ma trận Hadamard MDS cuộn lại cho tầng tuyến tính có 216 điểm bất động.

Do vậy, trong phần này luận án sẽ xem xét và phân tích một trong những đề xuất

ma trận cụ thể trong [43], mà không có tính chất cuộn.

Trên trường với đa thức sinh là đa thức nguyên

thủy , trong [43] đề xuất ma trận Had(0x1, 0x2, 0x4,

0x91) = Had(1, 2, 4, 145). Phép nhân phần tử a với 0x2, 0x4 và 0x91 trường này

tương ứng có biểu thức toán học (2.38), (2.39) và (2.40) dưới đây:

(2.38) (2.39) (2.40)

Các ma trận Hadamard là những ma trận mà mỗi hàng (hoặc mỗi cột) có các

phần tử giống nhau, đây chính là một lợi thế trong cài đặt. Trong [43] nhóm tác giả

đánh giá số tài nguyên cài đặt của phép nhân một hàng của ma trận Had(0x1, 0x2,

0x4, 0x91) với một cột của khối dữ liệu cần số cổng XOR là 13 + 3x8 = 37. Tuy

67

nhiên, theo luận án đánh giá này là chưa chặt vì nhóm tác giả không xét đến sự

trùng lặp trong những biểu thức trong phép nhân với 0x4 và 0x91. Trong biểu thức

(2.39) ta thấy rằng cặp , còn trong (2.40) cặp có những biểu thức

chung. Như vậy thực chất số cổng XOR cần thiết chỉ là 11 + 3x8 = 35. Tuy nhiên

ma trận Hadamard nói trên khi cài đặt tốn ít tài nguyên hơn. Còn để cài đặt toàn bộ

biến đổi MixColumns sẽ cần 16x35 = 560 cổng XOR.

Trong phần tiếp theo luận án trình bày một đề xuất ma trận tựa vòng có tính

chất cài đặt phần cứng tốt hơn.

2.3.4. Đề xuất ma trận tuyến tính tựa vòng cho AES

Các nguyên thủy mật mã được sử dụng trong thực tế có yêu cầu khi thiết kế là

phải lựa chọn sao cho an toàn, hiệu quả trên cả phần cứng và phần mềm. Như vậy,

trong trường hợp cài đặt các ma trận tuyến tính việc lựa chọn các hệ số trong mỗi

ma trận sẽ quyết định tính chất cài đặt của nó. Trong bất kỳ trường hữu hạn , với

đa thức sinh là đa thức bậc n thì phép nhân với phần tử 1, và là dễ dàng cài

đặt, ở đây g là phần tử nguyên thủy của trường (thông thường trên trường hữu hạn

với đa thức sinh là đa thức nguyên thủy ta thường chọn g = 2 [58]). Trong cài đặt

phần cứng phép nhân với phần tử 1 là tầm thường, có nghĩa rằng phép nhân này

không tốn tài nguyên, còn phép nhân với và có độ phức tạp như nhau. Do

vậy tốc độ cài đặt của chúng là nhanh hơn.

Mặt khác ma trận tựa vòng có dạng

(2.41)

mà luận án xem xét ở mục trước phải là một ma trận có tính MDS để đảm bảo tính

khuếch tán cực đại, có nghĩa là tất cả các ma trận con vuông của nó phải không suy

biến. Từ đây ta có một ràng buộc giữa các hệ số trong ma trận M như sau:

68

(2.42)

Ngoài ràng buộc trên các hệ số c, e và f phải được lựa chọn làm sao để dễ dàng

cài đặt trong cả phần cứng cũng như phần mềm. Thông thường những phần tử là bội

trên trường hữu hạn của phần tử g, hoặc nghịch đảo của nó, hoặc biểu thức “đơn giản” từ hai phần tử này, ví dụ như g + 1, hoặc g-1 + 1,… được ưu tiên lựa chọn, ví

dụ như hệ số bằng 3 (tức là bằng g + 1, với g = 2) như trong ma trận tuyến tính của AES [12], ví dụ như hệ số bằng 4 (bằng g2, với g = 2) như trong mã pháp LED

[22],…

Ta thấy rằng nếu đa thức là nguyên thủy, khi đó đa

thức liên hợp của nó cũng là nguyên thủy [12].

Như đã phân tích ở mục trước, luận án chỉ quan tâm đến các ma trận 4x4 trên

trường , do vậy chỉ quan tâm đến các đa thức bậc 8. Với giá trị n = 8,

và là hai đa thức liên

hợp của nhau. Hai đa thức nguyên thủy này cũng chính là 2 trong tổng số

đa thức nguyên thủy có thể có bậc bằng 8 (bảng 2.3), trong đó là

hàm Euler [58]. Do vậy, chúng có thể được sử dụng trong vai trò đa thức sinh của

trường .

69

Cũng cần phải nói thêm rằng đa thức trong [59]

đã được luận giải chi tiết bằng lý thuyết cũng như kiểm chứng bằng thực hành là đa

thức cho phép thực hiện phép tìm kiếm ma trận dịch vòng hiệu quả nhất. Tuy nhiên

đây không phải là đa thức duy nhất trong 16 đa thức nguyên thủy có thể. Bằng cách

luận giải tương tự như trong [59], ta thấy rằng đa thức liên hợp với f(x) là

cũng có tính chất tương tự. Do vậy chúng cho phép

tìm được nhiều các ma trận hiệu quả hơn.

STT Đa thức STT Đa thức

9 1

10 2

3 11

12 4

13 5

14 6

15 7

8 16

Bảng 2.4. Danh sách 16 đa thức nguyên thủy bậc 8 trên

Khi xây dựng trường với đa thức sinh là ,

phần tử nguyên thủy g = 2. Ta chọn các hệ số trong ma trận tựa vòng (2.41) như sau: c = f = g-1 và e = g2. Dễ dàng kiểm tra được rằng các hệ số này thỏa mãn điều

kiện (2.42). Do vậy ma trận

(2.43)

chính là một ma trận MDS.

70

Tương tự khi xây dựng trường với đa thức sinh là

, phần tử nguyên thủy là g = 2. Khi chọn các hệ số c

= f = g, còn e = g-2, ta có thể xây dựng ma trận MDS như sau:

(2.44)

Trong phần tiếp theo luận án sẽ phân tích một số tính chất mật mã khác của

ma trận đề xuất với ma trận tuyến tính trong AES và ma trận Hadamard MDS trong

[43] mà luận án đã phân tích ở mục trước.

2.3.5. Đánh giá cài đặt theo quan điểm phần mềm

Tài liệu mô tả chuẩn AES trình bày phương pháp cài đặt thuật toán trên môi

trường 32 bit sử dụng kỹ thuật tra bảng [29]. Theo đó phương pháp này có thể áp

dụng với ma trận MixColumns tuyến tính 4x4 bất kỳ. Bộ nhớ yêu cầu khi lưu toàn

bộ 4 bảng tra cho cài đặt biến đổi MixColumns này là 4096 Bytes (4KB). Với hệ

thống mạng máy tính hiện nay, bộ nhớ 4 KB là hoàn toàn không đáng kể. Tuy

nhiên, trên quan điểm người thiết kế nghiên cứu sinh mong muốn hướng đến những

môi trường hạng nhẹ, yêu cầu về tài nguyên cài đặt hạn chế. Do vậy, để có thể phân

tích cài đặt một cách tổng thể theo quan điểm phần mềm, trong mục này luận án chỉ

quan tâm đến độ phức tạp, hay nói chính xác hơn là số phép toán cần thiết khi cài

đặt mà không sử dụng kỹ thuật tra bảng (trong nhiều tài liệu gọi đây là phương pháp

cài đặt bit-slice[29]). Bản chất kỹ thuật này là thực hiện biến đổi tuyến tính khi xem

xét phép nhân trực tiếp với các hệ số của ma trận tuyến tính sử dụng trong biến đổi

MixColumns. Ta chỉ quan tâm đến biến đổi MixColumns bởi phép ShiftRows thực

tế cài đặt là không tốn tài nguyên.

Không giống như cài đặt phần cứng khi mà phép XOR được hiểu là cộng 2 bit

theo modulo 2 với nhau, ở đây phép XOR được hiểu là cộng từng bit theo modulo

của hai số 8 bit. Bây giờ chúng ta xét từng trường hợp cụ thể. Đối với ma trận dịch

vòng trong biến đổi MixColumns sử dụng trong AES, ký hiệu là Cir(2, 3, 1, 1).

71

Xét biểu thức nhân lần lượt 4 hàng của ma trận M với một cột của ma trận

trạng thái X. Ví dụ với y00:

Theo biểu thức này để tính 1 byte đầu ra cần 4 phép XOR hai số 8 bit và 1

phép Xtime. Phép Xtime là phép nhân với phần tử nguyên thủy hoặc là nghịch đảo

của nó trong trường hữu hạn [58]. Nếu ta đặt

,

khi đó

.

Tương tự ta có:

.

Như vậy, phép nhân lần lượt 4 hàng của ma trận M với một cột của ma trận dữ

liệu cần 15 phép XOR và 4 phép Xtime. Còn để thực hiện toàn bộ biến đổi

MixColumns cần 4x15 = 60 phép XOR và 4x4 = 16 phép Xtime.

Đối với ma trận Had(1, 2, 4, 145) trong [43]. Xét biểu thức

(2.45)

Thực hiện tính 1 byte dữ liệu đầu ra

72

Biểu thức này yêu cầu log28 + log24 + log22 + log22 = 7 phép Xtime và 5 phép

XOR. Do vậy, để thực hiện biểu thức (2.45) cần 16x7 = 112 phép Xtime và 16x5 =

80 phép XOR. Bảng 2.4 dưới đây là so sánh khi cài đặt theo quan điểm cài đặt phần

mềm khi không dùng kích thước bảng tra.

Đối với hai ma trận đề xuất, ví dụ với C.like1(149, Cir(1, 4, 149) xét biểu thức:

(2.46)

Từ biểu thức của ma trận ta thấy 4 giá trị và được tính giống

nhau khi nhân lần lượt hàng thứ nhất của ma trận tuyến tính với lần lượt các cột của

ma trận dữ liệu. Ví dụ với có:

.

Từ biểu thức này ta thấy để tính được toàn bộ 4 giá trị và cần

4x1 = 4 phép Xtime và 4x3 = 12 phép XOR.

còn lại được tính giống Mặt khác ta thấy 12 giá trị yij, với

nhau bởi 3 hàng còn lại trong ma trận tuyến tính có các số hạng giống nhau. Ví dụ

với có:

.

Biểu thức này yêu cầu 3 phép Xtime và 3 phép XOR. Như vậy việc tính toàn

sẽ yêu cầu 12x3 = 36 phép Xtime và 12x3 bộ 12 giá trị yij, với

= 36 phép XOR.

Từ đây ta có độ phức tạp để thực hiện toàn bộ biến đổi MixColumns là 36 + 4

= 40 phép Xtime và 36 + 12 = 48 phép XOR.

73

Tương tự độ phức tạp cho ma trận C.like2(2, Cir(1, 106, 2)) là 40 phép Xtime

và 48 phép XOR. Bảng 2.4 dưới đây là so sánh khả năng cài đặt trên môi trường 8

bit của các ma trận.

Ma trận XOR Xtime Ghi chú

Cir(2, 3, 1, 1) 60 16 [58]

Had(1, 2, 4, 145) 80 112 [43]

48 40 Đề xuất

48 40 Đề xuất C.like1(149, Cir(1 ,4, 149)) C.like2(2, Cir(1, 106, 2))

Bảng 2.5. So sánh cài đặt kiểu bit-slice các ma trận MDS 4x4

Qua bảng phân tích, rõ ràng rằng ma trận MDS trong AES yêu cầu số phép

toán ít hơn, còn ma trận MDS Hadamard trong [43] là không hiệu quả khi cài đặt

theo kiểu bit-slice và không thích hợp khi sử dụng trong cài đặt trên các môi trường

hạn chế khi so sánh với ma trận MixColumns trong AES và các ma trận MDS tựa

vòng mà luận án đề xuất. Cần phải nói thêm rằng ma trận sử dụng trong biến đổi

MixColumns AES là ma trận tối ưu hơn trong tất cả các ma trận MDS 4x4 trên

khi cài đặt theo kiểu bit-slice, tuy nhiên khi cài đặt phần cứng như phân tích ở mục

trước thì ma trận luận án đề xuất lại là ma trận tối ưu hơn.

Trên thực tế khi lựa chọn ma trận ta phải xét tất cả các tính chất có thể của nó.

Do vậy, trong phần tiếp theo luận án sẽ phân tích thêm một tính chất nữa, đó là số

lượng điểm bất động của tầng tuyến tính.

2.3.6. Đánh giá về độ an toàn, số điểm bất động của tầng tuyến tính

Như đã phân tích ở mục trước số nhánh là tham số quan trọng nhất của tầng

tuyến tính, khi xây dựng tầng tuyến tính theo kiểu AES mà sử dụng ma trận MDS

4x4 trong biến đổi MixColumns ta sẽ đảm bảo được tính chất theo chiến lược vệt

lan rộng [29]. Khái niệm số lượng điểm bất động của tầng tuyến tính đưa ra trong

[55] sẽ là một tham số quan trọng khác khi lựa chọn tầng tuyến tính, nó ảnh hưởng

đến độ an toàn và được xem như là một tham số bổ sung cho khái niệm số nhánh

của tầng tuyến tính.

74

Tầng tuyến tính trong AES gồm 2 biến đổi: ShiftRows và MixColumns. Khi

kết hợp ta có thể biểu diễn bởi phép nhân một ma trận 16x16 với một véc tơ cột như

sau:

Gọi ma trận tuyến tính 16x16 này là A. Đối với ma trận này có

và . Theo đó số lượng điểm bất động của tầng biến đổi tuyến tính

trong AES là . Thực hiện tương tự đối

với ma trận Had(1, 2, 4, 145) và hai ma trận luận án đề xuất là

C.like1(149,Cir(1,4,149)) và C.like2(2,Cir(1,106,2)) luận án nhận được:

,

,

.

Như vậy là nếu sử dụng hai ma trận này để thay thế ma trận trong biến đổi

MixColumns trong AES thì sẽ nhận được tầng tuyến tính mà chỉ có một điểm bất

75

động, đây chính là điểm véc tơ 0 tầm thường. Nghĩa là khi sử dụng ma trận đề xuất

thay thế ma trận trong biến đổi MixColumns của AES sẽ nhận được tầng tuyến tính

đảm bảo được số nhánh theo chiến lược vệt lan rộng mà không có điểm bất động

như trường hợp ma trận gốc của AES.

2.3.7. Kết quả cài đặt thực nghiệm

Nghiên cứu sinh đã thực nghiệm thiết kế các khối chức năng của biến đổi

MixColumns khi sử dụng ma trận đề xuất và một số ma trận đề xuất trước đó.

Chương trình được viết trên ngôn ngữ VHDL cho Virtex6 XC6VLX240T-2FF1156,

công cụ thiết kế là Xilinx ISE phiên bản 14.3. Kết quả thực nghiệm cài đặt tham số

phần cứng trong [Bài báo số 6] cho thấy ma trận do luận án đề xuất có tham số cài

đặt phần cứng tối ưu, tốc độ xử lý dữ liệu tương đương với ma trận trong [60].

Thực nghiệm cài đặt phần mềm cho thuật toán AES trong đó sử dụng ma trận

C.like1(149, Cir(1 ,4, 149)) để thay thế cho ma trận tuyến tính của AES (thuật toán

mã khối BC_VPN). Cách tiếp cận ở đây là xử dụng bảng tra trên môi trường với

thanh ghi 32 bit. Chương trình được viết trên ngôn ngữ C chuẩn, biên dịch sử dụng

Visual Studio v10 trên máy Intel(R) Core(TM) i5-6200U CPU 2.4GHz, Ram

4.00GB, Windows 10. Trong chương trình không sử dụng bất kỳ một lệnh

assembler hay các hỗ trợ SSE nào.

Số phép toán thực hiện và tham số an toàn khi cài đặt 1 vòng của thuật toán

cải tiến BC_VPN và của thuật toán AES (Hình 2.6)

Thuật toán Tài nguyên bộ nhớ

Bộ nhớ (bytes) Tham số an toàn Số điểm bất động Số nhánh Số lượng bảng tra Số phép XOR các số 32 bit

BC_VPN-128 AES-128 BC_VPN -192 AES-192 BC_VPN -256 AES-256 4 4 4 4 4 4 4096 4096 4096 4096 4096 4096 16 16 24 24 32 32 Số phép truy cập bộ nhớ lưu bảng tra 16 16 24 24 32 32 0 216 0 216 0 216 5 5 5 5 5 5

Bảng 2.6. Kết quả cài đặt thực nghiệm thuật toán cho 1 vòng mã hóa

76

Thực nghiệm đánh giá tốc độ được đo bằng MegaBytes/s (MB/s).

Tốc độ

Thuật toán BC_VPN

BC_VPN -128

BC_VPN -192

BC_VPN -256 Quá trình Mã hóa Giải mã Mã hóa Giải mã Mã hóa Giải mã MB/s 204 221 189 185 165 162 cpb 12 11 13 13 15 15

Bảng 2.7. Kết quả cài đặt thực nghiệm tốc độ mã hóa của BC_VPN

Đánh giá chung thuật toán mã khối BC_VPN

- Độ an toàn: Luận án đã nghiên cứu đề xuất tầng tuyến tính nhằm kháng lại

hai tấn công mạnh nhất hiện nay là thám mã vi sai và thám mã tuyến tính [29], [30],

[58]. Ma trận tuyến tính do luận án đề xuất có tính MDS như ma trận tuyến tính

trong biến đổi MixColumns của AES. Với cấu trúc thuật toán BC_VPN đã thiết kế

sẽ hoàn toàn tuân theo chiến lược vệt lan rộng mà các tác giả thiết kế chuẩn AES đã

sử dụng [29]. Với chiến lược thiết kế của BC_VPN, trong [58] đã đưa ra chứng

minh lý thuyết về số S-hộp tích cực qua 4 vòng bất kỳ của thuật toán AES (số S-hộp

tích cực thể hiện khả năng kháng thám mã vi sai và thám mã tuyến tính). Cụ thể số

S-hộp và độ phức tạp trước những thám mã này qua các vòng của thuật toán

BC_VPN được cho trong bảng 2.8, bảng 2.9 dưới đây:

Cận trên xác suất vi sai

Cỡ độ phức tạp dữ liệu trong thám mã vi sai

Vòng

Cận dưới của số lượng S-hộp hoạt động vi sai

AES

BC_VPN AES (2-6)

AES

BC_VPN

BC_VPN (2-6)

1

1

2-6

2-6

26

26

1

5

5

2-30

2-30

230

230

2

9

9

2-54

2-54

254

254

3

25

25

2-150

2-150

2150

2150

4

26

26

2-156

2-156

2156

2156

5

77

30

30

2-180

2-180

2180

2180

6

34

34

2-204

2-204

2204

2204

7

50

50

2-300

2-300

2300

2300

8

51

51

2-306

2-306

2306

2306

9

55

55

2-330

2-330

2330

2330

10

59

59

2-354

2-354

2354

2354

11

75

75

2-450

2-450

2450

2450

12 (cho khóa-192)

76

76

2-456

2-456

2456

2456

13

80

80

2-480

2-480

2480

2480

14 (cho khóa-256)

Bảng 2.8. Số lượng S-hộp tích cực vi sai và độ phức tạp trước thám mã vi sai của AES và BC_VPN

Cận trên xác suất tuyến tính

Cận dưới của số lượng S-hộp hoạt động tuyến tính

Cỡ độ phức tạp dữ liệu trong thám mã tuyến tính

Vòng

AES

BC_VPN AES (2-6)

AES

BC_VPN

BC_VPN (2-6)

1

1

2-6

2-6

26

26

1

5

5

2-30

2-30

230

230

2

9

9

2-54

2-54

254

254

3

25

25

2-150

2-150

2150

2150

4

26

26

2-156

2-156

2156

2156

5

30

30

2-180

2-180

2180

2180

6

34

34

2-204

2-204

2204

2204

7

50

50

2-300

2-300

2300

2300

8

51

51

2-306

2-306

2306

2306

9

55

55

2-330

2-330

2330

2330

10

59

59

2-354

2-354

2354

2354

11

75

75

2-450

2-450

2450

2450

12 (cho khóa-192)

78

76

76

2-456

2-456

2456

2456

13

80

80

2-480

2-480

2480

2480

14 (cho khóa-256)

Bảng 2.9. Số lượng S-hộp tích cực tuyến tính và độ phức tạp trước thám mã tuyến tính của AES và BC_VPN

Ngoài ra tầng tuyến tính luận án đề xuất không có điểm bất động như tầng

tuyến tính của AES. Khái niệm về tham số an toàn này đã được nghiên cứu chi tiết

trong luận văn [55] của tác giả Z'aba.

- Các đặc trưng cài đặt và thuật toán: kết quả cài đặt thực nghiệm thuật toán

mã khối BC_VPN trên phần cứng và phần mềm đảm bảo tính hiệu quả, mềm dẻo,

tương thích kiến trúc phần cứng và môi trường hệ điều hành Windows, linux.

- Tính hiệu quả: Trong luận án đề xuất tầng tuyến tính có các tham số cài đặt

tốt và được so sánh, phân tích chi tiết bằng lý thuyết và thực hành với tầng tuyến

tính gốc cũng như một vài công bố về thiết kế tuyến tính dựa trên ma trận

Hadamard [43]. Kết quả cài đặt thử nghiệm tốc độ mã hóa của BC_VPN sử dụng

ma trận đề xuất (bảng 2.7) là tương đương với cài đặt của AES trong [58].

KẾT LUẬN CHƯƠNG 2

Trong chương này luận án đã đưa ra một số kết quả chính như sau:

- Bảng xác định ngưỡng an toàn mật mã cho số modulo N của hệ mật RSA sử

dụng trong lĩnh vực kinh tế - xã hội (Bảng 2.2).

- Đưa ra thuật toán phân tích số modulo N của hệ mật RSA dựa vào phương

pháp mã hóa liên tiếp (Thuật toán 2), từ đó đề xuất tiêu chuẩn mới đối với số

mũ công khai e. Kết quả nghiên cứu được trình bày trong [Bài báo số 05]

- Luận án đề xuất hai ma trận tuyến tính có tính chất mật mã tốt có thể thay thế

ma trận trong biến đổi MixColumns trong AES. Về mặt an toàn, ma trận này

là một ma trận MDS tựa vòng trên trường hữu hạn, khi sử dụng để thay thế ma

trận trong biến đổi MixColumns của AES sẽ nhận được tầng tuyến tính đảm

bảo được số nhánh theo chiến lược vệt lan rộng mà không có điểm bất động.

Theo quan điểm cài đặt phần cứng ma trận do luận án đề xuất không những

79

yêu cầu tài nguyên ít hơn mà còn có tốc độ xử lý dữ liệu cao hơn cả ma trận

gốc trong AES và ma trận trong [43], [58]. Kết quả nghiên cứu được trình bày

trong [Bài báo số 06].

80

CHƯƠNG III: TÍCH HỢP MẬT MÃ TRONG GIAO THỨC VÀ BỘ PHẦN MỀM BẢO MẬT DỮ LIỆU TRÊN ĐƯỜNG TRUYỀN

Trên cơ sở nghiên cứu, khảo sát, lựa chọn giải pháp tích hợp mật mã vào bộ

giao thức SSL/TLS để bảo mật thông tin trên đường truyền với những điểm can

thiệp mật mã chính tại quá trình thỏa thuận, trao đổi khóa sử dụng hệ mật khóa công

khai RSA và mã hóa dữ liệu với thuật toán mã khối ở chế độ phù hợp. Trong

chương 3 luận án tập trung thiết kế và xây dựng bộ chương trình thử nghiệm giải

pháp bảo mật dữ liệu trên đường truyền với thuật toán và tham số mật mã được

nghiên cứu đề xuất. Tiến hành cài đặt thử nghiệm bộ chương trình trên hệ thống

mạng để đánh giá độ an toàn, bảo mật và hiệu quả thực thi thuật toán mã khối mới

tích hợp trong bộ chương trình bảo mật dữ liệu trên đường truyền PMBM_VPN.

3.1. BỘ PHẦN MỀM OPENVPN

3.1.1. Giới thiệu bộ phần mềm OpenVPN

Phần mềm OpenVPN [68] được cung cấp để sử dụng cho việc thiết lập các

mạng riêng ảo trên cơ sở xây dựng các đường hầm để bảo mật các gói tin IP.

Việc thiết lập kênh truyền và truyền dữ liệu sẽ được thực hiện dựa trên nền

tảng giao thức truyền dữ liệu bảo mật chuẩn SSL/TLS (Secure Socket Layer/

Transport Layer Secure) [3], [13]. Giao thức này đảm bảo việc xác thực kết nối

người dùng trên từng phiên làm việc, các cơ chế trao đổi khóa, mã hóa và xác thực

gói dữ liệu.

Ngoài ra, việc tích hợp cơ chế nén gói dữ liệu theo thời gian thực LZO sẽ làm

giảm kích thước gói dữ liệu truyền mang lại hiệu quả băng thông mạng, làm giảm

thời gian, tài nguyên hệ thống được sử dụng trong quá trình mã hóa từ đó giảm

thiểu độ trễ của quá trình truyền tin trong các ứng dụng yêu cầu thời gian thực.

Bên cạnh đó, các cơ chế xác thực người dùng, mã hóa gói dữ liệu dựa trên nền

tảng công cụ OpenSSL [69] được định hướng tích hợp các thuật toán mật mã, các

tham số an toàn như số nguyên tố dùng cho Diffie - Hellman, tham số RSA, chứng

81

chỉ số riêng, đảm bảo gói dữ liệu được an toàn, bảo mật trên kênh truyền, tránh thất

thoát dữ liệu truyền.

Với OpenVPN, việc tích hợp đa dịch vụ: truy cập web, gửi nhận thư điện tử,

trao đổi tập tin, hội nghị truyền hình trên cùng một kênh truyền trên mạng Internet

được thực hiện một cách tiện dụng, mà vẫn đảm bảo quá trình truyền, thời gian trễ

gói tin là nhỏ và an toàn bảo mật hệ thống.

3.1.2. Sơ đồ tổng quát

Hình 3.1: Sơ đồ khối tổng quát của OpenVPN

Mô tả sơ đồ tổng quát

Sơ đồ kiến trúc hệ thống phần mềm OpenVPN được mô tả trên hình 3.1 cho ta

thấy bộ phần mềm OpenVPN là sự bổ sung, chỉnh sửa của chồng giao thức mạng

TCP/IP với 2 thành phần VPN Daemon và giao diện mạng ảo - VNI (Virtual

Networking Interface).

82

- Thành phần VPN Daemon là một tiến trình ứng dụng chạy ở User-space

hoặc Kernel-Space được chia thành 2 thành phần chính: Data Plane và Control

Plane.

+ Data Plane sẽ điều khiển tiến trình xử lý dữ liệu: nén, mã hóa, sinh khóa xác

thực trong chuỗi xác thực bảo mật kênh truyền dữ liệu, đồng thời thành phần này

còn đảm bảo việc ánh xạ địa chỉ IP của OpenVPN (địa chỉ của giao diện mạng ảo)

với địa chỉ của mạng nội bộ bên trong.

+ Control Plane tạo và quản lý kết nối giữa các máy với nhau, đảm bảo cho

kênh truyền làm việc giữa các máy luôn được duy trì.

Thành phần Control Plane hoạt động tương tác với các gói tin TCP trong khi

thành phần Data Plane thì tương tác với gói tin UDP.

- Thành phần giao diện mạng ảo - VNI: được tạo ra trong quá trình khởi tạo

OpenVPN, đảm nhận vai trò chuyển gói dữ liệu từ card mạng thật trong IP Routing

Daemon sang VPN Daemon đáp ứng cho các xử lý bên trên thông qua các tác vụ

điều khiển trên giao diện mạng ảo này.

Trên sơ đồ tổng quát của OpenVPN:

- Các thành phần từ 1  6 là các thành phần do hệ điều hành hỗ trợ.

- Các thành phần từ A  F là các thành phần chính của OpenVPN.

- Các dòng dữ liệu I, II mô tả các dòng dữ liệu đi từ mạng bên trong ra bên

ngoài và dòng dữ liệu điều khiển, quản lý kết nối giữa các máy trong hệ thống.

3.1.3. Sơ đồ dòng dữ liệu

Sơ đồ dòng dữ liệu trong phần mềm được mô tả trong hình 3.2:

Tất cả gói dữ liệu IP được gửi đến card mạng Ethenet 1 của hệ thống bảo mật

máy tính trước khi gửi ra ngoài. Tại đây, gói dữ liệu sẽ được module IP Routing

Daemon tiếp nhận xử lý. IP Routing Daemon thực hiện việc kiểm tra tính hợp lệ của

gói dữ liệu dựa trên địa chỉ nguồn, địa chỉ đích, cổng giao thức và giao thức sử

dụng. Từ đó module này sẽ quyết định địa chỉ đích sẽ được chuyển đến và chuyển

tiếp gói tin đến giao diện mạng ảo (Virtual Network Interface - VNI).

83

Hình 3.2: Sơ đồ dòng dữ liệu được tương tác xử lý trong OpenVPN

Giao diện mạng ảo TUN/TAP này được khởi tạo thông qua quá trình khởi tạo

kết nối trong OpenVPN. Gói dữ liệu được chuyển từ card mạng Ethernet 1 lên giao

diện mạng ảo TUN được thực hiện thông qua việc chuyển dữ liệu từ inode của card

mạng Ethernet 1 tới inode của giao diện mạng ảo (tun0) do OpenVPN tạo ra. Driver

quản lý giao diện mạng ảo cung cấp các hàm chức năng hỗ trợ cho việc trao đổi dữ

liệu giữa card mạng với hệ thống OpenVPN.

Dữ liệu gói tin được giao diện mạng ảo chuyển đến VPN Daemon. Tại đây gói

dữ liệu sẽ được bóc tách IP header và dữ liệu (datagram) thành các phần riêng biệt.

Phần dữ liệu (datagram) sẽ được chuyển tiếp đến module xử lý nén dữ liệu theo thời

gian thực LZO nhằm giảm kích thước và tăng hiệu suất truyền, cũng như hiệu suất

mã hóa. Dữ liệu sau khi thực hiện nén xong sẽ được chuyển tiếp đến module mã

hóa (Encryption) để thực hiện việc mã hóa theo thuật toán đã được thiết lập trong

tệp cấu hình.

Sau khi mã hóa, dữ liệu được chuyển qua module xác thực (Authencation).

Module này sẽ thêm vào các thông tin về người dùng, cổng giao tiếp, địa chỉ nguồn,

84

địa chỉ đích vào gói dữ liệu nhằm đảm bảo tính hợp lệ khi được xác thực ở bên

nhận.

Toàn bộ dữ liệu này sẽ được đóng gói theo chuẩn gói tin UDP, kết hợp với

thành phần UDP Header chứa đầy đủ các thông tin điều khiển hỗ trợ cho quá trình

bóc tách dữ liệu ngược lại ở máy đích, cũng như các thông số cho quá trình truyền

dữ liệu.

Gói tin UDP sẽ được chuyển về card mạng Ethernet0. Từ đó, card mạng

Ethernet0 sẽ quản lý gói tin UDP này và chuyển tiếp ra mạng ngoài thông qua kênh

truyền bảo mật SSL/TLS đã được thiết lập trước đó.

Trong quá trình xử lý gói dữ liệu, việc tích hợp cơ chế xử lý đa luồng trong

quá trình thiết lập kênh truyền SSL/TLS sẽ tận dụng các khoảng thời gian rảnh của

CPU, đảm bảo cho việc tạo và trao đổi khóa được thực hiện liên tục nhanh chóng

đảm bảo cho kênh truyền luôn được thông suốt. Đồng thời cơ chế xử lý đa luồng

này còn giúp cho việc nén, mã hóa và xác thực gói dữ liệu được thực hiện nhanh

chóng thông qua việc chia nhỏ các xử lý thành nhiều luồng trên bộ nhớ chia sẻ dùng

chung, đảm bảo cho các phiên làm việc được thực hiện một cách liên tục.

3.2. MỘT SỐ MODULE CHÍNH TRONG BỘ PHẦN MỀM

3.2.1. Module VPN Daemon - Vận hành VPN theo cơ chế dịch vụ hệ

thống

VPN Daemon là thành phần chính của OpenVPN quản lý các chức năng chủ

yếu của hệ thống:

- Quản lý quá trình khởi tạo OpenVPN và mở Daemon cho OpenVPN.

- Điều khiển quá trình xử lý dữ liệu của hệ thống OpenVPN.

- Điều khiển và quản lý kết nối đến OpenVPN.

VPN Daemon được chia làm 2 thành phần chính: Data Plane và Control Plane.

- Data Plane điều khiển và quản lý quá trình xử lý dữ liệu trong OpenVPN,

- Control Plane điều khiển và quản lý kết nối cũng như quá trình trao đổi dữ liệu

giữa các đầu cuối vận hành phần mềm OpenVPN ở các chế độ hoạt động khác

nhau (server/client).

85

Sơ đồ khối của VPN Daemon

Sơ đồ khối của VPN Daemon (Hình 3.3) bao gồm 2 thành phần chính: Data

Plane và Control Plane.

Hình 3.3: Sơ đồ khối của VPN Daemon

- Thành phần điều khiển dữ liệu Data Plane bao gồm các module xử lý dữ liệu

chính của OpenVPN (nén, mã hóa, xác thực số, chuyển đổi gói dữ liệu từ TCP sang

UDP).

- Thành phần Control Plane tạo và điều khiển quá trình trao đổi dữ liệu giữa

các đầu cuối vận hành OpenVPN với nhau.

86

Hoạt động của VPN Daemon

- Ngay lần khởi tạo đầu tiên, OpenVPN sẽ nạp các thư viện cần thiết cho các

module xử lý dữ liệu trong phần mềm (thư viện nén LZO, thư viện mã hóa

OpenSSL).

- Sau đó, phần mềm tiếp tục khởi tạo các thông số cần thiết trong suốt quá

trình trao đổi dữ liệu về sau của OpenVPN (ví dụ: MTU - Maximum Transfer Unit:

Kích thước gói truyền tối đa trên kênh truyền, TLS, …).

- Sau khi khởi tạo các thư viện đã thành công, OpenVPN tiếp tục khởi tạo các

thông số theo cấu hình định trước cho giao diện mạng ảo TUN/TAP để điều khiển

quá trình giao tiếp trao đổi dữ liệu của OpenVPN.

- Đối với client, quá trình khởi tạo TUN/TAP chỉ được tiến hành sau khi kênh

truyền đã được thiết lập và xác thực, các thư viện đã được kích hoạt và khởi tạo

thành công.

- Sau khi khởi tạo thành công, OpenVPN sẽ thực hiện mở cơ chế Daemon vận

hành cho OpenVPN để đáp ứng việc xử lý dữ liệu trong hệ thống.

- Các timer sẽ được khởi tạo để điều khiển và xử lý các thông tin xuất/nhập

của hệ thống.

3.2.2. Module TUN/TAP - quản lý giao diện mạng ảo

Module TUN/TAP hỗ trợ cho việc trao đổi gói dữ liệu giữa card mạng

Ethernet (Kernel space) với chương trình ứng dụng của người dùng (User space).

Trong quá trình khởi tạo OpenVPN, giao diện mạng ảo sẽ được tạo ra dựa trên

sự hỗ trợ của nhân hệ điều hành - /dev/net/tun0, kết hợp với các thông số do

OpenVPN truyền xuống.

Module này cung cấp các hàm chức năng hỗ trợ giao tiếp, trao đổi các gói dữ

liệu giữa card mạng vật lý với chương trình người dùng ở trong không gian người

dùng. Điều này có nghĩa là: việc trao đổi dữ liệu giữa chương trình ứng dụng và

card mạng thật sẽ thông qua giao diện mạng ảo (VNI). Module này cung cấp các

hàm có chức năng tương tác với card mạng vật lý.

87

Tuỳ thuộc vào yêu cầu sử dụng, ta có thể cấu hình lựa chọn loại giao diện

mạng ảo sử dụng là TUN hay TAP. Giao diện mạng ảo TUN được dùng để trao đổi

các gói dữ liệu IP, TAP được dùng để trao đổi các Ethernet frame.

Trong OpenVPN, việc tạo ra giao diện mạng ảo TUN/TAP với địa chỉ IP và

mặt nạ mạng con hoàn toàn bảo mật mà người bên ngoài hệ thống không thể truy

cập được những thông tin này, giúp cho hệ thống được đảm bảo an toàn.

Sơ đồ khối hoạt động của module TUN/TAP

Hình 3.4: Sơ đồ khối hoạt động của module TUN/TAP

Hình 3.4 trình bày sơ đồ khối mô tả kết nối đơn điểm point-to-point giữa card

mạng Ethernet với giao diện mạng ảo TUN/TAP trong quá trình khởi tạo của

OpenVPN.

Dữ liệu vào ra card mạng vật lý eth0 được module card mạng của kernel điều

khiển thông qua bộ điều khiển IO Block. Module tun.o của nhân hệ thống kết hợp

với module tun.o của OpenVPN sẽ thiết lập giao diện mạng ảo TUN/TAP nhằm

đảm bảo việc trao đổi dữ liệu giữa card mạng vật lý eth0 với chương trình ứng dụng

người dùng.

88

Trong cấu trúc mã nguồn của phần mềm OpenVPN, tập tin tun.c (kèm theo tập

tin tun.h) được sử dụng cho mục đích cấu hình, truyền các thông số cho module

tun.o (của nhân hệ thống) nhằm khởi tạo một VNI - giao diện mạng ảo dựa trên sự

hỗ trợ của nhân hệ điều hành cung cấp. Ngoài ra, nó còn chứa đựng các hàm hỗ trợ

cho việc đọc và gửi các gói IP nhằm phục vụ cho việc nhận và gửi các gói IP cho

VPN Daemon.

VNI sau khi khởi tạo thành công sẽ có liên kết logic Point-to-Point với một

card mạng thật. Dữ liệu từ card mạng thật sẽ được đưa qua VNI này và kết quả là ta

có thể đọc dữ liệu từ inode kết nối với VNI đã cấu hình.

3.2.3. Trao đổi khoá trong OpenVPN

Việc trao đổi khoá trong OpenVPN có thể được thực hiện trong hai chế độ sau

đây:

 Chế độ khóa tĩnh (Static Key): trong chế độ này, một khóa tĩnh được tạo và

chia sẻ trước cho cả hai bên (qua một kênh an toàn nào đó, chẳng hạn ta có thể

copy bằng lệnh scp của công cụ SSH) trước khi tunnel được khởi động. Khóa

tĩnh này chứa 4 khóa độc lập khác nhau: là khóa HMAC gửi, HMAC nhận, mã

hóa và giải mã. Tuy nhiên trong chế độ khóa tĩnh, ngầm định cả hai bên chỉ sử

dụng chung một khóa HMAC và chung một khóa để mã hóa/giải mã. Ta có

thể sử dụng tham số --secret để có thể sử dụng cả 4 khóa độc lập.

 Chế độ sử dụng giao thức SSL/TLS: một phiên SSL được thiết lập bởi việc

xác thực song phương (cụ thể là mỗi bên kết nối đều phải cung cấp chứng chỉ

của mình). Nếu quá trình bắt tay và xác thực SSL/TLS thành công, các khóa

dùng để mã hóa/giải mã và HMAC cho dữ liệu trên kênh truyền VPN mới sẽ

được tạo một cách ngẫu nhiên bởi hàm tạo ngẫu nhiên của OpenSSL và được

trao đổi với nhau thông qua kênh kết nối an toàn SSL/TLS. Cả hai bên kết nối

đều cung cấp nguồn ngẫu nhiên để tạo ra khóa bí mật. Chế độ này không sử

dụng khóa chung cho mã hoá và giải mã, mà mỗi bên đều có các khóa HMAC

gửi, HMAC nhận, khóa mã hóa và khóa giải mã gói tin khác nhau. Nếu sử

dụng tùy chọn --key-method 2, các khóa thực được tạo ra từ các nguồn ngẫu

89

nhiên mà 2 bên cung cấp bởi hàm TLS PRF. Nếu ta sử dụng tùy chọn –key-

method 1, các khóa được tạo ra trực tiếp từ hàm RAND_bytes của OpenSSL.

Trong OpenVPN –key-method 2 được dùng làm tùy chọn ngầm định. Việc

xác thực sử dụng giao thức TLS được thực hiện dựa trên việc thiết lập một hệ

thống hạ tầng khóa công khai (PKI). Hệ thống PKI bao gồm chứng chỉ của CA

và khóa được dùng để ký cho các chứng chỉ của client và server. Mỗi client

hoặc server đều có các file chứng chỉ và khóa bí mật riêng. OpenVPN hỗ trợ

việc xác thực song công dựa trên các chứng chỉ số, nghĩa là client phải xác

thực chứng chỉ của server và ngược lại trước khi thiết lập kết nối. Cả hai bên

xác thực lẫn nhau trước tiên bằng việc kiểm tra xem chứng chỉ của bên kia có

phải được ký bởi CA không, sau đó kiểm tra các thông tin của chứng chỉ như

tên (common name) hoặc kiểu chứng chỉ (server hay client).

3.2.4. Mã hoá trong OpenVPN

OpenVPN có thể được cấu hình để hoạt động ở hai chế độ:

 Chế độ mã: Dữ liệu trên đường truyền được mã hoá bằng việc sử dụng các mã

pháp có trong bộ thư viện OpenSSL. Mã pháp mặc định được sử dụng là

Blowfish ở chế độ CBC (cipher BF-CBC).

 Chế độ rõ: Mọi dữ liệu đi qua đường hầm đều ở dạng rõ. Chế độ này hoạt

động khi trong file cấu hình chúng ta chỉ ra tuỳ chọn “cipher none”.

3.2.5. Xác thực tính toàn vẹn gói dữ liệu trong OpenVPN

OpenVPN có thể được cấu hình để hoạt động ở hai chế độ:

 Chế độ xác thực: Sử dụng HMAC với các thuật toán hashing trong bộ thư

viện OpenSSL như MD4, MD5, SHA, thuật toán hashing mặc định là SHA1.

 Chế độ không xác thực: Gói dữ liệu sẽ không được gán thêm thành phần xác

thực để bên nhận kiểm tra tính xác thực và tính toàn vẹn khi nhận được dữ

liệu. Chế độ này hoạt động khi trong file cấu hình chúng ta chỉ ra tuỳ chọn

“auth none”.

90

3.2.6. Giao thức trong OpenVPN

OpenVPN sử dụng hai giao thức cơ bản để tạo đường hầm đó là giao thức

TCP và UDP. Quá trình mã hoá, giải mã và xác thực được mô tả như hình 3.5 và

hình 3.6.

Hình 3.5: Lưu đồ mã hoá và xác thực của OpenVPN

Hình 3.6: Lưu đồ giải mã và xác thực trong OpenVPN

Về bản chất OpenVPN không phải là một giao thức, tuy nhiên trong quá trình

trao đổi gói dữ liệu của mình, OpenVPN cũng đưa ra định dạng gói dữ liệu theo một

cách riêng. Mỗi gói tin TCP/UDP của OpenVPN bao gồm 3 phần chính như sau:

 Độ dài gói/length (16 bit, không dấu) - chỉ với giao thức TCP, luôn gửi ở

dạng rõ.

 Opcode của gói/key_id (8 bit) - chỉ được dùng với giao thức TLS, không

được dùng trong chế độ chia sẻ khóa bí mật. Bao gồm:

o Kiểu gói tin/message_type (5 bit cao) - Được xác định ở phần dưới

đây.

o key_id (3 bit thấp) - key_id trỏ tới một phiên TLS đã được trao đổi.

OpenVPN trao đổi phiên TLS bằng việc sử dụng key_id mới cho mỗi

91

phiên mới. OpenVPN sử dụng 2 dạng key_id khác nhau. Dạng đầu

tiên là 64 bit và được dùng cho các message P_CONTROL. Các

message P_DATA sử dụng các dạng key_id ngắn hơn (3 bit) vì lý do

tính hiệu quả, vì phần lớn các gói của OpenVPN trong một tunnel tích

cực sẽ là các message P_DATA. Dạng 64 bit xem như một session_id,

trong khi dạng 3 bit xem như một key_id.

 Dữ liệu/Payload (n byte) - có thể là message P_CONTROL, P_ACK, hoặc

P_DATA.

Hình 3.7: UDP/TCP Format

Trong đó, Kiểu gói tin có thể là:

 P_CONTROL_HARD_RESET_CLIENT_V1 - Phương pháp sinh khóa 1,

khởi tạo khóa từ client, bỏ qua trạng thái trước đó.

 P_CONTROL_HARD_RESET_SERVER_V1 - Phương pháp sinh khóa 1,

khởi tạo khóa từ server, bỏ qua trạng thái trước đó.

 P_CONTROL_HARD_RESET_CLIENT_V2 - Phương pháp tạo khóa 2,

khởi tạo khóa từ client, bỏ qua trạng thái trước. Đây là phương pháp mặc

định trong OpenVPN.

 P_CONTROL_HARD_RESET_SERVER_V2 - Phương pháp tạo khóa 2,

khởi tạo khóa từ server, bỏ qua trạng thái trước đó.

 P_CONTROL_SOFT_RESET_V1 - Tạo khóa mới

 P_CONTROL_V1 - Gói tin của kênh điều khiển (thường là bản mã của

TLS).

 P_ACK_V1 - Xác nhận đã nhận gói P_CONTROL.

 P_DATA_V1 - Gói dữ liệu đã được mã hoá của tunnel

92

3.3. TÍCH HỢP THAM SỐ RSA AN TOÀN VÀ THUẬT TOÁN MÃ KHỐI BC_VPN TRONG GIAO THỨC SSL/TLS.

Dựa trên mô hình cấu trúc và ý tưởng thiết kế của bộ phần mềm mã nguồn mở

OpenVPN sử dụng bộ thư viện mật mã OpenSSL. Trên cơ sở bộ thư viện, chương

trình mã nguồn mở (phiên bản OpenVPN-2.3.6, phiên bản OpenSSL-1.0.2a),

nghiên cứu sinh đã thực hiện giải pháp tích hợp tham số RSA và thuật toán mã khối

vào bộ thư viện mật mã trong OpenVPN theo mô hình sau:

Hình 3.8: Tích hợp tham số RSA và thuật toán mã khối trong OpenVPN

Thực hiện sinh bộ tham số RSA an toàn trong lĩnh vực kinh tế - xã hội bằng

chương trình sinh tham số RSA (chương trình GenRSA.exe) và chuyển đổi bộ tham

số theo định dạng chứng chỉ số (theo chuẩn PKCS). Tích hợp bộ tham số RSA an

toàn và tham số Diffie - Hellman (DH) vào hệ thống để thực hiện quá trình xác thực

và trao đổi khóa trong giai đoạn thỏa thuận, thiết lập kênh truyền thông có bảo mật.

Thực hiện tích hợp thuật toán mã khối BC_VPN được nghiên cứu đề xuất (với

các thông số: độ dài khối rõ và khối mã là 128 bit, độ dài khoá là 256 bít) vào bộ

93

phần mềm. Thuật toán mã khối BC-VPN được sử dụng để mã hóa chữ ký trong giai

đoạn thỏa thuận khóa của các bên tham gia truyền thông và thực hiện bảo mật dữ

liệu trên kênh riêng ảo sau khi được thiết lập.

Cấu hình và cài đặt bộ phần mềm bảo mật dữ liệu trên đường truyền

PMBM_VPN với các thành phần chính như sau:

- Giao thức: Loại bỏ những phần mã nguồn không sử dụng, những file và tài

liệu không cần thiết. Loại bỏ giao thức SSLv2 được tích hợp sẵn trong

OpenSSL vì giao thức SSLv2 đã được phân tích là kém an toàn, còn tồn tại

điểm yếu an ninh (chương 1). Việc thiết lập phiên bản của giao thức SSL/TLS

được thực hiện thông qua file cấu hình hệ thống và file options.c.

- Các thuật toán mã hoá: Loại bỏ các thuật toán mã hóa yếu, chỉ để lại thuật toán

mã khối AES và tích hợp thêm thuật toán mã khối BC_VPN do luận án nghiên

cứu đề xuất.

- Các thuật toán hashing: Chỉ để lại MD5, SHA1 và thêm SHA-256.

- Các thuật toán trao đổi khoá: Để lại thuật toán trao đổi khoá RSA và Diffie -

Hellman với tham số riêng an toàn.

- Thuật toán ký và kiểm tra chữ ký: Sử dụng lược đồ chữ ký số RSA với thuật

toán sinh tham số RSA an toàn do luận án đề xuất.

Sau khi tiến hành các xử lý và tích hợp các thành phần mật mã như trên, bộ

thư viện OpenSSL được biên dịch lại và tích hợp trong bộ phần mềm PMBM_VPN.

3.3.1. Sử dụng tham số RSA an toàn trong giao thức SSL/TLS

Trong giao thức SSL/TLS hệ mật RSA tham gia vào quá trình xác thực lẫn

nhau và việc thiết lập khóa chung giữa ứng dụng khách và ứng dụng chủ. Việc xác

thực lẫn nhau giữa ứng dụng khách và ứng dụng chủ được thực hiện thông qua các

chứng chỉ số. Việc thỏa thuận khóa chung giữa hai ứng dụng có thể được mô tả như

sau:

Kết thúc giai đoạn thứ nhất của giao thức bắt tay SSL, ứng dụng chủ có được

giá trị ngẫu nhiên ClientHello.random, gồm 28 byte được sinh bởi ứng dụng khách;

94

ứng dụng khách có được giá trị ngẫu nhiên ServerHello.random (gồm 28 byte được

sinh bởi ứng dụng chủ) và chứng chỉ số của ứng dụng chủ.

Trong giai đoạn thứ hai của giao thức bắt tay SSL, ứng dụng khách sinh một

giá trị ngẫu nhiên thứ hai gồm 48 byte được gọi là pre_master_secret, sử dụng khóa

công khai RSA của ứng dụng chủ (được lấy từ chứng chỉ số của ứng dụng chủ) để

mã hóa giá trị ngẫu nhiên này và gửi cho ứng dụng chủ. Khi ứng dụng chủ nhận

được bản mã giá trị ngẫu nhiên pre_master_secret, ứng dụng chủ sử dụng tham số

khóa bí mật RSA để giải mã và nhận được pre_master_secret.

Kết thúc giai đoạn thứ hai của giao thức bắt tay SSL, ứng dụng chủ và ứng

dụng khách có thể tính khóa chung sử dụng cho phiên liên lạc từ các giá trị

ClientHello.random, ServerHello.random và pre_master_secret. Trong giao thức

SSL, phương pháp tính khóa chung được thực hiện thông qua các hàm băm mật mã

MD5 và SHA:

Từ 48 byte pre_master_secret, kết hợp với 28 byte ngẫu nhiên client_random

(của SSL Client), 28 byte ngẫu nhiên server_random (của SSL Server), giao thức

tạo ra 48 byte khác gọi là master_secret như sau:

master_secret =

MD5(pre_master_secret + SHA('A' + pre_master_secret + ClientHello.random

+ ServerHello.random)) +

MD5(pre_master_secret + SHA('BB' + pre_master_secret +

ClientHello.random + ServerHello.random)) +

MD5(pre_master_secret + SHA('CCC' + pre_master_secret +

ClientHello.random + ServerHello.random)) ;

48 byte master_secret được dùng như nguồn ngẫu nhiên để tạo khoá cho các

mã pháp khác đã được thỏa thuận cho phiên liên lạc (khóa dùng cho hàm thực hiện

sinh mã xác thực thông báo dựa trên hàm băm: HMAC, khoá và véc tơ khởi tạo

(IV) dùng cho mã khối, ...). Dãy các byte ngẫu nhiên này được tạo như sau:

key_block =

95

MD5(master_secret + SHA('A' + master_secret + ClientHello.random +

ServerHello.random)) +

MD5(master_secret + SHA('BB' + master_secret + ClientHello.random +

ServerHello.random)) +

MD5(master_secret + SHA('CCC' + master_secret + ClientHello.random +

ServerHello.random)) + ..... ;

Việc gọi hàm MD5, SHA với các giá trị salt (là các ký tự ‘A’, ‘BB’, ‘CCC’,

…) tăng dần cho đến khi đủ độ dài cần thiết (tùy thuộc vào độ dài dữ liệu khóa của

các thuật toán mật mã đã được thỏa thuận giữa ứng dụng khách và ứng dụng chủ sẽ

dùng trong phiên liên lạc).

Các hàm chính thực hiện trong quá trình xác thực và trao đổi khóa.

 Hàm ssl3_send_server_key_exchange

Chức năng:

Server thực hiện gửi các tham số trong quá trình thỏa thuận khóa DH

- Tên hàm: int ssl3_send_server_key_exchange(SSL *s)

Đầu vào: SSL *s: Toàn bộ thông tin của phiên người dùng SSL

Đầu ra: Gửi các thông tin trao đổi khóa sang client

 Hàm ssl3_get _key_exchange (Thực hiện trong tệp s3_clnt.c)

Chức năng:

- Client nhận các tham số trao đổi DH từ server

- Tên hàm: int ssl3_get_key_exchange(SSL *s)

Đầu vào: SSL *s: Toàn bộ thông tin của phiên người dùng SSL

Đầu ra: Client nhận các tham số trao đổi DH từ server và thực hiện xử lý.

 Hàm ssl3_send_client_key_exchange (Thực hiện trong tệp s3_clnt.c)

Chức năng:

- Client gửi các tham số trao đổi khóa DH đến server

- Tên hàm: int ssl3_send_client_key_exchange(SSL *s)

Đầu vào: SSL *s: Toàn bộ thông tin của phiên người dùng SSL

Đầu ra: Client gửi các tham số trao đổi DH đến server và thực hiện xử lý

96

 Hàm ssl3_get_client_key_exchange (Thực hiện trong tệp s3_srvr.c)

Chức năng:

- Server thực hiện nhận các tham số trao đổi khóa từ client

- Tên hàm: int ssl3_get_client_key_exchange(SSL *s)

Đầu vào: SSL *s: Toàn bộ thông tin của phiên người dùng SSL

Đầu ra: Server thực hiện nhận các tham số trao đổi khóa từ client và tính khóa

master_key.

 Hàm ssl3_send_client_verify (Thực hiện trong tệp s3_clnt.c)

Chức năng:

- Client thực hiện ký dựa trên các gói tin đã trao đổi với server

- Tên hàm: int ssl3_send_client_verify(SSL *s)

Đầu vào: SSL *s: Toàn bộ thông tin của phiên người dùng SSL

Đầu ra: Client thực hiện ký dựa trên các gói tin đã trao đổi với server

 Hàm ssl3_get_cert_verify (Thực hiện trong tệp s3_srvr.c)

Chức năng:

- Server thực hiện nhận chữ ký và kiểm tra chữ ký của client

- Tên hàm: int ssl3_get_cert_verify(SSL *s)

Đầu vào: SSL *s: Toàn bộ thông tin của phiên người dùng SSL Đầu ra: Server thực hiện nhận chữ ký và kiểm tra chữ ký của client

 Hàm ssl3_send_server_sign (Thực hiện trong tệp s3_srvr.c)

Chức năng:

- Server tạo chữ ký và gửi sang client

- Tên hàm: int ssl3_send_server_sign(SSL *s)

Đầu vào: SSL *s: Toàn bộ thông tin của phiên người dùng SSL

Đầu ra: server tạo chữ ký và gửi sang client

 Hàm ssl3_get_server_sign (Thực hiện trong tệp s3_clnt.c)

Chức năng:

- Client thực hiện nhận chữ ký và kiểm tra chữ ký của server

- Tên hàm: int ssl3_get_server_sign(SSL *s)

97

Đầu vào: SSL *s: Toàn bộ thông tin của phiên người dùng SSL

Đầu ra: Client thực hiện nhận chữ ký và kiểm tra chữ ký của server

- Các tham số RSA an toàn được chuyển đổi theo định dạng chuẩn (PKCS) dưới

dạng các file: ca.crt; user-01.crt và user-01.key.

- Tham số khoá Diffie - Hellman an toàn được nạp vào server theo định dạng

chuẩn lưu trong file dh2048.pem.

Các tham số trên được bọc theo định dạng chuẩn và tích hợp vào quá trình trao

đổi khóa, xác thực của giao thức SSL/TLS trong module SSL_OpenSSL.c.

3.3.2. Tích hợp thuật toán mã khối BC_VPN vào trong bộ giao thức

SSL/TLS.

Hệ mã khối BC_VPN được nghiên cứu đề xuất với các tham số cụ thể: độ dài

khối rõ và khối mã là 128 bit, độ dài khoá là 256 bít, cấu trúc của hệ mã khối được

thiết kế theo cấu trúc SPN.

Hàm mã hóa dữ liệu được sử dụng để mã hóa chữ ký trong giai đoạn thỏa

thuận khóa của các bên tham gia. Sau đó hàm này được sử dụng để mã hóa dữ liệu

kênh điều khiển và mã hóa dữ liệu gói tin IP. Trong cài đặt thuật toán mã khối ở chế

độ OFB, tại hai điểm client và server đều có hai cặp khóa và IV cho mỗi chiều đến,

chiều đi của gói tin IP là (Keyin, IVin) và (Keyout, IVout). Hai cặp khóa này thu được

từ hàm dẫn xuất khóa với đầu vào là master key (có được sau quá trình bắt tay thỏa

thuận khóa). Gói tin IP đến sẽ được giải mã bằng cặp khóa (Keyin, IVin) và gói tin đi

sẽ được mã hóa bằng cặp khóa (Keyout, IVout).

Quá trình thực hiện mã hóa và xác thực gói tin (Hình 3.9):

Hình 3.9: Lưu đồ mã hoá và xác thực gói tin trong PMBM_VPN

98

Bên gửi sử dụng hàm HMAC trên gói tin sau khi đã được mã hóa và tạo

ra một mã xác thực. Mã xác thực này được bên nhận sử dụng để kiểm tra tính

xác thực của gói tin. Quá trình mã hóa gói tin được thực hiện trong hàm

bmvpn_encrypt, trong tệp crypto.c

Quá trình thực hiện xác thực và giải mã gói tin (Hình 3.10):

Hình 3.10: Lưu đồ giải mã và xác thực gói tin trong PMBM_VPN

Bên nhận, sử dụng hàm HMAC để kiểm tra tính toàn vẹn và xác thực

của gói tin. Nếu thỏa mãn thì bên nhận sẽ giải mã gói tin này. Quá trình giải mã gói

tin được thực hiện trong hàm bmvpn_decrypt, trong tệp crypto.c.

Chi tiết quá trình đóng gói và bảo vệ gói tin IP trong PMBM_VPN được thực

hiện theo hình 3.11 dưới đây:

Hình 3.11: Đóng gói và bảo vệ gói tin IP trong PMBM_VPN

99

Quá trình tích hợp hệ mã khối được thực hiện theo nguyên tắc: nhúng mã khối

vào thư viện OpenSSL thông qua giao diện EVP, sau đó phần mềm PMBM_VPN sẽ

thực hiện gọi thuật toán mã khối từ thư viện này để tiến hành mã hoá và giải mã các

gói dữ liệu.

Thuật toán mã khối BC_VPN được xây dựng và tích hợp trong thư viện

OpenSSL thông qua các hàm định nghĩa (bcvpn.h) và module (bcvpn.c và crypto.c)

thực hiện mã hóa, giải mã với các chế độ mã khối khác nhau.

3.3.3. Thử nghiệm, đánh giá bộ phần mềm bảo mật đường truyền

PMBM_VPN.

 Mô hình thử nghiệm

Hình 3.12 dưới đây là mô hình thử nghiệm với cấu hình VPN dạng

MultiClients-to-Server. Mô hình này phù hợp cho hệ thống có nhiều người dùng di

động có thể truy cập mọi lúc, mọi nơi qua hệ thống mạng LAN/WAN tới hệ thống

server của tổ chức/công ty. Cách thức tổ chức hệ thống bảo mật VPN như sau:

Hình 3.12: Mô hình thử nghiệm phần mềm PMBM_VPN

100

- Trên các máy trạm của người dùng và các máy server được cài phần mềm

PMBM_VPN.

- Đối với hệ thống tại Trung tâm cần có các thiết bị bảo vệ như

FW/IDS/IPS/AntiVirus … để bảo vệ an ninh an toàn. Ở đây demo là 2 thiết bị

FW 1U đảm bảo cả dự phòng và phân tải.

- Đối với các máy chủ bảo mật, sử dụng ít nhất 2 server để làm nhiệm vụ phân

tải và bảo mật. Trong hình dưới đây là 03 server, mỗi server sẽ được cài phần

mềm PMBM_VPN cấu hình ở chế độ server để cho phép các máy trạm kết nối

nhằm thiết lập đường hầm bảo mật VPN cho phép truy cập an toàn từ các máy

trạm vào các máy chủ Web, database, FTP, …

- Trên các máy trạm, cấu hình phần mềm PMBM_VPN dưới dạng client để kết

nối đến các server nhằm thiết lập đường hầm bảo mật dữ liệu. Phía client có

thể cấu hình để cho phép kết nối đến nhiều VPN server tại cùng một thời

điểm, hoặc có thể lựa chọn bất kỳ một server nào trong trường hợp phân tải và

tránh lỗi.

- Việc thiết lập phiên bản của giao thức SSL/TLS và thuật toán mã hóa sử dụng

trong bộ phần mềm PMBM_VPN được thực hiện thông qua file cấu hình hệ

thống trên Server (server.ovpn) và trên Client (client.ovpn).

 Cấu hình máy chủ cài đặt PMBM_VPN Server:

- Intel® Core™ i3-4160 CPU @ 3.60GHz 3.59GHz

- Hệ điều hành: Micrsoft Windows Server 2012, 64 bit

- RAM 8G

 Cấu hình máy trạm cài đặt PMBM_VPN Client:

- Intel® Core™ i7-4710HQ CPU @ 2.50GHz 2.50GHz

- Hệ điều hành: Micrsoft Windows 8, 64 bit

- RAM 8G

Luận án sử dụng công cụ Jperf 2.2 để đánh giá tốc độ của bộ phần mềm

PMBM_VPN.

101

Dưới đây là một số kết quả thu được:

 Cấu hình trên máy VPN Server sử dụng mã khối BCVPN-256-OFB

Hình 3.13: Cấu hình cho VPN Server

 Cấu hình trên máy VPN Client sử dụng mã khối BCVPN-256-OFB

Hình 3.14: Cấu hình cho VPN Client

102

 Trạng thái kết nối trao đổi dữ liệu trên mạng

Hình 3.15: Trạng thái hiện thời của hệ thống VPN đã kết nối thành công

Hình 3.15 mô tả trạng thái hiện thời của hệ thống VPN đã kết nối thành công.

Khi đó giữa client và server thiết lập một kênh truyền tin có bảo mật, việc thiết lập

và thỏa thuận các thuật toán trao đổi tham số, trao đổi khóa, xác thực server và

client, ...được thực hiện thông qua thủ tục bắt tay của giao thức SSL/TLS. Phần

mềm PMBM_VPN đã thực hiện thành công việc kết nối, thiết lập kênh truyền có

bảo mật giữa client và server với các module mật mã được tích hợp vào hệ thống:

- Trao đổi và thỏa thuận khóa: Sử dụng giao thức trao đổi khóa Diffie - Hellman

với tham số Diffie - Hellman riêng an toàn (file dh2048.pem).

- Lược đồ chữ ký số: Sử dụng lược đồ chữ ký số RSA với tham số RSA an toàn

do luận án đề xuất và được cài đặt, tích hợp vào hệ thống.

- Thuật toán mã hoá: Thiết lập thuật toán mã khối BC_VPN với chế độ mã OFB

do luận án xây dựng và tích hợp vào hệ thống.

Bên cạnh đó cơ chế xác thực người dùng, xác thực gói tin, sử dụng chứng chỉ

số được tích hợp vào hệ thống đảm bảo cho quá trình truyền dữ liệu trên mạng được

an toàn và bảo mật.

103

 Một số kết quả thử nghiệm

Hình 3.16: Tốc độ của phần mềm PMBM_VPN (1 luồng)

Hình 3.17: Tốc độ của phần mềm PMBM_VPN (4 luồng)

104

Thực hiện cấu hình lại bộ phần mềm trên máy VPNSever và trên máy

VPNClient với mã pháp AES-256-OFB; Tiến hành thử nghiệm đo tốc độ của phần

mềm PMBM_VPN trên 1 luồng và 4 luồng (kết quả cài đặt và đo tốc độ luồng dữ

liệu được trình bày trong phụ lục luận án).

Bảng 3.1 so sánh, đánh giá tốc độ thực hiện trực tiếp từ PMBM_VPN Client

đến PMBM_VPN Server sử dụng thuật toán BC_VPN, độ dài khóa 256 bit, chế độ

mã OFB với thuật toán mã khối chuẩn AES-256-OFB

Tốc độ đạt được Số luồng

1 4 Sử dụng thuật toán BC_VPN-256-OFB (Mbit/giây) 495.22 484 Sử dụng thuật toán AES-256-OFB (Mbit/giây) 487.50 482

Bảng 3.1: So sánh tốc độ từ PMBM_VPN client đến PMBM_VPN server

Trên cơ sở kết quả cài đặt, thử nghiệm bộ phần mềm bảo mật dữ liệu trên

đường truyền PMBM_VPN trên hệ thống mạng phòng thí nghiệm, nghiên cứu sinh

rút ra một số nhận xét sau:

- Giải pháp tích hợp tham số mật mã RSA và thuật toán mã khối BC_VPN nâng

cao tính an toàn cho giao thức SSL/TLS trong xây dựng phần mềm bảo mật dữ

liệu trên đường truyền là đúng đắn, có tính khả thi cao.

- Khẳng định thuật toán mã khối BC_VPN tích hợp trong bộ phần mềm bảo mật

dữ liệu trên đường truyền thực thi đúng đắn và hiệu quả (tốc độ thực thi tương

đương với thuật toán mã khối AES chuẩn).

KẾT LUẬN CHƯƠNG III

Trong chương 3 luận án đã đạt được những kết quả sau:

- Nghiên cứu, phân tích mô hình, cấu trúc hoạt động của bộ phần mềm

OpenVPN. Kiểm soát và từng bước làm chủ bộ phần mềm mã nguồn mở. Xác

105

định giải pháp, điểm can thiệp tích hợp mật mã vào các thành phần trong bộ

phần mềm OpenVPN.

- Cài đặt, tích hợp bộ tham số an toàn của hệ mật RSA vào quá trình xác thực,

trao đổi khóa trong bộ giao thức SSL/TLS.

- Xây dựng bộ phần mềm thử nghiệm bảo mật đường truyền PMBM_VPN dựa

trên công nghệ OpenVPN có tích hợp các tham số và thuật toán mã khối an

toàn, hiệu quả khắc phục được một số điểm yếu của bộ giao thức SSL/TLS đã

phân tích trong chương 1.

- Thử nghiệm và đánh giá tính an ninh an toàn, tốc độ thực thi của bộ phần mềm

PMBM_VPN. Kết quả thử nghiệm khẳng định giải pháp tích hợp tham số mật

mã RSA và thuật toán mã khối BC_VPN nâng cao tính an toàn cho giao thức

SSL/TLS trong xây dựng phần mềm bảo mật dữ liệu trên đường truyền là

đúng đắn, hiệu quả và có tính khả thi cao.

106

KẾT LUẬN

Bảo mật thông tin trên mạng máy tính bằng kỹ thuật mật mã là một lĩnh vực

rất rộng lớn. Với các cấu trúc mạng và giao thức mạng khác nhau chúng ta có

những giải pháp khác nhau trong việc can thiệp kỹ thuật mật mã vào quá trình

truyền tin trên mạng máy tính.

A. Các kết quả Luận án đã đạ t được:

Luận án tập trung nghiên cứu và đã đạt được những kết quả sau:

- Nghiên cứu các vấn đề cơ bản về an ninh, an toàn mạng máy tính. Phân tích

bộ giao thức TCP/IP và khả năng tích hợp mật mã vào các tầng trong mô

hình giao thức TCP/IP để bảo mật thông tin.

- Phân tích bộ giao thức SSL/TLS, các thành phần cơ bản trong bộ giao thức,

chỉ ra những điểm yếu mất an ninh, an toàn trong giao thức và những giải

pháp phòng chống, khắc phục điểm yếu.

- Nghiên cứu cập nhật giả thiết để xác định độ dài modulo an toàn và đề xuất

một tiêu chuẩn mới đối với số mũ công khai trong hệ mật RSA, xây dựng

thuật toán sinh tham số thỏa mãn ngưỡng an toàn đã xác định.

- Nghiên cứu đề xuất 02 ma trận tuyến tính có tính chất mật mã tốt để cải tiến

tầng tuyến tính của các mã pháp dạng AES. Xây dựng mã khối BC_VPN trên

cơ sở mã pháp dạng AES kính thước khối 128 bit, kích thước khóa 256 bit

với ma trận MDS tựa vòng luận án đã nghiên cứu đề xuất thay thế ma trận

trong biến đổi MixColumns.

- Phân tích mô hình, cấu trúc hoạt động của bộ phần mềm OpenVPN. Kiểm

soát và làm chủ một số module cơ bản trong bộ phần mềm mã nguồn mở.

Xác định rõ giải pháp, điểm can thiệp tích hợp mật mã vào các thành phần

trong bộ phần mềm OpenVPN.

- Xây dựng bộ phần mềm thử nghiệm bảo mật dữ liệu trên đường truyền

PMBM_VPN dựa trên công nghệ OpenVPN có tích hợp các tham số RSA và

107

thuật toán mật mã khối BC_VPN an toàn, hiệu quả khắc phục được một số

điểm yếu của bộ giao thức SSL/TLS.

- Thử nghiệm và đánh giá tính an ninh an toàn, hiệu năng của bộ phần mềm

PMBM_VPN và định hướng nghiên cứu hoàn thiện để có thể ứng dụng được

trong thực tế.

B. Những đóng góp mới của luận án:

- Nghiên cứu đề xuất một tiêu chuẩn mới đối với số mũ công khai trong hệ mật

RSA, xây dựng thuật toán sinh tham số thỏa mãn ngưỡng an toàn đã xác

định.

- Nghiên cứu đề xuất được 02 ma trận tuyến tính C.like1(149, Cir(1,4, 149)),

C.like2(2, Cir(1, 106, 2)) có tính chất mật mã tốt để cải tiến tầng tuyến tính

của các mã pháp dạng AES. Xây dựng mã khối BC_VPN trên cơ sở mã pháp

dạng AES kích thước khối 128 bit, kích thước khóa 256 bit với ma trận MDS

tựa vòng luận án đã nghiên cứu đề xuất.

- Xây dựng bộ phần mềm thử nghiệm bảo mật dữ liệu trên đường truyền

PMBM_VPN dựa trên công nghệ OpenVPN có tích hợp các tham số RSA và

thuật toán mã khối BC_VPN an toàn, hiệu quả khắc phục được một số điểm

yếu của bộ giao thức SSL/TLS.

C. Hướng nghiên cứu tiếp theo:

- Nghiên cứu phát triển các thành tố mật mã mới theo hướng đảm bảo an toàn

và hiệu quả trong các môi trường sử dụng. Ứng dụng ma trận đã đề xuất cài

đặt phần cứng cụ thể đối với mã pháp tựa AES để có thể đánh giá chính xác

hơn ảnh hưởng của tầng tuyến tính đề xuất khi so sánh với phiên bản gốc

hoặc là với các đề xuất khác.

- Áp dụng các kết quả đã nghiên cứu, xây dựng và hoàn thiện bộ phần mềm

bảo mật dữ liệu trên đường truyền dựa trên công nghệ OpenVPN có tích hợp

các tham số và thuật toán mật mã khối an toàn, hiệu quả để bảo mật các dịch

vụ, ứng dụng trên mạng máy tính.

108

DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ

[1] Nguyễn Ngọc Điệp, Phạm Văn Tuấn, Nguyễn Thành Trung, “Tấn công lược

đồ xác thực mật khẩu từ xa với Smart Card”, tạp chí nghiên cứu KH&CN

Quân sự , số 1, tháng 6-2009.

[2] Nguyễn Ngọc Điệp, Trần Hồng Thái, Nguyễn Đức Tâm, “Một số kết quả về

thám mã vi sai với chuẩn mã dữ liệu DES”, Tạp chí Nghiên cứu Khoa học

Công nghệ Quân sự, số 8, tháng 8, năm 2010.

[3] Hoàng Minh, Nguyễn Ngọc Điệp, Nguyễn Quốc Toàn, “Về một giao thức

trao đổi khóa an toàn làm cơ sở cho trao đổi khóa trên mạng Internet”, Tạp

chí Nghiên cứu Khoa học và công nghệ quân sự số 28, tháng 12-2013.

[4] Nguyễn Ngọc Điệp, Nguyễn Đào Trường, Nguyễn Quốc Toàn, “Một số tấn

công giao thức trao đổi khóa” Kỷ yếu Hội nghị Quốc gia về Điện tử -

Truyền thông (REV2013-KC01), tháng 12-2013.

[5] Nguyễn Ngọc Điệp, Nguyễn Đào Trường, Nguyễn Thị Thu Nga, “Phương

pháp mã hóa liên tiếp và tiêu chuẩn cho tham số e”, Tạp chí Nghiên cứu

Khoa học và công nghệ quân sự tháng 8-2015.

[6] Nguyễn Ngọc Điệp, “Một đề xuất ma trận MDS 4x4 an toàn, hiệu quả cho

các mã pháp dạng AES”, Tạp chí Nghiên cứu Khoa học và công nghệ quân

sự số 46, tháng 12 - 2016.

109

TÀI LIỆU THAM KHẢO

[1]. Alshamsi, T.Saito (2004), A technical Comparison of IPSec an SSL. [2]. ANSI X9.31, American National Standard for Financial Services X9.31, Digital Signatures Using Reversible Public Key Cryptography for the Financial Services Industry (rDSA), 2-1998.

[3]. Alan O. Freier, Philip Karlton, Paul C. Kocher: The SSL Protocol

Version 3.0, November 18 1996.

[4]. Arjen K. Lenstra, Eric R. Verheul, Selecting Cryptographic Key Sizes,

Springer-Verlag Berlin Heidelberger 2000, pp. 446-465.

[5]. Arjen K. Lenstra, Key Length, Lucent Technologies and Technische Universiteit Eindhoven, 1 North Gate Road, Mendham, NJ 07945-3104, USA, June 30, 2004

[6]. Bodo Moeller (2004), Security of CBC Ciphersuites in SSL/TLS: Problems and Countermeasures, http://www.openssl.org/~bodo/tls- cbc.txt.

[7]. Charles P.Pfleeger (1989), Security in Computing, Prentice - Hall, Inc.,

USA.

[8]. Chuck Eastton (2016), Modern Cryptography Applied Mathematics for

Encryption and Information Security. Mc Graw Hill Education.

[9]. Charlie Kaufman, Radia Perlman, mike Speciner (1995), Network Security Private Communication in a Public World, Prentice – Hall, Inc., USA.

[10]. C.Kaufman, “Internet Key Exchange (IKEv2) Protocol” RFC 4306,

Dec.2005.

[11]. David Wagner, Bruce Schneier (1996), Analysis of the SSL 3.0 protocol. [12]. Daemen, J., L. Knudsen, and V. Rijmen (1997), The block cipher

Square. in Fast Software Encryption. Springer.

[13]. E. Rescorla (2000), SSL and TLS: Designing and Building Secure

Systems SSL and TLS, Addison-Wesley.

[14]. Federal Information Processing Standards Publication (2009): Digital

Signature Standard (DSS).

[15]. FIB PUB 199 (2004), Standards for Security Categorization of Federal

Information and Information Systems, NIST.

[16]. FIPS PUB 186-3 (June, 2009), Digital Signature Standard (DSS). [17]. FIPS PUB 186-4 (July, 2013), Digital Signature Standard (DSS).

110

[18]. Gregory V.Bard (2004), Vulnerability of SSL to Chosen-Plaintext Attack. [19]. Gregory V. Bard (2006), Modes of Encryption Secure against Blockwise-

Adaptive Chosen-Plaintext Attack.

[20]. Gregory V.Bard (2006), A challenging but feasible blockwise-adaptive

chosen- plaintext attack on SSL.

[21]. Germamo Caronni, Hannes Lubich, Ashar Aziz, To Markson, Rich

Skrenta, Skip Security the Internet, http://skip.incog.com.

[22]. Guo, J., et al (2011), The LED block cipher, in Cryptographic Hardware

and Embedded Systems–CHES 2011, Springer. p. 326-341.

to

[23]. H. Krawczyk (2003), SIGMA: The SIGn-and-MAc Approach Authenticated Diffie-Hellman and its Use in the IKE protocols.

[24]. IPSec, VPN, and Firewall Concepts. Cisco Press, 2004. [25]. ITS “Information Security Standard”,

http://www.diffuse.org/secure.html.

[26]. John R.Vacca (2009), Computer And Information Security Handbook,

Morgan Kaufmann Publisher

[27]. John R.Vacca (1996), Internet Security Secrets, IDC Books Worldwide,

Inc., USA.

[28]. J. Friedlander, Carl Pomerance, and I. Shparlinski (2001), Period of the power generator and small values of Carmichael’s function, Math. Comput., 70(236):1591–1605.

[29]. J. Daemen, V. Rijmen (2001), The Design of Rijndael: AES - The

Advanced Encryption Standard, Springer-Verlag.

[30]. Langford, S.K. and M.E. Hellman (1994), Differential-linear

cryptanalysis. in Advances in Cryptology - CRYPTO’94. Springer. [31]. J¨org Schwenk, Christopher Meyer, Horst G¨ortz (2013), Lessons Learned From Previous SSL/TLS AttacksA Brief Chronology Of Attacks And Weaknesses. https://eprint.iacr.org/2013/049.pdf .

[32]. M. Jason Hinek (2010), Cryptanalysis of RSA and its Variants. Chapman

Hall.

[33]. Мак-Вильямс, Ф.Д. (1979), Теория кодов, исправляющих ошибки. [34]. Oscar Fajardo, Jon Ander Picó, Alejandro (2011), New Tunnelling

capabilities for BGP/MPLS IP VPN in GNU/Linux.

[35]. P. Junod and S. Vaudenay (2004), Perfect diffusion primitives for block cipher – Building efficient MDS matrices. In Selected Areas in Cryptology (SAC 2004), LNCS 3357, pp. 84-99, Springer-Verlag.

111

[36]. R. Canetti and H. Krawczyk (2001), Analysis of key exchange protocols and their use for building secure channels, Advances in Cryptology- EUROCRYPT 2001.

[37]. Ph.D. Rolf OppligerE (2009), SSL and TLS Theory and Practice, Artech

House

[38]. RSA Laboratories, PKSC#1 v2.1: RSA Cryptography Standard, June 14,

2002.

[39]. R. Oppliger, R. Hauser and D. Basin, SSL/TLS Session-Aware User Authentication Or Howto Effectively Thwart the Man-in-the-Middle. [40]. S. Boyd and A. Mathuria (2010), Protocols for Authentication and Key

Establishment, Springer-Verlag.

[41]. Schneier, Bruce, and Doug Whiting, A Performance Comparison of the

Five AES Finalists, AES Candidate Conference. 2000

[42]. Shannon Claude E, Communication theory of secrecy systems, Bell

system technical journal, 1949. 28(4): p. 656-715.

[43]. Sim, S.M., et al (2015), Lightweight MDS Involution Matrices. in FSE.

2015.

[44]. S.Vaudenay (2002), Security Flaws Included by CBC padding. [45]. Sidnie Feit (1993), TCP/IP - Architecture, Protocol, and

Implementation, McGraw-Hill, Inc., Singapore.

[46]. T. Dierks, C. Allent (1999): The TLS Protocol Version 1.0, January. [47]. V. Klíma, O. Pokorný and T. Rosa, Attacking RSA-based Sessions in

SSL/TLS.

[48]. W.Richard Stevens (1996), TCP/IP Illustrated Volume 1,2,3, Addison-

wesley publishing company, USA.

[49]. Warwick Forrd (1994), Computer Communications Security, Prentice-

Hall, Inc., USA.

[50]. Wenbo Mao (2004), Modern Cryptography Theory and Practice.

Hewlett-Packard Company, Prentice Hall.

[51]. William Caelli, Dennis Longley, Michael Shain (1994), Information

Security Handbook, Macmillan Press Ltd., Great Britain.

[52]. William Stallings, Ph.D. (1999), Cryptography and Network Security, Principles and Practice, Second Edition, Prentice - Hall, Inc., USA. [53]. William Stalling (2011), Cryptography and Network Security, Principles

and Practice, Fifth Edition, Prentice Hall.

[54]. W. Diffie and M.E. Hellman (1976), New directions in cryptography,

IEEE Trans. Info. Theory IT-22 No.6, Nov. 1976, (644-654).

112

[55]. Z'aba, M.R. (2010), Analysis of linear relationships in block ciphers.

Luận án tiến sĩ của Queensland University of Technology.

[56]. NIST Special Publication 800-56B: Recommendation for Pair-Wise Key Establishment Schemes Using Integer Factorization Cryptography, 2009. [57]. NIST Special Publication 800-131A: Transitions: Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths, 2011.

[58]. Зензин, О. and М. Иванов, Стардарт криптографической защиты-

AES. Конечные поля. 2002: КУДРИЦ-ОБРАЗ М.

[59]. Hoàng Văn Quân (2015), Đề xuất ma trận MDS đạt hiệu năng cao khi cài đặt trên phần cứng cho các mã pháp dạng AES, Tạp chí Nghiên cứu KH&CN quân sự, Số 40, 12 - 2015.

[60]. Hoàng Văn Quân (2016), Nghiên cứu giải pháp nâng cao hiệu quả bảo mật thông tin trên mạng truyền số liệu đa dịch vụ, Luận án tiến sỹ của Viện Khoa học Công nghệ Quân sự.

[61]. Nguyễn Đức mạnh (2012), Nghiên cứu giải pháp nâng cao tính an toàn cho giao thức SSL/TLS, Luận án tiến sỹ của Viện Khoa học - Công nghệ Quân sự.

[62]. Nguyễn Tuấn Anh (2016), Lỗ hổng DROWN trong giao thức SSL/TLS,

Tạp chí An toàn thông tin, số 2 năm 2016.

[63]. Một số xu hướng tấn công mạng năm 2016, trang 58-60, Tạp chí An toàn

thông tin, Số 1 - Năm 2016.

[64]. TCVN 7635:2007, Tiêu chuẩn Quốc gia. Kỹ thuật Mật mã - Chữ ký số.

Hà Nội 2007.

[65]. Trần Duy Lai, Đào Văn Giá (2001-2005), Nghiên cứu một số vấn đề bảo mật và an toàn thông tin cho các mạng dùng giao thức liên mạng IP, Đề tài cấp Nhà nước KC.01.01.

[66]. Trần Duy Lai (2007-2009), Nghiên cứu xây dựng chuẩn mật mã

Quốc gia Việt Nam, Đề tài cấp Nhà nước.

[67]. Nhiệm vụ Hợp tác về Khoa học công nghệ theo Nghị định thư (2012- 2015), Nghiên cứu giải pháp bảo mật mạng theo công nghệ chuyển mạch nhãn đa giao thức MPLS (Multi Protocol Label Switching).

[68]. http:// www.openvpn.net [69]. http:// www.openssl.com [70]. http://www.physorg.com/news/2011-03-petaflops-supercomputer-oak-

ridge-facility.html

[71]. https://www.top500.org/lists/2016/06/

113

[72]. http://www.emc.com/emc-plus/rsa-labs/historical/the-rsa-factoring-

challenge.htm

[73]. https://www.keylength.com/en/compare/ [74]. https://tools.ietf.org/html/rfc5246_ RFC 5246 (August 2008) - The

Transport Layer Security.

[75]. http://www.ipa.gov.jp/security/enc/CRYPTREC

/index-e.

[76]. http://www.cryptonessie.org. [77]. http://www.nist.gov/

114

PHỤ LỤC: CÁC MODULE CHƯƠNG TRÌNH, KẾT QUẢ THỬ NGHIỆM

1. Chương trình sinh tham số hệ mật RSA

Trong phụ lục luận án trình bày các module chương trình sinh số ngẫu nhiên

X9.17, chương trình sinh số nguyên tố của Shawer-Taylor. Cuối cùng là phần mô tả

bộ chương trình sinh tham số an toàn cho hệ mật RSA thỏa mãn các tiêu chuẩn đã đề

xuất cho lĩnh vực kinh tế - xã hội.

1.1. Module chương trình sinh số ngẫu nhiên X9.17 Tên thủ tục: prng_ANSI_X917 Đầu vào:

L: Số bít cần sinh ngẫu nhiên; V0: 128 bít ngẫu nhiên lựa chọn bởi user DTj: 128 bít date/time của hệ thống; K: 128 bít khoá cho AES. Số ngẫu nhiên p có L bít.

Ij = AESK(DTj) xj = AESK(Ij XOR Vj-1) Vj = AESK(Ij XOR xj) p ← p || xj p = null for j=1 to L/128 p ← Lấy L bít bên trái của p

unsigned long prng_ANSI_X917(unsigned char *rnd,

V[i]=malloc(16);//V[i] la so 128 bits

unsigned long bits, unsigned char *V0, unsigned char *userKey){ int i, j; int BUOC_LAP=bits/128; unsigned long bytes=(bits+7)/8; AES_KEY *K=(AES_KEY*)malloc(sizeof(AES_KEY)); unsigned char I[16]; unsigned char *DT=(unsigned char *)malloc(16); unsigned char x[16]; unsigned char tmp[16]; unsigned char *p=(unsigned char*)malloc(bytes); unsigned char **V=malloc(4*(BUOC_LAP+1)); for (i=0; i<=BUOC_LAP; i++) memcpy(V[0], V0, 16);

Đầu ra: Thuật toán: Mô tả cụ thể:

/* Thiết lập 128 bít khoá K cho AES */ AES_set_encrypt_key(userKey, 128, K); memset(p, 0, bytes); memset(DT, 0, 16);

115

tmp[i]=I[i]^V[j-1][i];

free(V[i]);

/* Thực hiện vòng lặp sinh NN */ for(j=1; j<=BUOC_LAP; j++){ DT = get_128bits_DT(); AES_encrypt(DT, I, K); for(i=0; i<16; i++) AES_encrypt(tmp, x, K); for(i=0; i<16; i++) tmp[i]=I[i]^x[i]; AES_encrypt(tmp, V[j], K); /* Tính p=p||x[j] */ memcpy(p+16*(j-1), x, 16); } /* Lấy đầu ra */ memcpy(rnd, p, bytes); free(K); free(p); free(V); free(DT); for (i=0; i<=BUOC_LAP; i++) return bytes;

}

1.2. Module chương trình sinh số nguyên tố của Shawer-Taylor

Tên thủ tục: ShawerTaylor_Gen Đầu vào:

k - số bít của số nguyên tố cần sinh và một giá trị cố định L-xác định giới hạn sử dụng phép chia tầm thường - theo bít. N: Số nguyên tố sinh được

void ShawerTaylor_Gen(unsigned int k, big N) {……………

n = OddRandom(k);

Đầu ra: Mô tả chi tiết:

/* Bước 1: */ if (k <= 20) { /* Giới hạn phép chia tầm thường L=221 */ /* Thực hiện sinh số nguyên tố lẻ k bit, n */ do { } while (!trial_small_division(n)); /* Gán n vào số lớn zn*/ uconvert(n, *zn); } else {

/* Bước 2: */ if(k%2==1) k1=(k+3)/2; /* Nếu k lẻ */ else k1=k/2+1; /* Nếu k chẵn */ SHAWETAYLOR_PRIME(k1, &zq); /* Gọi đệ quy */

116

/* Bước 3: Lựa chọn ngẫu nhiên một số nguyên x

GenRandomZ(k, &zx);

/* Bước 4: Tính t=[x/2q]+1 */ sftbit(zq, 1, zm); divide(zx, zm, zt); incr(zt, 1, zt);

/* Bước 5: Tính zb = 2tq+1 */ multiply(zt, zm, zb); incr(zb, 1, zb); /* Tính zc =2^k */ sftbit(z_one, k, zc);

/* Vòng lặp các bước từ 5 đến 8 */ success=0; while(!success){

/* Tính t = [2^(k-1)/(2q)]+1 */ sftbit(zc, -1, zc); /*Tính zc=2^(k-

divide(zc,

zm,

zt);/*t=[2^(k-

incr(zt, 1, zt); /* Tính t = t+1 */

/* Tính n = n+1 */

thỏa mãn 2^k-1 <= x < 2^k */ /* Kiểm tra điều kiện 2tq+1 >= 2^k */ if (compare(zb, zc) >= 0) { 1)*/ 1)/(2q)]*/ } /* Bước 6: Tính n = 2tq + 1 */ multiply(zt, zm, *zn); /* Tính n=t.2q*/ incr(*zn, 1, *zn);

bigrand(zc, za);

/* Bước 7: */ /* Lựa chọn a thỏa mãn: 2<=a<=n-2 */ incr(*zn, -2, zc); /* Tính zc = zn – 2 */ /* Vòng lặp để sinh số nguyên a */ do { }

while(compare(za,z2)<0||compare(za,zc)>0);

/* Tính x=a^2t mod n */ sftbit(zt, 1, z2t); /* Tính z2t=2*zt*/ powmod(za, z2t, *zn, zx); /* Kiểm tra 3 điều kiện */ /* Kiểm tra điều kiện 1: x != 1*/

117

if (compare(zx, z_one) != 0) {

// Tính gcd(x-1,n) decr(zx, 1, zc); //zc = zx -1 egcd(zc, *zn, zr); //zr = gcd(zc, *zn) /* Kiểm tra điều kiện 2: gcd(x-1,n)=1

*/

if (compare(zr, z_one) == 0){

success=1;

//Tính zc=x^q mod n powmod(zx, zq, *zn, zc); /* Kiểm tra ĐK 3: x^q=1 mod n */ if (compare(zc, z_one) == 0){ }

}

} if(success==0)

incr(zt, 1, zt); /* Bước 8: Tính t=t+1

}

*/ }

}

1.3. Chương trình sinh tham số cho lĩnh vực kinh tế - xã hội

 Hướng dẫn sử dụng

Bộ chương trình sinh tham số RSA an toàn cho lĩnh vực kinh tế - xã hội là

một file chạy genRSA.exe (124KB) được biên dịch trên nền tảng Windows 32 bít

(chạy được trên các môi trường Windows XP, Windows Server 2003, Windows 7

32 bít và Windows Server 2008 32 bít).

Các bước để sinh một bộ tham số RSA (N, e, d) như sau:

 Bước 1: Chạy file genRSA.exe

 Bước 2: Nhập độ dài modulo: chọn một trong hai giá trị là 1536 hoặc

2048.

 Bước 3: Nhập số bộ tham số cần sinh (100 bộ sẽ phải chạy trong vòng từ

1-2 ngày).

Kết quả:

 File BangchungP.txt và Bangchung.Q.txt là file chứa các bằng chứng để

chứng minh tính nguyên tố của p và q.

118

 File Thamso.txt chứa bộ tham số RSA (N=p.q, e, d).

 Trong file Thamso.txt có thông tin về thời gian sinh đối với một bộ tham

số RSA.

Cụ thể về một bộ tham số như sau:

=== BO THAM SO RSA AN TOAN 1 ===

Modulus n (2048 bits):

B3E3DE657F48E88E8B3563BBDD0998FC49E191F00B772AAD7A010B0C4A8C31A8A7AC4BA4F17A8873C4C4C19

AF0D5CC6460F343C1E597FC86C5AA536743E463747FF21E35473E20CCF773359A2702DD3DD832ABFC01778821D

FF54291F74ACB984E345DB2601CC3F0F6B550C897BF4F9D15D41F6206979E6978AD286CFD64DFB0DFF88278175

A8339B5D8A3B64B6BCEC7D6CF9E338356F5A0754A2D9C5B84B45CA253F5D657E17BA390F17A14205BB675262

A23677F7C5DE4058E235B70DF3042C2E1D23E999422C5D4F29F11B1C52A3410510BC3C5BC69AA61AFD1B6530F

4B48E1123571A6ABB5386DEF30D700407FAA5F4626B01FDFDC8964AAE14865DD8F99

Public exponent e (252 bits):

A5D09AECF8C1ADF2131B3A46CAF8EBCC97DD89FE9AD96B7A51E5828A2CD2C3B

Private exponent d (2044 bits):

E976BACB16DE7AC26403D38212F4D8BD3652B261B452E4F9C8FD9B77A072A00E53DACD57530B9F329AAD6526

FC42253AD532B5DDB47CF6DDF58D5568DE91828E4279691EB0359A92D84C47D5B14B8C61BD2F2C8EA029292C

19D65D796D222D3176F364A3EBBD161646CF8A177D87E24613A89AC8F5DC8231A529FDA9949E96CB0634012031

5305EA0B5A7F01938C695350B51362F0AB72F75212D866B97E1CB2ACD4CA57A2707E3EF7135B763FD04769AEB6

B2D8F0D1B099B0F2297376C3FA0BB4BBC1F6EB3476FF395D26A7D0842E1CA36E8F97EF5BFB8CD6552C1178CA

05B645030A52EC55E65E8717719DD8FF9478273567F5E94EC28625F53881309938B

Thoi gian sinh: 224

=== BO THAM SO RSA AN TOAN 2 ===

Modulus n (2048 bits):

D72C496F98D2F7B65DA1A427A75ABE0478872BD8E2282ED32782857ACD4DF2F63B35580F8EB98AB168F4CABE

4B03337B7816DE13C80C09E381D81466D6B394004979B064B3F3AC5DF138CBABD2FD8B15D08D953DB950F1061

FD0E0D7959E790969B0C532F830DF39094466589F1397E097765FB9825E75D2BEF090055C20CFC157C467DB18E48

C93BE23F3A7AD7A8232C66336CFA62617E02CC69A2B7D92F9BCDF4486DD9A4A58E499DDCD4B3D030794916A

B38FACD492277ADBD83ECF2BC9B4719A94FB4D762D7BA04B76846FFCCC99E51466EEC9263FDA62FB146D93B

D07661AA1ACA5B41B573B6E4E9B66B17DE35E4162B71E83549C7FCF633963E94690AF

Public exponent e (254 bits):

25A682F7A52BD5480815ECEFFF4E16AD1F483E7859F08F84FE66E05B357D3D25

Private exponent d (2047 bits):

60B957BA8FCBA2166336EC768FA9AFBEB50DCE4D355D747DEC036B72B3F7979199A0A6C210CD55D49FAC398

E9F18C22C68E2427CE56AA57265F871BC97A94F94E8398FA9EB14940239788B355B653DD9D4792DFEDD1BFEE4

FDD02F5C513A994DADFF6F55E73FA0CCF7BB51F79BBE364196B5B7DDA4C8B2AF0ADC7F43671CAD4B1EA58F

4AF765262E4D33A0B90203F6E48815C3495244C4B34EA2071E02056A31105A871A597F7B87B7FAF9386159C2F180

1A636F2A008E09BE4E787BB8885C851DB24209491578BF42C553C134E19CAD7601447C4B00D721353A521B5FEC5

2740A097CA88E498EB8DF8EA00957B50B58DC5FD2132999436303ED7F3732EE7FD5 Thoi gian sinh: 139

119

Chú ý:

 Các kết quả sẽ được ghi thêm vào file có sẵn.

 Nếu máy tính có từ 2-4 core thì có thể chạy song song 2-4 tiến trình để

tăng số lượng các bộ tham số cần sinh.

 Mô tả các thủ tục chính

Thuật toán sinh ngẫu nhiên một số nguyên sử dụng ANSI X9.17,

Thuật toán sinh số nguyên tố sử dụng thuật toán tất định của Shawer-Taylor.

Trong phần phụ lục, luận án chỉ đưa ra thủ tục sinh tham số PARAMGEN.

Thủ tục sinh tham số cho lĩnh vực KTXH:

 Nguyên mẫu hàm: int PARAMGEN(int nlen, big n, big e, big d, int

num)

 Input: nlen, num

 Output: n, e, d

 Giá trị trả về: Là 1 nếu sinh được một tham số thỏa mãn các

int PARAMGEN(int nlen, big n, big e, big d, int num) {

big p = mirvar(0), p1 = mirvar(0), p11=mirvar(0); big q = mirvar(0), q1 = mirvar(0), q11=mirvar(0); big tg= mirvar(0), tg1=mirvar(0), p2k = mirvar(0), p94=mirvar(0), p254=mirvar(0); big etg=mirvar(0), pm1=mirvar(0), qm1=mirvar(0), p1m1=mirvar(0), q1m1=mirvar(0); big gcd1 = mirvar(0), gcd2=mirvar(0), lcm=mirvar(0), input=mirvar(1);

long end, start; time_t t; int res =0, dlen, emax, emin; FILE *fp; start = time(&t); if (nlen == 1536) {dlen = 1220; emax=254; emin=94;} if (nlen == 2048) {dlen = 1434; emax=512; emin=94;}

tiêu chuẩn đã đề xuất, ngược lại trả về 0.

//Buoc 1 if (!GENPQ(nlen, p, p1, p11, input, "BangchungP.txt", 0))

goto FINISH;

copy(p, input);

120

//Buoc 2 if (!GENPQ(nlen, q, q1, q11, p, "BangchungQ.txt", 1))

goto FINISH;

//Buoc 3: da thuc hien trong thu tuc GENPQ

//Buoc 4 multiply(p, q, n); decr(p1, 1, p1m1); decr(q1, 1, q1m1); decr(p, 1, pm1); decr(q, 1, qm1); multiply(pm1, qm1, lcm); egcd(pm1, qm1, gcd1); divide(lcm,gcd1,lcm);

//Buoc 5: dựa theo cận của tham số e an toàn.

convert(1, tg); sftbit(tg, emin, p94); sftbit(tg, emax, p254); etg = Random(p94, p254);

if(subdivisible(etg,2)==1) incr(etg,1,etg);

//Buoc 6: Kiem tra dieu kien gcd(e,p-1), gcd(e,q-1) egcd(pm1, etg, gcd1); egcd(qm1, etg, gcd2); if ((compare(gcd1,One)!=0) || (compare(gcd2,One)!=0))

goto Step5;

//Buoc 7 divide(p1m1,p11,tg); powmod(etg, tg, p1, tg1); if(compare(tg1, One)==0) goto Step5; divide(q1m1,q11,tg); powmod(etg, tg, q1, tg1); if(compare(tg1, One)==0)

goto Step5;

//Buoc 8 copy(etg,e); copy(etg,d); xgcd(d,lcm,d,d,d); //d=e^(-1) mod lcm

/* */

121

//Buoc 9 convert(1, tg); sftbit(tg, dlen, p2k); if(compare(d, p2k)<0) goto Step5; end = time(&t); res = 1; fp = fopen("Thamso.txt","a"); mip->IOBASE=16; fprintf(fp,"=== BO THAM SO RSA AN TOAN THU %d===\n", num); fprintf(fp,"Modulus n (%d bits):\n", logb2(n)); cotnum(n, fp); fprintf(fp,"Public exponent e (%d bits):\n", logb2(e)); cotnum(e, fp); fprintf(fp,"Private exponent d (%d bits):\n", logb2(d)); cotnum(d, fp); fprintf(fp,"Thoi gian sinh: %ld\n", end-start); fclose(fp);

FINISH:

mirkill(p);mirkill(tg); mirkill(p1); mirkill(p11); mirkill(q);mirkill(q1); mirkill(q11); mirkill(tg1); mirkill(pm1); mirkill(qm1); mirkill(p1m1); mirkill(q1m1);mirkill(gcd1); mirkill(gcd2); mirkill(lcm);mirkill(p254); mirkill(p2k); mirkill(p101); mirkill(etg); mirkill(input); return res;

}

2. Cài đặt thuật toán mã khối BC_VPN Trong phụ lục luận án trình bày các modul chương trình cơ bản thực hiện

thuật toán mã khối BC_VPN (các modul mã hóa, giải mã dữ liệu).

u32 s0, s1, s2, s3, t0, t1, t2, t3;

Định nghĩa, khai báo cáo ma trận tuyến tính: được thực hiện trong file Table.h

void Encrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 pt[16], u8 ct[16]) { /* Chuyen khoi ro tu dang byte (8 bit) sang cac tu 4 byte (32 bit) va thuc hien cong XOR voi khoa dau: */ s0 = GETU32(pt ) ^ rk[0]; s1 = GETU32(pt + 4) ^ rk[1]; s2 = GETU32(pt + 8) ^ rk[2]; s3 = GETU32(pt + 12) ^ rk[3]; /* Vong 1: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[ 4];

122

t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[ 5]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[ 6]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[ 7]; /* Vong 2: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[ 8]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[ 9]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[10]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[11]; /* Vong 3: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15]; /* Vong 4: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19]; /* Vong 5: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23]; /* Vong 6: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27]; /* Vong 7: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30];

123

t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31]; /* Vong 8: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35]; /* Vong 9: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39]; if (Nr > 10) { /* Vong 10: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43]; /* Vong 11: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47]; if (Nr > 12) { /* Vong 12: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51]; /* Vong 13: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55]; }

124

(Te4[(t0 >> 24) ] & 0xff000000) ^ (Te4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ (Te4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ (Te4[(t3 ) & 0xff] & 0x000000ff) ^ rk[0];

(Te4[(t1 >> 24) ] & 0xff000000) ^ (Te4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ (Te4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ (Te4[(t0 ) & 0xff] & 0x000000ff) ^ rk[1];

(Te4[(t2 >> 24) ] & 0xff000000) ^ (Te4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ (Te4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ (Te4[(t1 ) & 0xff] & 0x000000ff) ^ rk[2];

(Te4[(t3 >> 24) ] & 0xff000000) ^ (Te4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ (Te4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ (Te4[(t2 ) & 0xff] & 0x000000ff) ^ rk[3];

s0 = PUTU32(ct , s0); s1 = PUTU32(ct + 4, s1); s2 = PUTU32(ct + 8, s2); s3 = PUTU32(ct + 12, s3);

u32 s0, s1, s2, s3, t0, t1, t2, t3;

*/

} rk += Nr << 2; /* Vong cuoi Chuyen cac tu 32 bit thanh cac byte: */ } void Decrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 ct[16], u8 pt[16]) { /* Chuyen cac byte ban ma thanh cac tu 32 bit. Ap dung cong khoa dau: s0 = GETU32(ct ) ^ rk[0]; s1 = GETU32(ct + 4) ^ rk[1]; s2 = GETU32(ct + 8) ^ rk[2]; s3 = GETU32(ct + 12) ^ rk[3]; /* Vong 1: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[ 4]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[ 5]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[ 6]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[ 7]; /* Vong 2: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[ 8]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[ 9];

125

s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[10]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[11]; /* round 3: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[12]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[13]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[14]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[15]; /* Vong 4: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[16]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[17]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[18]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[19]; /* Vong 5: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[20]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[21]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[22]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[23]; /* Vong 6: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[24]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[25]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[26]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[27]; /* Vong 7: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[28]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[29]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[30]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[31]; /* Vong 8: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[32]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35]; /* Vong 9: */

126

rk += Nr << 2;

(Td4[(t0 >> 24) ] & 0xff000000) ^ (Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ (Td4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ (Td4[(t1 ) & 0xff] & 0x000000ff) ^ rk[0];

t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39]; if (Nr > 10) { /* Vong 10: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43]; /* Vong 11: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47]; if (Nr > 12) { /* Vong 12: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51]; /* Vong 13: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55]; } } /* Xu ly vong cuoi, Chuyen cac tu 32 bit ve dang byte: */

s0 = PUTU32(pt , s0); s1 =

(Td4[(t1 >> 24) ] & 0xff000000) ^

127

(Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ (Td4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ (Td4[(t2 ) & 0xff] & 0x000000ff) ^ rk[1];

(Td4[(t2 >> 24) ] & 0xff000000) ^ (Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ (Td4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ (Td4[(t3 ) & 0xff] & 0x000000ff) ^ rk[2];

(Td4[(t3 >> 24) ] & 0xff000000) ^ (Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ (Td4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ (Td4[(t0 ) & 0xff] & 0x000000ff) ^ rk[3];

PUTU32(pt + 4, s1); s2 = PUTU32(pt + 8, s2); s3 = PUTU32(pt + 12, s3);

} 3. Cài đặt và thử nghiệm bộ chương trình PMBM_VPN

 Cấu hình máy chủ cài đặt PMBM_VPN Server:

- Intel® Core™ i3-4160 CPU @ 3.60GHz 3.59GHz

- Hệ điều hành: Micrsoft Windows Server 2012, 64 bit

- RAM 8G

 Cấu hình máy trạm cài đặt PMBM_VPN Client:

- Intel® Core™ i7-4710HQ CPU @ 2.50GHz 2.50GHz

- Hệ điều hành: Micrsoft Windows 8, 64 bit

- RAM 8G

Nhóm đề tài sử dụng công cụ Jperf 2.2 để đánh giá tốc độ của bộ phần mềm

PMBM_VPN.

Dưới đây là một số kết quả thử nghiệm với thiết lập cấu hình bộ phần mềm

PMBM_VPN sử dụng thuật toán mã khối AES ở chế độ OFB

 Cấu hình trên máy VPN Server sử dụng mã pháp AES-256-OFB

128

Hình 1: Cấu hình cho VPN Server

 Cấu hình trên máy VPN Client sử dụng mã pháp AES-256-OFB

Hình 2: Cấu hình cho VPN Client

129

 Một số kết quả thử nghiệm

Hình 3: Tốc độ của phần mềm PMBM_VPN (01 luồng)

Hình 4: Tốc độ của phần mềm PMBM_VPN (4 luồng)

130