MỤC LỤC
MỤC LỤC.......................................................................................................i
DANH MỤC HÌNH VẼ...............................................................................xi
MỞ ĐẦU........................................................................................................1
Chương 1. CÁC ỨNG DỤNG CỦA MẬT MÃ TRONG AN TỒN
THƠNG TIN VÀ VAI TRỊ CỦA CÁC NGƠN NGỮ LẬP TRÌNH.........2
1.1 SƠ LƯỢC VỀ MẬT MÃ HỌC.................................................................2
1.1.1 Lịch sử của mật mã........................................................................
1.1.2 Các mục tiêu của mật mã...............................................................
1.1.3 Phân loại các loại mật mã...............................................................
1.2 CÁC ỨNG DỤNG CỦA MẬT MÃ..........................................................6
1.2.1 Các ứng dụng trong thực tiễn.........................................................
1.2.1.1 Ứng dụng trong đời sống thông tin, kinh tế, xã hội......6
1.2.1.2 Ứng dụng trong an ninh, quốc phòng............................7
1.2.2 Ứng dụng của một số thành phần mật mã cơ bản..........................
1.2.2.1 Dãy ngẫu nhiên, dãy giả ngẫu nhiên.............................9
1.2.2.2 Hàm băm.....................................................................11
1.2.2.3 Mã dịng......................................................................13
1.2.2.4 Mã khối.......................................................................15
1.2.2.5 Hệ mật khóa cơng khai................................................17
1.2.2.6 Chữ ký số....................................................................18
1.2.3 Ứng dụng trong các giao thức bảo mật........................................
1.2.3.1 Xác thực đăng nhập trên Linux...................................19
1.2.3.2 Secure Shell (SSH)......................................................20
1.2.3.3 SSL/TLS......................................................................23
1.2.3.4 Giao thức SET (Secure Electronic Transaction).........27
1.2.3.5 S/MIME (Secure/Multipurpose Internet Mail
Extensions)........................................................................................31
1.2.3.6 PGP, OpenPGP, GnuPG..............................................32
i
1.3 MỘT SỐ FRAMEWORK HỖ TRỢ LẬP TRÌNH ỨNG DỤNG MẬT
MÃ................................................................................................................36
1.3.1Thư viện lập trình số lớn GMP.....................................................
1.3.2Crypto++.......................................................................................
1.3.3Microsoft CryptoAPI....................................................................
1.3.4JCA, JCE.......................................................................................
1.4 MỘT SỐ PHẦN MỀM HỖ TRỢ NGHIÊN CỨU MẬT MÃ.................42
1.4.1 Maple............................................................................................
1.4.2 Mathematica.................................................................................
1.5 CÂU HỎI ƠN TẬP.................................................................................46
Chương 2. MẬT MÃ DỊNG......................................................................48
2.1. KHÁI NIỆM MÃ DÒNG.......................................................................48
2.2. CÁC ĐẶC TRƯNG...............................................................................50
2.2.1. Độ phức tạp tuyến tính................................................................
2.2.1.1. Thanh ghi dịch phản hồi.............................................50
2.2.1.2. Dãy ghi dịch...............................................................51
2.2.1.3. Định nghĩa độ phức tạp tuyến tính:............................52
2.2.1.4. Thuật tốn Berlekamp-Massey...................................54
2.2.1.5. Phân bố độ phức tạp tuyến tính của dãy ngẫu nhiên..58
2.2.2. Chu kỳ.........................................................................................
2.2.3. Tự tương quan.............................................................................
2.2.4. Lực lượng một loại dãy...............................................................
2.2.5. Các tính chất thống kê.................................................................
2.2.5.1. Kiểm tra tần số đơn (kiểm tra bit đơn).......................62
2.2.5.2. Kiểm tra seri (kiểm tra phân bố cặp bit)....................63
2.2.5.3. Kiểm tra Poker (kiểm tra phân bố đoạn bít)...............63
2.2.5.4. Kiểm tra loạt...............................................................64
2.2.5.4. Kiểm tra tự tương quan..............................................64
2.3. CÁC NGUYÊN LÝ THIẾT KẾ MẬT MÃ DÒNG...............................66
2.3.1. Thiết kế mật mã dòng dựa trên các LFSR...................................
2.3.1.1. Các bộ sinh tổ hợp phi tuyến......................................67
ii
2.3.1.2. Các bộ lọc phi tuyến...................................................68
2.3.1.3. Các bộ sinh được điều khiển bằng đồng hồ...............69
2.3. 2. Thiết kế mật mã dòng dựa trên mật mã khối..............................
2.3.2.1. Kiểu phản hồi mật mã................................................69
2.3.2.2. Kiểu phản hồi đầu ra..................................................70
2.3.2.3. Kiểu đếm....................................................................70
2.3.3. Các mật mã dịng dựa trên mật mã khóa cơng khai....................
2.3.4. Các kiểu thiết kế khác.................................................................
2.4. MỘT SỐ MẬT MÃ DÒNG: ỨNG VỚI DỊNG KHĨA LÀ DÃY BÍT,
DỊNG KHĨA LÀ DÃY BYTE....................................................................71
2.4.1. Dịng khóa là dãy bít...................................................................
2.4.1.1. Dãy sinh khóa Geffe P.R............................................71
2.4.1.2. DÃY D'BRUIJN (dãy phi tuyến chu kỳ cực đại).......72
2.4.1.3. Dãy được điều khiển bằng đồng hồ............................74
2.4.1.4 Mã dòng dựa trên mật mã khóa cơng khai..................76
2.4.1.4 Mã dịng Seal...............................................................78
2.4.1 Dịng khóa được sinh từ dãy byte................................................
2.5. CHƯƠNG TRÌNH MAPLE THỰC HIỆN MỘT SỐ MẬT MÃ DỊNG:
THUẬT TỐN VÀ ĐỘ AN TỒN..............................................................87
2.5.1. Dãy sinh khóa Geffe P.R.............................................................
2.5.2. DÃY D'BRUIJN (dãy phi tuyến chu kỳ cực đại)........................
2.5.3. Dãy Shrinking.............................................................................
2.6 CÂU HỎI ÔN TẬP VÀ BÀI TẬP..........................................................92
Chương 3. MẬT MÃ KHỐI.......................................................................94
3.1 ĐỊNH NGHĨA MÃ KHỐI.......................................................................94
3.2 CÁC LOẠI CẤU TRÚC PHỔ BIẾN CỦA MÃ KHỐI..........................95
3.2.1 Các thuật tốn lược đồ khóa.........................................................
3.2.2 Các mạng thay thế- hoán vị (SPN)...............................................
3.2.3 Mạng Feistel.................................................................................
3.2.4 Các cấu trúc mã khối khác.........................................................
iii
3.3 XÁC SUẤT TUYẾN TÍNH VÀ SƠ LƯỢC VỀ TẤN CƠNG TUYẾN
TÍNH LÊN MÃ KHỐI................................................................................101
3.3.1 Xác suất tuyến tính.....................................................................
3.3.2 Sơ lược về tấn cơng tuyến tính lên mã khối...............................
3.4 XÁC SUẤT LƯỢNG SAI VÀ SƠ LƯỢC VỀ TẤN CÔNG LƯỢNG
SAI LÊN MÃ KHỐI...................................................................................106
3.4.1 Xác suất lượng sai......................................................................
3.4.2 Sơ lược về tấn công lượng sai lên mã khối................................
3.5 NGUYÊN LÝ THIẾT KẾ MÃ KHỐI...................................................111
3.6 GIỚI THIỆU MỘT SỐ MÃ KHỐI: CẤU TRÚC, THUẬT TỐN VÀ
ĐỘ AN TỒN.............................................................................................112
3.6.1 Chuẩn mã hóa dữ liệu DES........................................................
3.6.1.1 Thuật toán mã hoá.....................................................113
3.6.1.2 Lược đồ tạo hệ thống khố :......................................117
3.6.1.3 Giải mã DES..............................................................118
3.6.1.4 Độ an tồn của DES..................................................119
3.6.2 Mã khối Camellia.......................................................................
3.6.2.1 Cấu trúc của Camellia...............................................123
3.6.2.2 Các thành phần của Camellia....................................137
3.6.2.3 Độ an toàn của Camellia...........................................145
3.6.2.4. Dữ liệu thử nghiệm của Camellia............................146
3.7 THUẬT TỐN VÀ CHƯƠNG TRÌNH TÍNH XÁC SUẤT LƯỢNG
SAI VÀ TUYẾN TÍNH CỰC ĐẠI.............................................................147
3.7.1 Thuật tốn tính các xác suất lượng sai và tuyến tính cực
đại........................................................................................................
3.7.2 Chương trình tính các xác suất lượng sai và tuyến tính
cực đại trên Maple...............................................................................
3.7.2.1 Chương trình tìm xác xuất lượng sai, tuyến tính cực đại
với hộp Sbox của AES.....................................................................149
3.7.2.2 Chương trình tìm xác xuất lượng sai, tuyến tính cực đại
với hộp Sbox1 của Camelia.............................................................151
iv
3.8 CÂU HỎI ÔN TẬP...............................................................................154
Chương 4. MẬT MÃ TRÊN ĐƯỜNG CONG ELLIPTIC....................155
4.1. ĐỊNH NGHĨA......................................................................................155
4.1.1. Định nghĩa đường cong elliptic.................................................
4.1.2. Luật nhóm.................................................................................
4.1.3. Tính kP......................................................................................
4.1.4. Dạng khơng kỳ dị......................................................................
4.1.6. Đường cong elliptic trên trường có đăc số 2.............................
4.2. NHÚNG MỘT SỐ VÀO ĐƯỜNG CONG ELLIPTIC........................165
4.2.1. Chuyển thông báo thành số nguyên thuộc Fp...........................
4.2.2. Nhúng bản rõ.............................................................................
4.3. ĐẾM ĐƠN GIẢN SỐ ĐIỂM TRÊN ĐƯỜNG CONG ELLIPTIC.....168
4.4. TÍNH BẬC CỦA MỘT ĐIỂM.............................................................168
4.5. MỘT SỐ HỆ MẬT, HỆ CHỮ KÝ SỐ TRÊN ĐƯỜNG CONG
ELLIPTIC....................................................................................................171
4.5.1. Bài tốn lơ ga rít rời rạc (DLP) trên đường cong elliptic
.............................................................................................................
4.5.2. Các hệ mật đường cong Elliptic:...............................................
4.5.2.1. Hệ mật Elgamal Elliptic:..........................................172
4.5.2.2. Lập mã Massey-Omura:...........................................173
4.5.2.3. Hệ mật trên đường cong elliptic Menezes- Vanstone :
.........................................................................................................173
4.5.3. Các hệ chữ ký trên đường cong Elliptic:...................................
4.5.3.1. Sơ đồ chữ ký số Elgamal Elliptic:............................174
4.5.3.2. Chuẩn chữ ký số Elliptic (ECDSA):........................175
4.5.4. Giao thức trao đổi khóa.............................................................
4.6. CHỌN ĐƯỜNG CONG TỐT..............................................................177
4.6.1. Những yêu cầu kỹ thuật............................................................
4.6.2. Những yêu cầu an tồn..............................................................
4.7. MỘT SỐ CHƯƠNG TRÌNH MAPLE VỀ ĐƯỜNG CONG ELLIPTIC
.....................................................................................................................179
v
4.7.1. Chương trình tính kP.................................................................
4.7.2. Liệt kê các điểm của đường cong..............................................
4.7.3. Hệ mật trên đường cong elliptic................................................
4.7.4. Hệ chữ ký trên đường cong elliptic...........................................
4.7.4.1. Sơ đồ chữ ký số Elgamal Elliptic:............................183
4.7.4.2. Sơ đồ chữ ký số ECDSA:.........................................184
4.8. CÂU HỎI ÔN TẬP..............................................................................186
Chương 5. GIAO THỨC MẬT MÃ.........................................................187
5.1. ĐỊNH NGHĨA......................................................................................187
5.2. CÁC YÊU CẦU TRONG GIAO THỨC XÁC THỰC........................189
5.2.1. Tính tươi của thơng báo và tính sống của thực thể :.................
5.2.1.1. Tính tươi của thơng báo...........................................189
5.2.1.2. Tính sống của thực thể.............................................190
5.2.2. Xác thực nguồn gốc dữ liệu......................................................
5.2.3. Xác thực thực thể......................................................................
5.2.4. Thiết lập khố có xác thực........................................................
5.3. MỘT SỐ GIAO THỨC: THUẬT TỐN VÀ ĐỘ AN TỒN.............193
5.3.1. Quy ước chung..........................................................................
5.3.2. Những kỹ thuật xác thực cơ bản................................................
5.3.2.1 Những cơ chế thách đố-giải đố.................................195
5.3.2.2. Các cơ chế tem thời gian..........................................196
5.3.2.3. Những cơ chế phi chuẩn...........................................198
5.3.2.4. Xác thực lẫn nhau.....................................................199
5.3.2.5. Xác thực liên quan đến bên thứ ba tin cậy...............200
5.3.2.6. Xác thực dựa trên mật khẩu.....................................201
5.3.2.7. Thêm thành phần phụ gia vào giao thức..................204
5.3.2.8. Trao đổi khố có xác thực dựa trên mật mã phi đối
xứng.................................................................................................206
5.3.3 Độ an tồn..................................................................................
5.3.3.1. Tấn cơng diễn lại thơng báo.....................................209
5.3.3.2 Tấn công kẻ đứng giữa..............................................211
vi
5.3.3.3 Tấn công phiên song song.........................................212
5.3.3.4 Tấn công phản xạ......................................................213
5.3.3.5 Tấn công xen kẽ........................................................214
5.3.3.6 Tấn công do khiếm khuyết kiểu................................215
5.3.3.7 Tấn cơng do bỏ sót tên..............................................215
5.3.3.8Tấn cơng do dùng sai các dịch vụ mật mã.................216
5.3.3.9. Tóm tắt và thực hành................................................219
5.3 MỘT SỐ CHƯƠNG TRÌNH MAPLE..................................................219
5.4.1. Cơ chế thách đố-giải đố được chuẩn hóa..................................
5.4.2. Cơ chế tem thời gian được chuẩn hóa.......................................
5.5. CÂU HỎI ƠN TẬP..............................................................................223
Chương 6. MỘT SỐ CHUẨN MẬT MÃ.................................................226
6.1 CHUẨN MÃ DỊNG.............................................................................226
6.1.1.Tóm tắt thuật tốn gốc SNOW 1.0.............................................
6.1.2. Những điểm yếu trong SNOW 1.0............................................
6.1.3. Thuật toán SNOW 2.0...............................................................
6.1.4. Việc thực hiện SNOW 2.0.........................................................
6.2. CHUẨN MÃ KHỐI: AES....................................................................236
6.2.1. Các byte như các đa thức..........................................................
6.2.1.1. Các biểu diễn của byte.............................................238
6.2.1.2. Phép cộng 2 byte......................................................238
6.2.1.3. Phép nhân 2 byte......................................................238
6.2.1.4. Phép dịch chuyển vịng của từ vào...........................239
6.2.2. Mã hố Rijndael........................................................................
6.2.2.1. Lời gọi ByteSub(state).............................................243
6.2.2.2. Lời gọi ShiftRow(state)............................................244
6.2.2.3. Lời gọi MixColumn(state).......................................244
6.2.2.4. Lời gọi AddRoundKey(state, RoundKey)................245
6.2.2.5. Lời gọi KeyExpansion(CipherKey,ExpandedKey)..246
6.2.2.6. Lời gọi Rcon[i] (Round keys and constants)...........247
6.2.3. Mode giải mã Rijndael..............................................................
vii
6.3. CHUẨN MẬT MÃ KHĨA CƠNG KHAI VÀ CHỮ KÝ SỐ..............249
6.3.1. Chuẩn mật mã khóa cơng khai: RSA-OAEP............................
6.3.1.1. Mơ tả........................................................................249
6.3.2. Chuẩn chữ ký số: RSA-PSS......................................................
6.3.2.1. Mô tả........................................................................251
6.3.2.2. Lược đồ ký RSA-PSS. (A ký thông báo cho B.)......252
6.3.2.3. Độ dài muối (salt).....................................................253
6.4. CHUẨN GIAO THỨC MẬT MÃ.......................................................254
6.4.1. Các vấn đề chung......................................................................
6.4.2. Lược đồ thỏa thuận khóa số 1...................................................
6.4.3. Lược đồ thỏa thuận khóa số 2...................................................
6.4.4. Lược đồ thỏa thuận khóa số 3...................................................
6.4.5 Lược đồ thỏa thuận khóa số 4....................................................
6.4.6. Lược đồ thỏa thuận khóa số 5...................................................
6.4.7. Lược đồ thỏa thuận khóa số 6...................................................
6.4.8. Lược đồ thỏa thuận khóa số 7...................................................
6.4.9. So sánh tính chất các lược đồ thỏa thuận khóa.........................
6.5 CÂU HỎI ÔN TẬP...............................................................................280
TÀI LIỆU THAM KHẢO........................................................................281
PHỤ LỤC...................................................................................................285
Phụ lục 1. Chương trình mã hóa/giải mã của mã khối AES trên ngơn ngữ C
.....................................................................................................................285
Phụ lục 2. Chương trình mã hóa/giải mã của mã khối Camellia trên ngôn
ngữ C...........................................................................................................313
viii
ix
DANH MỤC BẢNG
Bảng 3.1. Tính xác suất tuyến tính...........................................................102
Bảng 3.2. Tỷ lệ thành cơng thám tuyến tính là một hàm của c.............105
Bảng 3.3 Tính xác suất lượng sai.............................................................107
Bảng 3.4. Hốn vị đầu..............................................................................113
Bảng 3.5. Hoán vị IP-1..............................................................................114
Bảng 3.6. Mở rộng E..................................................................................115
Bảng 3.10. Các hằng số lược đồ khóa......................................................135
Bảng 3.11. Các khóa con của khóa bí mật 128 bit..................................136
Bảng 3.12. Các khóa con của khóa bí mật 192/256 bit...........................137
Bảng 3.13. Hộp thế s1................................................................................143
Bảng 3.14. Hộp thế s2................................................................................143
Bảng 3.15. Hộp thế s3................................................................................144
Bảng 3.16. Hộp thế s4................................................................................144
x
DANH MỤC HÌNH VẼ
Hình 1.1 Lược đồ các thành phần mật mã cơ bản.....................................5
Hình 1.2 Tập tin thiết bị sinh số ngẫu nhiên trên Linux.........................10
Hình 1.3 Sử dụng hàm băm bằng HashTab để kiểm tra tính tồn vẹn
của tập tin trong Windows..........................................................................12
Hình 1.4 Mật khẩu đăng nhập được mã hóa trên Linux Mint 15.........19
Hình 1.5 Máy chủ SSH gửi khóa cơng khai cho máy client....................22
Hình 1.6 Trang web hỗ trợ HTTPS..........................................................24
Hình 1.7 Quá trình thực hiện giao dịch trong SET.................................28
Hình 1.8 Mơ hình chữ ký kép.....................................................................30
.......................................................................................................................36
Hình 1.9 Chứng chỉ số hỗ trợ bởi GnuPG.................................................36
Hình 1.10 Giao diện Maple 15....................................................................44
Hình 1.11 Giao diện Mathematica 8.0.......................................................46
Hình 2.1. Thanh ghi dịch phản hồi............................................................51
.......................................................................................................................52
Hình 2.2. Thanh ghi dịch phản hồi tuyến tính bậc L tổng quát.............52
Hình 2.4 Bộ lọc phi tuyến...........................................................................69
Hình 2.5 Sơ đồ bộ tạo dãy nhị phân P.R. Geffe........................................71
Hình 3.1. Sơ đồ một vịng mã hóa..............................................................97
Hình 3.2. Cấu trúc SPN với N=16, M=n=4, R=3......................................98
Hình 3.3: Cấu trúc mạng Feistel cơ bản....................................................99
Hình 3.4. Xấp xỉ tuyến tính 1 vịng của DES với độ chệch -..................103
Hình 3.5. Xấp xỉ tuyến tính 3 vịng của DES với xác suất.....................104
Hình 3.6. Đặc trưng lượng sai 3 vịng với xác suất ()2 = 2-4.39.............110
Hình 3.7. Mơ tả DES..................................................................................113
Hình 3.8. Một vịng DES...........................................................................114
Hình 3.9. Đảo vị trí....................................................................................114
Hình 3.10. Thủ tục mã hóa của Camellia với khóa 128 bit....................125
xi
Hình 3.11. Thủ tục mã hóa của Camellia với khóa 192 và 256 bit........127
Hình 3.14. Lược đồ khóa...........................................................................135
Hình 3.15. Hàm F......................................................................................138
Hình 3.16. HàmFL.....................................................................................139
Hình 3.17. Hàm FL-1................................................................................140
Hình 6.1 FSM.............................................................................................233
Hình 6.2 Hoạt động mật mã trong khi khởi tạo khóa............................234
Hình 6.3 Số các vịng cần cho cài đặt khóa và các vịng trên một từ cho
.....................................................................................................................236
việc sinh dịng khóa trên Pentium
Hình 6.4 Hàm mã hóa OAEP...................................................................250
Hình 6.5 Phép giải mã OAEP..................................................................251
Hình 6.6 Hàm mã hóa PSS......................................................................252
Hình 6.7 Lược đồ trao đổi khóa số 1........................................................258
.....................................................................................................................260
Hình 6.8 Lược đồ trao đổi khóa 2............................................................260
Hình 6.9 Lược đồ trao đổi khóa 3............................................................264
Hình 6.10 Lược đồ trao đổi khóa 4..........................................................267
Hình 6.12 Lược đồ trao đổi khóa 6..........................................................273
Hình 6.13 Lược đồ trao đổi khóa 7..........................................................276
xii
MỞ ĐẦU
Như chúng ta đã biết, mật mã có vai trị rất quan trọng trong việc đảm bảo
tính bảo mật cho thông tin cho các cá nhân, tổ chức khác nhau. Xã hội càng hiện
đại, phát triển thì vai trị của mật mã càng được khẳng định. Mật mã không chỉ
có ứng dụng quan trọng cho an ninh, quốc phịng mà cịn có ứng dụng lớn trong
đời sống, thơng tin, kinh tế, xã hội. Cùng với sự phát triển của các kỹ thuật mật
mã là sự phát triển không ngừng của các kỹ thuật thám mã. Điều đó đặt ra một
thách thức lớn đối với những người làm mật mã.
Nói đến an tồn thơng tin hiện nay, chúng ta khơng thể khơng nhắc tới mật
mã, vì đó là cái cốt lõi, nền tảng cho một hệ thống an toàn bền vững. Tuy nhiên,
với các bạn sinh viên, những môn học liên quan đến mật mã ln là những mơn
khó học và khó hiểu, một phần vì các bạn chưa có niềm đam mê, và sự thu hút
với những lĩnh vực đó.
Giáo trình “Mật mã ứng dụng trong an tồn thơng tin” sẽ giúp các bạn có
động lực và sự quan tâm tới lĩnh vực mật mã. Trước hết, các bạn sẽ biết được các
ứng dụng của mật mã trong an tồn thơng tin và vai trị của các ngơn ngữ lập
trình qua chương 1 của giáo trình. Từ đó, các bạn sẽ thấy được tầm quan trọng
của mật mã đối với an tồn thơng tin như thế nào và tại sao chúng ta nên học các
môn về mật mã. Các chương cịn lại trong giáo trình lần lượt sẽ giới thiệu cho
bạn đọc về: mật mã dòng, mật mã khối, mật mã trên đường cong elliptic, giao
thức mật mã và một số chuẩn mật mã. Trong mỗi chương, chúng tôi đều cố gắng
đưa vào những ví dụ, đặc biệt là các chương trình được viết trên ngơn ngữ
Maple, nhằm mơ phỏng một cách dễ hiểu những phần lý thuyết trong chương.
Từ đó, bạn đọc sẽ hiểu rõ và sâu sắc hơn những vấn đề lý thuyết, đồng thời bạn
có thể dễ dàng tự viết được chương trình của mình trên những ngơn ngữ lập trình
khác.
Tóm lại, mật mã tuy khó nhưng với cuốn giáo trình này, chúng tơi hi vọng
các bạn sẽ thấy mật mã gần gũi hơn và không khó học như các bạn đã nghĩ.
Chúc các bạn thành công!
1
Chương 1. CÁC ỨNG DỤNG CỦA MẬT MÃ TRONG AN
TOÀN THƠNG TIN VÀ VAI TRỊ CỦA CÁC NGƠN NGỮ LẬP
TRÌNH
1.1 SƠ LƯỢC VỀ MẬT MÃ HỌC
1.1.1 Lịch sử của mật mã
Mật mã học có một lịch sử dài và rất thú vị. Tài liệu phi kỹ thuật đầy đủ nhất
về chủ đề này là cuốn “The Codebreakers” tạm dịch là “Những người bẻ mã”
của tác giả David Kahn. Cuốn sách này đã theo dấu mật mã học từ khởi đầu của
nó và khi mà mật mã được những người Ai Cập sử dụng còn hạn chế cách đây
hơn 4000 năm, cho đến thế kỷ XX khi nó đóng một vai trò quan trọng trong kết
quả của hai cuộc chiến tranh thế giới. Hoàn thành vào năm 1963, cuốn sách của
Kahn bao gồm những khía cạnh lịch sử có ý nghĩa nhất cho sự phát triển của mật
mã (tính đến thời điểm xuất bản đó). Đối tượng chủ yếu của mật mã là những
người có liên quan đến quân đội, ngoại giao và chính phủ nói chung. Mật mã đã
được sử dụng như một công cụ để bảo vệ các chiến lược và bí mật quốc gia.
Sự gia tăng của máy tính và hệ thống thơng tin liên lạc trong những năm
1960 mang theo nó là một nhu cầu rất lớn đối với việc bảo vệ thông tin dạng số
và các dịch vụ an tồn thơng tin. Bắt đầu với cơng việc của Feistel tại IBM vào
đầu những năm 1970, mà đỉnh cao nhất là vào năm 1977, đó là việc chuẩn mã
hóa dữ liệu DES (Data Encryption Standard) được thơng qua như một chuẩn xử
lý thông tin dành cho Liên Bang Mỹ (FIPS), và được dùng để mã hóa các thơng
tin khơng được phân loại. DES là chuẩn mã hóa nổi tiếng nhất trong lịch sử. Nó
cịn là chuẩn để đảm bảo an tồn thơng tin trong thương mại điện tử cho nhiều tổ
chức tài chính trên thế giới.
Sự phát triển nổi bật nhất trong lịch sử mật mã là vào năm 1976 khi Diffie và
Hellman công bố bài viết “New Directions in Cryptography” tạm dịch
là“Những hướng mới trong mật mã”. Bài viết này giới thiệu khái niệm mang
tính cách mạng của mật mã khóa cơng khai và c4ũng cung cấp một phương pháp
2
mới và khéo léo để trao đổi khóa, với độ an tồn dựa trên tính khó giải của bài
tốn lơgarit rời rạc. Mặc dù các tác giả chưa đưa ra được cách thực hiện cụ thể
cho một hệ mật khóa cơng khai vào thời điểm đó, nhưng ý tưởng đã rõ ràng, từ
đó tạo nên sự quan tâm rộng rãi trong cộng đồng mật mã. Vào năm 1978 Rivest,
Shamir và Adleman phát minh ra hệ mật khóa cơng khai và lược đồ chữ ký thực
tiễn đầu tiên, mà hiện nay gọi là RSA. Hệ mật RSA dựa trên một bài tốn khó
của tốn học, đó là bài tốn phân tích số nguyên lớn thành tích các thừa số
nguyên tố. Ứng dụng bài tốn khó trong tốn học của hệ mật này đã mang lại
nhiều nỗ lực tìm kiếm của các nhà khoa học để tìm ra các phương pháp hiệu quả
phân tích số nguyên. Những năm 1980 chứng kiến những tiến bộ lớn trong lĩnh
vực mật mã, tuy nhiên không có gì đủ chứng tỏ rằng hệ mật RSA là khơng an
tồn. Một lớp hệ mật mạnh và có ý nghĩa thực tiễn khác được tìm ra bởi ElGamal
vào năm 1985, hệ mật này dựa trên tính khó giải của bài tốn lơgarit rời rạc.
Một trong những đóng góp quan trọng nhất mà hệ mật khóa cơng khai cung
cấp là chữ ký số. Năm 1991, chuẩn quốc tế đầu tiên cho chữ ký số (ISO/IEC
9796) đã được thông qua. Năm 1994, Chính phủ Hoa Kỳ chấp nhận chuẩn chữ
ký số DSS (Digital Signature Standard), một lược đồ chữ ký số dựa trên hệ mật
Elgamal.
Việc tìm kiếm các hệ mật mới, cải thiện cơ chế mã hóa hiện có, và chứng
minh độ an toàn tiếp tục phát triển với tốc độ nhanh chóng. Các tiêu chuẩn và cơ
sở hạ tầng khác nhau liên quan đến mật mã đang được đưa ra. Các sản phẩm bảo
mật cũng được phát triển để đáp ứng nhu cầu an ninh của một xã hội thông tin
ngày càng chuyên sâu.
1.1.2 Các mục tiêu của mật mã
Mục tiêu của mật mã là nhằm đảm bảo các tính chất sau của an tồn thơng
tin: tính bí mật, tính tồn vẹn, tính xác thực và tính chống chối bỏ.
Tính bí mật (Confidentiality): Dịch vụ này đảm bảo rằng chỉ những đối
tượng đã được cấp quyềnh mới biết được nội dung thơng tin. Bí mật là một thuật
ngữ đồng nghĩa với bảo mật và riêng tư. Có nhiều cách khác nhau để cung cấp
3
bảo mật, từ các phương pháp vật lý cho tới các thuật tốn làm cho dữ liệu khơng
thể hiểu được.
1. Tính tồn vẹn dữ liệu (Data Intergrity): là dịch vụ giúp phát hiện những sự
thay đổi trái phép lên dữ liệu. Những sự thay đổi dữ liệu thường là các hành
động như chèn, xóa, thay thế dữ liệu.
2. Tính xác thực (Authentication): Xác thực là dịch vụ liên quan đến sự nhận
dạng, định danh. Chức năng này áp dụng cho cả các thực thể và bản thân thông
tin. Hai thực thể khi bắt đầu giao tiếp cần xác định danh tính lẫn nhau. Thơng tin
chuyển qua kênh truyền cần được xác thực về nguồn gốc, ngày xuất hiện, nội
dung thông tin, thời gian gửi, v.v... Vì những lý do này, nó được chia làm 2 loại:
xác thực thực thể và xác thực nguồn gốc dữ liệu.
3. Tính chống chối bỏ (Non-repudiation): là dịch vụ ngăn không cho một
thực thể chối bỏ về những cam kết hay hành động đã thực hiện trước đó của
mình. Ứng dụng thường gặp nhất của dịch vụ này là chữ ký số. Một thực thể sau
khi ký lên thông báo, văn bản điện tử, ... thì anh ta khơng thể chối bỏ về hành
động đó của mình, bởi vì chỉ có anh ta mới có thể tạo ra chữ ký hợp lệ cho các
thông báo ấy, với giả thiết rằng các thuật toán mật mã được sử dụng ở đây là đủ
mạnh để ngăn không cho các thực thể khác có thể tạo ra chữ ký số giả một cách
hợp lệ.
1.1.3 Phân loại các loại mật mã
Dưới đây là mơ hình phân loại các thành phần mật mã cơ bản, được sử dụng
trong hầu hết các ứng dụng mật mã.
4
Hình 1.1 Lược đồ các thành phần mật mã cơ bản
Khi sử dụng các thành phần mật mã trên, ta cần quan tâm tới các tính chất
sau:
• Độ an tồn: đây thường là vấn đề khó đánh giá. Thường được xác định
bằng số lượng công việc cần thiết để phá vỡ đối tượng, được tính
bằng số phép tốn u cầu (theo phương pháp tốt nhất được biết hiện
tại) để có thể phá vỡ đối tượng đó, hay cịn gọi là độ an tồn tính tốn.
• Chức năng: khi sử dụng thực tế, các thành phần bảo mật cơ bản cần
kết hợp lại với nhau để đáp ứng các mục tiêu an tồn thơng tin khác
5
nhau. Tùy đặc tính của từng thành phần mà nó sẽ có hiệu quả cao nhất
với một mục tiêu an tồn cụ thể.
• Phương pháp vận hành: Các thành phần bảo mật cơ bản khi được áp
dụng bằng các cách khác nhau, với những đầu vào khác nhau, thì sẽ có
những đặc điểm khác nhau. Do đó, một thành phần bảo mật cơ bản có
thể cung cấp những chức năng rất khác nhau, tùy thuộc vào chế độ
hoạt động hoặc cách sử dụng.
• Hiệu suất: tính chất này dùng để chỉ hiệu quả của một thành phần bảo
mật trong một chế độ vận hành riêng. (Ví dụ, một thuật tốn mã hóa
có thể được đánh giá bằng số bit mà nó có thể mã hóa trong một giây).
• Khả năng cài đặt: liên quan đến những khó khăn khi cài đặt, triển khai
trong thực tế, có thể trong phần cứng hoặc phần mềm.
Tầm quan trọng của các tiêu chí khác nhau phụ thuộc rất nhiều vào ứng dụng
và nguồn tài ngun hiện có. Ví dụ, trong một mơi trường mà sức mạnh tính tốn
bị hạn chế, ta có thể phải đánh đổi một mức độ bảo mật rất cao cho hiệu năng
của hệ thống.
1.2 CÁC ỨNG DỤNG CỦA MẬT MÃ
1.2.1 Các ứng dụng trong thực tiễn
1.2.1.1 Ứng dụng trong đời sống thông tin, kinh tế, xã hội
Sự phát triển lớn mạnh của công nghệ thông tin trong những năm vừa qua,
đặc biệt là sự bùng nổ của mạng Internet đã dẫn đến việc sử dụng rộng rãi hệ
thống máy tính trong mọi tổ chức, cá nhân và công cộng. Các hoạt động thông
tin, kinh tế, xã hội cũng đang được áp dụng, triển khai rộng rãi qua mạng
Internet. Từ đó cũng đã làm xuất hiện một nền kinh tế mới, nền kinh tế thương
mại điện tử, nơi mà các hoạt động mua bán và dịch vụ đều dựa trên hệ thống
mạng Internet.
Hệ thống Worl Wide Web trước kia sử dụng giao thức HTTP để đảm bảo cho
việc truyền nhận thông tin tới các đối tượng, nhưng lại không thể đảm bảo bí mật
cho các thơng tin đó khi truyền đi, thì ngày nay đã được thay thế bằng giao thức
6
HTTPS, ngồi việc đảm bảo truyền nhận thơng thường thì nội dung thơng tin
cũng được đảm bảo giữ bí mật.
Khi các hàm băm chưa được sử dụng, các ngân hàng lưu trữ thơng tin thẻ tín
dụng ở dạng clear-text (gồm: tên chủ thẻ, số tài khoản, mã PIN, ngày hết hạn,
v.v...). Điều này tạo ra nguy cơ bị lộ toàn bộ thơng tin thẻ tín dụng, khi kẻ tấn
cơng có thể truy cập và đọc được nội dung những trường hoặc file lưu trữ của cơ
sở dữ liệu đó (thơng qua một số kiểu tấn công như SQL Injection chẳng hạn).
Ngày nay mối lo ngại này đã được loại bỏ, các thơng tin bí mật sẽ khơng được
lưu trữ một cách trực tiếp, mà được thay thế bằng giá trị băm của thơng tin đó,
nên cho dù kẻ tấn cơng có thể đọc được giá trị băm, thì cũng rất khó để tìm ra
thơng tin bí mật trước khi bị băm là thơng tin gì.
Các hoạt động xã hội trước kia, như: nộp thuế, kê khai thuế, vốn yêu cầu
những văn bản có giá trị pháp lý cao, bắt buộc phải có chữ ký (hoặc dấu vân tay)
của người nộp, kê khai thuế. Ngày nay, hình thức đó đã dần được chuyển sang
bằng một phương pháp mới, đó là sử dụng chữ ký số để thay thế. Chữ ký số đã
được chứng minh là an tồn về mặt tính tốn, tức thời gian để có thể tạo ra chữ
ký số giả một cách hợp lệ với kẻ tấn cơng có năng lực tính tốn hạn chế sẽ là rất
lớn. Ví dụ, để phá RSA với độ dài khóa 1024 bít, độ phức tạp tính tốn là 3.10 11
MIPS năm, cịn với RSA 2048 bít, độ phức tạp tính tốn là 3.10 20 MIPS năm, với
ECC độ dài khóa 234 bít, độ phức tạp tính tốn là 1.6.10 28 MIPS năm (1 MIPS =
1 triệu tập lệnh trên một giây).
1.2.1.2 Ứng dụng trong an ninh, quốc phòng
Ngay từ khi mới ra đời, đối tượng chủ yếu của mật mã là những người có
liên quan đến qn đội, ngoại giao và chính phủ nói chung. Từ đó cho đến nay,
mật mã đã được sử dụng như một loại cơng cụ, vũ khí để bảo vệ các chiến lược
và bí mật của quốc gia.
Trong suốt thời kỳ trước và trong chiến tranh Thế giới lần thứ II, nhằm bảo
vệ bí mật quân sự, không để lộ ý đồ tác chiến, Quân đội Đức đã mã hóa hầu hết
các chỉ thị và mệnh lệnh của họ. Chiếc máy mã Enigma có cơ chế mã hóa phức
tạp hơn bất cứ loại mật mã nào từng biết đến trong lịch sử trước đó, và trong suốt
7
q trình sử dụng nó cũng liên tục được cải tiến, ngày càng phức tạp hơn, khiến
cho người Đức luôn tin rằng “Enigma là bất khả xâm phạm”. Thế nhưng, từ đầu
những năm 1933, các nhà toán học của Cục mật mã Ba Lan đã có thể giải được
tồn bộ điện mật của Đức.Và với sự giúp đỡ của Ba Lan, người Anh và Pháp đã
đọc được các bức điện mật của Đức. Nhiều nhà sử học đã đánh giá rằng, nhờ
cơng trình giải mã bằng máy mã Enigma mà Thế chiến thứ II đã “ngắn đi đến hai
năm”.
Sau chiến tranh thế giới thứ II, công nghệ mật mã tiếp tục được giới quân sự
các nước đầu tư nghiên cứu và phát triển. Một số quốc gia có những cơ quan
chun nghiên cứu về những cơng nghệ này, ví dụ như Cơ quan An ninh Quốc
gia Hoa Kỳ/Cục An ninh Trung ương (NSA/CSS - National Security
Agency/Central Security Service). NSA có liên quan rất nhiều đến tranh cãi xung
quanh quá trình hình thành Chuẩn mã hóa dữ liệu (DES), một chuẩn mã khối
dùng cho chính phủ. Trong suốt q trình thiết kế DES tại IBM vào thập kỷ
1970, NSA đã đề xuất những thay đổi trong thuật tốn. Vì thế, nhiều người nghi
ngờ NSA đã cố tình làm yếu thuật tốn để có thể phá vỡ khi cần thiết. Nghi ngờ
tập trung chủ yếu vào một thành phần quan trọng của thuật tốn, S-box. Đây có
thể là một cổng sau để NSA có thể dễ dàng đọc được các thơng tin đã được mã
hóa. Ngồi ra độ dài khóa cũng bị rút ngắn, tạo điều kiện cho NSA có thể phá vỡ
hệ thống với hệ thống siêu máy tính của mình. Khi kỹ thuật phân tích mã lượng
sai được tìm ra thì những nghi ngờ này có phần được giảm bớt. S-box đã được
sửa đổi có khả năng chống lại dạng tấn cơng này. Vì thế nhiều khả năng NSA đã
biết đến phân tích mã lượng sai vào thời điểm thiết kế DES, trước khi kỹ thuật
này được độc lập phát hiện vài thập kỷ sau đó. Tuy nhiên việc can thiệp để giảm
độ dài khóa DES từ 128 (theo đề nghị của IBM) xuống cịn 56 bít thì chỉ có thể
giải thích rằng đây là cố gắng làm yếu thuật tốn để NSA với cơng suất tính tốn
vượt trội của mình có thể tấn cơng duyệt tồn bộ để giải mã trong trường hợp cần
thiết.
NSA cũng là yếu tố quan trọng trong những tranh cãi hồi cuối thập kỷ 1990
trong vấn đề xuất khẩu công nghệ mật mã. Từ lâu, phần cứng và phần mềm mật
mã được xếp cùng hạng với máy bay chiến đấu, xe tăng, pháo và bom nguyên tử.
8
Tại nhiều thời điểm, NSA/CSS đã cố gắng hạn chế việc xuất bản các tài liệu
nghiên cứu về mật mã học.
1.2.2 Ứng dụng của một số thành phần mật mã cơ bản
1.2.2.1 Dãy ngẫu nhiên, dãy giả ngẫu nhiên
Các dãy ngẫu nhiên và dãy giả ngẫu nhiên có một vai trị quan trọng trong
mật mã. Chúng được chọn làm khóa trong các hệ mật, bao gồm cả hệ mật khóa
đối xứng và hệ mật khóa bất đối xứng. Ngồi vai trị dùng làm khóa, nó cịn có
tác dụng “ngẫu nhiên hóa” những đại lượng được đi kèm với nó, khiến cho việc
tiên đốn những đại lượng đi kèm đó trở nên khó khăn hơn (ví dụ như vectơ khởi
tạo trong các hệ mật DES, AES, số ngẫu nhiên k trong hệ mật Elgamal, ECC,
thuật toán ký số DSA, ...).
Các dãy ngẫu nhiên được tạo từ các bộ sinh số ngẫu nhiên TRNGs (True
Random Number Generators), còn các dãy giả ngẫu nhiên được tạo từ các bộ
sinh số giả ngẫu nhiên PRNGs (Pseudo-Random Number Generators). Các bộ
sinh số ngẫu nhiên được tạo bằng phương pháp vật lý, còn các bộ sinh số giả
ngẫu nhiên được tạo bằng các phương pháp tính toán (sử dụng thuật toán).
9
Hình 1.2 Tập tin thiết bị sinh số ngẫu nhiên trên Linux
Về các phương pháp vật lý để tạo số thật sự ngẫu nhiên: phương pháp dễ
nhất để tạo ra các số ngẫu nhiên là sử dụng các hiện tượng như tung đồng xu,
xúc xắc, quay (thổi) các quả bóng trong lồng chứa, ... Nó vẫn được sử dụng đến
ngày nay, chủ yếu là trong các trò chơi may mắn (xổ số trúng thưởng), nhưng nó
quá chậm để sử dụng cho các ứng dụng thống kê và mật mã. Người ta chuyển
sang sử dụng những nguồn vật lý khác sinh số ngẫu nhiên hiệu quả hơn. Một bộ
sinh số vật lý ngẫu nhiên có thể dựa trên những sự ngẫu nhiên trong nguyên tử,
hoặc các định luật vật lý cơ bản khơng thể tiên đốn được theo các định luật của
cơ học lượng tử. Nguồn entropy có thể là các phân rã phóng xạ, nhiễu nhiệt,
tiếng ồn, hiệu ứng “thác đổ” trong điốt Zener, nhiễu vô tuyến, thời gian di
chuyển thực của đầu từ đĩa cứng khi đọc/ghi trên bề mặt lá đĩa, ... Các bộ sinh số
ngẫu nhiên có độ an tồn rất cao, nhưng có nhược điểm là tốc độ sinh chậm. Do
vậy, trong thực tế, nó được sử dụng làm khóa cho những ứng dụng địi hỏi độ an
10
toàn rất cao, hoặc làm “mầm sinh” cho các bộ sinh số giả ngẫu nhiên an toàn về
mật mã.
Bộ sinh số giả ngẫu nhiên có thể chia làm 2 loại: một loại khơng có đầy đủ
các tính chất thống kê của dãy ngẫu nhiên thực sự, loại cịn lại có đầy đủ các tính
chất thống kê của dãy ngẫu nhiên thực sự. Loại thứ nhất có ưu điểm là dễ tạo, tốc
độ tạo nhanh, phù hợp với các ứng dụng khơng địi hỏi tính bí mật cao như sự
mơ phỏng trong các trò chơi. Loại thứ hai được gọi là bộ sinh số giả ngẫu nhiên
an toàn về mật mã CSPRNG (cryptographically secure pseudo-random number
generator). Để có thể sinh ra một dãy giả ngẫu nhiên an toàn, bộ sinh CSPRNG
yêu cầu phải có một “mầm sinh” để sinh ra dãy đó, mầm sinh này phải đáp ứng
đầy đủ tính chất thống kê của dãy ngẫu nhiên thực sự, và đủ lớn để đối phương
khơng thể tiên đốn được. Các mầm sinh này có thể lấy từ những bộ sinh số ngẫu
nhiên thực sự (ví dụ tập tin thiết bị /dev/random trên hệ điều hành Linux), hoặc
những dãy giả ngẫu nhiên an tồn về mật mã khác (ví dụ kết quả chuỗi tóm lược
một file sau khi cho qua hàm băm an toàn về mật mã, như SHA512 chẳng hạn,
với giả thiết đối phương khơng thể tiên đốn chính xác nội dung của file đó).
Một số bộ sinh số giả ngẫu nhiên an toàn về mật mã thường được biết đến
như: bộ sinh BBS (Blum-Blum-Shub), bộ sinh RSA, bộ sinh dựa trên các hàm
băm an toàn về mật mã, ...
1.2.2.2 Hàm băm
Hàm băm mật mã đóng một vai trị quan trọng trong mật mã hiện đại. Mặc
dù có liên quan tới hàm băm thông thường được dùng trong các ứng dụng máy
tính phi mật mã - trong cả hai trường hợp chúng đều ánh xạ từ các miền lớn hơn
sang miền nhỏ hơn - nhưng chúng khác nhau ở một số khía cạnh quan trọng. Ở
đây ta chỉ quan tâm tới các hàm băm mật mã (từ đây, ta chỉ đơn giản gọi là hàm
băm), sử dụng nó cho việc đảm bảo tồn vẹn dữ liệu và xác thực thơng báo. Hàm
băm có vai trị rất quan trọng để tạo ra chữ ký số, đảm bảo toàn vẹn dữ liệu và
xác thực người gửi.
11
Hình 1.3 Sử dụng hàm băm bằng HashTab để kiểm tra tính tồn vẹn của tập tin
trong Windows
Định nghĩa tổng quát về hàm băm mật mã:
Một hàm băm mật mã là một hàm h mà có các tính chất sau:
1. Nén – hàm h ánh xạ một đầu vào x có độ dài bit tùy ý thành một đầu ra
h(x) có độ dài bit cố định n.
2. Dễ tính tốn – cho trước h và một đầu vào x, h(x) là dễ tính tốn.
3. Kháng tiền ảnh – với cơ bản tất cả các đầu ra xác định trước, ta khơng thể
tính tốn để tìm đầu vào bất kỳ mà băm thành đầu ra đó, cụ thể, tìm một tiền ảnh
12
bất kỳ x′ sao cho h(x′ ) = y khi cho trước y bất kỳ là kết quả băm tương ứng của
đầu vào không biết.
4. Kháng tiền ảnh thứ hai – ta khơng thể tính tốn để tìm một đầu vào thứ hai
bất kỳ mà có cùng đầu ra như với đầu vào xác định bất kỳ, cụ thể, cho trước x,
tìm nghịch ảnh thứ hai x′≠ x sao cho h(x) = h(x′ ).
5. Kháng va chạm – ta không thể tính tốn được hai đầu vào phân biệt x, x′
mà băm thành cùng đầu ra, cụ thể, sao cho h(x) = h(x′ ). (Chú ý rằng ở đây được
tự do chọn cả hai đầu vào.)
Với cơng nghệ tính tốn hiện nay, có rất nhiều các hàm băm đã khơng cịn an
tồn như MD2, MD4, MD5, RIPEMD-128, SHA-0, SHA-1, GOST, ... Trong số
các hàm băm được dùng phổ biến trong những năm vừa qua, thì các hàm băm
thuộc lớp SHA-2 (gồm có SHA-256, SHA-224, SHA-384, SHA-512), RIPEM160, fhWhirlpool ... vẫn được coi là an tồn.
1.2.2.3 Mã dịng
Mã dịng được ứng dụng trong một số các hệ mật như: OTP, RC4.
Hệ mật OTP (One Time Pad)
Đây là hệ mật khóa ngẫu nhiên dùng 1 lần, với độ dài khóa bằng độ dài bản
mã, phép mã hóa chỉ đơn giản là thực hiện phép XOR khóa với bản rõ. Để thực
hiện phép giải mã, ta dùng bản mã XOR với khóa.
Hệ mật này có ưu điểm là cực kỳ nhanh, được chứng minh là có “độ an tồn
vơ điều kiện” (tức là cho dù đối phương có năng lực tính tốn và thời gian tính
tốn khơng hạn chế cũng khơng tìm được phương pháp nào hiệu quả hơn là việc
duyệt thử toàn bộ khơng gian khóa có thể có). Tuy nhiên, hệ mật này rất khó áp
dụng trong thực tế. Hạn chế thứ nhất, ta thấy do yêu cầu mỗi lần mã hóa lại phải
sử dụng một khóa ngẫu nhiên khác, nên số lượng khóa mà ta cần quản lý sẽ bằng
số lượng bản rõ mà ta cần mã hóa. Hạn chế thứ 2 là do yêu cầu chiều dài khóa
phải bằng chiều dài bản rõ, vì thế tổng dung lượng các khóa cần quản lý sẽ bằng
tổng dung lượng bản rõ mà ta mã hóa. Hạn chế thứ 3 nữa là, việc sinh các chuỗi
thật sự ngẫu nhiên chỉ có thể thực hiện bằng các phương pháp vật lý, mà tốc độ
13