1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(TIỂU LUẬN) mật mã ứng dụng trong an toàn thông tin

347 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề (TIỂU LUẬN) Mật Mã Ứng Dụng Trong An Toàn Thông Tin
Trường học Trường Đại học Công nghệ Thông tin và Truyền thông Việt Nam
Chuyên ngành An Toàn Thông Tin
Thể loại Báo cáo thực tập
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 347
Dung lượng 10,55 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 ở

Trang 1

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 TOÀ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ã 2

1.1.2 Các mục tiêu của mật mã 3

1.1.3 Phân loại các loại mật mã 4

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 6

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 9

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 19

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

Trang 2

1.3 MỘT SỐ FRAMEWORK HỖ TRỢ LẬP TRÌNH ỨNG DỤNG MẬT

MÃ 36

1.3.1 Thư viện lập trình số lớn GMP 37

1.3.2 Crypto++ 38

1.3.3 Microsoft CryptoAPI 41

1.3.4 JCA, JCE 42

1.4 MỘT SỐ PHẦN MỀM HỖ TRỢ NGHIÊN CỨU MẬT MÃ 42

1.4.1 Maple 42

1.4.2 Mathematica 45

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 50

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: 53

2.2.1.4 Thuật toán Berlekamp-Massey 55

2.2.1.5 Phân bố độ phức tạp tuyến tính của dãy ngẫu nhiên 59 2.2.2 Chu kỳ 61

2.2.3 Tự tương quan 61

2.2.4 Lực lượng một loại dãy 62

2.2.5 Các tính chất thống kê 63

2.2.5.1 Kiểm tra tần số đơn (kiểm tra bit đơn) 63

2.2.5.2 Kiểm tra seri (kiểm tra phân bố cặp bit) 64

2.2.5.3 Kiểm tra Poker (kiểm tra phân bố đoạn bít) 64

2.2.5.4 Kiểm tra loạt 64

2.2.5.4 Kiểm tra tự tương quan 65

2.3 CÁC NGUYÊN LÝ THIẾT KẾ MẬT MÃ DÒNG 67

2.3.1 Thiết kế mật mã dòng dựa trên các LFSR 68

2.3.1.1 Các bộ sinh tổ hợp phi tuyến 68

Trang 3

2.3.1.2 Các bộ lọc phi tuyến 69

2.3.1.3 Các bộ sinh được điều khiển bằng đồng hồ 70

2.3 2 Thiết kế mật mã dòng dựa trên mật mã khối 70

2.3.2.1 Kiểu phản hồi mật mã 70

2.3.2.2 Kiểu phản hồi đầu ra 71

2.3.2.3 Kiểu đếm 71

2.3.3 Các mật mã dòng dựa trên mật mã khóa công khai 71

2.3.4 Các kiểu thiết kế khác 71

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 72

2.4.1 Dòng khóa là dãy bít 72

2.4.1.1 Dãy sinh khóa Geffe P.R 72

2.4.1.2 DÃY D'BRUIJN (dãy phi tuyến chu kỳ cực đại) 73

2.4.1.3 Dãy được điều khiển bằng đồng hồ 75

2.4.1.4 Mã dòng dựa trên mật mã khóa công khai 77

2.4.1.4 Mã dòng Seal 79

2.4.1 Dòng khóa được sinh từ dãy byte 83

2.5 CHƯƠNG TRÌNH MAPLE THỰC HIỆN MỘT SỐ MẬT MÃ DÒNG: THUẬT TOÁN VÀ ĐỘ AN TOÀN 88

2.5.1 Dãy sinh khóa Geffe P.R 88

2.5.2 DÃY D'BRUIJN (dãy phi tuyến chu kỳ cực đại) 90

2.5.3 Dãy Shrinking 91

2.6 CÂU HỎI ÔN TẬP VÀ BÀI TẬP 93

CHƯƠNG 3 MẬT MÃ KHỐI 95

3.1 ĐỊNH NGHĨA MÃ KHỐI 95

3.2 CÁC LOẠI CẤU TRÚC PHỔ BIẾN CỦA MÃ KHỐI 96

3.2.1 Các thuật toán lược đồ khóa 97

3.2.2 Các mạng thay thế- hoán vị (SPN) 97

3.2.3 Mạng Feistel 99

3.2.4 Các cấu trúc mã khối khác 101

Trang 4

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 102

3.3.1 Xác suất tuyến tính 102

3.3.2 Sơ lược về tấn công tuyến tính lên mã khối 103

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 107

3.4.1 Xác suất lượng sai 107

3.4.2 Sơ lược về tấn công lượng sai lên mã khối 108

3.5 NGUYÊN LÝ THIẾT KẾ MÃ KHỐI 112

3.6 GIỚI THIỆU MỘT SỐ MÃ KHỐI: CẤU TRÚC, THUẬT TOÁN VÀ ĐỘ AN TOÀN 113

3.6.1 Chuẩn mã hóa dữ liệu DES 113

3.6.1.1 Thuật toán mã hoá 114

3.6.1.2 Lược đồ tạo hệ thống khoá : 118

3.6.1.3 Giải mã DES 119

3.6.1.4 Độ an toàn của DES 120

3.6.2 Mã khối Camellia 122

3.6.2.1 Cấu trúc của Camellia 124

3.6.2.2 Các thành phần của Camellia 139

3.6.2.3 Độ an toàn của Camellia 146

3.6.2.4 Dữ liệu thử nghiệm của Camellia 147

3.7 THUẬT TOÁN VÀ CHƯƠNG TRÌNH TÍNH XÁC SUẤT LƯỢNG SAI VÀ TUYẾN TÍNH CỰC ĐẠI 148

3.7.1 Thuật toán tính các xác suất lượng sai và tuyến tính cực đại 148 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 149

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 150

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 153

Trang 5

3.8 CÂU HỎI ÔN TẬP 155

CHƯƠNG 4 MẬT MÃ TRÊN ĐƯỜNG CONG ELLIPTIC 156

4.1 ĐỊNH NGHĨA 156

4.1.1 Định nghĩa đường cong elliptic 156

4.1.2 Luật nhóm 158

4.1.3 Tính kP 161

4.1.4 Dạng không kỳ dị 161

4.1.6 Đường cong elliptic trên trường có đăc số 2 163

4.2 NHÚNG MỘT SỐ VÀO ĐƯỜNG CONG ELLIPTIC 166

4.2.1 Chuyển thông báo thành số nguyên thuộc Fp 166

4.2.2 Nhúng bản rõ 166

4.3 ĐẾM ĐƠN GIẢN SỐ ĐIỂM TRÊN ĐƯỜNG CONG ELLIPTIC 169

4.4 TÍNH BẬC CỦA MỘT ĐIỂM 169

4.5 MỘT SỐ HỆ MẬT, HỆ CHỮ KÝ SỐ TRÊN ĐƯỜNG CONG ELLIPTIC 172

4.5.1 Bài toán lô ga rít rời rạc (DLP) trên đường cong elliptic 172

4.5.2 Các hệ mật đường cong Elliptic: 173

4.5.2.1 Hệ mật Elgamal Elliptic: 173

4.5.2.2 Lập mã Massey-Omura: 173

4.5.2.3 Hệ mật trên đường cong elliptic Menezes- Vanstone : 174

4.5.3 Các hệ chữ ký trên đường cong Elliptic: 175

4.5.3.1 Sơ đồ chữ ký số Elgamal Elliptic: 175

4.5.3.2 Chuẩn chữ ký số Elliptic (ECDSA): 176

4.5.4 Giao thức trao đổi khóa 177

4.6 CHỌN ĐƯỜNG CONG TỐT 178

4.6.1 Những yêu cầu kỹ thuật 178

4.6.2 Những yêu cầu an toàn 179

4.7 MỘT SỐ CHƯƠNG TRÌNH MAPLE VỀ ĐƯỜNG CONG ELLIPTIC 180

4.7.1 Chương trình tính kP 180

4.7.2 Liệt kê các điểm của đường cong 181

Trang 6

4.7.3 Hệ mật trên đường cong elliptic 183

4.7.4 Hệ chữ ký trên đường cong elliptic 184

4.7.4.1 Sơ đồ chữ ký số Elgamal Elliptic: 184

4.7.4.2 Sơ đồ chữ ký số ECDSA: 185

4.8 CÂU HỎI ÔN TẬP 187

CHƯƠNG 5 GIAO THỨC MẬT MÃ 188

5.1 ĐỊNH NGHĨA 188

5.2 CÁC YÊU CẦU TRONG GIAO THỨC XÁC THỰC 190

5.2.1 Tính tươi của thông báo và tính sống của thực thể : 190

5.2.1.1 Tính tươi của thông báo 190

5.2.1.2 Tính sống của thực thể 191

5.2.2 Xác thực nguồn gốc dữ liệu 191

5.2.3 Xác thực thực thể 192

5.2.4 Thiết lập khoá có xác thực 194

5.3 MỘT SỐ GIAO THỨC: THUẬT TOÁN VÀ ĐỘ AN TOÀN 194

5.3.1 Quy ước chung 194

5.3.2 Những kỹ thuật xác thực cơ bản 196

5.3.2.1 Những cơ chế thách đố-giải đố 196

5.3.2.2 Các cơ chế tem thời gian 197

5.3.2.3 Những cơ chế phi chuẩn 199

5.3.2.4 Xác thực lẫn nhau 200

5.3.2.5 Xác thực liên quan đến bên thứ ba tin cậy 201

5.3.2.6 Xác thực dựa trên mật khẩu 202

5.3.2.7 Thêm thành phần phụ gia vào giao thức 205

5.3.2.8 Trao đổi khoá có xác thực dựa trên mật mã phi đối xứng 207

5.3.3 Độ an toàn 210

5.3.3.1 Tấn công diễn lại thông báo 210

5.3.3.2 Tấn công kẻ đứng giữa 212

5.3.3.3 Tấn công phiên song song 213

5.3.3.4 Tấn công phản xạ 214

Trang 7

5.3.3.5 Tấn công xen kẽ 215

5.3.3.6 Tấn công do khiếm khuyết kiểu 216

5.3.3.7 Tấn công do bỏ sót tên 217

5.3.3.8 Tấn công do dùng sai các dịch vụ mật mã 218

5.3.3.9 Tóm tắt và thực hành 220

5.3 MỘT SỐ CHƯƠNG TRÌNH MAPLE 220

5.4.1 Cơ chế thách đố-giải đố được chuẩn hóa 221

5.4.2 Cơ chế tem thời gian được chuẩn hóa 223

5.5 CÂU HỎI ÔN TẬP 224

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 toán gốc SNOW 1.0 227

6.1.2 Những điểm yếu trong SNOW 1.0 228

6.1.3 Thuật toán SNOW 2.0 229

6.1.4 Việc thực hiện SNOW 2.0 234

6.2 CHUẨN MÃ KHỐI: AES 236

6.2.1 Các byte như các đa thức 237

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ã hoá Rijndael 241

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) 245

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) 248

6.2.3 Mode giải mã Rijndael 248

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 249

Trang 8

6.3.1.1 Mô tả 249

6.3.2 Chuẩn chữ ký số: RSA-PSS 252

6.3.2.1 Mô tả 252

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) 254

6.4 CHUẨN GIAO THỨC MẬT MÃ 254

6.4.1 Các vấn đề chung 255

6.4.2 Lược đồ thỏa thuận khóa số 1 258

6.4.3 Lược đồ thỏa thuận khóa số 2 260

6.4.4 Lược đồ thỏa thuận khóa số 3 263

6.4.5 Lược đồ thỏa thuận khóa số 4 267

6.4.6 Lược đồ thỏa thuận khóa số 5 269

6.4.7 Lược đồ thỏa thuận khóa số 6 272

6.4.8 Lược đồ thỏa thuận khóa số 7 276

6.4.9 So sánh tính chất các lược đồ thỏa thuận khóa 279

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

Trang 10

DANH MỤC BẢNG

Bảng 3.1 Tính xác suất tuyến tính 103

Bảng 3.2 Tỷ lệ thành công thám tuyến tính là một hàm của c 106

Bảng 3.3 Tính xác suất lượng sai 108

Bảng 3.4 Hoán vị đầu 114

Bảng 3.5 Hoán vị IP-1 115

Bảng 3.6 Mở rộng E 116

Bảng 3.10 Các hằng số lược đồ khóa 136

Bảng 3.11 Các khóa con của khóa bí mật 128 bit 137

Bảng 3.12 Các khóa con của khóa bí mật 192/256 bit 138

Bảng 3.13 Hộp thế s1 144

Bảng 3.14 Hộp thế s2 144

Bảng 3.15 Hộp thế s3 145

Bảng 3.16 Hộp thế s4 145

Trang 11

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 toà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

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

Hình 2.2 Thanh ghi dịch phản hồi tuyến tính bậc L tổng quát 53

Hình 2.3 Hàm tổ hợp 69

Hình 2.4 Bộ lọc phi tuyến 70

Hình 2.5 Sơ đồ bộ tạo dãy nhị phân P.R Geffe 72

Hình 3.1 Sơ đồ một vòng mã hóa 98

Hình 3.2 Cấu trúc SPN với N=16, M=n=4, R=3 99

Hình 3.3: Cấu trúc mạng Feistel cơ bản 100

Hình 3.4 Xấp xỉ tuyến tính 1 vòng của DES với độ chệch -64 20 104

Hình 3.5 Xấp xỉ tuyến tính 3 vòng của DES với xác suất 128 25 105

Hình 3.6 Đặc trưng lượng sai 3 vòng với xác suất ( 64 14 )2 = 2-4.39 111

Hình 3.7 Mô tả DES 114

Hình 3.8 Một vòng DES 115

Hình 3.9 Đảo vị trí 115

Trang 12

Hình 3.10 Thủ tục mã hóa của Camellia với khóa 128 bit 126

Hình 3.11 Thủ tục mã hóa của Camellia với khóa 192 và 256 bit 128

Hình 3.14 Lược đồ khóa 136

Hình 3.15 Hàm F 139

Hình 3.16 Hàm FL 140

Hình 3.17 Hàm FL-1 141

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 4@1.8GHz 236

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 253

Hình 6.7 Lược đồ trao đổi khóa số 1 259

Hình 6.8 Lược đồ trao đổi khóa 2 261

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

Trang 13

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 toà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ã luôn 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 toà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 toà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 toà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!

Trang 14

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 toà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 toà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

Trang 15

mạng của mật mã khóa công khai và c4ũng cung cấp một phương pháp mới và khéo léo để trao đổi khóa, với độ an toàn dựa trên tính khó giải của bài toá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 toán khó của toán học, đó là bài toá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 toán khó trong toá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 toà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 toá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 toàn thông tin: tính bí mật, tính toà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

Trang 16

bảo mật, từ các phương pháp vật lý cho tới các thuật toán làm cho dữ liệu không thể hiểu được

1 Tính toà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ã

Trang 17

Các thành phần bảo

mật cơ bản

Các thành phần không dùng khóa

Các thành phần dùng khóa

đối xứng

Các thành phần dùng khóa bất đối xứng

Các hàm băm độ dài tùy ý

Các phép hoán vị một chiều

Các dãy ngẫu nhiên

Các hệ mật khóa đối xứng

Các mã xác thực thông báo (MACs)

Chữ ký số

Dãy giả ngẫu nhiên

Các định danh cơ bản

Các hệ mã khối

Các hệ mã dòng

Các hệ mật khóa công khai

Chữ ký số

Các định danh cơ bản

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 toà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 toán yê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 toàn tính toá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 toàn thông tin khác

Trang 18

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 toà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 toá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 nguyên hiện có Ví dụ, trong một môi trường mà sức mạnh tính toá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

Trang 19

thức HTTPS, ngoà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 toàn về mặt tính toá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 toá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 toán là 3.1011

MIPS năm, còn với RSA 2048 bít, độ phức tạp tính toán là 3.1020 MIPS năm, với ECC độ dài khóa 234 bít, độ phức tạp tính toán là 1.6.1028 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 quân độ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

Trang 20

quá 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 toà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 chuyên 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 quá 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 toán Vì thế, nhiều người nghi ngờ NSA đã cố tình làm yếu thuật toá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 toá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 Ngoà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 toán để NSA với công suất tính toán vượt trội của mình có thể tấn công duyệt toà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ử

Trang 21

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 Ngoà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 đoá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)

Trang 22

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 đoá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 toà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

Trang 23

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 đoá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 toà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 đoá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 toà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

Trang 24

Hình 1.3 Sử dụng hàm băm bằng HashTab để kiểm tra tính toàn vẹn của tập tin

2 Dễ tính toán – cho trước h và một đầu vào x, h(x) là dễ tính toá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 toá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

Trang 25

bất kỳ xsao 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 toá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 toá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 toán hiện nay, có rất nhiều các hàm băm đã không còn an toà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), RIPEM-

160, fhWhirlpool vẫn được coi là an toà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 toàn

vô điều kiện” (tức là cho dù đối phương có năng lực tính toán và thời gian tính toá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 độ

Trang 26

của các phương pháp này bao giờ cũng chậm hơn tốc độ tạo bằng các phương pháp tính toán rất nhiều

Để dung hòa giữa những ưu điểm và nhược điểm của OTP, người ta đề xuất

ra mã dòng với phương pháp như sau:

• Tạo dãy giả ngẫu nhiên, dưới sự điều khiển của một khóa bí mật (khóa này phải đủ lớn và ngẫu nhiên thực sự), sử dụng một thuật toán tất định gọi là bộ tạo khóa dòng

• Sử dụng dòng khóa bên trên để XOR với bản mã

Với một hệ mã dòng đồng bộ, nếu đối phương biết được nội dung bản mã thì cũng sẽ biết được nội dung của dòng khóa Để cho hệ thống là an toàn thì phải đảm bảo rằng không thể dự đoán được bất kỳ vị trí nào của dòng khóa với xác suất cao hơn dự đoán một dãy ngẫu nhiên thực sự, bất kể số lượng các ký tự khóa dòng đã quan sát được là bao nhiêu

Hệ mật RC4

RC4 được thiết kế bởi Ron Rivest của hãng bảo mật RSA Security vào năm

1987 RC4 là mã dòng được sử dụng rộng rãi nhất và được dùng trong các giao thức như: SSL, TLS (để bảo vệ lưu lượng Internet) và WEP, WPA (để đảm bảo

an toàn mạng không dây)

RC4 hỗ trợ kích cỡ khóa từ 40 tới 2048 bít, sau đó từ khóa này, tạo ra một dòng khóa để XOR với bản rõ Để tạo ra dòng khóa, hệ mật sử dụng một trạng thái trong bí mật gồm 2 thành phần:

• Một hoán vị của tất cả 256 bytes có thể (ký hiệu S)

• Hai con trỏ chỉ số 8 bít (ký hiệu i, j)

Hoán vị được khởi tạo với một khóa chiều dài thay đổi (thường là 40 tới 256 bít), sử dụng thuật toán lập lịch khóa (KSA) Sau khi bước này được hoàn thành, dòng bít được sinh ra sử dụng thuật toán sinh số giả ngẫu nhiên (PRGA)

Nhiều hệ mã dòng dựa trên các thanh ghi dịch phản hồi tuyến tính (LSFR), vốn hiệu quả trong phần cứng, nhưng lại kém hiệu quả khi cài đặt trong phần mềm Thiết kế của RC4 đã tránh sử dụng các thanh ghi LSFR, và ý tưởng để cài đặt trong phần mềm là chỉ cần sự thao tác byte Nó sử dụng 256 bytes bộ nhớ

Trang 27

cho mảng trạng thái, từ S[0] tới S[255], k bytes bộ nhớ cho khóa, từ key[0] tới key[k-1] và các biến nguyên i, j, K Phép chia modulo 256 có thể thực hiện bằng phép AND bít với 255

Không giống như mã dòng hiện đại (ví dụ eSTREAM), RC4 không tạo một giá trị ngẫu nhiên riêng biệt đi cùng với khóa Điều này có nghĩa là nếu một khóa dài hạn được sử dụng để mã hóa cho nhiều dòng, thì phải miêu tả cách gắn giá trị ngẫu nhiên như nào để tạo dòng khóa cho RC4 Một cách tiếp cận để giải quyết vấn đề này, để “làm tươi” khóa, người ta băm khóa dài hạn cùng với một giá trị ngẫu nhiên Tuy nhiên, nhiều ứng dụng sử dụng RC4 chỉ đơn giản là nối khóa với giá trị ngẫu nhiên Khóa lập lịch yếu của RC4 đem lại một loạt các vấn đề nghiêm trọng

Đáng chú ý là, mã dòng RC4, là một thuật toán mã hóa thông thường, lại kháng lại được tấn công BEAST (tìm ra vào năm 2011) vào giao thức TLS 1.0, khai thác điểm yếu được biết đến trong chế độ liên kết mã khối (CBC), gồm tất

cả các hệ mã khối hỗ trợ bởi TLS 1.0 Trong năm 2013 đã có một kịch bản tấn công mới được đề xuất bởi AlFardan, Bernstein, Paterson, Poettering và Schuldt

sử dụng sai số thống kê mới trong bảng khóa của RC4, để phục hồi bản rõ với số lượng lớn lần mã hóa của TLS

1.2.2.4 Mã khối

Một hệ mã khối biến đổi các khối bản rõ có độ dài cố định thành các khối

bản mã có cùng độ dài dưới tác động của một khóa mã K Quá trình mã hóa là

thực hiện biến đổi một loạt các khối bản rõ thành các khối bản mã, và quá trình ngược lại được gọi là giải mã Thông thường, các mã khối được xác định bằng một thuật toán mã hóa, là một dãy các biến đổi được áp dụng cho bản rõ để thu được bản mã

Một số mã khối cơ bản được sử dụng rộng rãi như: DES, Triple DES, AES, IDEA…

Trang 28

Chuẩn mã hóa dữ liệu DES (Data Encryption Standard)

Ngày 15.5.1973, Uỷ ban tiêu chuẩn quốc gia Mỹ đã công bố một khuyến nghị cho các hệ mật trong Hồ sơ quản lý Liên bang Điều này cuối cùng đã dẫn đến sự phát triển của Chuẩn mã dữ liệu (DES) và nó đã trở thành một hệ mật được sử dụng rộng rãi nhất trên thế giới DES được IBM phát triển và được xem như một cải biên của hệ mật LUCIPHER DES được công bố lần đầu tiên trong

Hồ sơ Liên bang vào ngày 17.3.1975 Sau nhiều cuộc tranh luận công khai, DES

đã được chấp nhận chọn làm chuẩn cho các ứng dụng không được coi là mật vào 5.1.1977 Kể từ đó cứ 5 năm một lần, DES lại được Uỷ ban Tiêu chuẩn quốc gia xem xét lại Lần đổi mới gần đây nhất của DES là vào tháng 1.1994 và sau là

1998 Tới tháng 10.2000 DES đã không còn là chuẩn mã dữ liệu nữa

Mô tả đầy đủ của DES được nêu trong Công bố số 46 (FIPS PUB 46) về các chuẩn xử lý thông tin Liên bang (Mỹ) vào 15.1.1977 Thuật toán này dựa trên cấu trúc mã Feistel, với khóa đầu vào 56 bít và kích cỡ mỗi khối bản rõ, bản mã

là 64 bít, số vòng lặp16 vòng Hiện nay, do kích cỡ khóa nhỏ, DES có thể bị tấn công vét cạn chỉ trong vài giờ, tới vài ngày

Do hệ mật DES có kích cỡ khóa nhỏ, nên người ta đã tìm cách nâng chiều dài khóa lên để đảm bảo mức an toàn cao hơn

Double DES

Được tạo bằng cách ghép 2 khối DES với nhau, các khối lần lượt sử dụng các khóa K1, K2 Thuật toán để mã hóa, giải mã như sau:

Bản mã= EK2(EK1(bản rõ)) Bản rõ= DK2(DK1(bản mã))

Mô hình này có nhược điểm là có thể bị tấn công bằng cách thám mã từ 2 phía Để chống lại tấn công thám mã từ 2 phía mà vẫn giữ nguyên kích cỡ khóa (112 bít), người ta sử dụng mô hình Triple DES dưới đây

Trang 29

Triple DES

Được tạo bằng cách ghép 3 khối DES liền nhau, các khối lần lượt sử dụng các khóa là K1, K2, K3 (mỗi khóa 56 bít) Thuật toán để mã hóa, giải mã như sau:

Bản mã = EK3(DK2(EK1(bản rõ))) Bản rõ = DK1(EK2(DK3(bản mã))) Các lựa chọn cho 3 khóa K1, K2, K3: Nếu cả 3 khóa đều độc lập ta có kích

cỡ khóa tổng thể là 168 bít Nếu khóa K1, K3 trùng nhau, kích cỡ khóa tổng thể

là 112 bít, thiết kế này chống được phương pháp thám mã từ 2 phía

Chuẩn mã hóa dữ liệu AES (Advanced Encryption Standard)

Vào năm 1977, Viện tiêu chuẩn và công nghệ quốc gia (NIST) của Mỹ đã phát động một cuộc thi nhằm xây dựng một chuẩn mã dữ liệu mới thay thế cho chuẩn dữ liệu cũ DES được đưa ra vào năm 1974 Qua quá trình tuyển chọn vào tháng 10 năm 2000, NIST đã công bố chuẩn mã dữ liệu mới được lựa chọn là thuật toán Rijndael Đây là một mật mã khối đối xứng với ba kích thước khóa có thể lựa chọn (128 bít, 192 bít và 256 bít) Thuật toán này dựa trên cấu trúc mạng thay thế hoán vị (S-P Network), có thể thực hiện trên 10, 12, 14 vòng (tương ứng với kích cỡ khóa 128, 192, 256 bít), kích thước mỗi khối là 128 bit

AES là trường hợp riêng của Rijndael AES có độ dài khối bằng 128 bit và

hỗ trợ các độ dài khóa bằng 128, 192 hay 256 bit Đây là thuật toán hiện đang được sử dụng rất phổ biến, thực hiện hiệu quả trên cả phần cứng và phần mềm,

và được coi là an toàn ở thời điểm hiện nay

Hầu hết các giao thức và các ứng dụng mật mã đều cài đặt AES làm thuật toán mã khối chính, chẳng hạn: SSL, SSH,…Trong cơ chế mã hóa của hệ quản trị cơ sở dữ liệu Oracle cũng cung cấp DES và AES cho thuật toán mã hóa cơ sở

dữ liệu

1.2.2.5 Hệ mật khóa công khai

Mật mã hóa khóa công khai là một dạng mật mã cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước

Trang 30

đó Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau Mật mã khóa công khai ra đời giúp giải quyết các vấn đề an toàn

mà mật mã khóa bí mật trước đó không giải quyết được như: truyền khóa mật qua môi trường không an toàn (trao đổi khóa), chống chối bỏ, xác thực và định danh, v.v

Do khóa bí mật và khóa công khai có quan hệ toán học với nhau, do vậy hệ mật chỉ có thể đảm bảo độ an toàn tính toán (tức chỉ đảm bảo với đối phương có năng lực tính toán hạn chế)

Các hệ mật khóa công khai đều được vận hành dựa trên cơ sở của một bài toán nào đó được coi là khó, ví dụ như bài toán phân tích số nguyên lớn thành tích các thừa số nguyên tố, bài toán lôgarít rời rạc, Các hệ mật khóa công khai nổi tiếng: hệ mật RSA, Rabin, Elgamal, hệ mật trên đường cong Elliptic (ECC),

Do có tốc độ mã hóa, giải mã chậm, nên các hệ mật khóa công khai thường

đi kèm với các hệ mật khóa đối xứng, chúng đóng vai trò rất quan trọng trong pha đầu tiên, trao đổi khóa rồi chuyển lại khóa cho các ứng dụng khóa bí mật thực hiện mã hóa và giải mã Một ứng dụng rất quan trọng khác của hệ mật khóa công khai đó là tạo chữ ký số để xác nhận tính toàn vẹn của một đối tượng thông tin nào đó, đồng thời ngăn không cho người đã ký xác nhận đó chối bỏ về những hành động của mình

Hệ mật khóa công khai được ứng dụng rộng rãi trong các giao thức, ứng dụng: xây dựng nên hạ tầng khóa công khai PKI, chuẩn chứng chỉ số X.509, dùng trong các giao thức SSL, SSH, giao thức SET (đảm bảo an toàn cho các giao dịch thương mại điện tử), các mô hình trao đổi khóa và xác thực lẫn nhau, Đặc biệt hệ mật trên đường cong Elliptic so với hệ mật RSA khi độ bảo mật tương đương thì độ dài khóa của ECC nhỏ hơn rất nhiều so với RSA, cho nên ECC đã được ứng dụng nhiều trong các mạng không dây

1.2.2.6 Chữ ký số

Chữ ký số được tạo bởi 2 thành phần cơ bản của mật mã: hệ mật khóa công khai và hàm băm Hàm băm có vai trò tóm lược thông báo, tạo ra chuỗi cố định

Trang 31

đại diện cho thông báo đó, các hệ mật khóa công khai có vai trò tạo ra chữ ký Ứng dụng quan trọng nhất của chữ ký số đó là tạo ra các chứng chỉ số, xây dựng nên hạ tầng khóa công khai PKI

Ứng dụng của chữ ký số là đảm bảo tính toàn vẹn và tính chống chối bỏ Được ứng dụng trong một số giao thức phổ biến như mô hình chữ ký kép trong giao dịch thương mại điện tử,

1.2.3 Ứng dụng trong các giao thức bảo mật

Mật mã được ứng dụng rất nhiều trong các giao thức, ứng dụng bảo mật Ở đây ta chỉ xét một số ứng dụng và giao thức phổ biến sử dụng mật mã, như: mã hóa mật khẩu và xác thực đăng nhập trên hệ điều hành Linux, SSH, SSL, SET, PGP, GnuPG

1.2.3.1 Xác thực đăng nhập trên Linux

Hình 1.4 Mật khẩu đăng nhập được mã hóa trên Linux Mint 15

Mật khẩu đăng nhập trên Linux (Linux Mint 15) được lưu trữ trong file /etc/shadow Mật khẩu này sẽ được băm cùng với một giá trị ngẫu nhiên dài 128 bít, mặc định hệ thống sử dụng hàm băm SHA512 (ký hiệu bởi “$6”) Mật khẩu

và chuỗi ngẫu nhiên được băm theo một tổ hợp rất phức tạp, tùy thuộc vào thư viện Glibc đang sử dụng Trong hình ảnh ví dụ trên là Linux Mint 15 đang sử dụng thư viện Glibc 2.17, chi tiết về quá trình băm, ta có thể tìm hiểu trong file

mã nguồn sha512-crypt.c của bộ thư viện này (mặc định số lần băm là 5000 lần) Trên Linux, việc thực hiện quá trình xác thực được đảm nhận bởi module PAM PAM viết tắt của từ “Pluggable Authentication Module”– môđun xác thực rời Trước kia (khi PAM chưa được dùng) các chương trình và các dịch vụ như login, su, passwd, telnet, ftp v.v nếu cần xác thực người dùng, chỉ đơn giản là

Trang 32

tìm kiếm các thông tin cần thiết trong file /etc/passwd (khi đó /etc/shadow chưa được sử dụng) Khi cần chỉnh sửa các thông tin về người dùng, như thay đổi mật khẩu chẳng hạn, cũng chỉ đơn giản là chỉnh sửa lại file /etc/passwd Cách làm này tuy có vẻ đơn giản nhưng gây ra rất nhiều vấn đề cho các quản trị viên hệ thống và các nhà phát triển Khi hàm băm MD5 và kỹ thuật che giấu mật khẩu (dùng /etc/shadow) được áp dụng, mỗi chương trình khi cần xác thực người dùng

sẽ cần phải biết làm thế nào để xử lý với các phương pháp xác thực khác nhau (ví dụ như kiểu xác thực đó dùng DES để mã hóa hay dùng MD5 để băm, và với mỗi kiểu xác thực đó khi đọc/ghi phải xử lý như thế nào v.v ) Nếu ta muốn thay đổi phương pháp xác thực trên hệ thống của mình thì toàn bộ các chương trình liên quan đến quá trình xác thực sẽ phải biên dịch lại PAM loại bỏ được sự bất cập này bằng cách làm cho quá trình xác thực trở nên trong suốt đối với người dùng, bất kể thông tin xác thực người dùng được lưu trữ ra sao

PAM được phát triển đầu tiên bởi hãng Sun MicroSystems vào năm 1995 Ý tưởng phát triển PAM đó là: thay vì để cho các chương trình tự truy cập và xử lý trực tiếp tập tin mật khẩu thì giờ các chương trình chỉ cần yêu cầu PAM, PAM sẽ đảm nhận toàn bộ các công việc liên quan đến xác thực mà chương trình yêu cầu,

và sau đó trả lại kết quả cho chương trình

Tính đến thời điểm tháng 6, 2013 phiên bản mới nhất của PAM là PAM-1.1.6 với khả năng hỗ trợ đa dạng các giao thức và các thuật toán Các giao thức, dịch vụ được hỗ trợ gồm có: local login, SSH, Radius, TCACS+, Kerberos, POP3, IMAP, SQL, SAMBA, LDAP, Các thuật toán hỗ trợ: DES, IDEA, Blowfish, AES, MD5, SHA1, SHA256, SHA512,

Linux-1.2.3.2 Secure Shell (SSH)

SSH là một giao thức bảo mật, cung cấp giao diện Shell điều khiển cho người dùng truy cập từ xa SSH mã hóa mọi thông tin truyền, nhận giữa máy chủ truy cập (SSH Server) và máy khách từ xa (SSH Client), nhằm ngăn chặn các phương pháp tấn công nghe lén trên đường truyền Với Linux Mint 15 ta có thể

sử dụng gói “openssh-server 1:6.1p1-4” để cài đặt SSH Server, trên Windows có

Trang 33

thể sử dụng Putty làm SSH Client để kết nối, sử dụng mặc định giao thức SSH phiên bản 2

Phiên bản openssh-server trên hỗ trợ các thuật toán, hệ mật sau:

Hệ mật khóa đối

xứng

DES (chỉ được hỗ trợ trong 1), 3DES (mặc định của 2), AES128-CTR, AES192-CTR, AES256-CTR, RC4-256, RC4-128, AES128-CBC, 3DES-CBC, BLOWFISH-CBC, CAST128-CBC, AES192-CBC, AES256-CBC, RC4 Thuật toán trao

SSH-đổi khóa

SHA2-NISTP256, SHA2-NISTP384, SHA2-NISTP521, DIFFIE-HELLMAN-GROUP-EXCHANGE-SHA256, DIFFIE-HELLMAN-GROUP-EXCHANGE-SHA1, DIFFIE-HELLMAN-GROUP14-SHA1, DIFFIE-HELLMAN-GROUP1-SHA1

ECDH-Mã xác thực

thông báo

HMAC-MD5, HMAC-SHA1, UMAC-64@OPENSSH.COM, HMAC-SHA2-256, HMAC-SHA2-512, HMAC-RIPEMD160, HMAC-SHA1-96, HMAC-MD5-96

Thuật toán ký số ecdsa-sha2-nistp256-cert-v01@openssh.com,

ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com,

ssh-dss-cert-v01@openssh.com, ssh-rsa-cert-v00@openssh.com, ssh-dss-cert-v00@openssh.com, ecdsa-sha2-nistp256,

ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-rsa, ssh-dss

Quá trình hoạt động của SSH thông qua 3 bước:

• Bước 1: Định danh host - xác định định danh của hệ thống tham gia phiên làm việc SSH

• Bước 2: Mã hoá - thiết lập kênh làm việc mã hoá

Trang 34

• Bước 3: Chứng thực - xác thực người sử dụng có quyền đăng nhập hệ thống

Bước 1: Định danh host

Khi máy client gửi yêu cầu kết nối, máy chủ xác định định danh của máy client thông qua địa chỉ IP Sau đó, máy chủ SSH sinh ngẫu nhiên một cặp khóa

bí mật - khóa công khai (mặc định là RSA 2048 bít), sau đó gửi khóa công khai vừa tạo cho máy client Các máy client có địa chỉ IP khác nhau sẽ nhận được khóa công khai khác nhau

Hình 1.5 Máy chủ SSH gửi khóa công khai cho máy client

Do máy chủ SSH tự sinh ngẫu nhiên khóa công khai gửi cho client, khóa công khai này không được chứng nhận (không phải là chứng chỉ số) Vì vậy phía client phải tự quyết định có nên tin tưởng khóa công khai vừa nhận được không, nếu tin tưởng thì chấp nhận và thiết lập kết nối, nếu không tin tưởng thì hủy bỏ kết nối Vì SSH sử dụng khóa công khai không có chữ ký của bên thứ ba tin tưởng, nên nó có thể bị tổn thương trước kiểu tấn công “Người xen giữa” (Man

Trang 35

In the Midle) Tuy nhiên việc triển khai tấn công này với SSH ở môi trường thực

tế là tương đối khó khăn

Bước 2: Mã hoá - thiết lập kênh làm việc mã hoá

Trong bước này, hai máy sẽ thỏa thuận hệ mật khóa đối xứng để sử dụng với nhau Mặc định máy chủ SSH sử dụng 3DES để mã hóa, giải mã dữ liệu

Do hệ mật khóa bất đối xứng có tốc độ chậm hơn rất nhiều so với các hệ mật dùng khóa đối xứng, hơn nữa với cùng kích cỡ khóa thì hệ mật khóa đối xứng an toàn hơn rất nhiều hệ mật khóa bất đối xứng Do vậy hệ mật bất đối xứng sẽ được dùng để trao đổi khóa cho hệ mật đối xứng sử dụng

Máy client thỏa thuận thuật toán đối xứng sẽ sử dụng với máy chủ SSH Sau

đó, máy client sinh ngẫu nhiên một chuỗi để làm khóa đối xứng, rồi sử dụng khóa công khai (RSA 2048 bít) vừa nhận được, mã hóa chuỗi ngẫu nhiên này (bằng hệ mật khóa công khai RSA) rồi gửi cho máy chủ Máy chủ sử dụng khóa

bí mật của mình để giải mã ra chuỗi ngẫu nhiên đó

Có thể sử dụng phương pháp khác để thỏa thuận khóa dùng chung, đó là sử dụng các thuật toán trao đổi khóa như Diffie-Hellman (độ khó dựa bài toán lôgarít rời rạc trên số nguyên), ECDH (độ khó dựa trên bài toán lôgarít rời rạc trên nhóm các điểm trên đường cong Elliptic)

Bước 3: Chứng thực - xác thực người sử dụng có quyền đăng nhập hệ thống hay không

Sau bước 2, mọi thông tin qua lại giữa máy chủ, máy trạm đều được mã hóa bằng hệ mật khóa đối xứng Máy trạm gửi tên truy cập, mật khẩu tới máy chủ Máy chủ SSH giải mã lại các thông tin đó, sau đó gọi modul PAM trên hệ thống

để xác thực những thông tin này

1.2.3.3 SSL/TLS

Giao thức SSL (Secure Socket Layer) được phát triển bởi Netscape để cung cấp ứng dụng truyền thông bảo mật, độc lập với các giao thức lớp trên như HTTP SSL sử dụng hệ mật RSA và chứng chỉ số X.509 trong quá trình khởi tạo bắt tay kết nối để xác thực máy chủ (tùy chọn xác thực máy trạm) Máy trạm và máy chủ thỏa thuận về các hệ mật sử dụng SSL v2.0 (1995), phiên bản phát

Trang 36

hành đầu tiên, hỗ trợ RC2 và RC4 với 40 bít khóa SSL v3.0 (1996) hỗ trợ thêm DES, RC4 với 128 bít khóa, 3DES với 168 bít khóa, sử dụng các hàm băm MD5 hoặc SHA-1 Giao thức này được mô tả chi tiết trong RFC6101

Hình 1.6 Trang web hỗ trợ HTTPS

Vào năm 1997, SSL v3 được tìm ra các điểm yếu Vào thời gian này, IETF

đã bắt đầu làm việc trên một giao thức mới, một giao thức không độc quyền, gọi

là Transport Layer Security (TLS), được miêu tả trong RFC2246 (1999) TLS dẫn xuất từ SSL, được hỗ trợ thêm các hệ mật, như thuật toán trao đổi khóa Diffie-Hellman và chữ ký số DSS RFC4279 miêu tả lược đồ khóa chia sẻ dùng chung được hỗ trợ bởi TLS TLS cũng tương thích ngược với SSL (trong thực tế,

nó được coi là SSL 3.1) Cả SSL v3.0 và TLS v1.0 đều được hỗ trợ bởi các máy chủ và các trình duyệt ngày nay Ngày nay, SSL 2.0 hiếm khi thấy được sử dụng thực tế, các máy chủ và máy trạm nếu hỗ trợ TLS sẽ không bao giờ đàm phán về việc sử dụng SSL v2.0

Vào năm 2002, điểm yếu trong chế độ liên kết mã khối (CBC) được tìm thấy trong TLS v1.0 Vào năm 2011, lý thuyết đã thành thực tế khi chương trình khai thác lỗ hổng của chế độ CBC được phát hành Trong khi đó, phiên bản TLS v1.1 được định nghĩa vào năm 2006 (RFC 4346), đã được bổ sung thêm sự bảo vệ

Trang 37

chống lại lỗ hổng trong chế độ CBC của phiên bản v1.0 Trong năm 2008, TLS v1.2 được định nghĩa (RFC 5246), thêm một số tùy chọn mã hóa bổ sung Ngày nay, người dùng được khuyến khích sử dụng TLS v1.2 hoặc v1.1 thay cho bất kỳ phiên bản nào trước đó

Giao thức bắt tay của SSL/TLS

Application Data < -> Application Data

(*) Tùy chọn, hoặc thông điệp có sự phụ thuộc, không phải luôn luôn được gửi;

(Theo RFC 2246)

Bảng trên chỉ ra quá trình bắt tay cơ bản của SSL (TLS), gồm các bước:

1 Các URL xác định giao thức, ví dụ https:// để chuyển hướng sang máy chủ

HTTP bảo mật sử dụng SSL/TLS Máy trạm tự động tạo kết nối TCP với máy

Trang 38

chủ trên cổng 443 Máy trạm khởi tạo kết nối bảo mật, bằng cách gửi thông điệp ClientHello chứa nhận dạng Session ID, số hiệu phiên bản SSL cao nhất của máy trạm, và danh sách các hệ mật, lược đồ nén dữ liệu hỗ trợ

2 Máy chủ xác định Session ID Nếu nó vẫn còn trong bộ đệm của máy chủ, máy chủ sẽ cố gắng thiết lập lại kết nối phiên trước với máy trạm Nếu Session

ID không được nhận dạng, máy chủ sẽ tiếp tục quá trình bắt tay kết nối bằng việc trả lại thông điệp ServerHello ServerHello lặp lại Session ID, chỉ ra phiên bản SSL sử dụng cho kết nối (là phiên bản SSL cao nhất hỗ trợ bởi cả máy chủ và máy trạm), và đặc tả phương pháp mã hóa và phương pháp nén dữ liệu sử dụng cho kết nối

3 Có một số tùy chọn thông điệp mà máy chủ có thể gửi, bao gồm:

✓ Certificate, chứa chứng chỉ khóa công khai theo chuẩn X.509 của máy chủ (trong chứng chỉ bao gồm cả khóa công khai) Thông điệp này sẽ luôn được gửi, trừ khi máy chủ và máy trạm đã thỏa thuận một số hình thức trao đổi khóa nặc danh

✓ ServerKeyExchange, chứa khóa chủ bí mật khi chứng chỉ của máy chủ không chứa đủ dữ liệu cho mục đích này; được sử dụng trong một số lược đồ trao đổi khóa

✓ CertificateRequest, được sử dụng để yêu cầu máy trạm gửi lại chứng chỉ số cho máy chủ, trong trường hợp xác thực máy trạm được sử dụng

✓ ServerHelloDone, chỉ ra rằng các máy chủ đã hoàn thành phần của mình trong quá trình bắt tay trao đổi khóa

4 Máy trạm bây giờ sẽ trả lời lại một loạt các thông điệp bắt buộc và tùy chọn:

✓ Certificate, chứa chứng chỉ của máy trạm, khi máy chủ yêu cầu

✓ ClientKeyExchange, chứa khóa bí mật được sử dụng trong lược đồ trao đổi khóa

✓ CertificateVerify, được sử dụng để cung cấp xác minh cho chứng chỉ của máy trạm nếu máy chủ đang xác thực máy trạm

Trang 39

5 TLS bao gồm giao thức đặc tả thay đổi hệ mật (change cipher spec protocol) để xác định những sự thay đổi trong phương pháp mã hóa Giao thức này chỉ có một thông điệp, ChangeCipherSpec, được mã hóa và nén bởi lược đồ

mã hóa và nén dữ liệu hiện tại Thông điệp ChangeCipherSpec được gửi bởi tất

cả máy trạm và máy chủ để thông báo cho các trạm khác rằng các thông tin sau đây sẽ sử dụng các đặc tả mã và khóa mới

6 Thông điệp Finished được gửi sau khi thông điệp ChangeCipherSpec khẳng định rằng quá trình trao đổi khóa và xác thực đã thành công

7 Từ thời điểm này, cả máy chủ và máy trạm có thể trao đổi dữ liệu sử dụng lược đồ mã hóa khóa phiên và lược đồ nén dữ liệu

TLS ban đầu được thiết kế vận hành trên giao thức TCP IETF đã phát triển giao thức Datagram Transport Layer Security (DTLS) dựa trên TLS, vận hành trên UDP Phiên bản DTLS v1.2 được miêu tả trong RFC6437 (có thể tìm thấy trong cả RFC4347)

RFC6655 miêu tả bộ AES sử dụng trong các chế độ bộ đếm (Counter), liên kết khối mã (CBC) và các mã xác thực thông điệp (CBC-MAC) chế độ CCM, được sử dụng cho cả TLS và DTLS

1.2.3.4 Giao thức SET (Secure Electronic Transaction)

Secure Electronic Transaction (SET) - giao thức bảo mật giao dịch điện tử, là một giao thức bảo mật các giao dịch thẻ tín dụng qua các mạng không an toàn, như mạng Internet SET được phát triển bởi SETco, lãnh đạo bởi VISA và MasterCard (cùng hợp tác với các công ty khác như GTE, IBM, Microsoft, Netscape, RSA, Safelayer - dự án SET - cùng với VeriSign, VeriFone), bắt đầu vào năm 1996

SET sử dụng chứng chỉ số X.509 với một vài mở rộng Các hệ mật được sử dụng trong SET:

✓ Hệ mật khóa công khai: RSA

✓ Hệ mật khóa bí mật: DES

✓ Các hàm băm (MD5, SHA1), bộ sinh số giả ngẫu nhiên

Các thực thể trong SET gồm có:

Trang 40

✓ Cardholder: chủ sở hữu thẻ thanh toán

✓ Merchant: nhà cung cấp, bán hàng

✓ Issuer: Ngân hàng người mua

✓ Acquirer: Ngân hàng người bán

✓ Payment gateway: cổng thanh toán

✓ Certification authority: trung tâm cung cấp chứng chỉ

Một giao dịch điện tử trong SET diễn ra theo quá trình sau:

Hình 1.7 Quá trình thực hiện giao dịch trong SET

• Người mua quyết định mua hàng: số lượng, loại hàng, có trên trang web người bán Sau đó điền các thông tin của thẻ thanh toán

• SET gửi đơn hàng và thông tin thẻ tới người bán hàng

• Người bán chuyển các thông tin thẻ thanh toán tới ngân hàng người bán kiểm tra

• Ngân hàng người bán gửi các thông tin thẻ sang ngân hàng phát hành thẻ của người mua, yêu cầu kiểm tra

• Ngân hàng phát hành thẻ của người mua trả lời lại cho ngân hàng người bán

Ngày đăng: 09/12/2022, 17:55

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w