ĐẠI HỌC BÁCH KHOA --- o0o --- NGUYỄN HẢI TRIỀU ĐỀ TÀI: Nghiên cứu, thiết kế và hiện thực một số công cụ BẢO MẬT THÔNG TIN cho các hệ thống thương mại điện tử Chuyên ngành: Công Nghệ T
Trang 1ĐẠI HỌC BÁCH KHOA - o0o -
NGUYỄN HẢI TRIỀU
ĐỀ TÀI:
Nghiên cứu, thiết kế và hiện thực
một số công cụ BẢO MẬT THÔNG TIN cho các hệ thống thương mại điện tử
Chuyên ngành: Công Nghệ Thông Tin
LUẬN VĂN THẠC SĨ
TP HỒ CHÍ MINH, tháng 9 năm 2003
Trang 2CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Cán bộ hướng dẫn khoa học: Tiến Sĩ Nguyễn Xuân Dũng
Cán bộ chấm nhận xét 1: Tiến Sĩ Nguyễn Văn Hiệp
Cán bộ chấm nhận xét 2: Tiến Sĩ Nguyễn Đình Thúc
Luận văn thạc sĩ được bảo vệ tại HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ
TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 27 tháng 9 năm 2003
Trang 3Đại Học Quốc Gia Tp Hồ Chí Minh CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc Lập – Tự Do – Hạnh Phúc
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ và tên học viên: Nguyễn Hải Triều Phái: Nam
Ngày tháng năm sinh: 14-07-1975 Nơi sinh: Quảng Ninh Chuyên ngành: Công Nghệ Thông Tin Mã số: 01.02.10
TÊN ĐỀ TÀI:
Nghiên cứu, thiết kế và hiện thực một số công cụ BẢO MẬT THÔNG TIN cho các hệ thống thương mại điện tử
II- NHIỆM VỤ VÀ NỘI DUNG:
Nghiên cứu, phân tích và đánh giá các mô hình mật mã học hiện đại Từ đó thiết kế một hệ thống bảo mật với các thành phần và nghi thức mật mã chính, có khả năng áp dụng cho các loại hệ thống giao dịch điện tử Hiện thực một ứng dụng minh họa cho hệ thống này
III- NGÀY GIAO NHIỆM VỤ: 01-05-2003
IV- NGÀY HOÀN THÀNH NHIỆM VỤ: 27-09-2003
V- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: Tiến Sĩ Nguyễn Xuân Dũng
CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM NGÀNH BỘ MÔN QUẢN LÝ NGÀNH
TS Nguyễn Xuân Dũng TS Dương Tuấn Anh
Nội dung và đề cương luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua
Ngày tháng năm
Trang 4Lời cảm ơn
Bản thân tôi không thể hoàn thành luận văn này một cách tốt nhất nếu không có sự giúp đỡ và góp ý của các Thầy và sự động viên của các bạn đồng nghiệp
Xin chân thành cảm ơn TS Nguyễn Xuân Dũng (khoa CNTT, Đại Học Văn Lang) đã giúp đỡ nhiệt tình trong quá trình nghiên cứu và phát triển đề tài Xin cảm ơn
TS Dương Tuấn Anh, TS Nguyễn Văn Hiệp (khoa CNTT, Đại Học Bách Khoa TP.HCM), TS Nguyễn Đình Thúc (khoa CNTT, Đại Học Khoa Học Tự Nhiên TP.HCM) đã giúp đỡ và góp ý xây dựng cho luận văn được hoàn thiện hơn
Xin cảm ơn các Thầy, Cô giáo khoa Công Nghệ Thông Tin, phòng Quản Lý Sau Đại Học trường Đại Học Bách Khoa TP.HCM đã cung cấp kiến thức cho tôi trong suốt thời gian học tập
Xin chân thành cảm ơn những người thân trong gia đình, các bạn đồng nghiệp trong công ty đã động viên, giúp đỡ trong quá trình nghiên cứu và xây dựng luận văn
TP.HCM ngày 27 tháng 9 năm 2003 Nguyễn Hải Triều
Trang 5Tóm tắt
Xuất phát từ nhu cầu nghiên cứu và phát triển các hệ thống bảo mật thông tin ứng dụng trong giao dịch điện tử nói chung và thương mại điện tử nói riêng trong nước, luận văn đi nghiên cứu, phân tích, thống kê và đánh giá một cách chi tiết các lĩnh vực của khoa học mật mã, bao gồm: các mô hình mã hóa thông tin đối xứng và bất đối xứng (encryption), các mô hình chữ ký điện tử (digital signature), các mô hình chứng thực thành viên (entity authentication), các mô hình quản lý và thiết lập khóa bí mật (key management), các phương pháp kiểm soát sự toàn vẹn thông tin (data integrity)… và xem xét một số giải pháp mã hóa cơ sở dữ liệu
Từ những nghiên cứu đó, luận văn chọn lọc, cải tiến và kết hợp các mô hình mật mã này lại theo một cách thức riêng để thiết kế các thành phần và nghi thức chính của
một hệ thống mật mã nền, có khả năng làm cơ sở để phát triển các loại ứng dụng giao
dịch điện tử có nhu cầu về bảo mật thông tin, như : giao dịch ngân hàng, truyền nhận thông tin an toàn…
Cuối cùng, luận văn tiến hành xây dựng một ứng dụng đơn giản có dạng client–server trong giao dịch ngân hàng điện tử, dựa trên cơ sở của hệ thống mật mã nền đã thiết
kế Ứng dụng này cho phép người dùng (là thành viên của hệ thống ngân hàng) chứng thực-đăng nhập một cách an toàn vào hệ thống, và thực hiện một số thao tác đơn giản trên tài khoản như: kiểm tra tài khoản, chuyển tiền, thay đổi thông số bí mật của tài khoản… Tuy nhiên, ứng dụng này chỉ có vai trò chính là minh họa khả năng
áp dụng của hệ thống mật mã nền
Trang 6Abstract
From the local needs of studying and developing of security systems to apply into electronic-transaction generally and e-commerce applications particularly, this thesis aims to study, analyse and value some important fields of cryptography in detail, such as: two types of encryption models (symmetric and asymmetric), digital signature models, entity authentication models, key management models (key distribution, key agreement), data integrity checking methods (message authentication code)…, and also to analyse some applicable database encryption solutions
From those studies, we then choose the best models, customise, improve and combine them in a unique way to design some core components and protocol of a
cryptographic platform which can be the cryptographic base for developing various
upper e-transaction applications which require security, such as: e-banking applications, secure file transmission,…
Finally, we proceed to design and implement a simple e-banking client-server application based on the above cryptographic platform This application allows the user, who is a member of the bank, to securely access (by cryptographic authentication) into the server, and to do some simple actions on his account such as checking account status, withdrawing money, changing the account’s secret code… However, this e-banking application is merely a demonstration of the cryptographic platform’s application on the real context It needs to be improved more in functionality in order to match the reality’s needs
Trang 7Mục lục
Nhiệm vụ luận văn thạc sĩ
Lời cảm ơn
Tóm tắt
Abstract
Mục lục i
Danh sách các hình iv
Các ký hiệu viết tắt v
Chương 1 - Giới thiệu 1
1.1 Phạm vi và động lực 1
1.2 Mục tiêu và nội dung đề tài 2
1.3 Các công trình liên quan 4
Chương 2 – Cơ sở lý thuyết mật mã 6
2.1 Tổng quan về mật mã 8
2.1.1 Các khái niệm 8
2.1.2 Các loại hệ thống mật mã 9
2.2 Các mô hình mã hóa đối xứng 12
2.2.1 DES (Data Encryption Standard) 13
2.2.2 Triple-DES (TDES,3DES) 22
2.2.3 Giải thuật RC5 24
2.2.4 Giải thuật RC6 31
2.1.5 Giải thuật Rijndael (AES) 36
2.3 Các mô hình mã hóa bất đối xứng 42
2.3.1 Các cơ sở toán học 43
2.3.2 Mô hình mật mã RSA 47
2.3.2.1 Thuật toán RSA 47
2.3.2.2 Phương pháp sinh số nguyên tố ngẫu nhiên 51
2.3.2.3 Các thuật toán phân tích thừa số (factoring) 52
2.3.2.4 Đánh giá RSA 55
Trang 82.3.2.5 Kết luận và ứng dụng 56
2.3.3 Mô hình mật mã ElGamal 56
2.3.3.1 Mô hình ElGamal và bài toán logarit 56
2.3.3.2 Các thuật toán giải bài toán logarit 58
2.3.3.3 Đánh giá ElGamal 60
2.4 Hàm băm và chữ ký điện tử 61
2.4.1 Chữ ký điện tử (digital signature) 61
2.4.1.1 Mô hình chung của chữ ký điện tử 62
2.4.1.2 Mô hình chữ ký điện tử RSA 63
2.4.1.3 Mô hình chữ ký điện tử ElGamal 64
2.4.1.4 DSA (Digital Signature Algorithm) 65
2.4.1.5 Một số thông tin về chuẩn chữ ký điện tử của NIST 67
2.4.2 Hàm băm (HASH function) 68
2.4.2.1 Giới thiệu 68
2.4.2.2 MD5 70
2.4.2.3 SHA (Secure Hash Algorithm) 75
2.4.2.4 Mộc thời gian (timestamping) 78
2.4.3 Tóm tắt và ứng dụng 79
2.5 Quản lý & trao đổi khóa bí mật (key management) 80
2.5.1 Giới thiệu 82
2.5.2 Các giải thuật trao đổi khóa (key agreement) 82
2.5.2.1 Giải thuật Diffie-Hellman 82
2.5.2.2 Giải thuật Station-to-Station (STS) 83
2.5.3 Tóm tắt và kết luận 85
2.6 Chứng thực dùng hệ thống khóa công khai (authentication) 85
2.6.1 Giới thiệu 85
2.6.2 Mô hình chứng thực Schnorr 87
2.6.3 Mô hình chứng thực Guillou-Quisquater 89
2.6.4 Chuẩn chứng thực dùng khóa công khai của NIST 91
2.6.5 Tóm tắt và kết luận 92
Trang 92.7 Mã kiểm soát toàn vẹn dữ liệu (MAC) 93
2.7.1 Giới thiệu 93
2.7.2 Một số phương pháp tính MAC 93
2.7.3 Chuẩn HMAC của NIST 94
Chương 3 - Thiết kế mô hình bảo mật 96
3.1 Mục tiêu ứng dụng 97
3.2 Mục tiêu thiết kế - mô hình tổng quát 97
3.3 Kiến trúc mật mã chi tiết 99
3.4 Thông tin phiên làm việc (session) 108
3.5 Các giao thức của hệ thống (protocols) 109
3.5.1 Giao thức bắt tay (handshake protocol) 110
3.5.2 Giao thức DATA 115
3.5.3 Giao thức ERROR 115
3.6 Bảo mật cơ sở dữ liệu (Database Encryption) 115
3.6.1 Giải pháp mã hóa bên trong DBMS 117
3.6.2 Giải pháp mã hóa bên ngoài DBMS 119
3.6.3 Một cách cài đặt mã hóa trong DBMS 120
Chương 4 - Hiện thực hệ thống .127
4.1 Hiện thực hệ thống mật mã nền (cryptographic platform) 127
4.2 Hiện thực các giao thức 129
4.3 Thư viện mật mã nền dưới dạng COM 133
4.4 Hiện thực ứng dụng giao dịch ngân hàng 135
4.4.1 Phần mềm client 136
4.4.2 Phần mềm server 140
Chương 5 - Kết luận (conclusion) .142
Tham khảo (references) .149 Phụ lục (Appendix)
Phụ lục A A-1 Phụ lục B B-1
Trang 10Danh sách các hình
Hình 2.1 – DES, sơ đồ tính toán trong một vòng lặp 14
Hình 2.2 – DES, hàm f(R,J) 15
Hình 2.3 - DES, sơ đồ tính toán Ki (key schedule) 16
Hình 2.4 – Sơ đồ mã hóa DES 18
Hình 2.5 – DES, CBC mode 19
Hình 2.6 – DES, CFB mode (stream cipher) 20
Hình 2.7 – Mã hóa 2 words A, B (w bits) của RC5 26
Hình 2.8 – Sơ đồ mã hóa RC6 35
Hình 2.9 – State qua quá trình mã hóa (Rijndael) 37
Hình 2.10 – Mô hình mã hóa dùng khóa công khai 43
Hình 2.12 – Mô hình chữ ký điện tử 62
Hình 2.13 – Hàm HASH 69
Hình 2.14 – MD5, Message padding 71
Hình 2.15 – Mộc thời gian cho chữ ký điện tử 79
Hình 2.16 - Giải thuật Diffie-Hellman 82
Hình 2.17 – Mô hình Station-to-Station (STS) 84
Hình 2.18 – Mô hình chứng thực 1 chiều 92
Hình 3.1 – Sơ đồ tổng quát hệ thống mật mã 99
Hình 3.2 – Kiến trúc hệ thống mật mã 100
Hình 3.3 - Sơ đồ chứng thực server 105
Hình 3.4 – Sơ đồ chứng thực client 106
Hình 3.5 – Sơ đồ mã hóa bên trong DBMS 118
Hình 3.6 - Sơ đồ mã hóa bên ngoài DBMS 119
Hình 3.7 - Sơ đồ cài đặt mã hóa trong MS SQLserver 2000 122
Hình 4.1 – Chứng thực, dựa trên chữ ký điện tử 138
Hình 4.2 – Cửa sổ chính của client (sau khi login) 139
Hình 4.3 - Giao diện phần mềm server 141
Trang 11Các ký hiệu viết tắt
AES Avanced Encryption Standard (chuẩn mã hóa dữ liệu cao cấp,
của NIST) ANSI American National Standards Institute (viện chuẩn hóa quốc
gia, Mỹ) ATM Automatic Teller Machine (máy rút tiền ATM)
CSDL Cơ sở dữ liệu (database)
DBMS Database Management System (hệ quản trị cơ sở dữ liệu) DES Data Encryption Standard (chuẩn mã hóa dữ liệu của NIST) DSA Digital Signature Algorithm (giải thuật chữ ký điện tử)
DSS Digital Signature Standard (chuẩn chữ ký điện tử, của NIST) FIPS Federal Information Processing Standard (chuẩn xử lý thông tin
liên bang, Mỹ) HMAC Keyed-hash Message Authentication Code (chuẩn về mã chứng
thực thông điệp dùng hàm băm, kèm với khóa riêng, của NIST) ISO International Standards Organisation (tổ chức chuẩn hóa quốc
tế) MAC Message Authentication Code (mã chứng thực thông điệp) NIST National Institute of Standards and Technology (viện chuẩn và
công nghệ quốc gia, Mỹ) PKI Public Key Infrastructure (hệ thống nền dùng khóa công khai) SHA Secure Hash Algorithm (giải thuật băm an toàn)
SHS Secure Hash Standard (chuẩn băm an toàn, của NIST)
SSL Secure Sockets Layer (lớp socket an toàn, của Netscape)
TDES Triple-DES (3DES)
Trang 12Bảo mật thông tin là nhu cầu vô cùng quan trọng của hầu hết mọi lĩnh vực, bao gồm: kinh tế - thương mại, an ninh - quốc phòng, bảo hiểm – y tế,… mà
cụ thể hơn chính là các hệ thống lưu trữ, giao dịch sử dụng máy tính như:
• Thương mại điện tử : giao dịch ngân hàng điện tử, thanh toán trực tuyến, trọng tài kinh tế,
• Chính phủ điện tử : lưu trữ bảo quản thông tin, tài liệu, chứng thực cá nhân, các hoạt động xã hội khác,…
• Bảo hiểm – y tế : bảo mật thông tin bệnh nhân,…
Nền công nghiệp và khoa học mật mã trên thế giới trong thời kỳ qua phát triển rất mạnh, với nhiều công trình nghiên cứu - mô hình - giải thuật mật mã
đa dạng với những ưu - nhược điểm khác nhau (tuy nhiên các mô hình chỉ được ứng dụng phổ biến sau một quá trình dài chứng minh và kiểm nghiệm) Phạm vi nghiên cứu của khoa học mật mã là rất rộng, bao gồm nhiều mảng, nhiều thành phần như: các loại mô hình - thuật toán mã hóa thông tin (encryption), các mô hình chứng thực (authentication), mô hình chữ ký điện
tử (digital signature), kiểm soát toàn vẹn dữ liệu (data integrity,
Trang 13authentication code), các mô hình quản lý-phân phối-trao đổi khóa bí mật (key management, key distribution, key exchange),…
Do sự phong phú của các mô hình - giải thuật mật mã, để đảm bảo khả năng phối hợp hoạt động giữa các hệ thống bảo mật của các nhà phát triển khác nhau, những tổ chức nghiên cứu mật mã hàng đầu thế giới, với sự tham gia cộng tác của các chuyên gia toán học và mật mã khắp thế giới, đã cùng đưa
ra những tiêu chuẩn mật mã cụ thể, ứng dụng cho các ngành công nghiệp và thương mại cũng như chính phủ Các tổ chức chuẩn hóa này gồm có:
• ISO (International Organization for Standardization), tổ chức chuẩn hóa quốc tế
• ANSI (American National Standards Institute), viện chuẩn hóa quốc gia của Mỹ với những chuẩn X9 về mật mã
• NIST (National Institute of Standards and Technology, NIST là một thành viên của ANSI), viện chuẩn và công nghệ quốc gia của Mỹ với những chuẩn FIPS (Federal Information Processing Standards)
Ở nước ta, nền công nghệ thông tin và khoa học máy tính vẫn đang trong giai đoạn khởi đầu Dù đã có nhiều tổ chức, doanh nghiệp tham gia vào lĩnh vực sản xuất phần mềm, nhưng mảng nghiên cứu mật mã học và thị trường các
hệ thống, giải pháp phần mềm bảo mật cho lĩnh vực thương mại điện tử và ngân hàng, hay chính phủ có rất hạn hẹp, hầu như còn mở ngỏ Hầu hết các
hệ thống bảo mật thông tin tầm cỡ hiện nay vẫn phải mua lại các giải pháp của các hãng máy tính lớn nước ngoài, do uy tín chưa cao của các hệ thống trong nước (nếu có)
1.2 Mục tiêu và nội dung đề tài
Với tình hình và nhu cầu trên, luận văn này đề ra mục tiêu nghiên cứu các mảng quan trọng của khoa học bảo mật trên thế giới Nghiên cứu, phân tích, đánh giá, chọn lọc các mô hình, thuật toán mật mã tiên tiến hiện nay về các lĩnh vực gồm:
Trang 14• Mã hóa thông tin (encryption):
Nghiên cứu 2 mô hình mã hóa : đối xứng (symmetric) và bất đối xứng (asymmetric), với các thuật toán tiêu biểu, phổ biến và mạnh như DES, TDES, RC5, RC6, Rijndael (AES), và RSA, ElGamal
• Chứng thực thành viên (entity authentication):
Các loại hình chứng thực, các giải thuật chứng thực cụ thể với đánh giá ưu-nhược điểm
• Chữ ký điện tử (digital signature):
Phân tích nhu cầu của chữ ký điện tử, các mô hình chữ ký mạnh : ElGamal, RSA, DSA (DSS)
• Quản lý – phân phối – trao đổi khóa bí mật (key management):
Các phương pháp thiết lập khóa bí mật chung giữa các thành viên trong phiên giao dịch, các biện pháp chống lại sự tấn công thám mã bên ngoài
• Kiểm soát toàn vẹn thông tin dựa trên mã chứng thực (data integrity, authentication code):
Cung cấp khả năng kiểm soát nguồn gốc và sự toàn vẹn của thông tin trong quá trình truyền nhận
Ngoài ra, tìm hiểu thêm một số giải pháp mã hóa cơ sở dữ liệu nhằm tăng cường độ an toàn cho dữ liệu, tránh khả năng mất cắp thông tin do các lỗ hổng bảo mật của hệ quản trị cơ sở dữ liệu, hoặc thậm chí do người quản trị
hệ thống (system administrator, database administrator)
Trên cơ sở các nghiên cứu đó, thiết kế các thành phần và nghi thức chính của một mô hình giao dịch dựa trên mật mã có độ an toàn và hiệu suất thực thi cao, có khả năng áp dụng tốt vào các hệ thống ứng dụng thực tiễn trong thương mại điện tử, ngân hàng, hay các loại ứng dụng cụ thể khác có nhu cầu bảo mật thông tin như lưu trữ thông tin và truyền nhận dữ liệu an toàn…
Trang 15Cuối cùng, tiến hành hiện thực một ứng dụng giao dịch điện tử đơn giản dựa trên mô hình mật mã này Đây là một phần mềm giao dịch ngân hàng ở dạng client-server đơn giản, cho phép người dùng đăng nhập một cách an toàn vào server bảo mật, thực hiện một số thao tác trên tài khoản Phần mềm này chỉ mang tính chất minh họa cho ứng dụng của mô hình mật mã trên
Ngoài việc nghiên cứu các mô hình toán học của các giải thuật mật mã, luận văn còn tìm hiểu các tài liệu liên quan đến bảo mật trong các hệ thống phần mềm lớn và uy tín hiện nay, như các hệ quản trị cơ sở dữ liệu Oracle (www.oracle.com), MS SQLserver, các giải pháp bảo mật của IBM (www.ibm.com), RSA Security Inc (www.rsasecurity.com), nCipher Security (www.nCipher.com), Surety inc (www.surety.com), để nắm bắt thực tiễn và học hỏi, rút kinh nghiệm
Luận văn này được viết thành 5 chương:
Chương 1 giới thiệu phạm vi, động lực và nội dung của đề tài, kèm theo một
số thông tin về các công trình về bảo mật trong nước (chương này)
Chương 2 nghiên cứu chi tiết các lĩnh vực quan trọng và cần thiết của cơ sở
lý thuyết mật mã
Chương 3 trình bày thiết kế mô hình mật mã nền (cryptographic platform),
dựa trên các nghiên cứu mật mã trong chương 2, và làm cơ sở cho phần hiện thực của chương 4
Chương 4 hiện thực hệ thống mật mã nền, cùng với ứng dụng giao dịch ngân
hàng điện tử đơn giản
Chương 5 kết luận, rút ra những thu hoạch của đề tài, cùng với hướng phát
triển - mở rộng trong tương lai
1.3 Các công trình liên quan
Cho đến nay, cũng đã có một số nghiên cứu về mật mã trong nước, từ những nghiên cứu về một số thuật toán ứng dụng trong mật mã, và một số luận văn
Trang 16cấp Cử Nhân và Thạc Sĩ của Đại Học Quốc Gia tìm hiểu một số mảng trong mật mã, áp dụng riêng lẻ vào một số loại ứng dụng như:
• ứng dụng mật mã vào gửi đề thi an toàn: luận văn thạc sĩ năm 1999 hiện nay đây cũng là một đề tài cấp thành phố do TS Dương Anh Đức (ĐH KHTN) làm chủ nhiệm (năm 2003) Theo thông tin sơ bộ thì ứng dụng này dựa trên giải thuật Rijndael, với phương thức trao đổi khóa bí mật bằng tay (manual)
• Thiết kế hệ thống môi giới, cung cấp dịch vụ multimedia: luận văn thạc sĩ của KS Trần Hiển Đạt (ĐH KHTN), năm 2002 Luận văn nghiên cứu một số lĩnh vực mật mã, và thiết kế giải pháp lý thuyết mua bán thông qua môi giới dịch vụ multimedia, chưa hiện thực cụ thể
• Xem xét các vấn đề xung quanh việc mã hóa cơ sở dữ liệu: luận văn thạc sĩ của KS Phạm Hồng Nam (ĐH KHTN), năm 2001 Luận văn bàn đến những khó khăn, trở ngại và nhược điểm của việc mã hóa cơ
sở dữ liệu, chưa đưa ra giải pháp cụ thể
• Nghiên cứu giải thuật Rijndael: của sinh viên Trần Minh Triết và Lương Hán Cơ (ĐH KHTN) nằm 2001
Các nghiên cứu nói chung vẫn còn nhiều hạn chế do khoa học mật mã là một mảng rất rộng đòi hỏi nhiều thời gian và công sức
Trang 17Trong chương này chúng tôi trình bày các nghiên cứu khá đầy đủ các lĩnh vực trong
cơ sở lý thuyết mật mã, các lĩnh vực này sẽ được sử dụng trong việc thiết kế mô hình bảo mật ở chương sau, bao gồm:
• Các mô hình mã hóa thông tin (encryption):
Nghiên cứu 2 loại mô hình mã hóa thông tin: mã hóa đối xứng (symmetric key) và bất đối xứng (asymmetric key), phân tích các ưu-nhược điểm và khả năng ứng dụng của từng loại Ngoài ra, xem xét cụ thể các thuật toán mã hóa mạnh và phổ biến của từng loại, kèm theo phân tích về các khía cạnh an toàn, hiệu suất, ứng dụng và các con số thống kê về khả năng thám mã (attack) hiện nay đối với các thuật toán
Mục 2.1 trình bày tổng quan về mật mã, các loại hệ thống mã hóa
Mục 2.2 trình bày các thuật toán mã hóa đối xứng phổ biến (DES,
Trang 18thống mật mã khóa công khai, và một số giải thuật tiêu biểu của phương
pháp này (mục 2.6)
• Chữ ký điện tử (digital signature)
Phân tích nhu cầu của chữ ký điện tử trong giao dịch điện tử nói chung và thương mại điện tử nói riêng Nêu khái niệm và ứng dụng của hàm băm (hash) trong chữ ký điện tử, các giải thuật HASH mạnh (MD5, SHA) Một số
mô hình chữ ký điện tử phổ biến, đánh giá và chọn lọc dựa trên các tiêu
chuẩn về an toàn và hiệu quả (mục 2.4)
• Quản lý khóa bí mật (key management)
Phân tích nhu cầu quản lý khóa bí mật cho các hệ thống mã hóa đối xứng, các loại chiến lược phân phối và trao đổi khóa giữa các thành viên trong phiên làm việc (key distribution, key agreement) Mô tả chi tiết một số thuật
toán trao đổi khóa mạnh như Diffie-Hellman, Station-to-Station… (mục 2.5)
• Kiểm soát tính toàn vẹn thông tin (data integrity)
Nhu cầu kiểm soát sự toàn vẹn thông tin trên đường truyền, một số phương pháp sinh mã kiểm soát thông điệp (MAC – Message Authentication Code)
như dùng hash, hoặc các thuật toán mã hóa đối xứng (mục 2.7)
Các nghiên cứu này dựa trên các giáo trình mật mã, các chuyên mục nghiên cứu của các giáo sư các trường đại học và các chuyên gia mật mã trên thế giới Và các chuẩn
xử lý thông tin của NIST (viện chuẩn và công nghệ Mỹ) từ [1] đến [18] trong danh sách tham khảo.
Trang 192.1 Tổng quan về mật mã
2.1.1.Các khái niệm
Mật mã (cryptography), hiểu theo nghĩa khái quát, là phương thức đảm bảo
sự bí mật của thông tin trao đổi giữa các thành viên của một hệ thống Cho
dù sự trao đổi này diễn ra trên các phương tiện truyền thông không an toàn (insecure) Điều này thực hiện được bằng cách chuyển đổi thông tin có ý nghĩa (đọc được) thành một dạng thông tin không đọc được (một cách thông
thường) đối với những người khác Quá trình này gọi là mã hóa (encryption,
encipher) Để đọc được thông tin đã mã hoá, người nhận phải chuyển thông tin trở lại thành dạng đọc được ban đầu (nhờ vào một thông tin riêng bí mật,
gọi là khoá) Quá trình này gọi là giải mã (decryption, decipher)
Một số khái niệm:
Plaintext thông tin chưa mã hóa (đọc được)
Ciphertext thông tin sau khi mã hóa
Key khoá, dùng để mã hóa, hoặc giải mã
Block khối dữ liệu (một khối các bit 0,1) chiều dài xác định
Mô hình mật mã có thể được biểu diễn dưới dạng toán học như sau:
Định nghĩa:
Hệ thống mật mã là một bộ 5 (P, C, K, E, D) thỏa các điều kiện sau:
1 P là tập đếm được các plaintext
2 C là tập đếm được các ciphertext
3 K là không gian khoá, là tập đếm được các khóa
4 Với mỗi k thuộc K, định nghĩa các hàm sau :
Mã hóa : ek : P Æ C Giải mã : dk : C Æ P Sao cho : với bất kỳ x thuộc P, thì : dk(ek(x)) = x
Ghi chú: Định nghĩa ở trên thực chất là một hệ thống mã hóa đối xứng (symmetric key system), hay còn gọi khóa riêng (private key system)
Trang 202.1.2 Các loại hệ thống mật mã
Có 2 loại hệ thống mật mã :
• khóa đối xứng , hay khóa riêng (symmetric/private key)
• khóa bất đối xứng, hay khóa công khai (asymmetric/public key)
1 Tốc độ thực thi rất nhanh Do nguyên tắc của mã đối xứng nên hầu
như quá trình mã hóa, hoặc giải mã đều sử dụng các phép toán trên dãy bit nhị phân đơn giản, như : AND, OR, XOR, SHIFT (dịch), ROTATE (quay), || (nối), thay thế, … rất gần với mã máy nên có tốc
độ thực thi cao
2 Độ an toàn của khóa riêng cao hơn so với các hệ thống mã hóa bất
đối xứng có cùng chiều dài khóa Do không gian của khóa đối xứng (N bits) chiếm toàn bộ miền trị của dãy bit có chiều dài N
Ví dụ: khóa có chiều dài N = 56 bits Æ có tất cả 256 khóa có thể có
3 Dễ dàng hiện thực bằng cả phần cứng, phần dẻo (firmware), lẫn phần mềm Do tính chất đơn giản của các phép toán trên dãy bit nhị phân
4 Chiều dài ciphertext bằng plaintext (không sinh những thông tin phụ)
Nhược điểm:
Trang 211 Đòi hỏi việc quản lý khóa phức tạp, phải dùng thêm các cơ chế và giải thuật khác trong việc quản lý, trao đổi khóa giữa các đối tác
2 Không có tính chất xác định chủ nhân của thông tin mã hóa repudiation), do đó không áp dụng được vào các bộ phận khác trong
(non-một hệ thống bảo mật, như : chữ ký điện tử (digital signature), chứng thực (authentication),…
3 Với một hệ thống lớn gồm nhiều đối tác giao tiếp nhau đồng thời, cần một lượng khóa lớn được trao đổi Æ ảnh hưởng hiệu suất hệ thống trong giai đoạn “bắt tay” thiết lập khóa
3 Có thể dùng để tạo mã kiểm soát thông tin MAC (Message authentication code): nếu được hiện thực trong các mode CBC (Cipher Block Chaining) hay CFB (Cipher Feedback) Ví dụ giải thuật DES đã được dùng để tạo MAC cho các thông điệp được đề cử bởi Viện Chuẩn và Công Nghệ Mỹ - NIST
Trang 22khác trong hệ thống Tuy nhiên, 2 khóa này có mối quan hệ toán học, từ khóa private có thể suy ra khóa public, nhưng điều ngược lại là không thể (về mặt tính toán, với điều kiện chiều dài khóa rất lớn)
Ví dụ: ký hiệu
K1 : khóa public
K2 : khóa private
Mã hóa : ciphertext = eK1 (plaintext)
Giải mã : plaintext = dK2 (ciphertext)
Ưu điểm:
1 Độ an toàn (security) rất cao : phụ thuộc vào thuật toán và độ lớn của các tham số cơ sở của thuật toán mã hóa và chiều dài khóa
2 Không đòi hỏi chi phí quản lý – trao đổi khóa
3 Có tính chất non-repudiation (không thể phủ nhận) : đảo ngược của
giải thuật mã hóa - giải mã được áp dụng vào chữ ký điện tử 1 (mỗi cá nhân có một khóa private, dùng để ký (sign) vào tài liệu điện tử, các thành viên khác dùng khóa public của cá nhân đó để xác định (verify) chữ ký trên tài liệu là của ai, một chữ ký chỉ có thể thuộc về 1 cá nhân, nên không thể phủ nhận chữ ký của mình trên tài liệu đã ký)
4 Áp dụng trong chứng thực (entity authentication)
Mã hóa khối (block cipher)
Mã hóa từng khối (block) dữ liệu tuần tự, một cách độc lập, bằng một khóa
duy nhất (ví dụ K), để tạo ra ciphertext
Trang 23Mã hóa các khối plaintext X bằng chuỗi các khóa K1, K2, … (sinh ra từ khóa
K ban đầu) để tạo ra ciphertext :
Y = y1y2… = eK1(x1) eK2(x2) … Với, Ki = fi (K, x1, x2, … , xi-1)
Stream cipher có đặc tính quan trọng là : các khối ciphertext liên tiếp phụ thuộc vào các khối plaintext và ciphertext trước nó (và khóa K)
2.2 Các mô hình mã hóa đối xứng
(symmetric key systems)
Với những ưu điểm về độ an toàn, hiệu suất thực thi, các phép toán đơn giản,
dễ hiện thực trên các loại phần cứng và phần mềm, các giải thuật mã hóa khóa đối xứng được ứng dụng rất phổ biến
Có rất nhiều giải thuật mã hóa khóa đối xứng, đề tài này chỉ giới thiệu và đi sâu chi tiết vào các giải thuật đã và đang được đánh giá cao nhất về các ưu điểm trên Những giải thuật này cũng là cơ sở cho việc thiết kế mô hình hệ thống bảo mật của đề tài, bao gồm:
• DES: Một giải thuật được IBM phát triển từ 1973, sau đó đã trở thành chuẩn công nghiệp của NIST Hiện nay đã không còn an toàn do độ dài khóa nhỏ (56 bits) Tuy nhiên, DES là cơ sở của phiên bản mở rộng Triple-DES (3DES) hiện cũng đang là chuẩn mã hóa an toàn của NIST (và thế giới)
• 3DES: Mở rộng từ DES, nhằm tăng độ an toàn, và tận dụng được ưu điểm về tốc độ và khả năng dễ hiện thực của DES Dùng 3 khóa 56 bits nên tổng chiều dài khóa là : 112 bits, hoặc 168 bits
• RC5/RC6: RC5 là giải thuật mã hóa khối rất mạnh do Ronald Rivest (viện công nghệ MIT, USA) thiết kế cho RSA Security Inc Giải thuật rất uyển chuyển với các tham số thay đổi được: chiều dài khóa (0 –
2048 bits), chiều dài khối mã hóa (64, 128 bits),số vòng lặp (0 – 255)
Trang 24RC6 là phiên bản cải tiến dựa trên RC5, do Rivest và Sidney, Yin (thuộc RSA Laboratory) thiết kế cho RSA Security inc Làm ứng cử viên cho chuẩn mã hóa cao cấp (AES) của NIST, là một trong 5 giải thuật lọt vào vòng chung kết
• AES (Rijndael): Chuẩn mã hóa cao cấp của NIST, giải thuật Rijndael,
độ an toàn và tốc độ mã hóa rất cao, có khả năng mở rộng khóa và kích thước khối mã hóa (hiện nay NIST quy định chiều dài khóa :
128, 192, 256 bits) Một giải thuật rất mạnh,kết hợp hài hòa độ an toàn và hiệu quả
2.2.1 DES (Data Encryption Standard)
Giới thiệu
DES – Data Encryption Standard, phát triển bởi IBM, là một cải tiến từ giải thuật LUCIFER DES được công nhận là chuẩn công nghiệp của NIST (FIPS 46-3) và ANSI (X9.52) dụng rộng rãi từ 1977 đến 1994, về sau do độ an toàn không còn đủ do nền công nghệ thông tin phát triển nên đang dần được thay thế bởi phiên bản cải tiến là TDES, và các giải thuật tiên tiến hơn (RC5, RC6, Rijndael,…) Tuy nhiên, hiện DES vẫn còn được sử dụng trong một số trường hợp không đòi hỏi độ an toàn cao (do dữ liệu được mã hóa chỉ có ý nghĩa trong thời gian ngắn, hoặc dữ liệu có tầm quan trọng không cao,…) DES được đề cập đến ở đây vì nó là một ví dụ tốt cho một giải thuật mã hóa khóa đối xứng hay, và là cơ sở của 3DES
Mô tả giải thuật
Nguyên tắc mã hóa:
Mã hóa từng khối 64 bits plaintext, bằng khóa K dài 56 bits (thực chất là 64 bits, nhưng 8 bits được dùng kiểm tra parity), tạo ra khối ciphertext 64 bits Nguyên tắc giải mã:
Thực hiện các bước tính toán tương tự sơ đồ mã hóa, áp dụng trên ciphertext, với cùng khóa K, tuy nhiên quá trình sinh các khóa trung gian Ki (key schedule) thực hiện ngược lại, để nhận được plaintext ban đầu
Trang 25Thuật toán mã hóa (encryption):
Thuật toán mã hóa DES có thể chia làm 3 giai đoạn:
1 Với plaintext x, tạo chuỗi bit x 0 bằng cách hoán vị chuỗi bit của x theo
một ma trận hoán vị IP (giá trị cố định trong giải thuật)
Tức là : x0 = IP(x) = L0 R0
(L0 : 32 bits đầu, R0 : 32 bits cuối của x0)
2 Thực hiện lặp 16 lần quá trình tính toán sau:
Với1 ≤ i ≤ 16 : Li = Ri-1
Ri = Li-1 ⊕f(Ri-1, Ki)ghi chú :
⊕ toán tử XOR
f hàm f, được mô tả dưới đây
Ki Chuỗi 48 bits tính từ K (key schedule)
3 Áp dụng ma trận hoán vị nghịch đảo IP-1 vào chuỗi bit R16L16 , thu được
kết quả mã hóa (ciphertext) y = IP-1(R16L16)
Hình 2.1 – DES, sơ đồ tính toán trong 1 vòng lặp
Trang 26R : chuỗi 32 bits
J : chuỗi 48 bits
f(R,J) : chuỗi 32 bits
Các bước thực hiện của hàm f(R, J) :
1 R được mở rộng thành 48 bits thông qua biến đổi E(R) E(R) thực chất là một sắp xếp của R với các bit xuất hiện lại 2 lần, theo ma trận E (cố định trong giải thuật DES)
2 Tính E(R) ⊕ J, kết quả phân thành 8 khối 6-bit : B1, B2, … B8
3 Dùng 8 S-box : S1, S2, … S8, mỗi Si là một ma trận 4x16 có các phần tử
là các số nguyên từ 0 – 15 Từ Bi và Si , tính kết quả Ci = Si(Bi) dài 4-bit như sau : gọi Bi = b1b2b3b4b5b6 2 bit b1b2 xác định hàng r của Si (0 < r < 3), và 4 bit b3b4b5b6 xác định cột c của Si (0 < c < 15) Như vậy, Si(Bi) chính là phần tử Si (r,c) được biểu diễn dưới dạng 4-bit
4 Chuỗi bit C = C1C2C3C4C5C6C7C8 có chiều dài 32 bits được hoán vị nhờ
Trang 27Tính chuỗi khóa Ki (Key schedule):
Như đã nêu trên, khóa K thực chất có chiều dài 64 bits, trong đó 8 bits (bit thứ 8, 16,… 64) dùng để kiểm tra parity, các bit này không sử dụng trong phần tính toán của Ki
1 Với khóa K 64 bits, bỏ 8 bits parity, thực hiện phép hoán vị với ma trận PC-1 (không đổi): PC-1(K) = C0D0 (C0 và D0 là 28 bits đầu và cuối)
Dn
D16
C 1
Trang 28Hình 2.3 – DES, sơ đồ tính toán K i (key schedule)
Như vậy, các giá trị cố định (hằng) của giải thuật DES là:
• Hoán vị khởi động IP và nghịch đảo IP-1
• Ma trận E
• 8 S-boxes : S1, S2, … S8
• Ma trận hoán vị P
• 2 ma trận hoán vị trong key schedule : PC-1, PC-2
Các giá trị trên có thể tham khảo trong [8]
Toàn bộ quá trình mã hóa của DES thể hiện trong sơ đồ sau:
Trang 29Thuật toán giải mã (decryption)
Bây giờ input của quá trình là ciphertext nhận được qua quá trình mã hóa ở trên, thực hiện các bước giống hệt quá trình mã hóa Tức là: input của giai đoạn 1 sẽ là ciphertext (y) Do y được tạo ra bằng hoán vị với ma trận IP-1
nên sau khi thực hiện bước 1 (với IP) thì output của bước 1 chính là R 16 L 16
Giai đoạn 2, lặp 16 lần, input là R 16 L 16, như vậy phép toán mỗi lần lặp là:
Ri-1 = Li
Li-1 = Ri ⊕ f(Li, Ki-1)
Lưu ý, chuỗi Ki bây giờ được sử dụng theo trình tự ngược lại: K16, K15,…K1
Và cuối cùng, output của giai đoạn 2 là : L0R0 = x0
Giai đoạn 3, hoán vị với ma trận IP-1 sẽ cho ra kết quả x = IP-1(x0)
Các kiểu hoạt động (modes of operation)
DES có thể làm việc với 4 cách hiện thực như sau :
ECB (electronic codebook)
Đây là cách hiện thực theo kiểu mã hóa khối (block cipher) thông thường,
mã hóa từng khối plaintext X1X2X3… bằng cùng một khóa K thành chuỗi các khối ciphertext Y1Y2Y3…
CBC (cipher block chaining)
Mỗi khối ciphertext y i được XOR với khối plaintext x i+1 kế tiếp trước khi
được mã hóa với khóa K
Y0 = IV (hằng) (Initial Vector)
Yi = eK (Yi-1 ⊕ Xi), với i ≥1
Trang 30Hình 2.5 – DES’s CBC mode
CFB (cipher feedback) & OFB (output feedback)
Đây là kiểu mã hóa stream cipher (đã giới thiệu ở phần 3.1), trong quá trình
mã hóa, tạo một chuỗi các khóa Zi bằng cách mã hóa khối ciphertext trước
đó, rồi mới XOR với khối plaintext kế tiếp
Trang 31Hình 2.6 – CFB mode (stream cipher)
Trong các mode CBC và CFB, nếu có một thay đổi trong khối plaintext X i nào đó, thì khối ciphertext tương ứng y i và tất cả những khối ciphertext phía
sau đều bị thay đổi Do đó 2 mode này có thể ứng dụng được trong việc xác nhận tính đúng đắn của dữ liệu, và được dùng để tạo mã kiểm soát dữ liệu MAC (Message Authentication Code) Khi gửi dữ liệu, ta tạo MAC và gửi cùng với nó, phía người nhận thực hiện DES trên dữ liệu để tạo lại MAC, nếu MAC được tạo lại khác với MAC đi kèm theo thì tức là đã có sự thay đổi
dữ liệu trên đường truyền
Tin tặc (hacker) thường không thể tạo lại MAC trên dữ liệu đã thay đổi, vì không biết khóa K (chỉ người nhận và gửi biết)
Đánh giá mô hình DES
Trang 32Theo giải thuật trên, quá trình mã hóa của DES bao gồm các phép toán XOR,
hoán vị,… là các phép toán tuyến tính, thường có khả năng giải ngược lại
(ví dụ : X ⊕ Y = Z Æ Z ⊕ Y = X) , ngoại trừ các phép toán với 8 S-box là không tuyến tính Do đó các S-box này chính là phần cốt lõi về an toàn của giải thuật
DES được thiết kế và sử dụng từ những năm 70, với chiều dài khóa 56 bits (tương đương 256 = 1016 khóa có thể có) cũng được xem là an toàn đối với nền công nghệ thông tin thời kỳ đó Tuy nhiên bắt đầu từ thập niên 90 thì DES đã không còn tính an toàn, và đã dần bị thay thế bởi phiên bản mở rộng 3DES, với tổng chiều dài khóa lên đến 168 bits (tương đương 1050 khóa) Một ví dụ về độ an toàn:
Với giải thuật 3DES có khóa dài 168 bits, không gian khóa là 2168, giả sử:
17,7 nghìn tỷ phép tính/giây (tương đương khoảng 10 13 MIPS) mỗi máy
PowerEdge chạy 2 bộ vi xử lý Intel Xeon DP 3,06 GHz
Như vậy, giả sử siêu máy tính này mỗi giây thử được : 1013 khóa
một năm (3*107 giây) Æ 1013.107 = 1020 khóa Như vậy, để thử hết 1050 khóa của 3-DES (168 bits) thì siêu máy tính này cần
10 30 năm Điều này là dường như không còn ý nghĩa
Tốc độ thực thi (performance )
Với các phép tính và giải thuật đơn giản, DES có tốc độ mã hóa/giải mã rất cao Tại thời điểm 1985 đã đạt tốc độ mã hóa trên 1Gbits/giây (lúc này giải thuật mã hóa bất đối xứng (dùng khóa công khai) RSA chỉ đạt tốc độ 600
Trang 33Kbits/giây) Trong chu kỳ mã hóa của DES, quá trình biến đổi với các S-box
có thể hiện thực song song, tăng tốc độ đáng kể
Tính đơn giản, dễ hiện thực (simplicity)
Đây cũng là những ưu điểm của DES, khả năng hiện thực dễ dàng trên cả phần mềm lẫn phần cứng, với số lượng code nhỏ gọn, thích hợp trong mọi trường hợp, từ những thiết bị có RAM/ROM dung lượng thấp, chip tốc độ thấp như smartcard, cho đến các server khổng lồ
DES đã được ứng dụng rộng rãi trong lĩnh vực giao dịch ngân hàng (bank transaction) : mã hóa PIN code và số tài khoản người dùng trên thẻ ATM, mã hóa/giải mã giao dịch giữa các trạm ATM (automatic teller machine) và ngân hàng Ngoài ra, DES còn được ứng dụng trong các lĩnh vực khác có nhu cầu bảo mật (vệ tinh, năng lượng,…)
Kết luận & ứng dụng
Dù có rất nhiều ưu điểm, nhưng nhược điểm lớn nhất của DES lại là độ an toàn, điểm quan trọng nhất đối với một mô hình mật mã Do đó, giải thuật DES nêu ở đây chỉ làm cơ sở cho phiên bản cải tiến 3DES, mà không sử dụng một cách độc lập trong hệ thống bảo mật được thiết kế trong đề tài này
2.2.2 Triple-DES (TDES, 3DES)
Giới thiệu
Triple-DES, hay TDES, hay 3DES, là phiên bản cải tiến của DES, nhằm tăng
độ an toàn, với việc sử dụng 3 khóa trong quá trình mã hóa/giải mã, mỗi khóa dài 56 bits (như của DES) Do đó tổng chiều dài khóa của 3DES lên đến 168 bits
Hiện nay 3DES đang là chuẩn công nghiệp của NIST (và ANSI X9.52) từ năm 1999, đang áp dụng rộng rãi ở Mỹ và nhiều nước trên thế giới
Giải thuật
Trang 34Quá trình mã hóa và giải mã của 3-DES hoàn toàn dựa trên giải thuật của DES, nhưng qua 3 giai đoạn, với 3 khóa (khác nhau)
Input và Output của 3DES do đó cũng là khối plaintext dài 64 bits
Gọi I : input block (64 bits)
O : output block (64 bits)
K i : các khóa, dài 56 bits (i=1,2,3)
E K : ký hiệu hàm mã hóa DES với khóa K
D K : ký hiệu hàm giải mã DES với khóa K
3DES có độ an toàn cao hơn nhiều so với DES, và với tổng chiều dài khóa
168 bits, 3DES được ước tính còn an toàn trong khoảng một thập niên nữa
Tốc độ thực thi (performance)
Với việc thực hiện 3 vòng mã hóa - giải mã – mã hóa theo giải thuật DES, tốc độ thực thi của 3DES đã giảm khoảng 3 lần so với DES Tuy nhiên, so với nhiều giải thuật mã hóa khác (đặc biệt các giải thuật khóa bất đối xứng như: RSA, ElGamal…) thì 3DES vẫn có tốc độ vượt trội
Tính đơn giản, dễ hiện thực (simplicity)
Tính đơn giản của 3DES gần như tương đương với DES, nên đây cũng là một ưu điểm lớn so với các giải thuật khác
Trang 35Kết luận & ứng dụng trong đề tài
Hiện đang là chuẩn mã hóa, hiện thực trong hầu hết các hệ thống bảo mật, đặc biệt là thương mại điện tử (e-commerce) như : ngân hàng, ATM,… và các hệ thống máy tính chuyên dụng khác như : cơ sở dữ liệu (Oracle), truyền nhận file, mã hóa thư điện tử (email encryption), giao thức Internet (SSL) 3DES cũng là một chọn lựa trong thiết kế bảo mật của đề tài, cùng với các giải thuật tiên tiến khác (AES, RC6,…) Đây là một tùy chọn, nhằm tăng tính linh hoạt và tính mở của hệ thống
quay vòng phụ thuộc vào dữ liệu đầu vào (data-dependant rotations) và hầu
hết các tham số đều có khả năng thay đổi linh động, làm tăng đáng kể độ an toàn của giải thuật Tuy nhiên những phiên bản đầu vẫn có nhiều thiếu sót, cho đến 1997 đã khá hoàn chỉnh
RC5 có các tham số thay đổi được như sau:
¾ Kích thước word xử lý : 16,32, hay 64 bits Chọn phù hợp với các bộ
xử lý 16, 32 hay 64bits để đạt hiệu suất cao nhất
¾ Số vòng lặp : từ 0 Æ 255, thay đổi số vòng lặp để thay đổi độ an toàn cho từng ứng dụng cụ thể
¾ Chiều dài khóa : từ 0 Æ 2048 bits, thường dùng là 128, 192, hay 256 bits Thay đổi chiều dài khóa đồng nghĩa với việc thay đổi độ an toàn
Mô tả giải thuật
Định nghĩa
RC5 thường được ký hiệu như RC5-w/b/r, với 3 tham số thay đổi được:
Trang 36w Kích thước của word mã hóa (giá trị chuẩn là 32 bits, tuy
nhiên các giá trị có thể dùng là : 16, 32, 64 bits) RC5 mã hóa
2 words một lần, nên kích thước khối mã hóa là 2w
r Số vòng lặp (0…255)
b Chiều dài khóa tính, bằng bytes (0…255)
RC5 xử dụng các phép toán cơ bản đối với hầu hết các bộ xử lý như sau: a+b phép cộng modulo 2w (phép modulo cho một số x bits
thực chất là việc giữ lại x bits thấp nhất của số đó)
a-b phép trừ module 2w
a ⊕ b phép toán XOR (bitwise)
a<<<b quay vòng a sang trái b bits (modulo w) Khi w là lũy
thừa của 2 thì chỉ dùng (log2w) bits thấp của b để tính số bit cần quay a
a>>>b tương tự trên, quay vòng phải
Trước khi thực hiện quá trình mã hóa và giải mã, RC5 thực hiện một quá trình gọi là mở rộng khóa (key expansion) để tạo một mảng S có 2(r+1) phần
tử từ khóa K ban đầu Quá trình tạo S[i] từ K là một chiều
Trang 37Hình 2.7 – Mã hóa 2 words A, B (w bits) của RC5
Giải thuật mã hóa:
Quay tròn trái
Lặp
r lần
Trang 38Quá trình giải mã
Là quá trình ngược lại của quá trình mã hóa (chú ý: mảng khóa mở rộng S là
input của quá trình giải mã, do đó hacker không thể giải ngược lại do không tính được S)
Giải thuật giải mã:
¾ A, B : Plaintext (2 words, mỗi word dài w bits)
Quá trình mở rộng khóa (Key expansion)
Mở rộng khóa là một quá trình cốt lõi của RC5, nhằm làm tăng độ an toàn của việc sử dụng khóa trong quá trình mã hóa Quá trình mở rộng khóa được
For i=r downto 1 do {
B’ = ((B’ – S [2i+1]) >>>A’) ⊕ A’
A = ((A’ –S[2I]) >>>B’) ⊕ B’
}
B=B’ – S[1]
A=A’ – S[0]
Trang 39thiết kế như là hàm một chiều nên rất khó có thể suy ngược giá trị của khóa
K khi biết giá trị của khóa mở rộng
Thuật toán mở rộng khóa sinh ra một mảng 2(r+1) phần tử khóa trung gian từ khóa K ban đầu Các giá trị của khóa trung gian này là sự kết hợp giữa các giá trị ngẫu nhiên được quyết định bởi khóa K Nó sử dụng 2 hằng số sau, gọi là số “kỳ diệu” (magic constants):
u=w/8 Số bytes của 1 word w-bit
c=b/u Số nhóm u-byte của khóa (có b bytes)
Quá trình mở rộng khóa bao gồm các bước sau:
Trang 40Bước 3:
Trộn khóa bí mật K vào mảng L và S
A=B=0 i=j=0 N=3*max{c,t}
For n=1 to N do A=S[i]= (S[i]+ A+B) <<<3 B=L[i]=(L[i]+A+B) <<<(A+B) i=(i+1) mod (t)
S[i] = S[i-1]+Qw A=B=0
i=j=0 N=3 * max {c,t}
For n=1 to N do
A=S[i]=(S[i] +A+B) i=(i+1) mod (t) j= (j+1) mod (c)