BỘ GIÁO DỤC VÀ ĐÀO TẠO
BỘ QUỐC PHÒNG
VIỆN KHOA HỌC VÀ CÔNG NGHỆ QUÂN SỰ
NGUYỄN VĨNH THÁI
NGHIÊN CỨU PHÁT TRIỂN HỆ MẬT MÃ KHÓA CÔNG KHAI
DỰA TRÊN BÀI TOÁN LOGARIT RỜI RẠC VÀ PHÂN TÍCH SỐ
LUẬN ÁN TIẾN SĨ TOÁN HỌC
Hà Nội - 2025
BỘ GIÁO DỤC VÀ ĐÀO TẠO
BỘ QUỐC PHÒNG
VIỆN KHOA HỌC VÀ CÔNG NGHỆ QUÂN SỰ
NGUYỄN VĨNH THÁI
NGHIÊN CỨU PHÁT TRIỂN HỆ MẬT MÃ KHÓA CÔNG KHAI
DỰA TRÊN BÀI TOÁN LOGARIT RỜI RẠC VÀ PHÂN TÍCH SỐ
Ngành: Cơ sở toán học cho tin học
Mã số: 9.46.01.10
LUẬN ÁN TIẾN SĨ TOÁN HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC:
1. PGS.TS Bạch Nhật Hồng 2. TS Lưu Hồng Dũng
Hà Nội - 2025
i
LỜI CAM ÐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, các kết quả
nghiên cứu là trung thực và chưa được công bố trong bất kỳ công trình nào
khác. Các dữ liệu tham khảo được trích dẫn đầy đủ.
Hà Nội, ngày 06 tháng 3 năm 2025
Tác giả luận án
Nguyễn Vĩnh Thái
ii
LỜI CẢM ƠN
Luận án này được thực hiện tại Viện KH-CN quân sự/BTTM. Lời đầu
tiên, NCS xin bày tỏ lời cảm ơn đến PGS.TS Bạch Nhật Hồng, TS Lưu Hồng
Dũng, các thầy đã tận tình giúp đỡ định hướng, trang bị cho NCS phương pháp
nghiên cứu, kinh nghiệm, kiến thức khoa học và kiểm tra, đánh giá các kết quả
nghiên cứu của NCS.
Cho phép nghiên cứu sinh chân thành cảm ơn các thầy cô giáo trong
Viện Công nghệ thông tin/Viện KH-CN quân sự, Viện KH-CN quân sự,… đã
giảng dạy, truyền đạt kiến thức và có nhiều đóng góp quý báu trong suốt thời
gian nghiên cứu sinh thực hiện luận án.
Nghiên cứu sinh chân thành cảm ơn Ban Giám đốc, Phòng Ðào tạo/ Viện
KH-CN quân sự đã tạo mọi điều kiện, hỗ trợ, giúp đỡ NCS trong quá trình học
tập, nghiên cứu và hoàn thành luận án.
Cuối cùng, xin bày tỏ lời cảm ơn tới đồng nghiệp, gia đình và bạn bè đã
luôn động viên, chia sẻ, ủng hộ và giúp đỡ nghiên cứu sinh trong suốt quá trình
học tập và nghiên cứu vừa qua.
Trân trọng
iii
MỤC LỤC
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT ........................................... vii
DANH MỤC CÁC BẢNG............................................................................... ix
DANH MỤC CÁC HÌNH VẼ .......................................................................... x
MỞ ĐẦU ........................................................................................................... 1
Chương 1 TỔNG QUAN VỀ HỆ MẬT KHÓA CÔNG KHAI ....................... 7
1.1. Hệ mật ........................................................................................................ 7
1.2. Bài toán phân tích số, khai căn và hệ mật RSA ......................................... 8
1.2.1. Bài toán phân tích số ............................................................................... 8
1.2.2. Hệ mật RSA .......................................................................................... 10
1.2.3. Bài toán khai căn trên Z𝑛 ...................................................................... 12
1.2.4. Tấn công hệ mật RSA ........................................................................... 13
1.3. Bài toán logarit rời rạc và hệ mật ElGamal ............................................. 14
1.3.1. Bài toán logarit rời rạc trên ℤ𝑝 .............................................................. 14
1.3.2. Hệ mật ElGamal .................................................................................... 15
1.4. Một số lược đồ chữ ký số ......................................................................... 16
1.5. Giao thức trao đổi khóa ............................................................................ 20
1.5.1. Một số khái niệm ................................................................................... 20
1.5.2. Giao thức trao đổi khóa Diffie-Helman ................................................ 22
1.5.3. Đánh giá độ an toàn của giao thức DHKE ............................................ 24
1.5.4. Một số tính chất an toàn của giao thức trao đổi khóa ........................... 26
1.5.5. Điều kiện phát triển giao thức trao đổi khóa an toàn ............................ 30
1.6. Một số giao thức trao đổi khóa an toàn .................................................... 31
1.6.1. Giao thức trao đổi khóa Arazi ............................................................... 31
1.6.2. Giao thức trao đổi khóa L. Harn ........................................................... 33
1.6.3. Giao thức trao đổi khóa Phan ................................................................ 35
1.7. Đánh giá chung về hướng nghiên cứu ..................................................... 37
iv
1.7.1. Các công trình liên quan đến lược đồ dựa trên 01 bài toán khó ........... 37
1.7.2. Các công trình liên quan đến lược đồ dựa trên 02 bài toán khó ........... 38
1.7.3. Các công trình liên quan đến phát triển giao thức trao đổi khóa .......... 40
1.8. Yêu cầu hệ mật ......................................................................................... 43
1.9. Hướng nghiên cứu của đề tài luận án ....................................................... 44
1.10. Kết luận Chương 1 ................................................................................. 45
Chương 2 XÂY DỰNG HỆ MẬT KHÓA CÔNG KHAI DỰA TRÊN TÍNH...
KHÓ CỦA BÀI TOÁN LOGARIT RỜI RẠC ............................................... 46
2.1. Thuật toán sinh tham số hệ thống ............................................................ 47
2.2. Thuật toán hình thành khóa ...................................................................... 48
2.3. Xây dựng lược đồ chữ ký số .................................................................... 51
2.3.1. Qui trình ký ........................................................................................... 51
2.3.2. Qui trình kiểm tra chữ ký ...................................................................... 53
2.3.3. Thuật toán sinh chữ ký TT-K-01 .......................................................... 55
2.3.4. Thuật toán kiểm tra chữ ký TT-KT-01 ................................................. 56
2.3.5. Tính đúng đắn của lược đồ chữ ký số ................................................... 57
2.3.6. Độ an toàn của lược đồ chữ ký số ......................................................... 57
2.3.7. Hiệu quả thực hiện ................................................................................ 58
2.4. Thuật toán mã hóa, giải mã - xác thực dựa trên bài toán logarit rời rạc .. 60
2.4.1. Thuật toán mã hóa TT-MH-01 .............................................................. 60
2.4.2. Thuật toán giải mã - xác thực TT-GM-01............................................. 60
2.4.3. Tính đúng đắn của thuật toán TT-MH-01; TT-GM-01 ......................... 61
2.4.4. Độ an toàn và hiệu quả .......................................................................... 61
2.5. Xây dựng giao thức trao đổi khóa ............................................................ 63
2.5.1. Giao thức trao đổi khóa TT-TDK-01 .................................................... 63
2.5.2. Tính đúng đắn của giao thức TT-TDK-01 ............................................ 64
2.5.3. Độ an toàn của giao thức TT-TDK-01 .................................................. 65
v
2.5.4. Hiệu quả thực hiện của TT-TDK-01 ..................................................... 67
2.6. Kết luận Chương 2 ................................................................................... 71
Chương 3 XÂY DỰNG HỆ MẬT KHÓA CÔNG KHAI DỰA TRÊN TÍNH...
KHÓ CỦA VIỆC GIẢI ĐỒNG THỜI 2 BÀI TOÁN..................................... 73
3.1. Phát triển lược đồ chữ ký số dựa trên hai bài toán khó ............................ 73
3.1.1. Lược đồ Rabin - Schnorr ....................................................................... 73
3.1.2. Lược đồ RSA - Schnorr ........................................................................ 75
3.1.3. Đánh giá ................................................................................................ 76
3.2. Xây dựng lược đồ chữ ký số .................................................................... 78
3.2.1. Thuật toán sinh chữ ký TT-K-02 .......................................................... 79
3.2.2. Thuật toán kiểm tra chữ ký TT-KT-02 ................................................. 79
3.2.3. Tính đúng đắn của lược đồ chữ ký số ................................................... 80
3.2.4. Độ an toàn của lược đồ chữ ký số ......................................................... 80
3.2.5. Hiệu quả thực hiện ................................................................................ 81
3.3. Thuật toán mã hóa, giải mã - xác thực dựa trên hai bài toán khó ......... 82
3.3.1. Thuật toán mã hóa TT-MH-02 .............................................................. 82
3.3.2. Thuật toán giải mã - xác thực TT-GM-02............................................. 83
3.3.3. Tính đúng đắn của thuật toán TT-MH-02; TT-GM-02 ......................... 83
3.3.4. Độ an toàn của thuật toán TT-MH-02; TT-GM-02 .............................. 84
3.4. Mã hóa có thể chối từ ............................................................................ 86
3.5. Xây dựng giao thức trao đổi khóa ......................................................... 88
3.5.1. Giao thức trao đổi khóa TT-TDK-02 .................................................... 89
3.5.2. Tính đúng đắn của giao thức TT-TDK-02 ............................................ 90
3.5.3. Độ an toàn của giao thức TT-TDK-02 .................................................. 92
3.5.4. Hiệu quả thực hiện của TT-TDK-02 ..................................................... 94
3.6. Kết luận Chương 3 ................................................................................. 95
KẾT LUẬN ..................................................................................................... 97
vi
DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC ÐÃ CÔNG BỐ ................ 99
TÀI LIỆU THAM KHẢO ............................................................................. 100
vii
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT
𝜑 𝜙(𝑛)
i | j x||y ⌊𝑥⌋ | || ⌊. ⌋
𝑔𝑐𝑑(𝑖, 𝑗)
DHKE DLP DSA DSS 𝑔𝑐𝑑 ℎ, 𝐻
IFP 𝑘 KCI 𝑙𝐻 𝑙𝑝
Số các phần tử của tập hợp các số nguyên trong khoảng [1, 𝑛] và nguyên tố cùng nhau với n, hay gọi là hàm Euler. i là ước số của j . x nối với y theo thứ tự nhất định. Kết quả là số nguyên lớn nhất nhỏ hơn hoặc bằng 𝑥. Giao thức trao đổi khoá Diffie–Hellman. Bài toán logarithm rời rạc. Thuật toán chữ ký số. Chuẩn chữ ký số. Ước số chung lớn nhất của i và j. Hàm băm, một trong những cơ chế được chỉ định trong ISO/IEC 10118 [53]. Bài toán phân tích số nguyên. Khóa bí mật 𝑘. Mạo danh thỏa hiệp khóa (khóa bị lộ). Độ dài đầu ra của hàm băm 𝐻 tính theo bit. Độ dài tính theo bit của số nguyên tố (hoặc lũy thừa nguyên tố) p. Độ dài tính theo bit của số nguyên tố q. Phần dư của phép chia a cho m a mod m
𝑙𝑞 mod mod, ≡ 𝑎 ≡ 𝑏𝑚𝑜𝑑𝑚 𝑎𝑚𝑜𝑑𝑚 = 𝑏𝑚𝑜𝑑𝑚 mod, ≢ 𝑎 ≢ 𝑏𝑚𝑜𝑑𝑚 𝑎𝑚𝑜𝑑𝑚 ≠ 𝑏𝑚𝑜𝑑𝑚 NCS 𝑝
số nguyên là ước số tố của 𝑞
Texp
Nghiên cứu sinh Một số nguyên tố hoặc lũy thừa của một số nguyên tố Một 𝑝 − 1 Thời gian thực hiện phép toán mũ modulo (𝑚𝑜𝑑𝑝). Thời gian thực hiện hàm băm. Th
Thời gian thực hiện phép nhân modulo. Tmul
Tinv
Thời gian thực hiện phép nghịch đảo modulo (𝑚𝑜𝑑𝑞). Tấn công không biết khóa chia sẻ Tập các số nguyên 𝑖 với 0 < 𝑖 < 𝑝 và 𝑝 là số UKS ∗ ℤ𝑝
viii
∗ ℤ𝑁
nguyên tố, là nhóm nhân hữu hạn. i với 0 < 𝑖 < 𝑁 và Tập các số nguyên 𝑔𝑐𝑑(1, 𝑁) = 1, với số học được xác định theo modulo 𝑁.
ix
DANH MỤC CÁC BẢNG
Trang
Bảng 1.1. Tóm tắt thuật toán RSA .................................................................. 10
Bảng 1.2. Giao thức trao đổi khóa Arazi ........................................................ 32
Bảng 1.3. Giao thức trao đổi khóa L.Harn ...................................................... 34
Bảng 1.4. Giao thức trao đổi khóa Phan ......................................................... 35
Bảng 2.1. Độ dài an toàn tối thiểu của bài toán Diffie-Hellman .................... 47
Bảng 2.2. Độ dài an toàn tối thiểu của bài toán RSA ..................................... 49
Bảng 2.3. So sánh độ dài khóa, chữ ký của các lược đồ ................................. 58
Bảng 2.4. Chi phí thực hiện của các lược đồ chữ ký dựa trên DLP ............... 59
Bảng 2.5. Khuyến nghị độ dài khóa an toàn của NIST................................... 62
Bảng 2.6. Giao thức trao đổi khóa TT-TDK-01 ............................................. 64
Bảng 2.7. Thời gian thực hiện của các giao thức trên cơ sở DHKE ............... 69
Bảng 3.1. Chi phí thực hiện của các lược đồ chữ ký dựa trên DLP và IFP .... 81
Bảng 3.2. Giao thức trao đổi khóa TT-TDK-02 ............................................. 89
x
DANH MỤC CÁC HÌNH VẼ
Trang
Hình 1.1. Quy trình xác thực chữ ký số .......................................................... 16
Hình 1.2. Tạo và trao đổi khóa công khai ....................................................... 23
Hình 1.3. Tạo khóa bí mật chia sẻ ................................................................... 23
Hình 1.4. Giao thức Diffie-Hellman đầy đủ ................................................... 24
Hình 2.1. Qui trình ký với bằng chứng ngẫu nhiên ........................................ 52
Hình 2.2. Qui trình kiểm tra chữ ký với bằng chứng ngẫu nhiên ................... 54
1
MỞ ĐẦU
1. Tính cấp thiết của đề tài luận án
Từ những năm 2003, các quốc gia và tổ chức trên thế giới đã và đang
thúc đẩy Chính phủ điện tử và thương mại điện tử nhằm nâng cao năng lực
cạnh tranh, năng lực phục vụ công dân và được đo bằng chỉ số phát triển Chính
phủ điện tử (E-Government Development Index), theo thống kê của Liên hợp
Quốc tính tới tháng 7 năm 2024 Việt Nam xếp hạng 71/193 (với chỉ số 0.7709).
Để thực hiện mục tiêu của Chính phủ năm 2030 đưa Việt Nam thuộc nhóm 50
nước dẫn đầu cả về chỉ số tổng thể, chỉ số tham gia điện tử cũng như chỉ số dữ
liệu mở 50 nước dẫn đầu về Chính phủ điện tử thì nhiệm vụ bảo đảm an toàn,
an ninh mạng quốc gia là một trong sáu nhiệm vụ trọng tâm quốc gia.
Môi trường làm việc trên không gian mạng mang đến nhiều cơ hội nhưng
cũng phải đối mặt với những thách thức, chẳng hạn như an ninh mạng và quyền
riêng tư dữ liệu do hầu hết các thông tin quan trọng đều được lưu trữ và trao
đổi dưới hình thức điện tử như mã số tài khoản, thông tin mật,… và với các thủ
đoạn tinh vi thì nguy cơ những thông tin này bị đánh cắp qua mạng thật sự là
vấn đề đáng quan tâm.
Biện pháp bảo mật hiện nay như dùng mật khẩu đều không đảm bảo vì
có thể bị “đánh cắp”. Mặt khác, do các thông tin điện tử này không được xác
thực trong quá trình trao đổi nên khi bị sao chép hay sửa đổi sẽ không thể phát
hiện được. Và cũng từ đó hệ mật mã (viết gọn là hệ mật) được nghiên cứu, phát
triển nhằm đảm bảo các vấn đề an ninh, bảo mật, an toàn thông tin trên không
gian mạng.
Hệ mật được chia làm hai nhánh chính là hệ mật khóa bí mật (hệ mật
khóa đối xứng) và hệ mật khóa công khai (hệ mật khóa bất đối xứng). Trong
hệ mật khóa bí mật, quá trình mã hóa và giải mã một thông điệp sử dụng cùng
một khóa mã gọi là khóa bí mật (secret key) hay khóa đối xứng (symmetric
2
key). Do đó, vấn đề bảo mật thông tin đã mã hóa hoàn toàn phụ thuộc vào việc
giữ bí mật nội dung của khóa mã đã được sử dụng và gặp nhiều vấn đề khó
khăn khi trao đổi khóa mã.
Ngược lại, các phương pháp mã hóa khóa công khai giúp cho việc trao
đổi khóa mã trở nên dễ dàng hơn. Nội dung của khóa công khai (public key)
không cần phải giữ bí mật như hệ mật khóa bí mật. Sử dụng hệ mật khóa công
khai có thể thiết lập một quy trình an toàn để trao đổi khóa bí mật. Mã hóa khóa
công khai có thể được sử dụng để bảo mật, xác thực, hoặc cả hai. Nhưng
phương pháp này tốn nhiều tài nguyên hơn rất nhiều so với mã hóa khóa đối
xứng, do vậy để truyền tin mã hóa khóa đối xứng vẫn là phương pháp chính.
Năm 1977, Rivest, Shamir và Adleman dựa trên ý tưởng của hệ mật khóa
công khai được Diffie và Hellman [103] đã đề xuất một hệ mật RSA nổi tiếng
dựa trên độ khó của bài toán phân tích một số lớn ra thừa số nguyên tố (bài toán
IFP - Integer Factorization Problem). Và kể từ đó có một số hệ mật khóa công
khai khác được công bố như hệ mật ElGamal dựa vào độ khó bài toán logarithm
rời rạc năm 1984 (bài toán DLP - Discrete Logarithm Problem), Merkle-
Hellman dựa trên bài toán tổng các tập con, hay dựa trên bài toán đường cong
Elliptic. Hầu hết các hệ mật khóa công khai hiện nay đều dựa trên tính khó của
các bài toán: phân tích một số nguyên lớn ra thừa số nguyên tố, bài toán logarit
rời rạc và bài toán khai căn.
Việc nghiên cứu, xây dựng riêng những hệ mật mới đáp ứng được mục
tiêu, yêu cầu về an toàn, bảo mật thông tin của các quốc gia và liên thông quốc
gia. Ứng dụng hiệu quả trong các lĩnh vực là cần thiết và thực sự cấp thiết.
Xuất phát từ thực tiễn nêu trên, NCS chọn đề tài “Nghiên cứu phát triển
hệ mật mã khóa công khai dựa trên bài toán logarit rời rạc và phân tích
số” với mong muốn có những đóng góp vào sự phát triển khoa học và công
nghệ trong lĩnh vực an toàn và bảo mật thông tin của nước ta nói chung và trong
3
lĩnh vực quốc phòng an ninh nói riêng.
2. Mục tiêu nghiên cứu
Với tính cấp thiết đã phân tích, mục tiêu chính của đề tài luận án là đề
xuất 02 hệ mật khóa công khai an toàn, hiệu quả. Để đạt được mục tiêu chính
này, cần thực hiện các mục tiêu cụ thể sau:
- Nhằm đảm bảo an toàn, hiệu suất cao đề xuất phát triển mới 01 hệ mật
bao gồm: 01 lược đồ chữ ký số, 01 thuật toán mã hóa-xác thực, 01 giao thức
trao đổi khóa từ cách hệ mật Elgamal và các thuật toán chữ ký số được xây
dựng dựa trên tính khó của bài toán DLP (như DSA phát triển bởi Viện Tiêu
chuẩn và Công nghệ Quốc gia (NIST) của Hoa Kỳ và là một phần tiêu chuẩn
xử lý thông tin Liên bang (FIPS); KCDSA phát triển bởi một nhóm do Cơ quan
An ninh và Internet Hàn Quốc đứng đầu; GOST R 34.10-94 [42] của Ủy ban
Tiêu chuẩn Chính phủ Liên bang Nga; SDSA [66] được mô tả bởi Claus
Schnorr; Pointcheval/Vaudenay [80] mô tả bởi Pointcheval D và Vaudenay S).
- Nhằm nâng cao độ an toàn của hệ mật đề xuất phát triển mới 01 hệ mật
bao gồm: 01 lược đồ chữ ký số, 01 thuật toán mã hóa, 01 thuật toán mã hóa-
xác thực và 01 giao thức trao đổi khóa. Đề xuất xây dựng dựa trên tính khó của
việc giải đồng thời 2 bài toán khó bài toán logarit rời rạc và phân tích số.
- Các giao thức trao đổi khóa được đề xuất chỉ sử dụng mã hóa mà không
sử dụng phương pháp ký rồi mã hóa (signature-then-encryption) hoặc ký và mã
hóa đồng thời (signcryption) nhằm giảm độ phức tạp của giao thức và giảm
kích thước của thông điệp ban đầu nhưng vẫn đảm bảo tính bảo mật của cả mã
hóa và chữ ký số: bảo mật, toàn vẹn, không thể chỉnh sửa và chống chối từ.
- Cho phép nhiều thực thể cuối sử dụng chung một 𝑚𝑜𝑑𝑢𝑙𝑜𝑛, nghĩa là
chỉ cần tạo ra một cặp tham số (𝑝, 𝑞) duy nhất cho tất cả các thực thể cuối.
Ngoài ra, các tham số này không cần phải được giữ bí mật như ở hệ RSA mà
vẫn có thể chống lại các dạng tấn công đã biết trong thực tế, đảm bảo độ an
4
toàn của hệ thống.
3. Đối tượng và phạm vi nghiên cứu
Dựa trên mục tiêu đặt ra, luận án xác định các đối tượng và phạm vi
nghiên cứu như sau:
1. Cơ sở toán học của hệ mật khóa công khai.
2. Nghiên cứu nguyên lý xây dựng hệ mật khoá công khai và một số hệ
mật khoá công khai điển hình như: RSA, ElGamal.
Phạm vi nghiên cứu của luận án gồm: cách thức hình thành tham số hệ
thống và khóa; các chuẩn chữ ký số DSS của Mỹ và GOST của Nga; giao thức
trao đổi khóa an toàn; cơ sở toán học của các bài toán khó như bài toán logarit
rời rạc, phân tích một số nguyên lớn ra thừa số nguyên tố, bài toán khai căn.
4. Nội dung nghiên cứu
Trên cơ sở của định hướng và mục tiêu đã đặt ra, các nội dung nghiên
cứu chính của luận án bao gồm:
• Phương pháp xây dựng tham số dùng chung cho hệ thống (𝑝, 𝑞, 𝑔), xây
dựng khóa cho mỗi thực thể cuối gồm khóa bí mật và khóa công khai.
• Các số lược đồ chữ ký số phổ biến như: DSA, KCDSA, GOST R 34.10-
94, SDSA; Pointcheval/Vaudenay.
• Các lược đồ chữ ký số RSA, Rabin, Schnorr.
• Các họ giao thức trao đổi khóa có xác thực dựa trên phương pháp ký
và mã đồng thời.
5. Phương pháp nghiên cứu
Cách tiếp cận:
Nghiên cứu các phương pháp, kỹ thuật được áp dụng trong hệ mật khóa
công khai. Nghiên cứu bài toán logarit rời rạc, phân tích số, khai căn. Nghiên
cứu hệ mã RSA, ElGamal. Từ đó đề xuất giải pháp xây dựng hệ mật khóa công
khai mới nhằm đáp ứng mục tiêu luận án đã đề ra.
5
Phương pháp nghiên cứu, kỹ thuật sử dụng:
• Phương pháp phân tích và tổng hợp lý thuyết
• Phương pháp toán học
• Phương pháp mô hình hóa
• Phương pháp thực nghiệm
6. Ý nghĩa khoa học và thực tiễn
•Ý nghĩa khoa học: Luận án góp phần đề xuất một số giải pháp xây dựng
hệ mật khóa công khai đạt tính hiệu quả và độ an toàn chứng minh được.
• Ý nghĩa thực tiễn: Kết quả của luận án có thể được ứng dụng trong thực
tế nhằm đáp ứng nhu cầu trong các lĩnh vực kinh tế xã hội (với hệ mật xây dựng
dựa trên tính khó của bài toán DLP), an ninh quốc phòng và hệ thống chính trị
(với hệ mật xây dựng dựa trên tính khó của 02 bài toán DLP và phân tích số)
thúc đẩy xây dựng Chính phủ điện tử tại Việt nam.
7. Bố cục của luận án
Ngoài các phần mở đầu, kết luận, danh mục các công trình nghiên cứu,
bài báo đã được công bố của NCS liên quan đến các vấn đề nghiên cứu, tài liệu
tham khảo và 01 Phụ lục. Luận án gồm 03 chương, bố cục của từng chương
được thực hiện như sau:
• Mở đầu: Nêu ra tính cấp thiết của đề tài luận án; đề ra mục tiêu, nội
dung, phương pháp nghiên cứu và cách thức triển khai đề tài luận án; chỉ ra ý
nghĩa khoa học và thực tiễn của đề tài luận án.
• Chương 1 phân tích các yêu cầu của thực tế, khái quát các nội dung về
hệ mật khóa công khai. Trên cơ sở toán học trình bày một số vấn đề liên quan
đến xây dựng tham số hệ thống, khóa, lược đồ chữ ký số, giao thức trao đổi
khóa, những vấn đề tồn tại của những nghiên cứu đã có và định hướng nghiên
cứu của đề tài.
6
• Chương 2 ngoài việc xây dựng thuật toán hình thành tham số hệ thống
và khóa đề xuất xây dựng mới hệ mật, bao gồm: 01 thuật toán mã hóa khóa
công khai; 01 lược đồ chữ ký số; 01 thuật toán mã hóa - xác thực; 01 giao thức
trao đổi khóa an toàn cho các hệ mật khóa đối xứng mà chỉ cần đảm bảo bằng
độ khó của bài toán logarit rời rạc song lại có hiệu quả thực hiện cao hơn các
thuật toán đã được phát triển trước đó.
• Chương 3 dựa trên tính khó của việc giải đồng thời 2 bài toán logarit
rời rạc và phân tích số đề xuất xây dựng mới hệ mật, bao gồm: thuật toán hình
thành tham số hệ thống và khóa; 01 thuật toán mã hóa - xác thực; 01 thuật toán
giải mã; 01 lược đồ chữ ký số; 01 giao thức trao đổi khóa an toàn cho các hệ
mật khóa đối xứng.
Các thuật toán tại Chương 2 và 3 đều được phân tích, chứng minh tính
đúng đắn, mức độ an toàn và so sánh hiệu quả thực hiện với các thuật toán đã
công bố. Đồng thời xác thực nguồn gốc văn bản điện tử, cũng như đảm bảo
việc xác thực.
• Kết luận: Đánh giá các kết quả đạt được và nêu ra định hướng phát
triển của đề tài luận án.
Phụ lục: Trình bày các tham số được sử dụng trong quá trình thử
nghiệm.
7
Chương 1
TỔNG QUAN VỀ HỆ MẬT KHÓA CÔNG KHAI
Chương này giới thiệu tổng quan về bài toán phân tích số, bài toán khai
căn, bài toán logarit rời rạc; phân tích độ an toàn và các hình thức tấn công đối
với các bài toán này; một số định nghĩa và các yêu cầu an toàn đối với hệ mật,
lược đồ chữ ký số, giao thức trao đổi khóa; phân tích xu hướng nghiên cứu,
phát triển của các hệ mật khóa công khai. Từ đó, đề xuất phát triển hệ mật khóa
công khai dựa trên tính khó của việc giải đồng thời bài toán logarit rời rạc với
bài toán phân tích số/khai căn hoặc chỉ duy nhất bài toán logarit rời rạc. Nội
dung Chương 1 cũng thống nhất một số khái niệm và thuật ngữ liên quan được
sử dụng trong luận án.
1.1. Hệ mật
Một hệ mật là một bộ 5 (𝐷, 𝐸, 𝐾, 𝐶, 𝑃) thoả mãn các điều kiện sau:
- 𝑃 là một tập hữu hạn các bản rõ.
- 𝐶 là một tập hữu hạn các bản mã.
- 𝐾 là tập hữu hạn các khoá.
- 𝐸 là tập hữu hạn các qui tắc mã hóa.
- 𝐷 là tập hữu hạn các qui tắc giải mã.
Đối với mỗi 𝑘 ∈ 𝐾, có một quy tắc mã hóa 𝑒𝑘 ∈ 𝐸 và một quy tắc giải
mã tương ứng 𝑑𝑘 ∈ 𝐷, mỗi 𝑒𝑘: 𝑃 → 𝐶 và 𝑑𝑘: 𝐶 → 𝑃 thỏa mãn:
(1.1) 𝑑𝑘(𝑒𝑘(𝑥)) = 𝑥 với ∀𝑥 ∈ 𝑃
hoặc:
Đối với mỗi 𝑘𝑝, 𝑘𝑠 ∈ 𝐾, có một quy tắc mã hóa 𝑒𝑘𝑝 ∈ 𝐸 và một quy tắc
giải mã tương ứng 𝑑𝑘𝑠 ∈ 𝐷, mỗi 𝑒𝑘𝑝: 𝑃 → 𝐶 và 𝑑𝑘𝑠: 𝐶 → 𝑃 thỏa mãn:
(1.2) 𝑑𝑘𝑠(𝑒𝑘𝑝(𝑥)) = 𝑥 với ∀𝑥 ∈ 𝑃
- Hệ mật thỏa mãn điều kiện (1.1) được gọi là hệ mật khóa bí mật.
- Hệ mật thỏa mãn điều kiện (1.2) được gọi là hệ mật khóa công khai.
8
Trong hệ mật khóa bí mật, quá trình mã hóa và giải mã một thông điệp
sử dụng cùng một khóa mã gọi là khóa bí mật (secret key) hay khóa đối xứng
(symmetric key). Do đó, vấn đề bảo mật thông tin đã mã hóa hoàn toàn phụ
thuộc vào các phương pháp giữ bí mật nội dung của khóa mã đã được sử dụng.
Nếu như vấn đề khó khăn đặt ra đối với các phương pháp mã hóa khóa
bí mật chính là bài toán trao đổi khóa mã thì ngược lại, các phương pháp mã
hóa khóa công khai giúp cho việc trao đổi khóa mã trở nên dễ dàng hơn. Trong
hệ mật khóa công khai, sử dụng khóa công khai (public key) để mã hóa và khóa
riêng (private key) để giải mã nên khóa công khai không cần phải giữ bí mật
như các phương pháp mã hóa khóa bí mật. Sử dụng khóa công khai, ta có thể
thiết lập một quy trình an toàn để trao đổi khóa bí mật được sử dụng trong hệ
thống mã hóa bí mật và được sử dụng để bảo mật, xác thực, hoặc cả hai.
1.2. Bài toán phân tích số, khai căn và hệ mật RSA
Về cơ bản, lý thuyết số tính toán nhằm mục đích sử dụng các kỹ thuật
tính toán để giải quyết các vấn đề lý thuyết số, hoặc sử dụng các lý thuyết kỹ
thuật số để giải quyết các vấn đề khoa học máy tính. Trong phần này, NCS tập
trung vào trình bày về cách sử dụng các kỹ thuật tính toán để giải quyết các vấn
đề lý thuyết số có ứng dụng trong mã hóa khóa công khai hiện đại. Hay nói
cách khác là trình bày cơ sở toán học trong các hệ mật mã khóa công khai điển
hình như: RSA (hệ mật dựa trên bài toán phân tích số), ElGamal (hệ mật dựa
trên bài toán logarit rời rạc).
1.2.1. Bài toán phân tích số
Bài toán phân tích số (Integer Factorization Problem -𝐼𝐹𝑃) được phát
biểu như sau:
𝑒𝑖
Cho số 𝑛 ∈ ℕ, hãy tìm biểu diễn:
𝑘 𝑝𝑖
với: 𝑒𝑖 ≥ 1(𝑖 = 1, … , 𝑘) nguyên dương; 𝑛 = Π𝑖=1
𝑝𝑖 ≥ 1 (𝑖 = 1, … , 𝑘) nguyên tố.
9
Bài toán này là một trong những bài toán lâu đời nhất của số học dựa
trên khẳng định: mọi số nguyên dương đều có thể biểu diễn thành tích các lũy
thừa của các số nguyên tố. Trong biễu diễn của 𝑛 thì các số nguyên tố đều nhỏ
hơn 𝑛 và chỉ bằng 𝑛 khi 𝑛 là một số nguyên tố.
Bài toán phân tích số tuy chưa giải được trong thời gian đa thức nhưng
cũng không cần đến thời gian hàm mũ để giải nó. Một trong những phương
pháp tốt nhất được biết đến hiện nay là phương pháp phân tích thừa số đường
cong elliptic (ECM). Phương pháp đường cong elliptic được phát minh vào
năm 1985 bởi Hendrik Lenstra. Năm 1986, Richard Brent trong một bài báo
mang tên Some Integer Factorization Algorithms using Elliptic Curves [86] đã
dự đoán xác định được thừa số của số có 50 chữ số. Dự án ECMNET được bắt
đầu vào tháng 01/1998 để tìm các thừa số lớn bằng việc sử dụng ECM, đã thành
công trong việc xác định thừa số của số có 50 chữ số (166 - bit) hoặc nhiều
hơn. Ngày 26/12/1999, N.Lygeros và M.Mizony đã công bố tìm thấy thừa số
nguyên tố lớn nhất gồm 54 chữ số (180 - bit) của số nguyên có chiều dài 127
chữ số (422 - bit). Ngày 6/4/2005, B.Dodson đã công bố tìm thấy thừa số
nguyên tố lớn nhất gồm 66 chữ số của số nguyên 3466 + 1. Tính đến nay, thừa
số nguyên tố lớn nhất được tìm thấy là 73 chữ số của số nguyên 22658 − 1,
được công bố bởi S. Wagstaff vào ngày 16/4/2024 [102].
Song song với vấn đề phân tích thừa số nguyên tố thì vào năm 1996 đã
ra đời dự án hợp tác của những người tình nguyện sử dụng phần mềm miễn phí
để tìm kiếm số nguyên tố Mersenne (GIMPS - Great Internet Mersenne Prime
Search) và vào ngày 12/10/2024 Luke Durant đã sử dụng hàng nghìn bộ xử lý
đồ họa (GPU) ở khắp 24 trung tâm dữ liệu tại 17 nước chứng minh số nguyên
tố gồm 41.024.320 chữ số hay 2136.279.841 - 1. Số nguyên tố này đã được xác
nhận tại San Antonio, Texas, Mỹ với bài kiểm tra Lucas-Lehmer [57]. Từ đây,
cho thấy việc phân tích được các thừa số nguyên tố còn khoảng cách rất xa với
10
việc tìm ra các số nguyên tố.
1.2.2. Hệ mật RSA
Diffie và Hellman là những người đầu tiên xây dựng nguyên lý mật mã
khóa công khai vào năm 1976. Tuy nhiên, trước đó vào những năm 1960 những
tác giả ở NSA đã xây dựng ý tưởng về xu thế của mật mã khóa công khai. Vào
năm 1977, Ron Rivest, Adi Shamir và Len Adleman làm việc ở MIT đã phát
triển một thuật toán mật mã khóa công khai dựa trên bài toán phân tích số. Công
trình này được công bố vào năm 1978 và nhanh chóng được ứng dụng rộng rãi.
Một trường hợp riêng của bài toán phân tích số được ứng dụng để xây
dựng hệ mật RSA mà ở đó 𝑛 là tích của hai số nguyên tố 𝑝 và 𝑞. Ở đó, bài toán
phân tích số hay còn gọi là bài toán 𝐼𝐹𝑃(𝑛) được phát biểu như sau:
Với mỗi số nguyên dương 𝑛, hãy tìm số nguyên tố 𝑝 hoặc 𝑞 thỏa mãn
phương trình sau:𝑝 × 𝑞 = 𝑛.
Giải thuật cho bài toán 𝐼𝐹𝑃(𝑛)có thể được viết như một thuật toán tính
hàm 𝐼𝐹𝑃(.) với biến đầu vào là 𝑛, còn giá trị hàm là 𝑝 hoặc 𝑞 của phương trình
sau: 𝑝 = 𝐼𝐹𝑃(𝑛) hoặc: 𝑞 = 𝐼𝐹𝑃(𝑛)
Trong hệ mật RSA, bài toán phân tích số được sử dụng trong việc hình
thành cặp khóa công khai/bí mật cho mỗi thực thể ký. Với việc giữ bí mật các
tham số (𝑝, 𝑞) thì việc tính được khóa bí mật (𝑑) từ khóa công khai (𝑒) và
𝑚𝑜𝑑𝑢𝑙𝑜(𝑛) là một bài toán khó nếu (𝑝, 𝑞) được chọn đủ lớn và mạnh. Hiện tại
bài toán này vẫn được coi là bài toán khó do chưa có giải thuật thời gian đa
thức hay đa thức xác suất cho nó và hệ mật RSA là một minh chứng thực tế cho
tính khó giải của bài toán này. Trong thực tế, các tham số (𝑝, 𝑞) có thể chọn
theo FIPS PUB 186 - 5 [76] của Hoa Kỳ cho hệ mật RSA.
Bảng 1.1. Tóm tắt thuật toán RSA
Bước Cách thức
1
Lựa chọn bí mật
𝑝 và 𝑞 là hai số nguyên tố lớn
11
Bước Cách thức
Lựa chọn công khai bí mật công khai bí mật
2 3 4 5 6
𝑛 = 𝑝 × 𝑞 𝜙(𝑛) = (𝑝 − 1) × (𝑞 − 1) chọn 𝑒 để 𝑔𝑐𝑑(𝑒, 𝜙(𝑛)) = 1 < 𝑒 < 𝜙(𝑛) 𝑑 ≡ 𝑒−1𝑚𝑜𝑑𝜙(𝑛) Khóa bí mật {𝑑, 𝑛}, khóa công khai {𝑒, 𝑛}.
Giả thiết rằng người sử dụng 𝐴 công bố khóa công khai của mình, còn
người sử dụng 𝐵 có thể sử dụng khóa công khai của 𝐴 để gửi tin tức 𝑀 của
mình cho 𝐴. Khi người sử dụng 𝐵 tính toán 𝐶 = 𝑀𝑒𝑚𝑜𝑑𝑛 và gửi 𝐶 cho 𝐴.
Khi nhận được văn bản mã này, người sử dụng 𝐴 giải mã nó bằng cách tính
𝑀 = 𝐶𝑑𝑚𝑜𝑑𝑛.
Cơ sở của thuật toán này là chọn 𝑒 và 𝑑 sao cho: 𝑑 ≡ 𝑒−1𝑚𝑜𝑑𝜙(𝑛) thì
𝑒𝑑 ≡ 1𝑚𝑜𝑑𝜙(𝑛). Có nghĩa rằng 𝑒𝑑 có dạng 𝑘𝜙(𝑛) + 1. Nhưng theo Định lí
Euler, thì đối với hai số nguyên tố bất kì 𝑝 và 𝑞 và số nguyên 𝑛 = 𝑝 × 𝑞 và 𝑀
với 0 < 𝑀 < 𝑛, được tính theo quan hệ:
𝑀𝑘𝜙(𝑛)+1 = 𝑀𝑘(𝑝−1)(𝑞−1)+1 ≡ 𝑀𝑚𝑜𝑑𝑛.
Bởi vì 𝑀𝑒𝑑𝑚𝑜𝑑𝑛 ≡ 𝑀𝑚𝑜𝑑𝑛, cho nên ta có:
𝐶 = 𝑀𝑒𝑚𝑜𝑑𝑛,
𝑀 = 𝐶𝑑𝑚𝑜𝑑𝑛 ≡ (𝑀𝑒)𝑑𝑚𝑜𝑑𝑛 ≡ 𝑀𝑒𝑑𝑚𝑜𝑑𝑛 ≡ 𝑀𝑚𝑜𝑑𝑛.
Hệ mật RSA được phát triển dựa trên các hàm số mũ. Văn bản rõ được
mã hóa theo các khối, mỗi khối bao gồm các giá trị hệ nhị phân, nhỏ hơn một
giá trị n đã cho nào đó. Điều đó có nghĩa rằng độ dài khối cần phải nhỏ hơn
hoặc bằng log2 𝑛. Trong thực tiễn độ dài khối chọn bằng 2𝑘 bit, ở đây 2𝑘 <
𝑛 ≤ 2𝑘 + 1. Mã hóa với khối văn bản rõ (𝑀) và giải mã với khối văn bản mã
(𝐶), có thể trình bày dưới dạng công thức:
𝐶 = 𝑀𝑒𝑚𝑜𝑑𝑛,
𝑀 = 𝐶𝑑𝑚𝑜𝑑𝑛 = (𝑀𝑒)𝑑𝑚𝑜𝑑𝑛 = 𝑀𝑒𝑑𝑚𝑜𝑑𝑛.
Cả người gửi, lẫn người nhận đều phải biết giá trị 𝑛. Người gửi biết giá
12
trị của 𝑒, còn chỉ có người nhận biết giá trị của 𝑑. Như vậy, thuật toán mật mã
với khóa công khai: 𝑃𝐾 = {𝑒, 𝑛} và khóa bí mật 𝑆𝐾 = {𝑑, 𝑛}. Để thuật toán
này có thể sử dụng như hệ mật mã với khóa công khai cần phải đảm bảo các
đòi hỏi sau:
- Cần phải tồn tại các giá trị: 𝑒, 𝑑 và 𝑛 để 𝑀𝑒𝑑𝑚𝑜𝑑𝑛 = 𝑀𝑚𝑜𝑑𝑛, đối
với tất cả 𝑀 < 𝑛.
- Cần phải tương đối dễ tính toán 𝑀𝑒, 𝐶𝑑 đối với tất cả các giá trị 𝑀 < 𝑛.
- Yêu cầu trên thực tế không có khả năng xác định 𝑑 khi biết 𝑒 và 𝑛.
Bài toán trên cho đến nay vẫn được coi là bài toán khó (hard problem),
nghĩa là vẫn chưa tồn tại thuật toán thời gian đa thức hoặc đa thức xác suất để
giải. Dựa trên tính khó của bài toán này, Rivest, Shamir và Adleman đã đề xuất
hệ mật khóa công khai RSA [85]. Một hệ mật khóa công khai khác sở hữu khả
năng bảo mật dựa trên tính không thể giải của bài toán phân tích số đó là
Williams [46] và Rabin [73].
1.2.3. Bài toán khai căn trên 𝒁𝒏
Cho cặp các số nguyên dương {𝑛, 𝑡} với 𝑛 là tích của hai số nguyên tố 𝑝
và 𝑞, còn 𝑡 được chọn trong khoảng (1, 𝜙(𝑛)) sao cho 𝑔𝑐𝑑(𝑡, 𝜙(𝑛)) = 1. Khi
đó, bài toán khai căn trên Z𝑛 (Rivest, Shamir, Adleman Problem -RSAP(n,t))
∗ hãy tìm 𝑥 thoả mãn phương trình:
được phát biểu như sau:
Với mỗi số nguyên dương 𝑦 ∈ ℤ𝑛
𝑦 = 𝑥𝑡𝑚𝑜𝑑𝑛
𝑚𝑜𝑑𝑛. Giải thuật cho bài toán Từ phương trình trên, ta có 𝑥 = √𝑦𝑡
RSAP(𝑛,𝑡) có thể được viết như một thuật toán tính hàm RSAP(𝑛,𝑡)(. ) với biến
đầu vào là 𝑦 còn giá trị hàm là nghiệm 𝑥 của phương trình như sau:
𝑥 = RSAP(𝑛,𝑡)(𝑦)
Tương tự như Bài toán phân tích số, bài toán RSAP(𝑛,𝑡) là bài toán khó
13
và được sử dụng để xây dựng nên hệ mật RSA và nó là yếu tố quyết định tới
độ an toàn xét theo khả chống giả mạo chữ ký của hệ RSA.
Nếu giải được RSAP(n,t), kẻ thám mã có thể tìm được bản rõ (M) từ bản
mã (C) và các tham số công khai (𝑛, 𝑡), hoặc dễ dàng tạo được chữ ký giả mạo
(S) cho một thông điệp bất kỳ (M) mà không cần biết khóa bí mật (d) của đối
tượng ký (bị mạo danh). Tuy nhiên, hiện tại vẫn chưa có giải thuật thời gian đa
thức cho bài toán này và do đó việc tấn công hệ mật RSA bằng việc giải
RSAP(n,t) là vẫn chưa khả thi.
1.2.4. Tấn công hệ mật RSA
Tấn công thuật toán RSA thường dựa trên các bài toán [13], [93], [94]:
1) Phân tích 𝑛thành các thừa số nguyên tố 𝑝, 𝑞: từ đó, có thể tính 𝜙(𝑛) =
(𝑝 − 1) × (𝑞 − 1) và xác định khóa bí mật 𝑑 = 𝑒−1𝑚𝑜𝑑𝜙(𝑛). Hiện có
nhiều thuật toán phân tích 𝑛 thành các thừa số nguyên tố 𝑝, 𝑞. Chạy nhanh nhất
phải kể đến thuật toán “sàng trong trường số dạng chung” của Pollard (1974).
2) RSA là phương pháp mã hóa xác định (không có thành phần ngẫu
nhiên) nên kẻ tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo
ra một bảng tra giữa bản rõ và bản mã. Khi gặp một bản mã, kẻ tấn công sử
dụng bảng tra để tìm ra bản rõ tương ứng.
3) Sử dụng chung modulo 𝑛: nếu trung tâm phân phối khóa thực hiện sử
dụng chung modulo 𝑛 cho nhiều người sử dụng, thì trong nhóm người sử dụng
ấy khi biết khóa công khai (𝑒, 𝑛) của nhau và biết khóa bí mật (𝑑, 𝑛) của mình,
có thể tính ra khóa bí mật của các người khác. Vì vậy, hệ mật RSA yêu cầu mỗi
người sử dụng có tối thiểu một cặp (𝑝, 𝑞) tách biệt.
4) Tấn công khi biết 𝜙(𝑛): nếu biết 𝜙(𝑛) và biết n, thì việc khôi phục
cặp (𝑝, 𝑞) là dễ dàng. Từ việc biết 𝑒, dễ dàng xác định 𝑑 = 𝑒−1𝑚𝑜𝑑𝜙(𝑛).
5) Giá trị khóa bí mật 𝑑 nhỏ (khóa giải mã): Wiener (1990) đã chứng
minh rằng nếu 𝑒 < 𝑛 và 𝑑 < 𝑛1/4 (dự đoán 𝑑 < √𝑛) thì việc xác định 𝑑 là dễ
14
dàng. Vì thế để hệ mật RSA an toàn, yêu cầu 𝑑 > √𝑛. Hiện tồn tại các công
trình nghiên cứu phát sinh 𝑑 lớn (có độ dài nhị phân xấp xỉ 𝑛, ⌊lg 𝑑⌋ ≥ ⌊lg 𝑛⌋ −
2), nhưng 𝑒 đủ nhỏ (để bảo đảm tốc độ mã hóa).
Để hệ mật RSA an toàn trước các cuộc tấn công kể trên, yêu cầu việc
sinh các số 𝑝, 𝑞, 𝑑 phù hợp theo FIPS PUB 186-5 [76]:
1) Giá trị 𝑝, 𝑞 phải đủ lớn (nằm trong dải từ 1075 đến 10100) và độ lớn của
chúng phải khác nhau đến vài bậc;
2) Cả (𝑝 − 1) lẫn (𝑞 − 1) phải chứa thừa số nguyên tố lớn. Đây là các
số nguyên tố an toàn (safe prime);
3) gcd(𝑝 − 1, 𝑞 − 1) cần phải đủ nhỏ;
4) Giá trị khóa bí mật 𝑑 phải đủ lớn (yêu cầu tối thiểu 𝑑 > √𝑛).
Trên thực tế, để bảo đảm an toàn cho hệ mã RSA còn cần thêm một số
yêu cầu khác nữa.
1.3. Bài toán logarit rời rạc và hệ mật ElGamal
1.3.1. Bài toán logarit rời rạc trên ℤ𝒑
∗ .
Cho 𝑝 là một số nguyên tố lẻ, theo lý thuyết số thì 𝐺𝐹(𝑝) =
{0,1, … , 𝑝 − 1} với hai phép toán cộng và nhân các số theo modulo 𝑝 là một trường. Khi đó 𝐺𝐹(𝑝)∗ = {1, … , 𝑝 − 1} là một nhóm nhân cyclic ℤ𝑝
Khi đó, bài toán logarit rời rạc trên Zphay còn gọi là bài toán DLP(p,g)
∗ , hãy tìm 𝑥 thỏa mãn phương trình:
được phát biểu như sau:
Với mỗi số nguyên dương 𝑦 ∈ ℤ𝑝
𝑔𝑥 𝑚𝑜𝑑 𝑝 = 𝑦
Giải thuật cho bài toán DLP(p,g)có thể được viết như một thuật toán tính
hàm DLP(p,g)(. )với biến đầu vào là 𝑦, còn giá trị hàm là 𝑥 của phương trình:
𝑥 = DLP(p,g)(𝑦)
Một thuật toán tầm thường để giải quyết bài toán này là duyệt toàn bộ
15
các số 𝑥 từ 1 đến 𝑝 − 1 cho đến khi tìm được 𝑥 thỏa mãn 𝑦 = 𝑔𝑥𝑚𝑜𝑑𝑝. Tất
nhiên thuật toán này không hiệu quả nếu 𝑝 là số nguyên tố rất lớn. Một biến
dạng của thuật toán hiệu quả hơn là thuật toán Shanks. Các thuật toán Pohlig-
Hellman, thuật toán sàng bậc 𝑞, thuật toán sàng trường số là những thuật toán
hiệu quả để giải quyết bài toán này. Tuy nhiên, cho đến hiện nay thì bài toán
logarit rời rạc vẫn là bài toán khó theo nghĩa chưa tìm được thuật toán nào giải
nó trong thời gian đa thức. Tuy chưa tìm được thuật toán giải bài toán này trong
thời gian đa thức nhưng thuật toán dưới mũ (sub-exponention) là thuật toán
dùng tính chỉ số index-calculus. Theo phương pháp này, một cơ sở dữ liệu các
số nguyên tố nhỏ và logarit tương ứng của nó được xây dựng sẵn, sau đó có thể
dễ dàng tìm được logarit của các phần tử của một trường bất kỳ. Như với các
phương pháp phân tích thừa số, các thuật toán index-calculus có thể dễ dàng
được thực hiện theo phương thức song song nhằm tăng tốc độ tính toán.
1.3.2. Hệ mật ElGamal
Mô tả hệ mật ElGamal:
Sinh khóa:
∗ . 2) Xác định phần tử sinh 𝑔 của nhóm ℤ𝑝
1) Phát sinh số nguyên tố 𝑝.
3) Chọn ngẫu nhiên số 𝑥 ∈ ℤ𝑝−1, 𝑥 là khóa bí mật của người giải mã.
4) Tính khóa công khai 𝑦 = 𝑔𝑥𝑚𝑜𝑑𝑝.
5) Sử dụng ba giá trị (𝑝, 𝑔, 𝑦) làm khóa công khai của người nhận và gửi
chúng cho các người sử dụng cần mã hóa thông tin bí mật gửi cho mình.
Mã hóa: Người gửi biến đổi tin tức 𝑚 thành phần tử của nhóm ℤ𝑝. Sau
đó, phát sinh ngẫu nhiên giá trị 𝑘 ∈ ℤ𝑝−1, và tính cặp văn bản mã (𝑐1, 𝑐2):
𝑐1 = 𝑔𝑘𝑚𝑜𝑑𝑝 { 𝑐2 = 𝑦𝑘𝑚𝑚𝑜𝑑𝑝
Giải mã: Để khôi phục văn bản rõ từ cặp văn bản mã (𝑐1, 𝑐2), người
16
−𝑥𝑚𝑜𝑑𝑝.
nhận tính:
𝑚 = 𝑐2𝑐1
Hệ mật ElGamal được xây dựng trên bài toán logarit rời rạc. Bài toán
logarit rời rạc trên ℤ𝑝 là đối tượng trong nhiều công trình nghiên cứu và được
xem là bài toán khó nếu 𝑝 được chọn cẩn thận. Hiện nay không có một thuật
toán thời gian đa thức nào để giải bài toán logarit rời rạc. Để gây khó khăn cho
các phương pháp tấn công đã biết, 𝑝 phải có ít nhất 150 chữ số và (𝑝 − 1)
phải có ít nhất một thừa số nguyên tố lớn. Lợi thế của bài toán logarit rời rạc
được sử dụng để xây dựng các hệ mã là khó tìm được các logarit rời rạc, song
bài toán ngược lấy lũy thừa lại có thể tính toán hiệu quả theo thuật toán “bình
phương và nhân”. Nói cách khác, lũy thừa theo modulo 𝑝 là một hàm một chiều
với các số nguyên tố 𝑝 thích hợp.
1.4. Một số lược đồ chữ ký số
Chữ ký số là một nhánh nghiên cứu quan trọng trong lĩnh vực mật mã
khóa công khai. Các chữ ký số mang lại sự đảm bảo các tính chất an toàn cơ
bản cho dữ liệu như tính xác thực, tính toàn vẹn và tính chống chối từ.
Hình 1.1. Quy trình xác thực chữ ký số
Trước khi có sự ra đời của máy tính lượng tử cũng như các phương pháp
17
tấn công lượng tử, các lược đồ chữ ký số (Digital signature schemes - DSS) sử
dụng kỹ thuật mật mã khóa công khai (từ nay gọi là lược đồ chữ ký số truyền
thống để phân biệt với các lược đồ chữ ký số được xây dựng nhằm kháng lại
các tấn công lượng tử) có độ an toàn được dựa trên tính khó giải của hai bài
toán số học là bài toán phân tích số và bài toán logarit rời rạc cùng với họ các
bài toán như bài toán Diffie-Hellman, bài toán Diffie-Hellman quyết định...
Các lược đồ chữ ký số được phân thành các loại như sau:
- Theo đặc trưng kiểm tra chữ ký, gồm:
• Chữ ký số kèm phụ lục thông điệp (DSS with appendix message) được
qui định theo chuẩn ISO/IEC 14888-2 [54] dựa trên bài toán IFP và ISO/IEC
14888-3 [55] dựa trên bài toán DLP. Ở đó, thông điệp được ký bằng khóa riêng
và dữ liệu bổ sung được gọi là “phụ lục” cũng được bao gồm trong chữ ký. Phụ
lục này có thể chứa thông tin như danh tính của người ký, dấu thời gian hoặc
bất kỳ dữ liệu liên quan nào khác cần được liên kết với chữ ký, cạnh đó thông
điệp gốc còn dùng để kiểm tra tính đúng đắn của chữ ký. Một số lược đồ chữ
ký số theo hướng này gồm: ElGamal, DSA, Schnorr,…;
• Chữ ký số khôi phục thông điệp (DSS giving message recovery) được
qui định theo chuẩn ISO/IEC 9796-2:2010 [51] dựa trên bài toán IFP và
ISO/IEC 9796-3:2010 [52] dựa trên bài toán DLP. Ở đó, thông điệp gốc có thể
được khôi phục trực tiếp từ chính chữ ký mà không cần lưu trữ thêm bản sao
của thông điệp cùng với chữ ký. Kiểu lược đồ này được thiết kế để tối ưu hóa
không gian lưu trữ và giảm chi phí tính toán liên quan đến việc xác minh chữ
ký. Thông điệp gốc được băm cùng với khóa riêng của người ký để tạo chữ ký.
Tuy nhiên, trong lược đồ này, một phần của tin nhắn gốc cũng được bao gồm
trong chữ ký, cho phép người nhận xây dựng lại toàn bộ thông điệp bằng cách
sử dụng dữ liệu đã ký và khóa chung của người ký. Tuy nhiên, cần lưu ý là tính
bảo mật của chữ ký số khi khôi phục thông điệp phụ thuộc vào các thuật toán
18
mã hóa cơ bản và phương pháp quản lý khóa để đảm bảo tính toàn vẹn và tính
xác thực của dữ liệu đã ký. Một số lược đồ chữ ký số theo hướng này gồm:
Rabin, RSA,…
- Theo mức an toàn, gồm:
• Chữ ký số không thể phủ nhận (An undeniable signature) [30] cho phép
người ký được chọn lọc đối với người mà họ cho phép xác minh chữ ký;
• Chữ ký số một lần (Fail-stop Signatures) [79] cho phép người ký có thể
chứng minh được chữ ký và người ký có thể thu hồi khóa xác minh của mình.
- Theo ứng dụng đặc trưng, gồm:
• Chữ ký số mù (Blind signatures) [29] có nghĩa người ký không được
biết về nội dung của văn bản khi ký và khi chữ ký mù được công bố thì người
ký không thể thấy được mối liên hệ giữa văn bản mù đã ký với văn bản gốc;
• Chữ ký số nhóm (Group signatures) [31] cho phép một thành viên của
nhóm ký tên ẩn danh vào một thông điệp thay mặt cho nhóm, người nhận có
thể kiểm tra chữ ký của nhóm là đúng hay không mà không biết người nào đã
ký;
• Chữ ký số tập thể (Multisignature) [75] cho phép nhiều người tham gia
ký thông điệp và người xác thực có thể xác thực đối với từng thành viên trong
tập thể người ký đó với các tính chất: độ dài của chữ ký số tập thể là không
thay đổi, bằng độ dài chữ ký số riêng lẻ của từng người ký, khoá công khai của
lược đồ chữ ký số tập thể được tạo ra bởi sự kết hợp của tất cả các khoá công
khai riêng lẻ theo qui luật;
• Chữ ký số tập thể mù (Blind multisignature) [44] cho phép nhiều người
ký trên cùng một thông điệp đã được làm mù. Trong lược đồ chữ ký số tập thể
mù, người yêu cầu A là người muốn nhận một chữ ký số từ nhiều người ký, do
vậy mỗi người ký sẽ không biết mối quan hệ giữa thông điệp đã bị làm mù,
thông điệp chưa bị làm mù và các tham số của chữ ký. Điều này có nghĩa là họ
19
không thể nhận dạng được chữ ký về sau này, ngay cả khi họ thỏa hiệp lại với
nhau.
Về các lược đồ chữ ký số truyền thống dựa trên logarit rời rạc, hiện nay
có hai kiểu lược đồ được sử dụng rộng rãi là lược đồ chữ ký số kiểu ElGamal
[98] và lược đồ chữ ký số kiểu Schnorr [34].
Các lược đồ chữ ký số truyền thống kiểu ElGamal được nghiên cứu một
cách sâu rộng thông qua thể hiện tiêu biểu của nó là lược đồ DSA cùng với các
phiên bản trên đường cong elliptic như ECDSA, GOST R 34.10-2012,
ECKDSA, ECGDSA [54]. Các nghiên cứu không chỉ tập trung đi sâu phân tích
về các giả thiết an toàn làm nền tảng cho các lược đồ chữ ký số này mà các tác
giả còn đề xuất các lược đồ sửa đổi cũng như mô hình lý thuyết mà trong đó
tồn tại các chứng minh toán học chặt chẽ về độ an toàn chứng minh được của
chúng. Bên cạnh đó, một số phương pháp tấn công mới vào các lược đồ chữ ký
số nhằm khám phá khóa bí mật sử dụng các công cụ toán học mạnh như lý
thuyết lưới hoặc sử dụng các gợi ý ẩn cũng được nghiên cứu chi tiết, qua đó chỉ
ra các ngưỡng an toàn về mặt định lượng cần thiết khi sinh các khóa bí mật
trong quá trình tạo chữ ký [39].
Đối với các lược đồ chữ ký số truyền thống kiểu Schnorr, sau các công
trình mở đầu của chính Schnorr, các nghiên cứu gần đây đã chỉ ra những yêu
cầu quan trọng về hàm băm đối với kiểu lược đồ chữ ký này [41] cũng như độ
an toàn của lược đồ trong mô hình tiên đoán ngẫu nhiên [108].
Các lược đồ chữ ký số cụ thể như ECDSA, và đặc biệt là lược đồ GOST
R 34.10-2014 đã được phân tích chi tiết về cơ sở toán học cho việc lựa chọn
các tham số an toàn, từng bước phân tích về những ưu nhược điểm cũng như
độ an toàn chứng minh được trong các mô hình lý thuyết. Bên cạnh đó, thuật
toán và chương trình sinh tham số an toàn cho các lược đồ chữ ký số dựa trên
đường cong elliptic cũng được xây dựng. Ngoài ra, các phương pháp tấn công
20
nhằm giải bài toán khó cơ sở như bài toán logarit rời rạc hoặc nhằm khám phá
khóa bí mật cũng được nghiên cứu trong đề tài, đồng thời qua những nghiên
cứu này, hệ tiêu chuẩn tham số an toàn cho bài toán logarit rời rạc trên trường
nguyên tố và hệ tiêu chuẩn tham số an toàn cho các hệ mật đường cong elliptic
cũng từng bước được đề xuất. Tuy nhiên, các công trình trên chưa nghiên cứu
một cách có hệ thống đầy đủ, chi tiết về các lược đồ chữ ký số truyền thống
dựa trên logarit rời rạc, đặc biệt là về các lược đồ chữ ký số kiểu Schnorr.
Về các lược đồ chữ ký số truyền thống dựa trên bài toán phân tích số,
hiện nay có hai kiểu lược đồ được sử dụng rộng rãi là lược đồ chữ ký số RSA
và lược đồ chữ ký số Rabin. Lược đồ Rabin tương tự với RSA với “bộ mũ e =
2”, ở đó, kẻ tấn công muốn giải mã từ bản mã 𝑐 thành bản rõ 𝑚 trong khi chỉ
biết khóa công khai 𝑛, sẽ phải đối mặt với bài toán khai căn bậc hai modulo
𝑚2 ≡ 𝑐𝑚𝑜𝑑𝑛 yêu cầu phải phân tích 𝑛 thành các số nguyên tố và do đó bài
toán khai căn bậc hai theo modulo có độ khó tương đương với bài toán phân
tích số. Để chống lại việc giả mạo và tấn công thông điệp lựa chọn Rabin sử
dụng hàm băm với các tham số được thiết lập phù hợp.
1.5. Giao thức trao đổi khóa
1.5.1. Một số khái niệm
a) Giao thức là một thuật toán có sự tham gia của hai hoặc nhiều bên,
được xác định chính xác bởi một chuỗi các bước tính toán cụ thể của mỗi bên
tham gia nhằm đạt được mục tiêu an toàn.
Trao đổi khóa (key exchange) là các phương pháp trao đổi khóa giữa các
thực thể tham gia mã hóa.
Giao thức trao đổi khóa (Key Exchange Protocol) là quá trình thực hiện
mà nhờ đó các bên cùng nhau thiết lập khóa bí mật dùng chung trong quá trình
truyền thông trên một kênh công cộng.
b) Giao thức thiết lập khóa (Key Establishment Protocol) là giao thức
21
trong đó hai (hoặc nhiều) đối tượng thiết lập một khóa bí mật được chia sẻ để
các bên sử dụng cho việc truyền tin an toàn với nhau. Trong thực tế có hai kiểu
giao thức thiết lập khóa:
- Giao thức chuyển khóa (Key Transport Protocols - KTP), trong đó khóa
bí mật được sinh bởi đối tượng gửi và truyền bí mật đến đối tượng nhận.
- Giao thức thỏa thuận khóa (Key Agreement Protocols - KAP), trong đó
cả hai đối tượng trao đổi các thông tin qua một kênh công cộng để xác lập một
khóa bí mật được chia sẻ.
Giao thức thiết lập khóa ngoài việc thiết lập một khóa bí mật, các bên
còn đòi hỏi giao thức cung cấp tính xác thực. Khả năng xác thực của giao thức
có thể là:
+ Xác thực khóa (key authentication), hay xác thực khóa ẩn (implicit key
authentication) là thuộc tính cho phép một bên được bảo đảm rằng ngoại trừ
bên với thông tin danh tính đã xác định trước thì không một ai khác có thể tính
được giá trị bí mật. Điều này có nghĩa là nếu đối tượng A (B) muốn xác lập,
hoặc chuyển cho đối tượng B (A) khóa bí mật bằng cách sử dụng một giao thức
có khả năng xác thực khóa thì sau khi kết thúc giao thức đối tượng A (B) chắc
chắn rằng chỉ có đối tượng B (A) mới có thể thu được giá trị đó.
+ Xác nhận khóa (key confirmation) là thuộc tính cho phép một bên chắc
chắn rằng bên kia đã có giá trị bí mật. Nghĩa là sau khi kết thúc giao thức, A
chắc chắn rằng B đã thu được giá trị bí mật K.
+ Xác thực khóa hiện (explicit key authentication): Giao thức cung cấp
thuộc tính xác thực khóa ẩn và xác nhận khóa thì được gọi là giao thức cung
cấp thuộc tính xác thực khóa hiện.
+ Xác thực thực thể (entity authentication) là thuộc tính cho phép một
đối tượng được đảm bảo về danh tính của đối tượng còn lại tham gia giao thức,
và thực sự đối tượng đó đã tham gia vào hoạt động của giao thức.
22
Một số giao thức có thể chỉ cung cấp thuộc tính xác thực thực thể đơn
phương (chỉ cho phép xác thực theo một chiều: A về B, hoặc B về A).
1.5.2. Giao thức trao đổi khóa Diffie-Helman
Giao thức trao đổi khóa Diffie-Helman (DHKE) [104] được Whitfield
Diffie và Martin Hellman giới thiệu năm 1976, đây là giao thức đầu tiên sử
dụng khóa công khai (Public Key) mở đầu cho kỷ nguyên phát triển của hệ mật
mã khóa công khai. Đối với hệ mật mã khóa bí mật, cả hai bên tham gia trao
đổi thông tin phải có khóa giống hệt nhau, bảo đảm an toàn cho việc trao đổi
khóa giữa các đối tượng tham gia truyền thông luôn là một vấn đề khó (điều
này yêu cầu phải thiết lập một kênh truyền an toàn).
Giao thức DHKE không phải là một cơ chế mã hóa dữ liệu. Thay vào đó,
DHKE là một phương pháp thiết lập khóa an toàn dùng để mã hóa dữ liệu. Có
thể mô tả giao thức như sau:
a) Thiết lập tham số hệ thống:
∗, 𝑝 là một số nguyên tố lớn.
A và B thỏa thuận chọn nhóm hữu hạn 𝑍𝑝 và phần tử 𝑔 ∈ 𝑍𝑝, với 𝑔 là
phần tử sinh của 𝑍𝑝
Giá trị 𝑝 và 𝑔 là tham số hệ thống, có thể được sinh ra nhờ thuật toán mô
tả trong [104].
b) Thủ tục thiết lập khóa:
Bước 1 - thiết lập và trao đổi khóa công khai:
- A sinh một giá trị ngẫu nhiên: 𝑥𝐴 = 𝑎(𝑣ớ𝑖1 ≤ 𝑎 ≤ 𝑝 − 1), - Tính giá trị: 𝑦𝐴 = 𝑔𝑎𝑚𝑜𝑑𝑝 và gửi giá trị này cho B; - B sinh một giá trị ngẫu nhiên 𝑥𝐵 = 𝑏(𝑣ớ𝑖1 ≤ 𝑏 ≤ 𝑝 − 1), - Tính giá trị: 𝑦𝐵 = 𝑔𝑏𝑚𝑜𝑑𝑝và gửi giá trị này cho A;
23
Hình 1.2. Tạo và trao đổi khóa công khai
𝑦𝐴, 𝑦𝐵sau đó được xác thực bởi một trung tâm xác thực (CA) tin cậy
nhằm ngăn chặn tấn công kẻ đứng giữa.
Bước 2 - tính giá trị khóa bí mật:
- Khi nhận được khóa công khai 𝑦𝐵của B, A tính giá trị khóa bí mật theo
công thức:
𝐾𝐴𝐵 = (𝑦𝐵)𝑥𝐴 = (𝑔𝑏)𝑎𝑚𝑜𝑑𝑝
- Tương tự B tính giá trị:
𝐾𝐵𝐴 = (𝑦𝐴)𝑥𝐵 = (𝑔𝑎)𝑏𝑚𝑜𝑑𝑝
Dễ thấy rằng cả A và B đã tạo được một giá trị khóa bí mật chung chia
sẻ (𝐾𝐴𝐵 = 𝐾𝐵𝐴), khóa này sẽ được sử dụng trên hệ mật mã khóa bí mật.
Hình 1.3. Tạo khóa bí mật chia sẻ
Tại thời điểm này, giao thức DHKE có thể được coi là hoàn thành. Tạo
24
ra khóa bí mật chung được chia sẻ (𝐾𝐴𝐵 = 𝐾𝐵𝐴). 𝐾𝐴𝐵 có thể được sử dụng để
mã hóa, giải mã dữ liệu thực tế.
Sơ đồ giao thức DHKE đầy đủ được thể hiện trong Hình 1.4
Hình 1.4. Giao thức Diffie-Hellman đầy đủ
1.5.3. Đánh giá độ an toàn của giao thức DHKE
Lựa chọn số nguyên tố 𝑝 mà 𝑝 − 1có một thừa số nguyên tố đủ lớn 𝑝’,
∗, nhưng cần là
thừa số đủ lớn (𝑝’ > 2160) [47].
∗ . Đối với trường hợp này 𝑝’
Không bắt buộc lựa chọn 𝑔 là phần tử sinh của nhóm 𝑍𝑝
phần tử sinh của một nhóm nhỏ có bậc lớn của 𝑍𝑝′
sẽ là một thành phần của các tham số đầu vào chung.
A và B sẽ xóa các giá trị 𝑎 và 𝑏 khi kết thúc giao thức. Khi thực hiện
điều này giao thức cung cấp thuộc tính an toàn phía trước [105].
Độ an toàn của giao thức DHKE dựa trên ba khái niệm an toàn được liệt
kê theo thứ tự giảm dần về yêu cầu tính toán [105].
Bài toán logarit rời rạc (DLP): Nếu từ các giá trị 𝑔 và 𝑔𝑎, kẻ nghe lén có
25
thể tính được 𝑎 sau đó có thể tính 𝑔𝑎𝑏 thì giao thức bị phá vỡ.
Bài toán Diffie-Hellman (DHP): Giả thiết từ các giá trị 𝑔, 𝑔𝑎 và 𝑔𝑏 với
việc giải hay không giải bài toán logarit rời rạc, kẻ tấn công có thể tính được 𝑔𝑎𝑏
thì giao thức cũng bị phá vỡ.
Bài toán Diffie-Hellman quyết định (DDHP): Giả thiết cho các giá trị 𝑔,
𝑔𝑎, 𝑔𝑏 và 𝑔𝑐, DDHP trả lời câu hỏi: xác suất là có 𝑎𝑏 = 𝑐𝑚𝑜𝑑𝑝?
Rõ ràng rằng một cách bất kỳ giải quyết bài toán DLP sẽ bao hàm một
cách giải quyết bài toán DHP và một cách bất kỳ giải quyết bài toán DHP sẽ
bao hàm một cách giải quyết bài toán DDHP. Vì vậy, bài toán DDHP là yếu
nhất về mặt độ phức tạp tính toán và hiện đang có nhiều nghiên cứu nhất về
cách tấn công.
Khi kẻ tấn công thực hiện tấn công trên giao thức DHKE, sẽ biết được
các giá trị công khai 𝑦𝐴 và 𝑦𝐵 nhưng không biết được cả 𝑎hoặc𝑏. Làm thế nào
để kẻ tấn công có thể tính được khóa chung 𝐾? Cách tấn công tự nhiên nhất là
∗ và nó
tìm hoặc 𝑎 hoặc𝑏 (hoặc cả hai) từ đó có thể dễ dàng tính được 𝐾. Tuy nhiên,
cần chú ý rằng tính 𝑎 từ 𝑦𝐴 cần phải giải quyết bài toán DLP trong 𝑍𝑝
được cho là khó (khi lựa chọn phù hợp giá trị 𝑝). Tương tự với bài toán tính
𝑏từ 𝑦𝐵.
Về nghiên cứu hướng tới giải quyết bài toán DHP, một câu hỏi được đặt
ra là bài toán này có độ khó như thế nào? Chúng ta thấy rằng nếu bài toán DLP
được giải quyết dễ dàng thì bài toán DHP cũng vậy. Tuy nhiên điều ngược lại
có đúng không? Đó là nếu chúng ta giải quyết được bài toán DHP, thì cũng có
thể giải được bài toán DLP? Điều này vẫn còn là một câu hỏi mở. Theo lý
thuyết có vẻ như có một phương án thông minh nào đó giải quyết bài toán DHP,
tuy nhiên, đến nay trên thực tế vẫn không có phương án nào như vậy được tìm
thấy. Thuật toán đã biết tốt nhất cho bài toán DHP là tính logarit rời rạc của
hoặc 𝑦𝐴hoặc 𝑦𝐵. Điều này dẫn đến sự tin tưởng rằng bài toán DHP mặc dù
26
không biết có tương đương với bài toán DLP hay không, tuy nhiên nó được xác
định là một bài toán khó.
Giao thức DHKE được thiết kế để có khả năng chống lại các tấn công
thụ động, nhưng nó không cung cấp sự xác thực giữa các đối tượng tham gia
truyền thông do đó DHKE có thể bị tổn thương với tấn công kẻ đứng giữa
(Man-In-the-Midlle Attack) [14] hoặc các tấn công chủ động. Bởi vậy các cơ
chế xác thực cần được sử dụng khi áp dụng giao thức này trong thực tế (sử dụng
kết hợp với CA hoặc chữ ký số). Tuy nhiên, khi sử dụng kết hợp với CA, việc
thay đổi khóa công khai là ít, nên khóa bí mật chia sẻ thường chỉ được sử dụng
làm khóa chủ (Master Key), để mã hóa các khóa phiên (Session Key) trong các
phiên liên lạc.
Qua phân tích trên ta nhận thấy hai nhược điểm lớn của giao thức DHKE
là khả năng thay đổi khóa linh hoạt trong từng phiên giao dịch (khi sử dụng
CA để xác thực khóa) và bài toán DLP (khi cần độ an toàn cao hơn trong các
ứng dụng thực tế). Bên cạnh đó, giao thức trao đổi khóa công khai Diffie-
Hellman không đảm bảo xác thực giữa hai bên tham gia giao thức.
1.5.4. Một số tính chất an toàn của giao thức trao đổi khóa
• Xác thực khóa ẩn (implicit key authentication - IKA) [15] của B đối với
A nếu A chắc chắn rằng không có đối tượng nào khác ngoài B có khả năng biết
giá trị của khoá bí mật chia sẻ trong phiên cụ thể. Nếu một giao thức cung cấp
thuộc tính này cho cả hai bên tham gia thì sẽ được là một giao thức trao đổi
khóa có xác thực (giao thức AK). Xác thực khóa ẩn đôi khi còn được gọi là xác
thực khóa.
• Xác nhận khóa hiện (explicit key confirmation - EKC) [15] của B đối
với A nếu A chắc chắn rằng B thực sự đã tính được khoá bí mật chia sẻ chung.
• Xác nhận khóa ẩn (implicit key confirmation - IKC) [15] của B đối với
A nếu A chắc chắn rằng chỉ có B nhận được khoá chia sẻ.
27
Ngoài nhiệm vụ thiết lập một giá trị khóa chung cho hai bên, đôi khi các
bên còn đòi hỏi giao thức cung cấp tính xác thực, các khả năng xác thực mà
giao thức cần có chủ yếu là:
a) An toàn khóa đã biết - KKS [13]
Mỗi một phiên trao đổi khóa giữa hai thực thể A và B, khóa phiên được
tạo ra phải là một khóa bí mật duy nhất chỉ được biết bởi A và B, ngay cả khi
kẻ tấn công đã có nghiên cứu (kiến thức) về một vài khóa phiên khác.
b) Tính an toàn đầy đủ về phía trước - PFS [103]
Half Forward Secrecy: nếu khóa bí mật dài hạn của một bên tham gia
thỏa thuận khóa bị lộ thì các khóa phiên được tạo ra trước đó cũng không bị
ảnh hưởng.
Perfect Forward Secrecy (hoặc Full Forward Secrecy): nếu khóa bí mật
dài hạn của cả hai bên tham gia thỏa thuận khóa bị lộ thì các khóa phiên được
tạo ra trước đó vẫn không bị ảnh hưởng.
c) An toàn chống tấn công không biết khóa chia sẻ UKS (Unkown key-
share attack) [25].
Đảm bảo ngăn chặn được kịch bản, khi B tin tưởng một khóa được chia
sẻ với thực thể C nào đó không phải A, thì A lại tin tưởng chắc chắn rằng khóa
đó được chia sẻ với B.
Việc thêm định danh của người kiểm tra chữ ký không phải là cách duy
nhất để chống lại tấn công này. Chẳng hạn, sử dụng “Designated verifier
signature” [110] có thể nhận được phương pháp phòng chống tốt hơn mà không
cần thêm vào định danh của người kiểm tra chữ ký.
d) An toàn chống mạo danh thỏa hiệp khóa - KCI [14]
Một giao thức thỏa thuận khóa là kháng mạo danh thỏa hiệp khóa nếu sự
thỏa hiệp khóa bí mật dài hạn của một thực thể tin cậy không cho phép kẻ tấn
công thiết lập một khóa phiên với thực thể này bằng cách giả mạo như một thực
28
thể tin cậy khác.
Ngoài ra có thể đảm bảo một số tính chất an toàn như sau:
• Tính chất khóa độc lập: nếu khóa phiên không phụ thuộc vào các thành
phần bí mật.
• Khả năng có thể từ chối hợp lý (Plausible deniablity) [18]: cho phép
một thực thể có thể từ chối “hợp lý” sự tồn tại của một kết nối với một đối tác
truyền thông. Đặc điểm này có được nếu như không ký lên định danh của mình
hoặc nếu gửi các chứng chỉ số trong một thông báo đã được mã hóa. Chối từ
hợp lý là một đặc điểm được đưa ra trong quá trình xây dựng giao thức SIGMA
của Krawczyk [84]. Giao thức STS gửi các thông báo kèm chứng chỉ để ở dạng
rõ nên không có tính chất này.
• Khả năng bảo vệ định danh (Identity protection): giao thức trao đổi
khóa yêu cầu phải thiết kế để có tính chất xác thực hai chiều đủ tin cậy. Để thực
hiện được điều này, định danh của các thực thể tham gia trao đổi khóa phải
được truyền trên mạng. Một vài ứng dụng cần chống lại việc để lộ thông tin
định danh trên mạng. Việc mã hóa định danh người gửi là chưa đủ, nó yêu cầu
người gửi phải chứng minh định danh mà mình sở hữu trước khi bản mã định
danh được gửi đi. Giao thức SIGMA là một trong giao thức được thiết kế để hỗ
trợ khả năng bảo vệ định danh. Giao thức STS và giao thức trong ISO 11770-
3 không có tính chất này.
• An toàn chống tấn công kẻ đứng giữa - MITM [25]: khi kẻ tấn công
chặn bắt các thông tin giữa hai thực thể A và B, làm cho họ tin rằng họ đang
trực tiếp trao đổi với nhau trên một kết nối riêng. Trong khi thực tế toàn bộ các
kết nối giữa A và B đã bị điều khiển bởi kẻ tấn công. Tấn công kẻ đứng giữa
chỉ thành công khi kẻ tấn công giả mạo được A hoặc B. Để chống tấn công này,
hầu hết các giao thức trao đổi khóa phải sử dụng tính chất xác thực hai chiều
(dùng PKI chẳng hạn).
29
• An toàn chống tấn công SSR (session-state reveal) [25]: đảm bảo an
toàn khi kẻ tấn công có được các thành phần ngẫu nhiên trong quá trình trao
đổi khóa, nhưng không thể tính được khóa bí mật chia sẻ.
• An toàn chống tấn công cưỡng bức chủ/thụ động [25]:
Theo cách tấn công thụ động, kẻ tấn công không thể tính được các giá trị
trao đổi dựa trên các thông tin nghe lén được trong quá trình trao đổi.
Theo cách tấn công chủ động, kẻ tấn công có thể đóng vai người gửi
hoặc người nhận. Nếu kẻ tấn công trong vai trò người gửi tin, hắn có thể xác
định khi nào thì bên nhận là trung thực và khi nào thì giả dối. Sau đó, hắn sẽ
gửi hai thông điệp đến bên nhận (một bản thật và một bản giả). Sau khi truyền,
hắn sẽ hỏi bên nhận mở thông điệp và hắn có thể xác định được người gửi là
trung thực hay không dựa trên phản hồi.
• An toàn chống tấn công từ chối dịch vụ DoS [25]
Tấn công từ chối dịch vụ là một kiểu tấn công hay gặp nhất hiện nay và
hầu như chưa có cách phòng chống triệt để. Kiểu tấn công thông dụng nhất là
gửi rất nhiều yêu cầu phục vụ đến server và làm cho server không còn tài
nguyên cũng như năng lực tính toán để xử lý dẫn đến treo hệ thống.
• An toàn chống tấn công lặp lại (Replay attack) [14]
Tấn công lặp là một kiểu tấn công mạng mà theo đó một gói tin dữ liệu
hợp lệ sẽ được kẻ tấn công chặn bắt, giữ chậm và gửi trả lại cho người gửi. Giả
sử A muốn chứng minh danh tính của mình với B. B yêu cầu mật khẩu của A,
A sẽ gửi thông tin về mật khẩu (giá trị băm của mật khẩu chẳng hạn) cho B,
trong khi đó kẻ tấn công sẽ chặn bắt và giữ lại thông tin này. Sau khi trao đổi
giữa A và B kết thúc, kẻ tấn công sẽ giả mạo A để kết nối đến B, khi được hỏi
mật khẩu để xác nhận định danh thì kẻ tấn công sẽ gửi thông tin về mật khẩu
của A (thu giữ được trong phiên làm việc trước).
Có một số cách để chống tấn công này, thông dụng nhất là sử dụng một
30
giá trị ngẫu nhiên làm định danh phiên (session ID) hoặc sử dụng nhãn thời
gian (timestamp).
• An toàn chống tấn công phản xạ (Reflextion attack) [25]
Đây là một phương pháp tấn công hệ thống xác thực kiểu “thử thách -
phản ứng” (Challenge - response) mà được sử dụng như nhau cho cả hai phía.
Kiểu tấn công này được mô tả tổng quát như sau:
- Kẻ tấn công khởi tạo một kết nối đến đích A.
- Đích A cố gắng xác thực kẻ tấn công bằng việc gửi cho nó một thông
điệp “thử thách” (Challenge message).
- Kẻ tấn công tạo ra một kết nối khác đến đích A và gửi thử thách mà nó
nhận được như là thử thách của kẻ tấn công.
- Đích A trả lời lại thử thách mà kẻ tấn công gửi đến.
- Kẻ tấn công gửi trả lời vừa nhận được tới đích A trên kết nối ban đầu.
Có một số cách để giải quyết vấn đề này đó là:
- Người phúc đáp gửi định danh của mình kèm trong thông báo trả lời,
khi đó nếu nhận được một trả lời mà có định danh của mình thì người khởi tạo
có thể chấm dứt kết nối đó.
- Yêu cầu khóa hoặc giao thức phải khác nhau giữa hai phía.
1.5.5. Điều kiện phát triển giao thức trao đổi khóa an toàn
Giao thức trao đổi khóa được gọi là an toàn khi đảm bảo các yếu tố về
các mặt sau:
Bảo mật: giao thức phải cung cấp cơ chế để bảo mật thông tin truyền
trên mạng, bảo vệ khỏi các mối đe dọa như nghe trộm, sửa đổi dữ liệu và mất
dữ liệu.
Chứng thực: phải có cơ chế để chứng thực danh tính của các bên tham
gia trao đổi khóa, để đảm bảo rằng chỉ có các bên hợp pháp mới được tham gia
giao tiếp.
31
Thông tin và an toàn trong thời gian dài: giao thức phải ngăn chặn
việc sử dụng lại thông tin đã truyền và đảm bảo tính an toàn của thông tin trong
thời gian dài.
Vì vậy, khi phát triển giao thức trao đổi khóa an toàn cần thỏa mãn các
điều kiện sau đây:
- Sau khi hoàn thành giao thức, các bên tham gia đều có được giá trị khóa
chung chia sẻ giống nhau.
- Có khả năng xác thực khóa hiện.
- Giao thức cung cấp các thuộc tính an toàn: chống tấn công khóa đã biết,
an toàn đầy đủ phía trước, chống tấn công không biết khóa chia sẻ UKS, chống
mạo danh thỏa hiệp khóa KCI, chống tấn công khóa lặp lại và làm mới khóa.
- Hiệu quả của giao thức thiết lập khóa được xác định theo thứ tự sau:
+ Số lần truyền dữ liệu (thông điệp) giữa các bên,
+ Băng thông cần thiết (số bit truyền) cho việc trao đổi dữ liệu,
+ Độ phức tạp tính toán của mỗi bên (thời gian tính toán),
+ Khả năng tính toán trước giá trị để giảm thời gian tính toán Online.
1.6. Một số giao thức trao đổi khóa an toàn
Các giao thức đề xuất theo hướng này là sự kết hợp các ưu điểm của
DHKE và lược đồ chữ ký số, nghĩa là: thiết lập được khóa chia sẻ bí mật qua
kênh truyền không an toàn đồng thời đảm bảo tính toàn vẹn và xác thực được
nguồn gốc của khóa.
1.6.1. Giao thức trao đổi khóa Arazi
Năm 1993, Arazi là người đầu tiên phát triển giao thức trao đổi khóa theo
hướng tích hợp giao thức DHKE với lược đồ chữ ký số DSA. Giao thức này
dùng các khóa công khai chỉ sử dụng một lần (one-time), còn gọi là khóa công
khai ngắn hạn (ephemeral) cho giao thức DHKE. Ngoài ra, các khóa công khai
ngắn hạn được ký bằng cách sử dụng lược đồ chữ ký số DSA để xác thực các
32
khóa này.
a) Mô tả giao thức
Các tham số công khai (𝑝, 𝑞, 𝑔)được xác định như cách thiết lập tham số
hệ thống của lược đồ chữ ký số DSA [14]. Cặp khóa bí mật/công khai của A là
(𝑥𝐴, 𝑦𝐴) và cặp khóa bí mật/công khai tương ứng của B là (𝑥𝐵, 𝑦𝐵). Giao thức
thiết lập khóa an toàn của Arazi được thể hiện trong Bảng 1.2 dưới đây:
Bảng 1.2. Giao thức trao đổi khóa Arazi
Bước A B
1
−1(𝑒𝐴 + 𝑥𝐴. 𝑟𝐴)𝑚𝑜𝑑𝑞
Chọn 𝑘𝐴 ∈ [1, 𝑞 − 1]. Tính 𝑅𝐴 = 𝑔𝑘𝐴𝑚𝑜𝑑𝑝, 𝑟𝐴 = 𝑅𝐴𝑚𝑜𝑑𝑞 𝑒𝐴 = 𝐻(𝑅𝐴) 𝑠𝐴 = 𝑘𝐴
(𝑅𝐴, 𝑠𝐴)
2
𝑠𝐵 = 𝑘𝐴
Tính : 𝑟𝐴 = 𝑅𝐴𝑚𝑜𝑑𝑞 Verify DSA (𝑟𝐴, 𝑠𝐴) Chọn ngẫu nhiên: 𝑘𝐵 ∈ [1, 𝑞 − 1] Tính 𝑅𝐵 = 𝑔𝑘𝐵𝑚𝑜𝑑𝑝, 𝑟𝐵 = 𝑅𝐵𝑚𝑜𝑑𝑞 𝑒𝐵 = 𝐻(𝑅𝐵) −1. (𝑒𝐵 + 𝑥𝐵. 𝑟𝐵)𝑚𝑜𝑑𝑞 𝑘𝐵𝑚𝑜𝑑𝑝 = 𝑔𝑘𝐴.𝑘𝐵𝑚𝑜𝑑𝑝.
Tính khóa chung: 𝐾 = 𝑅𝐴
(𝑅𝐵, 𝑠𝐵)
3
𝑘𝐴𝑚𝑜𝑑𝑝 = 𝑔𝑘𝐴.𝑘𝐵𝑚𝑜𝑑𝑝
Tính rB = RB mod q Verify DSA (rB, sB) Tính khóa bí mật chung: 𝐾 = 𝑅𝐵
Để tiết kiệm băng thông, giao thức Arazi có thể được thay đổi bằng cách
A và B trao đổi (𝑟𝐴, 𝑠𝐴) và (𝑟𝐵, 𝑠𝐵) thay vì trao đổi (𝑅𝐴, 𝑠𝐴) và (𝑅𝐵, 𝑠𝐵)
b) Đánh giá giao thức
Theo đánh giá của Nyberg and Rueppel [60] cho thấy giao thức Arazi
không cung cấp thuộc tính an toàn chống lại tấn công khóa biết do các khóa bí
mật ngắn hạn (short-term) được chia sẻ có thể được tính từ khóa bí mật dài hạn
(long-term)𝑔𝑥𝐴.𝑥𝐵 và các thông tin công khai khác. Do đó, nếu kẻ tấn công biết
33
được K thì có thể tính được 𝑔𝑥𝐴.𝑥𝐵 và do đó tính được tất cả các khóa bí mật
khác được xác lập bởi A và B. Theo tính chất an toàn của giao thức trao đổi
khóa thì giao thức Arazi trong Bảng 1.2 không cung cấp thuộc tính chống lại
tấn công khóa biết.
1.6.2. Giao thức trao đổi khóa L. Harn
Để khắc phục nhược điểm của giao thức Arazi, năm 1995, L. Harn và
các cộng sự đề xuất phát triển giao thức trao đổi khóa của Arazi trong bài báo
[63] nhằm cung cấp thuộc tính chống lại tấn công khóa biết. Thay vì phân phối
một khóa công khai đơn lẻ trong mỗi phiên giao tiếp, nhóm L.Harn đề xuất
phân phối nhiều khóa công khai trong mỗi phiên [64].
a) Mô tả giao thức
Các thông tin công khai sẽ được thỏa thuận bởi các bên tham gia giao
thức như sau:
- 𝑝là một số nguyên tố lớn thỏa mãn 2511 <𝑝< 2512
∗, - Chọn𝑔 = 𝛼(𝑝−1)/𝑞𝑚𝑜𝑑𝑝, là phần tử sinh có bậc 𝑞 của nhóm 𝑍𝑝
∗. nghĩa là:1 < 𝑔 < 𝑝 và 𝑔𝑞𝑚𝑜𝑑𝑝 = 1, ở đây 𝛼 ∈ 𝑍𝑝
- 𝑞là một ước số nguyên tố của 𝑝 − 1thỏa mãn 2159 <𝑞< 2160
- 𝑥𝑖 là khóa bí mật của người dùng i, thỏa mãn 2159< 𝑥𝑖 < 2160 - 𝑦𝑖là khóa công khai tương ứng của người dùng i, 𝑦𝑖 = 𝑔𝑥𝑖𝑚𝑜𝑑𝑝 - H là một hàm băm an toàn (SHA-1) đưa ra bởi NIST.
Trong đó (𝑝, 𝑞, 𝑔, 𝑦𝑖) là các giá trị công khai và 𝑥𝑖 là giá trị bí mật.
L.Harn giả sử rằng A muốn chia sẻ ba khóa phiên bí mật với B. Khi đó
giao thức sẽ hoạt động theo các bước theo Bảng 1.3 dưới đây:
34
Bảng 1.3. Giao thức trao đổi khóa L.Harn
A B
Bước 1
Chọn ngẫu nhiên: 𝑣1và 𝑣2 [1, q-1). Tính: 𝑚𝐴1 = 𝑔𝑣1𝑚𝑜𝑑𝑝. 𝑚𝐴2 = 𝑔𝑣2𝑚𝑜𝑑𝑝 𝑟𝐴 = ((𝑚𝐴1. 𝑚𝐴2)𝑚𝑜𝑑𝑝) 𝑚𝑜𝑑𝑞. 𝑠𝐴 = (𝑣1 + 𝑣2)−1[𝐻(𝑚𝐴1||𝑚𝐴2) + 𝑥𝐴. 𝑟𝐴]𝑚𝑜𝑑𝑞.
(𝑚𝐴1, 𝑚𝐴2, 𝑠𝐴)
2
Tính:𝑟𝐴 = ((𝑚𝐴1. 𝑚𝐴2)𝑚𝑜𝑑𝑝)𝑚𝑜𝑑𝑞. - Verify DSA (rA, sA) Chọn ngẫu nhiên: 𝑤1 và 𝑤2 [1, q-1) Tính : 𝑚𝐵1 = 𝑔𝑤1𝑚𝑜𝑑𝑝. 𝑚𝐵2 = 𝑔𝑤2𝑚𝑜𝑑𝑝 𝑟𝐵 = ((𝑚𝐵1. 𝑚𝐵2)𝑚𝑜𝑑𝑝)𝑚𝑜𝑑𝑞. 𝑠𝐵 = (𝑤1 + 𝑤2)−1[𝐻(𝑚𝐵1||𝑚𝐵2) + 𝑥𝐵. 𝑟𝐵]𝑚𝑜𝑑𝑞. - Tính các khóa bí mật được chia sẻ: 𝑤1𝑚𝑜𝑑𝑝 𝑤2𝑚𝑜𝑑𝑝 𝑤1𝑚𝑜𝑑𝑝
+ 𝐾𝐵𝐴1 = 𝑚𝐴1 + 𝐾𝐵𝐴2 = 𝑚𝐴2 + 𝐾𝐵𝐴3 = 𝑚𝐴2
(𝑚𝐵1, 𝑚𝐵2, 𝑠𝐵)
3
Tính:𝑟𝐵 = ((𝑚𝐵1. 𝑚𝐵2)𝑚𝑜𝑑𝑝)𝑚𝑜𝑑𝑞. - Verify DSA (rB, sB) - Tính các khóa bí mật được chia sẻ: 𝑣1 𝑚𝑜𝑑𝑝. + 𝐾𝐴𝐵1 = 𝑚𝐵1 𝑣2 𝑚𝑜𝑑𝑝. + 𝐾𝐴𝐵2 = 𝑚𝐵2 𝑣2 𝑚𝑜𝑑𝑝. + 𝐾𝐴𝐵3 = 𝑚𝐵1
b) Đánh giá giao thức:
L.Harn đánh giá độ an toàn của giao thức trên theo cách thức tấn công
dựa trên khóa đã biết mà Nyberg và Rueppel đã đưa ra.
Tại Bước 3 của giao thức ta thu được ba khóa bí mật được chia sẻ giữa
A và B, các khóa đều được biết công khai hoặc được gửi giữa các bên tham gia
giao thức ngoại trừ 𝑔𝑣1𝑤2 và 𝑔𝑥𝐴𝑥𝐵 nên dù đối phương có biết được các khóa
35
𝐾𝐴𝐵1, 𝐾𝐴𝐵2, 𝐾𝐴𝐵3 trong một phiên truyền thông thì cũng không thể tính được các khóa này trong các phiên khác. Vì vậy, phương pháp tấn công dựa trên khóa đã
biết không thể thực hiện thành công trong giao thức của L. Harn.
Giao thức này cho phép trao đổi n cặp khóa công khai giữa hai bên tham
gia giao thức và xác lập được (n2 - 1) khóa phiên bí mật. Ngoài ra, giao thức
còn cung cấp thêm tính chất an toàn: chống lại tấn công dựa trên khóa đã biết.
1.6.3. Giao thức trao đổi khóa Phan
Năm 2005, Phan đã chỉ ra rằng giao thức của L.Harn không cung cấp hai
tính chất về chuẩn bảo mật mà các giao thức cần có đó là an toàn phía trước
(forward secrecy) và làm mới khóa (key freshness) [83].
Không có tính chất an toàn phía trước: Trong giao thức của Harn, khi
khóa riêng dài hạn 𝑥𝐵 của B bị lộ thì kẻ tấn công có thể dễ dàng tính được bất
kỳ khóa phiên 𝐾𝐵𝐴 nào đã được thành lập trước đó. Điều tương tự cũng sẽ xảy
ra với 𝐾𝐴𝐵 khi 𝑥𝐵 bị lộ.
Không có tính chất làm mới khóa: Trong giao thức của L.Harn cho thấy
𝐾𝐴𝐵 phụ thuộc vào khóa công khai 𝑦𝐵 (A luôn biết khóa này) của B và một giá
trị bí mật ngẫu nhiên v (được lựa chọn bởi A). Vì vậy, A có thể quyết định rằng
𝐾𝐴𝐵 phải bằng một giá trị đã được định trước. B cũng có thể làm điều tương tự
với 𝐾𝐵𝐴như A.
Phan đưa ra cải tiến của mình trên giao thức của Harn để giao thức có
thể cung cấp hai tính chất nói trên (an toàn phía trước và làm mới khóa) và
được mô tả như Bảng 1.4 dưới đây.
a) Mô tả giao thức
Bảng 1.4. Giao thức trao đổi khóa Phan
Bước 1
A B Chọn ngẫu nhiên: v 𝑚𝐴 = 𝑔𝑣𝑚𝑜𝑑𝑝 𝑚𝐴 = 𝑔𝑣𝑚𝑜𝑑𝑝
36
A B
Bước 1
(𝑚𝐴, 𝑛𝐴)
2
Chọn ngẫu nhiên: w 𝐾𝐵𝐴1 = (𝑚𝐴)𝑥𝐵𝑤𝑚𝑜𝑑𝑝 = 𝑔𝑥𝐵𝑣𝑤𝑚𝑜𝑑𝑝 𝐾𝐵𝐴2 = (𝑛𝐴)𝑤𝑚𝑜𝑑𝑝 = 𝑔𝑥𝐴𝑣𝑤𝑚𝑜𝑑𝑝 𝑚𝐵 = 𝑔𝑤𝑚𝑜𝑑𝑝 𝑛𝐵 = (𝑦𝐵)𝑤𝑚𝑜𝑑𝑝 𝑟𝐵 = 𝑚𝐵𝑚𝑜𝑑𝑝 𝑠𝐵 = ((𝑤)−1𝐻(𝑚𝐵||𝐾𝐵𝐴||𝐾𝐴𝐵 + 𝑥𝐵𝑟𝐵)𝑚𝑜𝑑𝑞
(mB, nB, sB)
3
𝐾𝐴𝐵1 = (𝑛𝐵)𝑣𝑚𝑜𝑑𝑝 = 𝑔𝑥𝐵𝑣𝑤𝑚𝑜𝑑𝑝 𝐾𝐴𝐵2 = (𝑚𝐵)𝑥𝐴𝑣𝑚𝑜𝑑𝑝 = 𝑔𝑥𝐴𝑣𝑤𝑚𝑜𝑑𝑝 𝑟𝐵 = 𝑚𝐵𝑚𝑜𝑑𝑞 𝑉𝑒𝑟𝑖𝑓𝑦𝐷𝑆𝐴(𝑟𝐵, 𝑠𝐵) 𝑟𝐴 = 𝑚𝐴𝑚𝑜𝑑𝑞 𝑠𝐵 = ((𝑣)−1𝐻(𝑚𝐴||𝐾𝐴𝐵||𝐾𝐵𝐴 + 𝑥𝐴𝑟𝐵)𝑚𝑜𝑑𝑞
sA
4
rA = mA mod q Verify DSA (rA, sA)
b) Đánh giá giao thức
Thứ nhất, dễ dàng nhận thấy giao thức của Phan giữ nguyên các ưu điểm
của giao thức của L.Harn do các khóa phiên đều được xác nhận vì có trong
thuật toán ký.
Thứ hai, trong giao thức trao đổi khóa Phan ta nhận thấy dù 𝐾𝐴𝐵1 có được tính theo cách nào đi chăng nữa thì nếu khóa riêng dài hạn 𝑥𝐵của B bị lộ, kẻ tấn công cũng không thể tính được khóa phiên 𝐾𝐴𝐵1 vì 𝐾𝐴𝐵1 còn phụ thuộc vào các khóa bí mật ngắn hạn của A và B. Tương tự với 𝐾𝐵𝐴1 khi 𝑥𝐴 bị lộ. Do đó, giao thức trao đổi khóa Phan cung cấp thuộc tính an toàn phía trước.
Thứ ba, trong giao thức này cho thấy 𝐾𝐴𝐵1 không những phụ thuộc vào khóa công khai 𝑦𝐵 (A luôn biết khóa này) của B và một giá trị bí mật ngẫu nhiên
37
v (được lựa chọn bởi A) mà còn phụ thuộc vào giá trị bí mật ngẫu nhiên w (được
lựa chọn bởi B). Vì vậy, A không thể định trước được 𝐾𝐴𝐵1. Tương tự B cũng không thể định trước được 𝐾𝐵𝐴1. Tóm lại cả A và B đều không thể định trước được các khóa phiên được đàm phán giữa hai bên. Do đó, giao thức trao đổi khóa
Phan cung cấp tính chất làm mới khóa.
Tuy nhiên, trong giao thức trao đổi khóa có một mối quan hệ hiện
(explicit relation) giữa hai khóa phiên được đàm phán giữa hai bên, 𝐾𝐴𝐵1 và 𝐾𝐴𝐵2. Mối quan hệ này có thể gây ra một số lỗ hổng trong tương lai. Ví dụ, khi các khóa riêng dài hạn 𝑥𝐴và 𝑥𝐵bị tổn thương đồng thời, kẻ tấn công có thể tính toán 𝐾𝐴𝐵1từ 𝐾𝐵𝐴2 và ngược lại. Mặc dù hiện tại chưa có cuộc tấn công nào vào giao thức này, nhưng các giao thức sẽ an toàn hơn nếu không có mối quan hệ rõ
ràng giữa hai khóa phiên được thỏa thuận.
1.7. Đánh giá chung về hướng nghiên cứu
Kể từ công trình của hai tác giả W. Diffie và M. Hellman [104] năm
1976, “chữ ký số” và “trao đổi khóa” đã trở thành những đối tượng nghiên cứu
trong nhiều công trình ở cả trong và ngoài nước. Các chủ đề nghiên cứu liên
quan đến những khái niệm này thực sự là hướng nghiên cứu mở và hấp dẫn,
mà trải dài từ thiết kế đề xuất mới, thực hiện các tấn công cài đặt, đánh giá độ
an toàn, hay ứng dụng của chúng.
1.7.1. Các công trình liên quan đến lược đồ dựa trên 01 bài toán khó
Cho đến nay, chữ ký số đã và đang được chuẩn hóa bởi nhiều tổ chức và
quốc gia trên thế giới, có thể kể ra lược đồ ECDSA của Mỹ, lược đồ GOST R
của Nga, lược đồ ECGDSA của Đức,… các lược đồ này đều có mặt trong chuẩn
chữ ký số ISO/IEC 14888-3 [54], [55]. Trong đó, ECDSA và GOST R là những
lược đồ được nghiên cứu và xem xét ứng dụng vào thực tiễn nhiều hơn. Theo
định hướng đặt ra ban đầu, luận án tập trung hơn vào các phát triển cho lớp
38
lược đồ chữ ký số kiểu GOST.
Việc xây dựng, phát triển các lược đồ chữ ký số mới từ các chữ ký số đã
được chuẩn hóa cũng là một hướng nghiên cứu được quan tâm nhiều tại các
công trình trong nước, có thể kể đến nhóm các công trình [2], [6], [7]. Ý tưởng
chung là của những công trình này là phát triển các chữ ký số mới dựa trên các
nhóm nền khác nhau. Cụ thể,
- Trong công trình [2], vẫn dựa trên ý tưởng tổng quát hóa các lược đồ
chữ ký DSA và GOST R 34.10-94 giống như trong công trình [6], tuy nhiên
các tác giả đã tập trung theo hướng xem xét việc tổng quát hóa các lược đồ kể
trên dựa theo bài toán phân tích số thay vì bài toán DLP vốn có.
- Công trình [6] đã tổng quát hóa các lược đồ chữ ký DSA và GOST R
34.10-94. Các tác giả đã đưa ra những phân tích, lập luận để chỉ ra tính đúng
đắn của lược đồ chữ ký số tổng quát được nêu ra. Sau đó, 04 lược đồ cụ thể
(dựa trên bài toán DLP) đã được đề xuất từ dạng lược đồ chữ ký tổng quát.
- Công trình [7] đã đề xuất một dạng lược đồ chữ ký dựa trên hệ mã
Polig-Hellman. Lược đồ đề xuất này có thể được xem là biến thể của lược đồ
chữ ký RSA, và thông qua đánh giá độ phức tạp các tác giả đã chỉ ra sự tương
đương về hiệu quả giữa chúng.
1.7.2. Các công trình liên quan đến lược đồ dựa trên 02 bài toán khó
Thông thường, các lược đồ chữ ký như RSA, DSA hay GOST R 34.10-
94 đều chỉ được xây dựng dựa trên một bài toán khó cơ sở (hoặc DLP, hoặc
phân tích số). Nhằm nâng cao độ an toàn, có rất nhiều tác giả đã đề xuất các
dạng lược đồ chữ ký số mới dựa trên đồng thời hai bài toán khó. Ý tưởng cho
điều này là việc phá vỡ một trong hai bài toán vẫn cho phép lược đồ được đề
xuất còn an toàn dựa trên độ khó giải của bài toán còn lại.
Năm 1994, L.Harn đã công bố lược đồ dựa trên hai bài toán khó là DLP
39
và IFP [62], và vào năm 1996 tại công trình [68] của N. Y. Lee và T. Hwang
chỉ ra trong lược đồ của Harn chỉ cần giải quyết bài toán logarithm rời rạc là có
thể phá giải lược đồ của L.Harn. Năm 2004 các tác giả cũng công bố lược đồ
dựa trên hai bài toán khó [101]. Tuy nhiên, năm 2005 Chen và Horng cũng
chứng minh chỉ cần giải quyết bài toán logarithm rời rạc là có thể phá giải lược
đồ này.
Vì vậy, cần phải phát triển một lược đồ chữ ký số an toàn mới dựa trên
hai bài toán khó mà để phá nó cần giải quyết đồng thời hai bài toán khó.
Năm 2009, Dernova đề xuất lược đồ chữ ký số dựa trên hai bài toán khó
là phân tích thừa số nguyên tố và logarithm rời rạc [37]. Lược đồ này sử dụng
một số nguyên tố modulo 𝑝 với một cấu trúc đặc biệt 𝑝 = 2𝑛 + 1. Tuy nhiên
chữ ký không thỏa mãn điều kiện độ dài 𝑙𝑞 nên có thể giải bài toán phân tích
thừa số nguyên tố hay giải bài toán logarithm rời rạc cho phép tìm ra giá trị
khóa bí mật và giả mạo chữ ký.
Năm 2012, S. Vishnoi và V. Shrivastava đề xuất lược đồ chữ ký số mới
dựa trên hai bài toán khó (IFP và DLP) [96]. Lược đồ này sử dụng một số
nguyên tố lớn 𝑝 cho bài toán logarithm rời rạc; một số 𝑛 là tích của hai số ∗ ; 𝐹𝐻 là hàm băm nguyên tố lớn 𝑞 và 𝑞’ thỏa mãn 𝑝 < 𝑛; 𝑔 là phần tử sinh của 𝑍𝑛
một chiều.
Đến năm 2013, Shin-Yan Chiou, Yi-Xuan He [95] đã chứng minh giao
thức của S. Vishnoi và V. Shrivastava là không an toàn trước tấn công giả mạo
chữ ký.
Như vậy, với các lược đồ chữ ký số dựa trên hai bài toán khó trước đây,
thực chất chỉ cần giải một trong hai bài toán DLP hoặc IFP là có thể phá giải
được. Nhằm nâng cao độ an toàn cho các thuật toán mật mã khóa công khai và
lược đồ chữ ký số dựa trên tính khó của việc giải đồng thời 2 bài toán khó là
40
một hướng tiếp cận đang nhận được nhiều sự quan tâm của các nhà nghiên cứu
[16], [40], [81], [94], [96], [97], [111].
Mặc dù, những ý tưởng phát triển các lược đồ chữ ký kể trên mang nhiều
tính mới và độc đáo, tuy vậy việc đánh giá an toàn cho chúng là vẫn còn đơn
giản. Cụ thể, khả năng chống giả mạo của các công trình chỉ được lập luận ở
mức nếu bài toán khó được giải thì có thể giả mạo chữ ký hợp lệ, tuy nhiên đây
chỉ là điều kiện cần mà chưa thể xem là điều kiện đủ cho các đề xuất là an toàn.
Tại Chương 3, luận án sẽ giới thiệu hai lược đồ chữ ký số mà để phá giải
nó thì cần giải quyết đồng thời cả hai bài toán logarithm rời rạc và phân tích
thừa số nguyên tố.
1.7.3. Các công trình liên quan đến phát triển giao thức trao đổi khóa
Phát triển giao thức trao đổi khóa có xác thực dựa trên cơ chế Diffie-
Hellman cũng là một chủ đề trọng tâm trong các công trình [CT6], [8]. Tuy
nhiên, cơ chế xác thực ở những công trình này dựa trên nguyên thủy đối xứng
là hàm băm thay vì sử dụng chữ ký số. Cụ thể, các giá trị chia sẻ sẽ được đảm
bảo tính toàn vẹn bằng giá trị xác thực mà được tạo bằng cách băm giá trị chia
sẻ cùng với một giá trị bí mật chung được tính từ các khóa dài hạn của các bên.
Về khía cạnh an toàn, các giao thức đề xuất ở những công trình này mới chỉ
được đánh giá theo các tính chất xác thực khóa ẩn, chứng nhận khóa và PFS,
mà chưa chứng minh tính kháng tấn công UKS và KCI. Hơn nữa, độ an toàn
chứng minh được trong mô hình an toàn lý thuyết cũng chưa được xem xét.
Năm 1995, nhóm tác giả A. J. Menezes, Minghua Qu và S. A. Vanstone
(MQV) [13] đã trình bày phương thức tấn công đối với một số giao thức trao
đổi khóa đã phát triển trước đó như: giao thức một lần truyền của Nyberg-
Rueppel, giao thức hai lần truyền của Matsumoto-Takashima-Imai (MTI), Goss
và Yacobi. Các giao thức này đều không cung cấp tính chất an toàn là xác thực
khóa ẩn. MQV cũng đề xuất giao thức của nhóm và chứng minh được giao thức
41
đề xuất cung cấp tính chất an toàn là xác thực khóa ẩn. Giao thức MQV được
coi là giao thức trao đổi khóa chuẩn và được tích hợp trong các khóa công khai
tiêu chuẩn IEEE P1363 [48].
Khi các hệ mật mới hơn được phát triển, thuật toán DHKE thay đổi dựa
trên các vấn đề toán học khác nhau. Đó là DHKE dựa trên đường cong elliptic
(Elliptic Curve Diffie-Hellman Key Exchange - ECDHKE), các giao thức
MQV (Menezes-Qu-Vanstone Protocols), giao thức ECMQV (Elliptic Curve
MQV), HMQV (Hashed MQV), FHMQV (Fully Hashed MQV),…
Năm 2005, khi nghiên cứu tính an toàn của giao thức MQV trên mô hình
trao đổi khóa Canetti-Krawczyk [84] (cho các giao thức có xác thực dựa trên
chữ ký), Hugo Krawczyk đã chứng minh rằng giao thức MQV không an toàn
với tấn công khóa biết. Để khắc phục nhược điểm trên Krawczyk đã đề xuất
giao thức HMQV [47] là phát triển của giao thức MQV. Với việc sử dụng hàm
băm (hash function), Krawczyk đã chứng minh giao thức HMQV có độ phức
tạp tính toán tương đương với giao thức MQV nhưng có độ an toàn cao hơn
(khả năng chống lại tấn công khóa biết). Một biến thể mới của giao thức HMQV
được P. S. Augustin và cộng sự giới thiệu năm 2009 là FHMQV (Fully Hashed
MQV) và FHMQV-C được thể hiện chi tiết trong [78].
Dựa theo các phương pháp này, các chuyên gia của Nga đã xây dựng và
chứng minh độ an toàn cho các giao thức mà họ đề xuất. Cụ thể, giao thức
Echinacea-3 được xây dựng và chứng minh theo phương pháp của Cantti-
Krawczyk, trong khi Lemongrass-3 được xây dựng trên ý tưởng của giao thức
KEA+C của Lauter-Mityagin [59].
Một hướng phát triển khác của giao thức MQV được Tseng đề xuất vào
năm 2002 [107] là không sử dụng hàm băm, thay vào đó sử dụng 𝑛2 khóa phiên
trong một phiên để chống lại tấn công khóa biết. Năm 2013, Huang và cộng sự
phát triển giao thức hiệu quả tạo lập 𝑛2 + 𝑛 khóa trong một phiên [65]. Năm
42
2014, nhóm nghiên cứu của Li-Chin Hwang tiếp tục mở rộng giao thức của
Tseng bằng cách sinh 𝑛2 + 1 khóa phiên và tất cả các khóa phiên đều được sử
dụng để chống lại tấn công khóa biết.
Một số hướng nghiên cứu nhằm khắc phục nhược điểm trên đây của
DHKE là tích hợp giao thức này với các thuật toán chữ ký số, hoặc giao thức
trao đổi khóa an toàn dựa trên hai bài toán khó và đã có một số kết quả về
hướng nghiên cứu này được công bố tại [9], [16], [38], [96], [97].
Năm 1994, Shor đưa ra thuật toán lượng tử để giải các bài toán trên trong
thời gian đa thức. Từ đó, cộng đồng đang tìm kiếm các hệ mã mới mà độ an
toàn của chúng được dựa trên độ khó của các bài toán mà không bị phá vỡ bởi
máy tính lượng tử. Các hệ mã này được gọi là mật mã hậu lượng tử (Post-
quantum Cryptography).
Một trong những nhánh chính của mật mã hậu lượng tử là mật mã dựa
trên các phép đẳng giống (isogenies) của đường cong elliptic siêu kì dị
(Isogeny-based cryptography). Stolbunov đầu tiên giới thiệu một hệ mã tựa
Diffie-Hellman dựa trên độ khó của việc tính isogenies giữa các đường cong
elliptic, bài toán được cho là khó với máy tính lượng tử. Thuật toán xác suất cổ
điển tốt nhất để giải bài toán này là của Galbraith và Stolbunov, dựa trên thuật
toán của Galbraith, Hess và Smart. Thuật toán này chạy trong thời gian mũ
(exponential time). Tuy nhiên, Childs et al. chỉ ra rằng khóa bí mật của hệ mã
trên có thể được tìm thấy trong thời gian subexponential time bằng máy tính
lượng tử. Sau đó, De Feo và cộng sự [61] giới thiệu một giao thức trao đổi khóa
dựa trên giống của đường cong elliptic siêu kì dị, và được gọi tên là
supersingular isogeny Diffie-Hellman (SIDH) [61], [65], [66], [88], [89]. Hệ
mã của De Feo và cộng sự đã cải tiến được hệ mã của Stolbunov cả về độ an
toàn lẫn tốc độ. Ngoài việc độ lớn của key nhỏ thì SIDH còn đảm bảo perfect
forward secrecy, và được xem là một ứng viên tốt cho mật mã hậu lượng tử.
43
Mặc dù có nhiều lợi thế về kích cỡ khóa, SIDH vẫn khá chậm so với các
giao thức trao đổi khóa hậu lượng tử khác như Frodo (dựa trên LWE). Nguyên
nhân chính là do việc tính toán các isogenies. Thêm vào đó, độ an toàn của
SIDH cũng cần được khai thác kĩ hơn.
1.8. Yêu cầu hệ mật
Hệ mật là một hệ thống đảm bảo an toàn của hệ thống truyền tin với việc
sử dụng các công cụ mã hóa, bao gồm quy tắc về chế tạo khóa, tập hợp sơ đồ
mật mã, giao thức mật mã và giao thức phân phối khóa. Hệ mật cần đảm bảo
các yêu cầu sau:
(1) Độ an toàn của hệ mật chống lại thám mã phải thỏa mãn điều kiện:
phá mã chỉ thực hiện bằng cách giải bài toán vét cạn khóa, hoặc phá mã đòi hỏi
những tham số vượt quá giới hạn cho phép của máy tính hiện đại hoặc cần tạo
ra thiết bị tính toán đắt tiền.
(2) Độ an toàn của hệ mật cần được đảm bảo không phải là bí mật về
thuật toán mà là bí mật về khóa.
(3) Bản mã chỉ đọc được khi có khóa mật.
(4) Hệ mật phải vững chắc ngay cả khi kẻ tấn công biết được số lượng
đủ lớn bản rõ và bản mã tương ứng.
(5) Khi thay đổi lượng nhỏ thông tin khóa hoặc bản rõ thì cần phải dẫn
đến sự thay đổi bản mã.
(6) Cấu trúc thành phần thuật toán mật mã cần phải không đổi.
(7) Kích thước bản mã không được vượt so với kích thước bản rõ; các
bit thêm vào thông điệp trong quá trình mã hóa cần phải hoàn toàn và chắc chắn
dấu kín trong bản mã.
(8) Lỗi xuất hiện khi mã hóa không được dẫn đến thay đổi và đánh mất
thông tin.
(9) Sự phụ thuộc giữa các khóa con được dùng tuần tự trong quá trình
44
mã hóa không được thiết lập dễ dàng và đơn giản.
(10) Đảm bảo tính tuyến tính của không gian khóa.
(11) Thời gian mã không được lớn.
(12) Chi phí mã cần phải phù hợp với giá trị của thông tin cần bảo vệ.
1.9. Hướng nghiên cứu của đề tài luận án
Từ những khảo sát, phân tích và đánh giá đã được thực hiện đối với các
công trình cả trong và ngoài nước, NCS thấy rằng xây dựng và phát triển hệ
mật khóa công khai nhằm giải quyết các vấn đề về bảo mật thông tin và xác
thực nguồn gốc, tính toàn vẹn của thông tin nhằm đáp ứng các yêu cầu mà thực
tiễn đặt ra vẫn là chủ đề đáng được quan tâm và còn chứa nhiều tính mới. Cụ
thể, một số vấn đề có thể được khai thác và thực hiện trong đề tài luận án là:
Đối với hướng hệ mật dựa trên bài toán DLP theo chuẩn ISO/IEC 14888-
3. Luận án đề xuất phát triển hệ mật theo phương pháp của ElGamal, DSA,
Schnorr, bao gồm:
- Lược đồ chữ ký số (ký TT-K-01 và kiểm tra chữ ký TT-KT-01);
- Mã hóa (TT-MH-01), giải mã - xác thực (TT-GM-01);
- Giao thức trao đổi khóa (TT-TDK-01).
Đối với hướng hệ mật dựa trên độ khó của kết hợp 02 bài toán DLP và
IFP. Luận án đề xuất phát triển hệ mật nhằm nâng cao độ an toàn bao gồm:
- Lược đồ chữ ký số (ký TT-K-02 và kiểm tra chữ ký TT-KT-02);
- Mã hóa (TT-MH-02), giải mã - xác thực (TT-GM-02);
- Giao thức trao đổi khóa (TT-TDK-02).
Để xây dựng các hệ mật, luận án đề xuất thuật toán hình thành tham số
hệ thống, khóa (TT-HT và TT-K). Các thuật toán đề xuất trong luận án đều nêu
ra và chứng minh được về tính đúng đắn, độ an toàn và tính hiệu quả.
Nghiên cứu phương pháp ký - mã đồng thời (Signcryption - kết hợp giữa
việc ký và mã hóa dữ liệu trong cùng một quá trình) với các ưu điểm như: tiết
45
kiệm tài nguyên; giảm độ trễ; tăng tính bảo mật; dễ triển khai. Luận án đề xuất
phương pháp mã hai lần mà vẫn đảm bảo đầy đủ tính chất của Signcryption
nhưng đơn giản và hiệu quả hơn.
1.10. Kết luận Chương 1
Chương 1 đã giới thiệu tổng quan về bài toán logarit rời rạc, bài toán
phân tích số, bài toán khai căn; phân tích độ an toàn và các hình thức tấn công
đối với các bài toán này; một số định nghĩa và các yêu cầu an toàn đối với hệ
mật, chữ ký số, giao thức trao đổi khóa; phân tích xu hướng nghiên cứu, phát
triển của các hệ mật khóa công khai. Từ đó, đề xuất phát triển hệ mật khóa công
khai dựa trên tính khó của việc giải đồng thời bài toán logarit rời rạc với bài
toán phân tích số/khai căn hoặc chỉ dựa trên bài toán logarit rời rạc.
46
Chương 2
XÂY DỰNG HỆ MẬT KHÓA CÔNG KHAI DỰA TRÊN TÍNH KHÓ
CỦA BÀI TOÁN LOGARIT RỜI RẠC
Nội dung chính của Chương này, đề xuất xây dựng tham số dùng chung
cho hệ thống, đề xuất xây dựng hệ mật với các thuật toán cho: lược đồ chữ ký
số; mã hóa-xác thực, giải mã; giao thức trao đổi khóa an toàn cho các hệ mật
khóa đối xứng dựa trên tính khó bài toán logarit rời rạc. Chứng minh tính đúng
đắn, độ an toàn, tính hiệu quả của các thuật toán mới đề xuất.
Lược đồ chữ ký số được tính toán bằng cách sử dụng một tập hợp các
tham số miền (tham số hệ thống), một khóa riêng, một khóa bí mật cho mỗi
thông điệp, dữ liệu cần ký và một hàm băm. Chữ ký số được xác minh bằng
cách sử dụng cùng các tham số miền, một khóa công khai được liên kết về mặt
toán học với khóa riêng được sử dụng để tạo chữ ký số, dữ liệu cần xác minh
và cùng một hàm băm được sử dụng trong quá trình tạo chữ ký. Các tham số
miền, khóa này được xác định như sau:
- FIPS PUB 186-4 mô tả các tiêu chuẩn về chữ ký số (Digital Signature
Standard - DSS), bao gồm lược đồ chữ ký số: DSA, RSA, ECDSA. Ngoài ra,
trong FIPS 186-4 cũng đưa ra các tiêu chuẩn an toàn và thuật toán sinh các bộ
tham số cho các lược đồ chữ ký số nêu trên;
- Hệ thống mật mã khoá công khai RSA là một trong các hệ thống mật
mã mà độ an toàn của nó dựa trên tính khó giải của bài toán phân tích số nguyên
thành các nhân tử nguyên tố, ở đây là bài toán phân tích RSA modulo N thành
các nhân tử nguyên tố 𝑝 và 𝑞. Do đó khi sinh bộ tham số khóa RSA đòi hỏi các
số nguyên tố 𝑝, 𝑞 và cặp khóa bí mật, công khai 𝑑, 𝑒 phải được chọn sao cho
việc phân tích modulo N là không thể về mặt tính toán. Để đạt được yêu cầu
𝑝𝑖−1+𝑝𝑖+1 2
) và đủ lớn, trên, trước hết 𝑝, 𝑞 phải là các số nguyên tố mạnh (𝑝𝑖 >
phụ thuộc vào tốc độ và kỹ thuật tính toán được sử dụng khi thực hiện bài toán
47
phân tích số nguyên.
Vì vậy, khi xây dựng lược đồ vấn đề xây dựng thuật toán sinh tham số
hệ thống và hình thành khóa cần chú trọng theo chuẩn và yêu cầu như sau:
2.1. Thuật toán sinh tham số hệ thống
Tham số dùng chung cho hệ thống là bộ (𝑝, 𝑞, 𝑔), trong đó 𝑝 và𝑞 là hai
số nguyên thỏa mãn các điều kiện của bài toán DLP(p,g) như sau:
(2.1) 𝑞|(𝑝 − 1)
(hay 𝑞 là ước của (𝑝 − 1))
(2.2) 𝑔 = 𝑜𝑟𝑑𝑞(𝑝)
(Cho 𝑔𝑐𝑑(𝑝, 𝑞) = 1. Bậc của 𝑝𝑚𝑜𝑑𝑞 là số nguyên dương nhỏ nhất 𝑔
∗ .
thỏa mãn phương trình đồng dư: 𝑝𝑔 ≡ 1𝑚𝑜𝑑𝑞 hay 𝑞|(𝑝𝑔 − 1)). Gọi cách
khác: 𝑔 là phần tử bậc 𝑞 trong ℤ𝑝
(2.3) Bài toán DLP(p,g) là khó
Để thỏa mãn điều kiện (2.3) thì tại chuẩn FIPS PUB 186 - 5 [76] và
Special Publication 800-57 Part 1 Revision 5 [21] của NIST về đề xuất cặp
khóa sử dụng trong hệ mã logarit rời rạc, bao gồm các yêu cầu: 𝑙𝑒𝑛(𝑝) ≥
𝐿; 𝑙𝑒𝑛(𝑞) ≥ 𝑜𝑟𝑑𝑞𝑝 = 𝑔. Ở đó: 𝐿 là độ dài tối thiểu của 𝑝 và 𝑛, 𝑁 là độ dài tối
thiểu của 𝑞 tính theo bit và được tuân thủ theo thời gian an toàn tại Bảng 2.1:
Bảng 2.1. Độ dài an toàn tối thiểu của bài toán Diffie-Hellman
Thời gian an toàn Đến năm 2030 Sau năm 2030
L (bit) 2048 3072
N (bit) 224 256
Thuật toán sinh tham số hệ thống được xác định như sau:
Thuật toán TT-HT. Thuật toán sinh tham số hệ thống
Input: 𝐿, 𝑁 là hai số nguyên tố thỏa mãn FIPS PUB 186 - 5.
Output: 𝑝, 𝑞, 𝑔. Thỏa mãn điều kiện (2.1), (2.2) và (2.3)
Bước 1. Lấy ngẫu nhiên số nguyên tố 𝑞 trong tập (2𝑁−1, 2𝑁).
48
Bước 2. Lấy ngẫu nhiên số nguyên tố 𝑝 có dạng 𝑝 = 𝑥𝑞 + 1 trong tập
(2𝐿−1, 2𝐿).
(Khi này 𝑞|(𝑝 − 1), thỏa mãn điều kiện (2.1)).
Bước 3. Lấy ngẫu nhiên số 𝛼 ∈ (1, 𝑝), tính:
𝑝−1 𝑞 𝑚𝑜𝑑𝑝, cho tới khi 𝑔 ≠ 1.
𝑔 = 𝛼
(Khi này 𝑜𝑟𝑑𝑞𝑝 = 𝑔, thỏa mãn điều kiện (2.2)).
Bước 4. Trả về bộ (𝑝, 𝑞, 𝑔).
2.2. Thuật toán hình thành khóa
Tham số cho mỗi thực thể cuối gồm khóa bí mật (𝑑, 𝑛) và khóa công khai
(𝑒, 𝑛) thỏa mãn các điều kiện sau:
(2.4) 𝑛 = 𝑝 × 𝑞
(𝑛 là hợp số RSA và lớn hơn 𝑝)
(2.5) 𝑑 = 𝑔±𝑥 𝑚𝑜𝑑 𝑝
(2.6) 𝑑 ≡ 𝑒−1𝑚𝑜𝑑𝜙(𝑛)
(2.7) Bài toán RSA(n,e) là khó
Để thỏa mãn các điều kiện (2.7) thì tại chuẩn FIPS PUB 186 - 5 [76] và
Special Publication 800-56B Revision 2 [22], NIST về đề xuất cặp khóa sử
dụng trong hệ mã RSA, bao gồm các yêu cầu như sau:
𝑙𝑒𝑛(𝑝) ≥ 𝐿 với 𝐿 là độ dài tối thiểu của 𝑝
𝑛 = 𝑟. 𝑠
Ở đó: 𝑟, 𝑠 là các số nguyên tố được tạo bằng một trong hai phương pháp:
Phương pháp 1: sinh số nguyên tố ngẫu nhiên theo xác suất; trong đó𝑟
và 𝑠 đều là:
1) Các số nguyên tố có thể chứng minh, hoặc
2) Các số nguyên tố có thể xảy ra.
Sử dụng phương pháp này thì 𝑟 và 𝑠 có độ dài là 1024 bit hoặc 1536 bit
49
có thể được tạo ra; 𝑟 và 𝑠 với độ dài 512 bit sẽ không được tạo bằng các phương
pháp này. Thay vào đó, 𝑟 và 𝑠 có độ dài 512 bit sẽ được tạo bằng các điều kiện
dựa trên các số nguyên tố phụ.
Phương pháp 2: (được sử dụng trong luận án chọn 𝐿 ≥ 2048) Sinh số
nguyên tố ngẫu nhiên theo điều kiện (các số nguyên tố tất định), và 𝑟, 𝑠 có các
ràng buộc sau:
𝑙𝑒𝑛(𝑟) = 𝑙𝑒𝑛(𝑠);
𝑟 − 1 có ước nguyên tố là 𝑟1; 𝑟 + 1 có ước nguyên tố là 𝑟2;
𝑠 − 1 có ước nguyên tố là 𝑠1; 𝑠 + 1 có ước nguyên tố là 𝑠2;
Với:
𝐿 2
−100;
𝑙𝑒𝑛(𝑟1), 𝑙𝑒𝑛(𝑟2), 𝑙𝑒𝑛(𝑠1), 𝑙𝑒𝑛(𝑠2) ≥ 𝑛1; 𝑙𝑒𝑛(𝑟1) + 𝑙𝑒𝑛(𝑟2) ≤ 𝑛2; 𝑙𝑒𝑛(𝑠1) + 𝑙𝑒𝑛(𝑠2) ≤ 𝑛2;
|𝑟 − 𝑠| > 2
𝑒 là số lẻ và 216 < 𝑒 < 2256;
𝐿 2.
𝑑 > 2
Các tham số 𝐿, 𝑛1, 𝑛2 được cho trong Bảng 2.2 sau:
Bảng 2.2. Độ dài an toàn tối thiểu của bài toán RSA
Thời gian an toàn
𝐿 (bit)
𝑛1 (bit)
𝑛2 (bit)
Đến năm 2030 Sau năm 2030
2048 3072
> 140 > 170
𝑝, 𝑞 xác suất < 1007 < 1518
𝑝, 𝑞 tất định < 494 < 750
Mỗi thực thể cuối/người sử dụng trong hệ thống hình thành khóa của
mình bằng thuật toán như sau:
Thuật toán TT-K. Thuật toán hình thành khóa
Input: 𝑝, 𝑞, 𝑔, 𝑛1, 𝑛2.
Output: 𝑛, 𝑥, 𝑑, 𝑒.
[Sinh cặp 𝑥, 𝑒]
50
Bước 1. Lấy ngẫu nhiên 𝑥 trong tập (1, 𝑞).
(2.8) Bước 2. Tính 𝑒 = 𝑔−𝑥 𝑚𝑜𝑑 𝑝
Bước 3. Nếu 𝑒 là số chẵn, quay về Bước 1
[Sinh số nguyên tố 𝑟] Bước 4. Lấy ngẫu nhiên số nguyên tố 𝑟1 trong khoảng (2𝑛1, 2𝑛2−𝑛1−1) Bước 5. Lấy ngẫu nhiên số nguyên tố 𝑟2 trong khoảng (2𝑛1, 2𝑛2−𝑙𝑒𝑛(𝑟1)−1)
−1𝑚𝑜𝑑𝑟2)
−1𝑚𝑜𝑑𝑟1) − 𝑟1(𝑟1
(Khi này 𝑟1và 𝑟2 thỏa mãn 𝑙𝑒𝑛(𝑟1), 𝑙𝑒𝑛(𝑟2) ≥ 𝑛1 và 𝑙𝑒𝑛(𝑟1) + 𝑙𝑒𝑛(𝑟2) ≤ 𝑛2)
Bước 6. Tính 𝑎 = 𝑟2(𝑟2 (Khi này 𝑎 là số thỏa mãn ≡ 1(𝑚𝑜𝑑𝑟1) và ≡ −1(𝑚𝑜𝑑𝑟2))
𝐿 2
Bước 7. Lấy ngẫu nhiên số nguyên tố 𝑟 có dạng 𝑟 = 𝑥𝑟1𝑟2 + 𝑎 trong tập
+1) sao cho gcd(𝑒, 𝑟 − 1) = 1
𝐿 2√2, 2
𝐿
(2
2
(Khi này 𝑙𝑒𝑛(𝑟) = , 𝑔𝑐𝑑(𝑒, 𝑟 − 1) = 1, 𝑟1|(𝑟 − 1), 𝑟2|(𝑟 + 1))
[Sinh số nguyên tố 𝑠] Bước 8. Lấy ngẫu nhiên số nguyên tố 𝑠1 trong khoảng (2𝑛1, 2𝑛2−𝑛1−1) Bước 9. Lấy ngẫu nhiên số nguyên tố 𝑠2 trong khoảng (2𝑛1, 2𝑛2−𝑙𝑒𝑛(𝑠1)−1)
−1𝑚𝑜𝑑𝑠2)
−1𝑚𝑜𝑑𝑠1) − 𝑠1(𝑠1
(Khi này 𝑠1và 𝑠2 thỏa mãn 𝑙𝑒𝑛(𝑠1), 𝑙𝑒𝑛(𝑠2) ≥ 𝑛1 và 𝑙𝑒𝑛(𝑠1) + 𝑙𝑒𝑛(𝑠2) ≤ 𝑛2)
Bước 10. Tính 𝑏 = 𝑠2(𝑠2 (Khi này 𝑏 là số thỏa mãn ≡ 1(𝑚𝑜𝑑𝑠1) và ≡ −1(𝑚𝑜𝑑𝑠2))
𝐿 2
Bước 11. Lấy ngẫu nhiên số nguyên tố 𝑠 có dạng 𝑠 = 𝑥𝑠1𝑠2 + 𝑏 trong tập
+1) \(𝑟 − 2100, 𝑟 + 2100) sao cho gcd(𝑒, 𝑠 − 1) = 1
𝐿 2√2, 2
𝐿
𝐿 2
(2
−100, 𝑔𝑐𝑑(𝑒, 𝑠 − 1) = 1,
2
(Khi này 𝑙𝑒𝑛(𝑠) = , |𝑟 − 𝑠| > 2
𝑠1|(𝑠 − 1), 𝑠2|(𝑠 + 1)) và do đó gcd(𝑒, (𝑟 − 1)(𝑠 − 1)) = 1) 𝜑(𝑛) = (𝑟 − 1)(𝑠 − 1)
(2.9) Bước 12. Tính 𝑑 theo: 𝑑 = 𝑒−1 𝑚𝑜𝑑 (𝑟 − 1)(𝑠 − 1)
51
𝐿 2, quay về Bước 8 (Khi này 𝑑 > 2
𝐿 2 )
Nếu 𝑑 ≤ 2
Bước 13. Tính 𝑛 = 𝑟. 𝑠
Bước 14. Trả về bộ (𝑛, 𝑥, 𝑒, 𝑑)
2.3. Xây dựng lược đồ chữ ký số
2.3.1. Qui trình ký
Lược đồ chữ ký số kèm phụ lục thông điệp hoặc khôi phục thông điệp
thì qui trình ký và hình thành một thông điệp ký đều bao gồm 08 giai đoạn sau:
- Chọn giá trị ngẫu nhiên;
- Tạo tiền chữ ký;
- Chuẩn bị thông điệp để ký;
- Tính bằng chứng;
- Tính thành phần thứ nhất của chữ ký (không cần thiết trong các cơ chế
dựa trên danh tính);
- Tính thành phần thứ hai của chữ ký;
- Xây dựng phụ lục;
- Xây dựng thông điệp đã ký.
52
Hình 2.1. Qui trình ký với bằng chứng ngẫu nhiên
Ở đó các giai đoạn có các nhiệm vụ cụ thể sau:
- Chọn giá trị ngẫu nhiên (𝑘): thực thể ký mới chọn giá trị ngẫu nhiên 𝑘
trong khoảng (1, 𝑞). 𝑘 được giữ bí mật và tiêu hủy an toàn sau khi sử dụng.
- Tạo tiền chữ ký (𝑅): đầu vào của giai đoạn này là 𝑘 và khóa chữ ký tùy
chọn 𝑥, trong đó thực thể ký sẽ tính toán tiền chữ ký 𝑅 bằng cách sử dụng 𝑘 và
các tham số công khai làm đầu vào.
- Chuẩn bị thông điệp để ký (𝑀): trong giai đoạn này, một trong hai 𝑀1
và 𝑀2 trở thành thông điệp 𝑀, còn lại trống.
- Tính bằng chứng (thành phần thứ nhất của chữ ký) (𝐸): các biến đầu
vào ở giai đoạn này là tiền chữ ký 𝑅 và thông điệp 𝑀. Đầu ra của hàm bằng
chứng là 𝐸, 𝐸 được chỉ định trong các cơ chế cụ thể.
53
- Tính thành phần thứ nhất của chữ ký (𝑇): đầu vào là tiền chữ ký 𝑅 và
thông điệp 𝑀, có thể tùy chọn khóa xác minh 𝑦.
- Tính thành phần thứ hai của chữ ký (S): đầu vào là giá trị ngẫu nhiên
𝑘, chữ ký 𝑥, thành phần thứ nhất của chữ ký 𝑇, và tham số hệ thống 𝑞. Cặp
(𝐸, 𝑆) được gọi là chữ ký.
- Xây dựng phụ lục: phụ lục được xây dựng từ chữ ký (𝐸, 𝑆) và văn bản
tùy chọn text thành [(𝐸, 𝑆), 𝑡𝑒𝑥𝑡]. text có thể bao gồm chứng chỉ liên kết mật
mã khóa xác minh công khai 𝑦 với dữ liệu nhận dạng của thực thể ký.
Theo chuẩn ISO/IEC 14888-1 [56], tùy thuộc vào ứng dụng, có nhiều
cách khác nhau để hình thành phụ lục và gắn vào thông điệp. Yêu cầu chung là
người xác minh có thể liên hệ chữ ký chính xác với thông điệp. Để xác minh
thành công, điều cần thiết là trước quá trình xác minh, người xác minh phải liên
kết khóa xác minh chính xác với chữ ký.
- Xây dựng thông điệp đã ký: thông điệp đã ký có được bằng cách ghép
thông điệp 𝑀 và phụ lục, tức là 𝑀‖[(𝐸, 𝑆), 𝑡𝑒𝑥𝑡].
2.3.2. Qui trình kiểm tra chữ ký
Qui trình kiểm tra chữ ký bao gồm 06 giai đoạn sau:
- Truy xuất bằng chứng;
- Chuẩn bị thông điệp để kiểm tra;
- Truy xuất thành phần thứ nhất của chữ ký;
- Tính lại tiền chứ ký;
- Tính lại bằng chứng;
- Xác minh bằng chứng.
54
Hình 2.2. Qui trình kiểm tra chữ ký với bằng chứng ngẫu nhiên
Ở đó các giai đoạn có các nhiệm vụ cụ thể sau:
- Truy xuất bằng chứng: (𝐸, 𝑆)từ phụ lục và được chia thành phần bằng
chứng 𝐸 và phần thứ hai của chữ ký 𝑆. Ngoài ra phải kiểm tra phạm vi hoặc độ
dài bit của 𝐸 và 𝑆, theo nguyên tắc được quy định bởi từng tiến trình chữ ký.
Nếu vi phạm quy tắc được xác định trước, chữ ký sẽ bị từ chối.
- Chuẩn bị thông điệp để kiểm tra (𝑀).
- Truy xuất thành phần thứ nhất của chữ ký (𝑇): đầu vào của giai đoạn
này gồm bằng chứng là 𝐸 và tùy chọn khóa xác minh 𝑦. Trong các cơ chế dựa
trên nhận dạng, không cần thiết phải tính toán lại 𝑇.
- Tính lại tiền chữ ký (𝑅′): đầu vào của giai đoạn này là tập hợp các tham
số hệ thống, khóa xác minh 𝑦, thành phần thứ nhất của chữ ký 𝑇, phần thứ hai
của chữ ký 𝑆 và tùy chọn 𝐸.
- Tính lại bằng chứng (𝐸′): ở giai đoạn này thì người xác minh thực hiện
chức năng như bằng chứng, việc tính toán 𝐸′ từ đầu vào là giá trị của 𝑅′ và 𝑀.
55
- Xác minh bằng chứng: chữ ký được xác minh nếu bằng chứng 𝐸′ = 𝐸
Theo hướng lược đồ chữ ký số kèm phụ lục thông điệp, NCS đề xuất
lược đồ chữ ký số gồm thuật toán sinh chữ ký TT-K-01 và kiểm tra chữ ký TT-
KT-01.
Lược đồ đã được NCS công bố tại công trình [CT7] với khóa bí mật 𝑥
được chọn khoảng (1, 𝑞). Tính khóa công khai theo:
𝑦 = 𝑔−(𝑥)−1 𝑚𝑜𝑑𝑝 (2.10)
2.3.3. Thuật toán sinh chữ ký TT-K-01
Thuật toán TT-K-01. Thuật toán sinh chữ ký
Input: 𝑝, 𝑞, 𝑔, 𝑥, 𝑀 - thông điệp cần ký.
Output: 𝐸, 𝑆 - chữ ký
Bước 1. Chọn ngẫu nhiên giá trị 𝑘 trong khoảng (1, 𝑞)
Bước 2. Tính giá trị:
(2.11) 𝑅 = 𝑔𝑘 𝑚𝑜𝑑 𝑝
Bước 3. Tính thành phần thứ nhất 𝐸 của chữ ký theo:
(2.12) 𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞
Bước 4. Tính thành phần thứ hai 𝑆 của chữ ký theo:
(2.13) 𝑆 = 𝑥 × (𝐸 − 𝑘)𝑚𝑜𝑑𝑞
Kiểm tra, nếu 𝐸 = 0 hoặc 𝑆 = 0 thì quay lại Bước 1 để tính một giá trị
mới của 𝑘 và chữ ký phải được tính toán lại (nhưng rất khó để 𝐸 = 0 hoặc 𝑆 =
0 nếu chữ ký được tạo đúng).
Ở đây, thực thể ký tính bằng chứng (thành phần thứ nhất) 𝐸 như (2.12)
theo chuyển đổi 𝐻(𝐼2𝐵𝑆(𝑀, 𝑅)), trong đó đầu ra H là mã băm của chuỗi bit có
độ dài 𝑙𝑝 được chuyển đổi từ tiền chữ ký 𝑅, 𝐼2𝐵𝑆 là hàm chuyển đổi từ Integer
sang binary string được thực hiện theo hàm chuyển đổi sau:
Hàm chuyển integer sang binary string 𝐼2𝐵𝑆(𝛼, 𝛽)
56
Đầu vào:
- 𝛼 là số nguyên dương, biểu thị độ dài của chuỗi đầu ra.
- 𝛽 là số nguyên trong {0, 1, ..., 2𝛼 − 1}.
Đầu ra:
𝐼2𝐵𝑆(𝛼, 𝛽) = 𝛽𝛼−1𝛽𝛼−2 … 𝛽0
𝑎 ≔ 𝛽;
𝑖 ≔ 0;
While (𝑖 < 𝛼) do {
𝑏 ≔ ⌊𝑎/2⌋;
𝛽𝑖:= 𝑎 – (2)( 𝑏);
𝑎 ≔ 𝑏;
𝑖 ≔ 𝑖 + 1}
Nếu 𝑙𝐻 dài hơn 𝑙𝑞 thì thực thể ký tính 𝐸 bằng:
𝐼2𝐵𝑆 (𝑙𝑞, 𝐵𝑆2𝐼(𝑙𝐻, 𝐻(𝐼2𝐵𝑆(𝑀, 𝑅))) 𝑚𝑜𝑑2𝑙𝑞
trong đó 𝐵𝑆2𝐼 là hàm chuyển đổi từ binary string sang Integer được thực
hiện theo hàm chuyển đổi sau:
Hàm chuyển binary string sang integer 𝐵𝑆2𝐼(𝛼, 𝛽)
Đầu vào:
- 𝛼 là số nguyên dương, biểu thị độ dài của chuỗi đầu vào.
- 𝛽 = 𝛽𝛼−1𝛽𝛼−2 … 𝛽0 là chuỗi nhị phân có độ dài 𝛼.
Đầu ra: 𝐵𝑆2𝐼(𝛼, 𝛽) = 2𝛼−1𝛽𝛼−1 + 2𝛼−2𝛽𝛼−2 … 𝛽0 ∈ {0, 1, . . . , 2𝛼 − 1}
2.3.4. Thuật toán kiểm tra chữ ký TT-KT-01
Thuật toán TT-KT-01. Thuật toán kiểm tra chữ ký
Input: 𝑝, 𝑞, 𝑔, 𝑦, (𝐸, 𝑆) - chữ ký cần kiểm tra.
Output: (𝐸, 𝑆) = true/false
57
Bước 1. Tính giá trị: 𝑅 = (𝑦)𝑆 × (𝑔)𝐸 𝑚𝑜𝑑 𝑝
Bước 2. Tính giá trị: 𝐸 = 𝐻(𝑀‖𝑅)
Bước 3. Nếu: 𝐸 = 𝐸 thì:(𝐸, 𝑆) = true, ngược lại: (𝐸, 𝑆) = false
Người xác minh sẽ kiểm tra các điều kiện sau:
- 0 < 𝑆 < 𝑞;
- Nếu độ dài của giá trị 𝑙𝐻 không lớn hơn 𝑙𝑞, độ dài bit của 𝐸 bằng độ dài
bit đầu ra của hàm băm 𝑙𝐻 được sử dụng;
- Nếu độ dài của giá trị 𝑙𝐻 lớn hơn 𝑙𝑞, độ dài bit của 𝐸 lớn bằng 𝑙𝑞.
Nếu bất kỳ điều kiện nào ở trên không đúng, chữ ký sẽ bị từ chối.
2.3.5. Tính đúng đắn của lược đồ chữ ký số
Chữ ký (𝐸, 𝑆) được sinh bởi Thuật toán TT-K-01, 𝐸 được tạo bởi Thuật
toán TT-KT-01 thì điều cần chứng minh ở đây là: 𝐸 = 𝐸.
Thật vậy, do:
𝑥×(𝐸−𝑘)𝑚𝑜𝑑𝑞
𝑅 = (𝑦)𝑆 × (𝑔)𝐸 𝑚𝑜𝑑 𝑝
𝑥×(𝐸−𝑘)
× (𝑔)𝐸 𝑚𝑜𝑑 𝑝 = (𝑔−(𝑥)−1𝑚𝑜𝑑𝑝)
× (𝑔)𝐸 𝑚𝑜𝑑 𝑝 = (𝑔−(𝑥)−1𝑚𝑜𝑑𝑝)
= (𝑔)−(𝑥)−1×𝑥×(𝐸−𝑘) × (𝑔)𝐸 𝑚𝑜𝑑 𝑝 = 𝑔𝑘 𝑚𝑜𝑑 𝑝 = 𝑅
∗ nên trên số mũ của 𝑔 thì viết
Suy ra điều cần chứng minh: 𝐸 = 𝐻(𝑀‖𝑅) = 𝐻(𝑀‖𝑅) = 𝐸.
Chú ý: do 𝑔 là phần tử bậc 𝑞 trong ℤ𝑝
𝑚𝑜𝑑𝑞 hay không viết là như nhau.
2.3.6. Độ an toàn của lược đồ chữ ký số
a) Tấn công khóa bí mật
Tính an toàn về khóa của lược đồ mới đề xuất được đảm bảo bởi tính
khó của việc giải bài toán logarit rời rạc tương tự DSA và GOST R34-10.94.
58
b) Tấn công giả mạo chữ ký
Từ điều kiện của Thuật toán Kiểm tra chữ ký, một cặp (𝐸, 𝑆) bất kỳ sẽ
được coi là chữ ký hợp lệ của đối tượng sở hữu các tham số công khai (𝑝, 𝑔, 𝑦)
lên thông điệp 𝑀 nếu thỏa mãn:
(2.14) 𝐸 = 𝐻(𝑀‖(𝑦)𝑆 × (𝑔)𝐸𝑚𝑜𝑑𝑝)
Từ (2.14) cho thấy, việc tìm cặp (𝐸, 𝑆)bằng cách chọn trước một trong
hai giá trị rồi tính giá trị còn lại đều khó hơn việc giải DLP. Hơn nữa, nếu 𝐻(. )
được chọn là hàm băm có độ an toàn cao (SHA 256/512,...) thì việc chọn ngẫu
nhiên cặp (𝐸, 𝑆) thỏa mãn (2.14) hoàn toàn không khả thi trong các ứng dụng
thực tế.
c) Xác thực công khai
Với các tham số (𝐸, 𝑆) thì bất cứ bên thứ ba nào khi sử dụng khóa công
khai của A đều có thể xác thực được thông điệp đã ký.
2.3.7. Hiệu quả thực hiện
Tính hiệu quả của lược đồ chữ ký có thể đánh giá qua chi phí thực hiện
của các thuật toán ký, kiểm tra chữ ký và kích thước chữ ký mà lược đồ sinh
ra. Ở mục này, tính hiệu quả của lược đồ mới đề xuất sẽ được đánh giá và so
sánh với các chuẩn chữ ký số của Hoa Kỳ (DSA), Hàn Quốc (KCDSA [99],
[100]) và Nga (GOST R34-10.94).
a) Kích thước chữ ký
Từ Bảng 2.3 có thể thấy rằng, với cùng một bộ tham số (𝑝, 𝑞) thì kích
thước chữ ký do lược đồ tạo ra ở đây với các chuẩn chữ ký số của DSA, KCDSA
và GOST R34-10.94 tạo ra là tương đương.
Tính theo bits
DSA GOST R34-
10.94
SDSA [77]
Lược đồ của Luận án
Độ dài khóa
Ký Kiểm tra
𝑙𝑞 𝑙𝑝
𝑙𝑞 𝑙𝑝
KCDSA Pointcheval/ Vaudenay [24] 𝑙𝑞 𝑙𝑝
𝑙𝑞 𝑙𝑝
𝑙𝑞 𝑙𝑝
𝑙𝑞 𝑙𝑝
Bảng 2.3. So sánh độ dài khóa, chữ ký của các lược đồ
59
Tính theo bits
DSA GOST R34-
10.94
SDSA [77]
Lược đồ của Luận án
Độ dài chữ ký
2𝑙𝑞
𝑙𝐻 + 𝑙𝑞
KCDSA Pointcheval/ Vaudenay [24] 2𝑙𝑞
𝑙𝐻 + 𝑙𝑞
𝑙𝐻 + 𝑙𝑞
𝑙𝐻 + 𝑙𝑞
b) Chi phí thực hiện
Chi phí thực hiện hay phép tính toán của các thuật toán ký và kiểm tra
chữ ký có thể được đánh giá thông qua số phép toán cần thực hiện hay tổng
thời gian cần thực hiện các phép toán để hình thành khóa, chữ ký và kiểm tra
chữ ký.
Chi phí thực hiện cho thuật toán ký (K) và thuật toán kiểm tra (KT) của
các chuẩn chữ ký số Hoa Kỳ, Hàn Quốc, Nga và của lược đồ mới đề xuất được
chỉ ra trong Bảng 2.4 sau:
Texp
Tmul
Th
DSA GOST R34-10.94 KCDSA Lược đồ đề xuất
KT 2 3 2 2
K 2 3 2 1
KT 3 2 1 1
K 1 1 1 1
Tinv KT 1 0 0 0
K 1 0 0 0
K 1 1 1 1
KT 1 1 1 1
Bảng 2.4. Chi phí thực hiện của các lược đồ chữ ký dựa trên DLP
Ghi chú: Thuật toán sinh tham số và khóa chỉ cần thực hiện một lần duy
nhất với mọi đối tượng ký. Vì thế, chi phí tính toán cho thuật toán sinh tham số
và khóa có thể bỏ qua khi tính toán chi phí thực hiện lược đồ chữ ký số.
Nhận xét: lược đồ đề xuất và KCDSA được thiết kế để tránh thực hiện
phép nghịch đảo modulo (𝑚𝑜𝑑𝑞) do vậy tại thời điểm tạo cặp khóa sẽ thực
hiện phép tính mũ (-1). Trong khi DSA, thực hiện Tinv mỗi khi tạo chữ ký hoặc
xác minh và trong GOST mỗi lần chữ ký được xác minh. Tuy việc thực hiện
Tinv chiếm một phần rất nhỏ trong khối lượng công việc tổng thể của việc ký/xác
minh trên hầu hết các máy tính nhưng có thể khá tốn kém trong môi trường tính
toán hạn chế.
Mặt khác, lược đồ đề xuất và KCDSA cần thêm một lệnh gọi hàm băm
để nén thông điệp trong cả quá trình tạo chữ ký và quá trình xác minh. Tuy
60
nhiên, việc này sẽ không tốn nhiều chi phí ở bất kỳ quá trình nào.
Từ so sánh tại Bảng 2.4 cho thấy lược đồ đề xuất có chi phí thực hiện
thấp nhất, thấp hơn cả lược đồ KCDSA.
2.4. Thuật toán mã hóa, giải mã - xác thực dựa trên bài toán logarit rời rạc
2.4.1. Thuật toán mã hóa TT-MH-01
Thuật toán TT-MH-01. Thuật toán mã hóa
Input: 𝑝, 𝑞, 𝑔, 𝑥𝐴, 𝑦𝐵, 𝑀 - bản rõ.
Output: (𝐶, 𝐸, 𝑆) - bản mã
Bước 1. Chọn ngẫu nhiên giá trị k trong khoảng (1, 𝑞).
Bước 2. Mã hóa thông điệp M theo: 𝐶 = 𝑀 × (𝑦𝐵)𝑘 𝑚𝑜𝑑 𝑝
Ở đó: (𝑥𝐵, 𝑦𝐵) là khóa bí mật/công khai của người nhận B tính theo
(2.10): 𝑦𝐵 = 𝑔−(𝑥𝐵)−1𝑚𝑜𝑑𝑝.
Bước 3. Tính giá trị 𝑅 theo:
𝑅 = 𝑔𝑘 𝑚𝑜𝑑 𝑝 (2.15)
Bước 4. Tính thành phần thứ nhất theo:
(2.16) 𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞
(2.17)
Bước 4. Tính thành phần thứ hai theo: 𝑆 = 𝑥𝐴 × (𝐸 − 𝑘)𝑚𝑜𝑑𝑞 Bản mã gửi đi bao gồm (𝐶, 𝐸, 𝑆).
𝑚𝑜𝑑𝑝.
Ở đó: (𝑥𝐴, 𝑦𝐴) là khóa bí mật/công khai của người gửi A:𝑦𝐴 = 𝑔−(𝑥𝐴)−1 2.4.2. Thuật toán giải mã - xác thực TT-GM-01
Thuật toán TT-GM-01. Thuật toán giải mã - xác thực
Input: 𝑝, 𝑞, 𝑔, 𝑥𝐵, 𝑦𝐴, (𝐶, 𝐸, 𝑆)
Output: 𝑀
Bước 1. Tính giá trị: 𝑅 = (𝑦𝐴)𝑆 × (𝑔)𝐸 𝑚𝑜𝑑 𝑝 Bước 2. Tính giá trị: 𝑤 = (𝑥𝐵)−1 𝑚𝑜𝑑 𝑞
61
Bước 3. Tính giá trị: 𝑈 = (𝑅)𝑤 𝑚𝑜𝑑 𝑞
Bước 4. Giải mã theo: 𝑀 = 𝐶 × 𝑈 𝑚𝑜𝑑 𝑝
Bước 5: Tính giá trị: 𝐸 = 𝐻(𝑀‖𝑅)
Bước 6. Nếu 𝐸 = 𝐸 thì 𝑀 = 𝑀và do A gửi tới.
2.4.3. Tính đúng đắn của thuật toán TT-MH-01; TT-GM-01
Ta có:
𝑘
𝑅 = (𝑦𝐴)𝑆 × (𝑔)𝐸 𝑚𝑜𝑑 𝑝 = (𝑔)−(𝑥𝐴)−1×𝑥𝐴×(𝐸−𝑘)𝑚𝑜𝑑𝑞 × (𝑔)𝐸 𝑚𝑜𝑑 𝑝 = 𝑔𝑘 𝑚𝑜𝑑 𝑝 = 𝑅 Và: 𝑤 = (𝑥𝐵)−1 𝑚𝑜𝑑 𝑞 𝑤 𝑚𝑜𝑑 𝑞 = (𝑔𝑘 𝑚𝑜𝑑 𝑝)(𝑥𝐵)−1 𝑚𝑜𝑑𝑝 = 𝑔𝑘(𝑥𝐵)−1 𝑚𝑜𝑑𝑝 nên 𝑈 = (𝑅)
𝑚𝑜𝑑𝑝 𝑚𝑜𝑑𝑝)
Mặt khác: 𝐶 = 𝑀 × (𝑦𝐵)𝑘 𝑚𝑜𝑑 𝑝 = 𝑀 × (𝑔−(𝑥𝐵)−1 = 𝑀 × 𝑔−𝑘.(𝑥𝐵)−1 𝑚𝑜𝑑𝑝
Suy ra điều cần chứng minh: 𝑀 = 𝐶 × 𝑈 𝑚𝑜𝑑 𝑝 = 𝑀 × 𝑔−𝑘.(𝑥𝐵)−1 × 𝑔𝑘(𝑥𝐵)−1 𝑚𝑜𝑑𝑝 = 𝑀.
Để giải mã chính xác thì 𝑀 phải nhỏ hơn 𝑝, nếu 𝑀 lớn hơn 𝑝 thì phải
chia nhỏ ra để đảm bảo dữ liệu cần mã hóa nhỏ hơn 𝑝, nên sau giải mã thì
𝑀𝑚𝑜𝑑𝑝 = 𝑀 là hiển nhiên.
2.4.4. Độ an toàn và hiệu quả
a) Độ an toàn về khóa: tương tự RSA, GOST. Với các điều kiện về: chọn
kích thước khóa đủ lớn để chống lại các cuộc tấn công sử dụng phương pháp
phân tích số nguyên tố; sử dụng khóa ngẫu nhiên lớn chống phương pháp vét
cạn với khả năng tính toán mạnh; sử dụng phương pháp tất định để sinh tham
số hệ thống đủ lớn, mạnh thực hiện theo các khuyến nghị của NIST về độ dài
khóa trong Bảng 2.5 như sau:
62
DLP
IFP
ECC
H(.)
Key
Group
Thời gian an toàn
Thuật toán đối xứng
Mức an toàn của mật mã đối xứng
112
2048
224
2048
224
2019 - 2030
(3TDEA), AES-128
128
AES-128
3072
256
3072
256
2019 - 2030 và sau nữa
SHA-224; SHA- 512/224; SHA3-224 SHA-256; SHA- 512/256; SHA3-256
192
AES-192
7680
384
7680
384
SHA-384; SHA3-384
256
AES-256
15360
512
15360
512
SHA-512; SHA3-512
2019 - 2030 và sau nữa 2019 - 2030 và sau nữa
Bảng 2.5. Khuyến nghị độ dài khóa an toàn của NIST
b) Khả năng chống giả mạo: chứng minh tương tự lược đồ chữ ký TT-
K-01, TT-KT-01 ta có:
Từ thuật toán TT-GM-01 cho thấy điều kiện để B nhận biết chính xác
bản mã được A gửi đến khi nhận được 1 cặp (𝐶, 𝐸, 𝑆) là:
(2.18) 𝐸 = 𝐻(𝑀‖(𝑦𝐴)𝑆 × (𝑔)𝐸 𝑚𝑜𝑑 𝑝)
Từ (2.18) cho thấy, việc tìm cặp (𝐸, 𝑆)bằng cách chọn trước một trong
hai giá trị rồi tính giá trị còn lại đều khó hơn việc giải DLP vì phải giải được
(2.17) với khóa bí mật 𝑥𝐴. Bởi vậy, tấn công dạng chọn bản mã (Chosen-
Ciphertext Attack - CCA [33] - kẻ tấn công thường gửi các bản mã được thiết
kế cẩn thận đến hệ thống và phân tích các bản rõ tương ứng được trả về, lặp lại
nhiều lần cho phép chúng có được những hiểu biết quan trọng về sơ đồ mã hóa)
và tấn công dạng chọn bản rõ (Chosen-Plaintext Attack - CPA [33] - kẻ tấn
công chỉ có thể chọn và mã hóa các bản rõ) là không thể thực hiện được. Hơn
nữa, nếu 𝐻(. ) được chọn là hàm băm có độ an toàn cao (SHA 256/512,...) thì
việc chọn ngẫu nhiên cặp (𝐸, 𝑆) là hoàn toàn không khả thi.
Kẻ tấn công giả mạo có thể thực hiện được (2.17) nếu thực hiện được
63
các bước tính toán sau:
𝑚𝑜𝑑 𝑝; 𝑅∗ = 𝑔𝑘∗ 𝑚𝑜𝑑 𝑝 và: - Chọn giá trị 𝑘∗ và tính: 𝐶 = 𝑀 × (𝑦𝐵)𝑘∗
𝐸 = 𝐻(𝑀‖𝑅∗) 𝑚𝑜𝑑 𝑞
- Giải bài toán DLP(p,g) để tìm 𝑆∗ từ: 𝑆∗ = 𝑥𝐴 × (𝐸 − 𝑘∗)𝑚𝑜𝑑𝑞
Thuật toán giải mã - xác thực được đề xuất ở đây thực chất là sự kết hợp
giữa thuật toán mật mã (tính 𝐸) với thuật toán chữ ký số (tính 𝑆), nhằm cung
cấp tính năng bảo mật nội dung của thông điệp và xác thực nguồn gốc cùng với
tính toàn vẹn của thông điệp bằng việc tính 𝑆 qua 𝑥𝐴. Đây cũng chính là phương
pháp xác thực thông điệp (Authenticated Encryption), là một cách hiệu quả để
chống lại CCA, CPA và các cuộc tấn công giả mạo “Man-in-the-Middle”.
2.5. Xây dựng giao thức trao đổi khóa
Luận án đề xuất xây dựng giao thức trao đổi khóa an toàn cho các hệ mật
khóa đối xứng trên cơ sở phát triển giao thức DHKE nhưng đảm bảo xác thực
giữa hai bên tham gia giao thức. Độ an toàn của giao thức mới (ký hiệu: TT-
TDK-01) chỉ cần đảm bảo bằng độ khó của bài toán logarit rời rạc, song lại có
hiệu quả thực hiện cao hơn các thuật toán đã được phát triển trước đó mà vẫn
bảo đảm đầy đủ các tính chất cần thiết của một giao thức trao đổi khóa an toàn.
2.5.1. Giao thức trao đổi khóa TT-TDK-01
Giao thức TT-TDK-01 cũng như chứng minh tính đúng đắn, độ an toàn
của giao thức đã được NCS công bố tại công trình [CT1], [CT6] như sau:
Giả thiết rằng 2 thực thể tham gia truyền thông ở đây là A và B có các
khóa bí mật và công khai tương ứng là (𝑥𝐴, 𝑦𝐴)và (𝑥𝐵, 𝑦𝐵), tham số hệ thống
và khóa của A, B được hình thành theo TT-HT và TT-K, ở đó:
(2.19)
(2.20) 𝑦𝐴 = 𝑔𝑥𝐴 𝑚𝑜𝑑 𝑝 và: 𝑦𝐵 = 𝑔𝑥𝐵 𝑚𝑜𝑑 𝑝
Bảng 2.6 được sử dụng để mô tả trao đổi khóa bí mật chung/chia sẻ giữa
A và B như sau:
64
Bảng 2.6. Giao thức trao đổi khóa TT-TDK-01
A
B
Bước 1
- Chọn ngẫu nhiên một giá trị 𝑘𝐴:
- Chọn ngẫu nhiên một giá trị 𝑘𝐵:
0 < 𝑘𝐵 < 𝑞 - Tính: 𝑅𝐵 = 𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝 (2.22) - Tính: 𝑆𝐵 = (𝑦𝐴)𝑥𝐵 𝑚𝑜𝑑 𝑝 (2.24) - Tính: 𝐸𝐵1 = 𝐻(𝑅𝐵‖𝑆𝐵) (2.26)
0 < 𝑘𝐴 < 𝑞 - Tính: 𝑅𝐴 = 𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝 (2.21) - Tính:𝑆𝐴 = (𝑦𝐵)𝑥𝐴 𝑚𝑜𝑑 𝑝 (2.23) - Tính: 𝐸𝐴1 = 𝐻(𝑅𝐴‖𝑆𝐴) (2.25) 𝑅𝐴, 𝐸𝐴1
𝑅𝐵, 𝐸𝐵1
Bước 2
- Tính: 𝐸̅𝐴1=𝐻(𝑅𝐴‖𝑆𝐵) (2.28) - Kiểm tra nếu 𝐸̅𝐴1=𝐸𝐴1 thì thực hiện tiếp, nếu 𝐸̅𝐴1 ≠ 𝐸𝐴1 thì hủy giao thức. - Tính khóa bí mật chia sẻ với A: 𝐾𝐵𝐴 = (𝑅𝐴)𝑘𝐵 𝑚𝑜𝑑 𝑝 (2.30) - Tính: 𝐸𝐵2 = 𝐻(𝐾𝐵𝐴‖𝑆𝐵) (2.32)
- Tính: 𝐸̅𝐵1=𝐻(𝑅𝐵‖𝑆𝐴) (2.27) - Kiểm tra nếu 𝐸̅𝐵1=𝐸𝐵1thì thực hiện tiếp, nếu 𝐸̅𝐵1 ≠ 𝐸𝐵1 thì hủy giao thức. - Tính khóa bí mật chia sẻ với B: 𝐾𝐴𝐵 = (𝑅𝐵)𝑘𝐴 𝑚𝑜𝑑 𝑝 (2.29) - Tính: 𝐸𝐴2 = 𝐻(𝐾𝐴𝐵‖𝑆𝐴) (2.31) 𝐸𝐴2
𝐸𝐵2
Bước 3
- Kiểm tra nếu 𝐸𝐵2 = 𝐸𝐴2 thì A khẳng định đối tượng tham gia trao đổi khóa là B và B đã thiết lập được khóa bí mật chia sẻ với A, sau đó A có thể dùng khóa này để trao đổi thông tin mật với B bằng 1 thuật toán mật mã khóa đối xứng đã được thống nhất trước. Giao thức thành công với khóa chung là 𝐾𝐴𝐵; nếu 𝐸𝐵2 ≠ 𝐸𝐴2 thì A khẳng định đối tượng tham gia trao đổi khóa là giả mạo và hủy khóa đã được tạo ra.
- Kiểm tra nếu 𝐸𝐴2 = 𝐸𝐵2 thì B khẳng định đối tượng tham gia trao đổi khóa là A và A đã thiết lập được khóa bí mật chia sẻ với B, sau đó B có thể dùng khóa này để trao đổi thông tin mật với A bằng 1 thuật toán mật mã khóa đối xứng đã được thống nhất trước. Giao thức thành công với khóa chung là 𝐾𝐵𝐴; nếu 𝐸𝐴2 ≠ 𝐸𝐵2 thì B khẳng định đối tượng tham gia trao đổi khóa là giả mạo và hủy khóa đã được tạo ra.
2.5.2. Tính đúng đắn của giao thức TT-TDK-01
Tính đúng đắn của giao thức TT-TDK-01 được chứng minh bằng mệnh đề sau:
𝑝−1
Cho 𝑝, 𝑞 là các số nguyên tố thỏa mãn: 𝑞|(𝑝 − 1), 𝑛 = 𝑝 × 𝑞, 𝑛 > 𝑝,
𝑞 𝑚𝑜𝑑 𝑝, 1 < 𝑥𝐴, 𝑥𝐵 < 𝑞, 𝑦𝐴 = 𝑔𝑥𝐴 𝑚𝑜𝑑 𝑝,
𝛼 ∈ (1, 𝑝), 𝑔 = 𝛼
𝑦𝐵 = 𝑔𝑥𝐵 𝑚𝑜𝑑 𝑝, 1 < 𝑘𝐴, 𝑘𝐵 < 𝑞, 𝑅𝐴 = 𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝, 𝑅𝐵 = 𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝, 𝑆𝐴 = (𝑦𝐵)𝑥𝐴 𝑚𝑜𝑑 𝑝, 𝐸𝐴1 = 𝐻(𝑅𝐴‖𝑆𝐴), 𝑆𝐵 = (𝑦𝐴)𝑥𝐵 𝑚𝑜𝑑 𝑝, 𝐸𝐵1 = 𝐻(𝑅𝐵‖𝑆𝐵) Nếu: 𝐸̅𝐴1= 𝐻(𝑅𝐴‖𝑆𝐵), 𝐸̅𝐵1= 𝐻(𝑅𝐵‖𝑆𝐴), 𝐾𝐴𝐵 = (𝑅𝐵)𝑘𝐴 𝑚𝑜𝑑 𝑝,
65
𝐾𝐵𝐴 = (𝑅𝐴)𝑘𝐵 𝑚𝑜𝑑 𝑝, 𝐸𝐴2 = 𝐻(𝐾𝐴𝐵‖𝑆𝐴), 𝐸𝐵2 = 𝐻(𝐾𝐵𝐴‖𝑆𝐵) thì:
𝐸̅𝐴1 = 𝐸𝐴1, 𝐸̅𝐵1 = 𝐸𝐵1, 𝐾𝐴𝐵=𝐾𝐵𝐴 và 𝐸𝐴2 = 𝐸𝐵2 Chứng minh:
(2.33)
(2.34)
(2.35) Từ (2.20), (2.23) ta có: 𝑆𝐴 = (𝑦𝐵)𝑥𝐴 𝑚𝑜𝑑 𝑝 = (𝑔𝑥𝐵 𝑚𝑜𝑑 𝑝)𝑥𝐴 𝑚𝑜𝑑 𝑝 = 𝑔𝑥𝐴.𝑥𝐵 𝑚𝑜𝑑 𝑝 Mặt khác, từ (2.19) và (2.24) ta lại có: 𝑆𝐵 = (𝑦𝐴)𝑥𝐵 𝑚𝑜𝑑 𝑝 = (𝑔𝑥𝐴 𝑚𝑜𝑑 𝑝)𝑥𝐵 𝑚𝑜𝑑 𝑝= 𝑔𝑥𝐴.𝑥𝐵 𝑚𝑜𝑑 𝑝 Từ (2.33) và (2.34) suy ra: 𝑆𝐴 = 𝑆𝐵
(2.36)
(2.37)
Từ (2.25), (2.28) và (2.35) ta có: 𝐸𝐴1 = 𝐻(𝑅𝐴‖𝑆𝐴) = 𝐻(𝑅𝐴‖𝑆𝐵) = 𝐸̅𝐴1 Tương tự, từ (2.26), (2.27) và (2.35) ta cũng có: 𝐸𝐵1 = 𝐻(𝑅𝐵‖𝑆𝐵) = 𝐻(𝑅𝐵‖𝑆𝐴) = 𝐸̅𝐵1 Từ (2.29) và (2.22) ta có:
(2.38)
𝐾𝐴𝐵 = (𝑅𝐵)𝑘𝐴 𝑚𝑜𝑑 𝑝 = (𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝)𝑘𝐴 𝑚𝑜𝑑 𝑝 = 𝑔𝑘𝐵.𝑘𝐴 𝑚𝑜𝑑 𝑝 Từ (2.30) và (2.21) ta lại có:
(2.39)
(2.40) 𝐾𝐵𝐴 = (𝑅𝐴)𝑘𝐵 𝑚𝑜𝑑 𝑝 = (𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝)𝑘𝐵 𝑚𝑜𝑑 𝑝 = 𝑔𝑘𝐴.𝑘𝐵 𝑚𝑜𝑑 𝑝 Từ (2.38) và (2.39) suy ra: 𝐾𝐴𝐵= 𝐾𝐵𝐴
Từ (2.31), (2.32), (2.35) và (2.40) suy ra:
(2.41) 𝐸𝐴2 = 𝐻(𝐾𝐴𝐵‖𝑆𝐴) = 𝐻(𝐾𝐵𝐴‖𝑆𝐵) = 𝐸𝐵2
(2.36), (2.37), (2.40) và (2.41) là những điều cần chứng minh. Như vậy,
mệnh đề đã được chứng minh.
2.5.3. Độ an toàn của giao thức TT-TDK-01
Giao thức mới đề xuất bảo đảm đầy đủ các tính chất an toàn của một giao
thức trao đổi khóa:
- Xác thực thực thể: ở giao thức này việc kiểm tra điều kiện 𝐸̅𝐴1 = 𝐸𝐴1 và 𝐸̅𝐵1 = 𝐸𝐵1 cho phép các đối tượng tham gia trao đổi khóa hoàn toàn có thể xác thực được danh tính của nhau. Do giao thức cung cấp thuộc tính
66
này cho cả hai bên tham gia nên là một giao thức trao đổi khóa có xác thực.
- Xác thực khóa hiện: bằng việc kiểm tra điều kiện 𝐸𝐵2 = 𝐸𝐴2 thì A hoàn
toàn có thể khẳng định B đã tạo được khóa bí mật chia sẻ với mình và B cũng
có thể khẳng định được điều tương tự như thế với A khi điều kiện: 𝐸𝐴2 = 𝐸𝐵2
thỏa mãn.
- Tính an toàn khóa đã biết: do 𝐾𝐴𝐵 và 𝐾𝐵𝐴 là các khóa phiên được A và
B tính qua 𝑘𝐴 và 𝑘𝐵 nên việc chọn ngẫu nhiên 𝑘∗ và dựa vào một vài khóa phiên
khác để tính 𝐾𝐴𝐵, 𝐾𝐵𝐴 mà đảm bảo được điều kiện 𝐸𝐵2 = 𝐸𝐴2 và 𝐸𝐴2 = 𝐸𝐵2là
không thể. Nên khẳng định giao thức đảm bảo tính an toàn khóa đã biết - KKS.
- Tính bí mật về phía trước: việc tính các khóa bí mật chia sẻ đã được
thiết lập trước đó bởi A và B là không thể thực hiện được, dù các khóa bí mật
của A và B (𝑥𝐴, 𝑥𝐵) bị lộ. Thực vậy, do khóa phiên 𝐾𝐴𝐵∗ được dẫn xuất từ giá
trị chia sẻ 𝐾𝐴𝐵, 𝐾𝐵𝐴 mà được tính từ các khóa ngắn hạn 𝑘𝐴 và 𝑘𝐵 được chọn
ngẫu nhiên và độc lập với các khóa bí mật dài hạn của các bên 𝑥𝐴, 𝑥𝐵 nên kẻ
tấn công sẽ không thu được thông tin đáng kể gì về khóa phiên này để phân
biệt được nó với một khóa ngẫu nhiên. Nếu kẻ tấn công cũng có khả năng phân
biệt 𝐾𝐴𝐵 với 𝐾𝐴𝐵∗ (với khóa được chọn ngẫu nhiên) khi chỉ biết 𝑥𝐴, 𝑥𝐵 thì điều
này mâu thuẫn với giả thiết độ khó của bài toán DLP. Do đó, giao thức đạt được
tính chất an toàn PFS toàn phần.
- Tính kháng tấn công UKS: Giả sử rằng tồn tại trường hợp có một bên
A kết thúc phiên 𝓈 và tin tưởng rằng mình chia sẻ một khóa 𝑘𝓈với B, nhưng B lại tin tưởng rằng mình chia sẻ khóa 𝑘𝓈với một thực thể 𝐴̂ ≠ 𝐴 trong phiên 𝓈′. Do định danh các phiên là duy nhất trên mỗi bên tham gia nên ta có 𝓈 ≠ 𝓈′, khi đó có thể khám phá khóa phiên (𝐴, 𝐴̂, 𝑘𝓈′) và sau đó chọn (𝐴, 𝐵, 𝑘𝓈) như phiên kiểm tra. Điều này là hợp lệ vì khi 𝓈 ≠ 𝓈′ thì (𝐴, 𝐴̂, 𝑘𝓈′)và (𝐴, 𝐵, 𝑘𝓈) là không
so khớp.
Ta có thể khẳng định không thể xảy ra với xác suất như trên vì khi (𝐴, 𝓈)
67
hoàn thành với đầu ra (𝐴, 𝐵, 𝑘𝓈) nên nó phải nhận được một thông báo phúc đáp chứa định danh của đối tác B. Hơn nữa, A kiểm tra điều kiện 𝐸̅𝐴1 = 𝐸𝐴1 trong thông báo phúc đáp dưới khoá công khai của B (𝑦𝐵), hay nếu (𝐵, 𝓈)
không được kích hoạt như một bên phúc đáp thì B chưa bao giờ sinh ra 𝑆𝐵 = (𝑦𝐴)𝑥𝐵 𝑚𝑜𝑑 𝑝, như vậy (𝐴, 𝐴̂, 𝑘𝓈′) được sinh ra ở trên là một sự giả mạo. Hay
giao thức cung cấp tính kháng tấn công UKS.
- Tính kháng tấn công KCI: Ở đây, kẻ tấn công 𝐵̂ cần khả năng giả mạo danh B để trao đổi giá trị duy nhất 𝑆𝐵̂ = (𝑦𝐴)𝑥𝐵 𝑚𝑜𝑑 𝑝 mới của A (do 𝐵̂mạo danh B để trao đổi với A trong phiên này, nên B chưa bao giờ tính được giá trị
như vậy). Tuy nhiên, theo điều kiện của mệnh đề điều này là bất khả thi đối với
kẻ tấn công vì bằng cách kiểm tra điều kiện 𝐸𝐵2 = 𝐸𝐴2 kể cả khi kẻ tấn công
biết được khóa phiên, vì nếu 𝐸𝐵2 ≠ 𝐸𝐴2 thì 𝑆𝐵̂ ≠ 𝑆𝐵và A khẳng định đối tượng tham gia trao đổi khóa là giả mạo và hủy khóa đã được tạo ra. Do vậy, khẳng
định giao thức cung cấp tính kháng tấn công KCI (Key Compromise
Impersonation - mạo danh thỏa hiệp khóa).
Như vậy, luận án đã chỉ ra rằng giao thức TT-TDK-01 thỏa mãn các
thuộc tính an toàn cơ bản của một giao thức trao đổi khóa dưới giả thiết an toàn
của bài toán DLP và độ an toàn của các hàm thành phần.
2.5.4. Hiệu quả thực hiện của TT-TDK-01
a) Thời gian thực hiện của giao thức Arazi:
Thời gian tính toán của bên A cho một lần thiết lập là:
(Texp + Th + Tinv + 2Tmul) Thời gian tính (𝑅𝐴, 𝑆𝐴) là:
(2Texp + Th + Tinv + 3Tmul) Thời gian thực hiện kiểm tra (𝑅𝐵, 𝑆𝐵):
Thời gian tính khóa 𝐾 là: (Texp)
Thời gian thực hiện: (4Texp + 2Th + 2Tinv + 5Tmul)
Bên B cần thời gian tương tự để hoàn thành giao thức, vậy thời gian tính toán
68
cần thiết để hoàn thành giao thức là: (8Texp + 4Th + 4Tinv + 10Tmul)
b) Thời gian thực hiện của giao thức Harn:
Thời gian tính toán của bên A cho một lần thiết lập là:
(2Texp + Th + Tinv + 3Tmul) Thời gian tính (𝑚𝐴1, 𝑚𝐴2, 𝑆𝐴) là:
(Tmul) Thời gian tính 𝑟𝐵 là:
(2Texp + Th + Tinv + 3Tmul) Thời gian thực hiện kiểm tra (𝑟𝐵, 𝑠𝐵):
(3Texp) Thời gian tính khóa (𝐾𝐴𝐵1, 𝐾𝐴𝐵2, 𝐾𝐴𝐵3) là:
Thời gian thực hiện: (7Texp + 2Th + 2Tinv + 7Tmul)
Bên B cần thời gian tương tự để hoàn thành giao thức, vậy thời gian tính toán
cần thiết để hoàn thành giao thức là: (14Texp + 4Th + 4Tinv + 14Tmul)
c) Thời gian thực hiện của giao thức Phan:
Thời gian tính toán các bước của bên A và B là:
Bước 1 (A): (2Texp)
Bước 2 (B): (4Texp + Th + Tinv + 3Tmul)
Bước 3 (A): (4Texp + 2Th + 2Tinv + 6Tmul)
Bước 4 (B): (2Texp + Th + Tinv + 3Tmul)
Tổng thời gian thực hiện: (12Texp + 4Th + 4Tinv + 12Tmul)
d) Thời gian thực hiện của giao thức MTA 16.6-01 [3]:
Thời gian tính toán 2 bước truyền của bên A là:
Bước 1 (bên A): (Texp + Th + Tinv + Tmul)
Bước 2 (bên B): (4Texp + 2Th + 2Tinv + 2Tmul)
Bước 3 (bên A): (3Texp + Th + Tinv + Tmul)
Tổng thời gian thực hiện: (8Texp + 4Th + 4Tinv + 4Tmul)
e) Thời gian thực hiện của giao thức MTA 16.6-02 [3]:
Thời gian tính toán 1 bước truyền của bên A là:
Bước 1 (bên A): (2Texp + Th + Tinv + Tmul)
Bước 2 (bên B): (3Texp + Th + Tinv + Tmul)
69
Tổng thời gian thực hiện: (5Texp + 2Th + 2Tinv + 2Tmul )
f) Thời gian thực hiện của giao thức MTA 17.5-03 [8]:
Thời gian tính toán các bước của bên A và B là:
Bước 1 (bên A): (Texp + Th + Tinv + Tmul)
Bước 2 (bên B): (4Texp + 2Th + 2Tinv + 2Tmul)
Bước 3 (bên A): (3Texp + Th + Tinv + Tmul)
Tổng thời gian thực hiện: (8Texp + 4Th + 4Tinv + 4Tmul)
g) Thời gian thực hiện của giao thức MTA 17.5-04 [8]:
Thời gian tính toán các bước của bên A là:
Bước 1: (Texp)
Bước 2: (2Texp + Th)
Bên B cần thời gian tương tự để hoàn thành giao thức, vậy thời gian tính
toán cần thiết để hoàn thành giao thức là: (6Texp + 6Th)
h) Thời gian thực hiện của giao thức TT-TDK-01:
Thời gian tính toán các bước của bên A là:
Bước 1: (2Texp+ Th)
Bước 2: (Texp + 2Th)
Bên B cần thời gian tương tự để hoàn thành giao thức, vậy thời gian tính
toán cần thiết để hoàn thành giao thức là: (6Texp + 6Th)
Tổng hợp thời gian thực hiện của giao thức mới đề xuất và của các giao
thức trao đổi khóa tích hợp chữ ký số được chỉ ra trong Bảng 2.7 như sau:
Bảng 2.7. Thời gian thực hiện của các giao thức trên cơ sở DHKE
TT Tên giao thức
Tổng thời gian thực hiện
1
Arazi
8Texp + 4Th + 4Tinv + 10Tmul
2
Harn
14Texp + 4Th + 4Tinv + 16Tmul
3
Phan
12Texp + 4Th + 4Tinv + 12Tmul
4 MTA 16.6-01
8Texp + 4Th + 4Tinv + 4Tmul
70
TT Tên giao thức
Tổng thời gian thực hiện
5 MTA 16.6-02
5Texp + 2Th + 2Tinv + 2Tmul
6 MTA 17.5-03
8Texp + 4Th + 4Tinv + 4Tmul
7 MTA 17.5-04
6Texp + 6Th
8
TT-TDK-01
6Texp + 6Th
Nhận xét:
- Kết quả từ Bảng 2.7 cho thấy hiệu quả thực hiện của TT-TDK-01 nhanh
hơn các giao thức trao đổi khóa được thiết kế theo phương pháp tích hợp chữ
ký số (Arazi, Harn, Phan) và các giao thức xây dựng trên tính khó của việc giải
bài toán khó DLP (MTA 16.6-01, MTA 16.6-02, MTA 17.5-03, MTA 17.5-
04).
- Giao thức 1 bước truyền dữ liệu trong MTA 16.6-02 có hiệu quả thực
hiện cao hơn MTA 17.5-03 nhưng không bảo đảm được một số tính chất an
toàn của giao thức trao đổi khóa và chỉ có thể ứng dụng rất hạn chế trong một
số trường hợp cụ thể.
- Giao thức trao đổi khóa MTA 17.5-04 có sự cải tiến nhằm nâng cao
hiệu quả thực hiện và lưu lượng truyền tin so với MTA 17.5-03. Tuy nhiên
điểm khác biệt chủ yếu giữa 2 giao thức này là ở chỗ: MTA 17.5-03 làm việc
theo cơ chế tuần tự, còn MTA 17.5-04 lại có cơ chế làm việc theo kiểu song
song. Nghĩa là việc trao đổi thông tin thiết lập khóa giữa A và B được thực hiện
nối tiếp nhau ở MTA 17.5-03, còn ở MTA 17.5-04 các thông tin này được trao
đổi đồng thời với nhau.
- Giao thức TT-TDK-01 và MTA 17.5-04 đều có tổng thời gian thực hiện
6Texp + 6Th. Ở MTA 17.5-04 đã đáp ứng được đa số tính chất an toàn của giao
thức trao đổi khóa như: xác thực thực thể; xác thực khóa hiện; tính an toàn khóa
đã biết; tính bí mật về phía trước nhưng chưa đáp ứng được tính an toàn quan
trọng là kháng tấn công không biết khóa chia sẻ UKS do bỏ qua kiểm tra điều
71
kiện 𝐸̅𝐴1 = 𝐸𝐴1 và 𝐸̅𝐵1=𝐸𝐵1để xác định giả mạo bên phúc đáp. Trong khi đó TT-TDK-01 đáp ứng được kháng tấn công UKS từ những chứng minh đầy đủ
về các tính chất an toàn của một giao thức trao đổi khóa.
2.6. Kết luận Chương 2
Trong chương này, luận án đã trình bày các đề xuất chính liên quan đến
thuật toán hình thành tham số hệ thống (TT-HT); hình thành khóa (TT-K); đề
xuất hệ mật dựa trên tính khó bài toán logarit rời rạc bao gồm các thuật toán:
sinh chữ ký (Thuật toán TT-K-01), kiểm tra chữ ký (Thuật toán TT-KT-01),
mã hóa (Thuật toán TT-MH-01), giải mã - xác thực (Thuật toán TT-GM-
01), đề xuất các lược đồ này đã được công bố trong công trình [CT7]; trao đổi
khóa (Thuật toán TT-TDK-01) đề xuất này đã được công bố trong các công
trình [CT1], [CT6].
Chứng minh tính đúng đắn, độ an toàn của lược đồ chữ ký số mới với
các lược đồ DSA, KCDSA và GOST R34-10.94 là tương đương. Qua so sánh
tính hiệu quả cho thấy lược đồ chữ ký số mới là tốt nhất.
Luận án đã phát triển thuật toán giải mã - xác thực nhằm cung cấp tính
năng bảo mật nội dung của thông điệp và xác thực nguồn gốc cùng với tính
toàn vẹn của thông điệp và là một cách hiệu quả để chống lại CCA, CPA và
các cuộc tấn công giả mạo “Man-in-the-Middle”.
Tiếp theo, trên cơ sở nghiên cứu, phân tích các giao thức trao đổi khóa
an toàn dựa trên DLP (DHKE) có tích hợp chữ ký số đã được công bố, luận án
đã xây dựng giao thức trao đổi khóa mới theo DHKE nhưng thay vì tích hợp
chữ ký số thì sử dụng mã hóa lần hai. Ngoài việc tăng hiệu quả thực hiện so với
các giao thức đã công bố mà vẫn đáp ứng đầy đủ các tính chất an toàn của một
giao thức trao đổi khóa.
Với nhận định trong tương lai, khi các bài toán khó lần lượt bị phá giải
thì hệ mật này sẽ không còn an toàn nữa. Do vậy, để tăng cường tính bảo mật
72
của hệ mật, cần phải phát triển các lược đồ dựa trên nhiều bài toán khó, điều
này sẽ làm cho việc tấn công trở nên khó khăn hơn khi phải giải quyết đồng
thời các bài toán khó. Tuy nhiên, thiết kế các lược đồ này là việc không dễ dàng
nhưng là vấn đề mà luận án sẽ tiếp tục quan tâm tại Chương 3.
73
Chương 3
XÂY DỰNG HỆ MẬT KHÓA CÔNG KHAI DỰA TRÊN TÍNH KHÓ
CỦA VIỆC GIẢI ĐỒNG THỜI 2 BÀI TOÁN
Nội dung chính của Chương này đề xuất xây dựng hệ mật với các thuật
toán của: lược đồ chữ ký số; mã hóa, giải mã - xác thực; giao thức trao đổi khóa
an toàn cho các hệ mật khóa đối xứng dựa trên tính khó của việc giải đồng thời
2 bài toán logarit rời rạc và phân tích số/khai căn. Chứng minh tính đúng đắn,
độ an toàn, tính hiệu quả của các thuật toán mới đề xuất.
3.1. Phát triển lược đồ chữ ký số dựa trên hai bài toán khó
Nghiên cứu trong lĩnh vực mật mã khóa công khai nói chung và chữ ký
số nói riêng thường được xem xét và đánh giá ở hai cấp độ: cấp độ thứ nhất là
xem xét cơ sở toán học để xây dựng các thuật toán mật mã với phần lớn trên
các bài toán khó như phân tích một số nguyên lớn thành thừa số nguyên tố, bài
toán tìm nghiệm, bài toán logarit rời rạc, bài toán logarit rời rạc trên đường
cong elliptic; cấp độ thứ hai là xây dựng các thuật toán mật mã và chữ ký số
dựa trên kết hợp các bài toán khó.
Tại Chương 2, luận án đã đề xuất theo cấp độ thứ nhất. Tại Chương 3
này luận án sẽ phân tích hai lược đồ chữ ký số [23] mà để phá giải nó thì cần
giải quyết đồng thời cả hai bài toán logarithm rời rạc và phân tích thừa số.
3.1.1. Lược đồ Rabin - Schnorr
a) Tạo khóa
- Chọn hai số nguyên tố lớn 𝑞 và 𝑞’
- Tính 𝑛 = 𝑞𝑞’
∗ thỏa mãn 𝑔𝑛 ≡ 1𝑚𝑜𝑑𝑝
- Tính 𝑝 = 2𝑛 + 1
∗ và tính 𝑦 = 𝑔𝑥𝑚𝑜𝑑𝑝
- Chọn 𝑔 ∈ 𝑍𝑝
- Chọn số bí mật 𝑥 ∈ 𝑍𝑝
- Khóa bí mật là (𝑥, 𝑞, 𝑞’)
74
- Khóa công khai là (𝑝, 𝑔, 𝑦)
b) Sinh chữ ký
Thuật toán sinh chữ ký
Input: 𝑝, 𝑞, 𝑞′, 𝑛, 𝑥, 𝑀 - thông điệp cần ký.
Output: 𝐸, 𝑆 - chữ ký
Bước 1. Chọn ngẫu nhiên giá trị 𝑘 trong khoảng (1, 𝑛)
Bước 2. Tính giá trị:
𝑅 = 𝑔𝑘 𝑚𝑜𝑑 𝑝
Bước 3. Tính thành phần thứ nhất 𝐸 của chữ ký theo:
𝐸 = 𝐻(𝑀‖𝑅)
Bước 4. Tính thành phần thứ hai 𝑆 của chữ ký thỏa mãn:
𝑆2 = (𝑘 − 𝑥𝐸)𝑚𝑜𝑑𝑛
Chữ ký là (𝐸, 𝑆)
c) Kiểm tra chữ ký
Thuật toán kiểm tra chữ ký
Input: 𝑝, 𝑦, 𝑛, (𝐸, 𝑆) - chữ ký cần kiểm tra
Output: (𝐸, 𝑆) = 𝑇𝑟𝑢𝑒/𝐹𝑎𝑙𝑠𝑒.
Bước 1. Tính giá trị 𝑆 theo:
𝑆 = 𝑆2𝑚𝑜𝑑𝑛
Bước 2. Tính giá trị 𝑅 theo:
𝑅 = 𝑔𝑆𝑦𝐸𝑚𝑜𝑑𝑝
Bước 3. Tính giá trị 𝐸 theo:
𝐸 = 𝐻(𝑀‖𝑅)
Bước 4. Nếu 𝐸 = 𝐸 thì (𝐸, 𝑆)= true; nếu 𝐸 ≠ 𝐸 thì (𝐸, 𝑆)= false
Trong trường hợp phương trình tìm 𝑆 vô nghiệm sẽ thêm một phần đệm
vào bản tin để có thể khai căn bậc hai mod n. Việc này sẽ làm xuất hiện một số
75
nguy cơ mất an toàn, do vậy ta sẽ xét lược đồ RSA - Schnorr sau.
3.1.2. Lược đồ RSA - Schnorr
So với lược đồ Rabin - Schnorr, lược đồ RSA - Schnorr được phát triển
bằng cách sử dụng thêm một khóa bí mật 𝑑 và một khóa công khai 𝑒 được tạo
như trong chữ ký số của hệ RSA.
Những phát triển trong lược đồ RSA - Schnorr:
- 𝑔 sử dụng một giá trị có bậc 𝑛 modulo 𝑝
- Thêm một phần tử 𝑒 vào khóa công khai
- Thêm một phần tử 𝑑 vào khóa bí mật
- Sử dụng 𝑆𝑒 thay vì 𝑆2 trong thuật toán kiểm tra chữ ký. Giá trị 𝑒 và 𝑑
được tạo ra giống như hệ mật RSA.
a) Tạo khóa
- Chọn hai số nguyên tố lớn 𝑞 và 𝑞’
- Tính 𝑛 = 𝑞𝑞’
- Tính 𝑝 = 2𝑛 + 1
∗ thỏa mãn 𝑔𝑛 ≡ 1𝑚𝑜𝑑𝑝
- Tính (𝑛) = (𝑞 − 1)(𝑞′ − 1)
∗ và tính 𝑦 = 𝑔𝑥𝑚𝑜𝑑𝑝
- Chọn 𝑔 ∈ 𝑍𝑝
- Chọn số bí mật 𝑥 ∈ 𝑍𝑝
- Chọn số nguyên 𝑒 ∈ 𝑍𝑛 thỏa mãn: 𝑔𝑐𝑑(𝑒,(𝑛)) = 1
- Tính 𝑑 sao cho: 𝑒 ∗ 𝑑 = 1𝑚𝑜𝑑(𝑛)
- Khóa công khai là (𝑒, 𝑔, 𝑦).
- Khóa bí mật là (𝑥, 𝑑)
b) Sinh chữ ký
Thuật toán sinh chữ ký
Input: 𝑝, 𝑞, 𝑞′, 𝑛, 𝑑, 𝑥, 𝑀 - thông điệp cần ký.
Output: 𝐸, 𝑆 - chữ ký
76
Bước 1. Chọn ngẫu nhiên giá trị 𝑘 trong khoảng (1, 𝑛)
Bước 2. Tính giá trị:
𝑅 = 𝑔𝑘 𝑚𝑜𝑑 𝑝
Bước 3. Tính thành phần thứ nhất 𝐸 của chữ ký theo:
𝐸 = 𝐻(𝑀‖𝑅)
Bước 4. Tính thành phần thứ hai 𝑆 của chữ ký thỏa mãn:
𝑆e = (𝑘 − 𝑥𝐸)𝑚𝑜𝑑𝑛hay 𝑆 = (𝑘 − 𝑥𝐸)𝑑𝑚𝑜𝑑𝑛
Chữ ký là (𝐸, 𝑆)
c) Kiểm tra chữ ký
Thuật toán kiểm tra chữ ký
Input: 𝑝, 𝑛, 𝑒, 𝑦, (𝐸, 𝑆) - chữ ký cần kiểm tra
Output: (𝐸, 𝑆) = 𝑇𝑟𝑢𝑒/𝐹𝑎𝑙𝑠𝑒.
Bước 1. Tính giá trị 𝑆 theo:
𝑆 = 𝑆e𝑚𝑜𝑑𝑛
Bước 2. Tính giá trị 𝑅 theo:
𝑅 = 𝑔𝑆𝑦𝐸𝑚𝑜𝑑𝑝
Bước 3. Tính giá trị 𝐸 theo:
𝐸 = 𝐻(𝑀‖𝑅)
Bước 4. Nếu 𝐸 = 𝐸 thì (𝐸, 𝑆)= true; nếu 𝐸 ≠ 𝐸 thì (𝐸, 𝑆)= false
3.1.3. Đánh giá
Khả năng bảo mật của hai lược đồ chữ ký số trên chỉ có thể bị phá giải
khi kẻ tấn công giải quyết được đồng thời hai bài toán khó khai triển thừa số
nguyên tố và logarithm rời rạc.
Lược đồ Rabin - Schnorr: trong lược đồ này, việc giải bài toán logarithm
rời rạc là không đủ để có thể giả mạo được chữ ký. Việc giải bài toán logarithm
77
rời rạc là nhằm giải phương trình 𝑦 = 𝑔𝑥𝑚𝑜𝑑𝑝 tìm ra khóa bí mật 𝑥 để có thể
tiến hành tính toán giá trị 𝑆2 = (𝑘 − 𝑥 ∗ 𝐸)𝑚𝑜𝑑𝑛. Tuy nhiên, để tính toán
được giá trị chữ ký giả mạo 𝑆 từ 𝑆2 cần phải tiến hành khai căn bậc hai của 𝑆2.
Điều này là rất khó khăn nếu không thể phân tích 𝑛 thành thừa số nguyên tố.
Lược đồ RSA - Schnorr: tương tự như lược đồ Rabin - Schnorr, chỉ giải
bài toán logarithm rời rạc là không đủ để có thể phá giải được chữ ký số được
trình bày ở trên. Việc giải bài toán logarithm rời rạc giúp tìm được 𝑥, từ đó tính
được 𝑆𝑒 nhưng nếu muốn tính được 𝑆 từ 𝑆𝑒 ta cần khai căn bậc 𝑒 theo 𝑚𝑜𝑑𝑛,
để làm được điều đó thì cần phải tính được giá trị của 𝑑, muốn tính được giá trị
của 𝑑 thì lại cần tìm được (𝑛) mà muốn tìm được (𝑛) thì lại cần phải giải
tiếp bài toán phân tích 𝑛 thành thừa số nguyên tố.
Các kiểu tấn công có thể phá giải lược chữ ký số ở trên:
-Kiểu thứ nhất: kẻ tấn công tìm cách giải ra các gái trị khóa bí mật của
lược đồ, như trình bày ở trên, trong trường hợp này kẻ tấn công sẽ phải giải
đồng thời hai bài toán khó là bài toán phân tích thừa số nguyên tố và bài toán
logarithm rời rạc.
- Kiểu thứ hai: kẻ tấn công sẽ thu được giá trị 𝑅, 𝐸, 𝑆 bằng cách chọn giá
trị 𝑅 một cách tùy ý, và tính 𝐸 theo công thức 𝐸 = 𝐹𝐻(𝑀||𝑅). Sau đó kẻ tấn công cố gắng tìm 𝑆 thỏa mãn công thức 𝑅 = 𝑔𝑆𝑒 𝑦𝐸𝑚𝑜𝑑𝑝, trong trường hợp
này kẻ tấn công vẫn phải giải quyết cả hai bài toán khó là bài toán phân tích
thừa số nguyên tố và bài toán logarithm rời rạc.
Mặc dù hai lược đồ trên đều được chứng minh nếu bị tấn công phải giải
quyết cả hai bài toán khó nhưng tại công trình [4] các tác giả đã chỉ ra lỗi và
chỉnh sửa lỗi của 02 lược đồ như sau:
- Với lược RSA-Schnorr: nếu xuất phát từ nếu (𝑅, 𝑆) được chấp nhận thì
(𝑅, −𝑆) cũng được chấp nhận do 𝑆2. Do vậy lược đồ dễ bị giả mạo. Chỉnh sửa
78
𝑛
2
bằng cách, khi khai căn của 𝑆 thì kiểm tra điều kiện nếu 𝑆 > thì 𝑆 = 𝑛 − 𝑆.
- Với lược cả hai Rabin-Schnorr và RSA-Schnorr: nếu 𝑔𝑐𝑑(𝑠, 𝑛) ≠ 1 thì đây
chính là ước của 𝑛. Như vậy lược đồ khi này chỉ dựa vào tính khó của bài toán
logarit rời rạc. Chỉnh sửa bằng cách thêm bước kiểm tra điều kiện nếu
𝑔𝑐𝑑(𝑠, 𝑛) ≠ 1 thì chọn lại 𝑥.
Bên cạnh đó, để nâng cao hiệu quả của hai lược đồ mà vẫn đảm bảo độ
“khó” cần bổ sung, sửa đổi các tham số như sau:
- Hàm băm (hàm tóm lược): 𝐻: {0,1}∞ → 𝐻: {0,1}𝑁 - Khóa bí mật: 𝑥 ∈𝑅 (2𝑁−1, 2𝑁). - Số mũ công khai 𝑒 = 216 + 1 cho RSA-Schnorr.
- Tính trước và lưu giá trị như tham số mật của người ký: 𝑐 =
𝑞. (𝑞−1𝑚𝑜𝑑𝑝)𝑚𝑜𝑑𝑛 cho Rabin-Schnorr.
Khi này, khóa ký và kiểm tra chữ ký của lược đồ Rabin-Schnorr lần lượt
là (𝑝, 𝑞, 𝑞′, 𝑛, 𝑥, 𝑐) và (𝑝, 𝑦, 𝑛); của lược đồ RSA-Schnorr lần lượt là
(𝑝, 𝑞, 𝑞′, 𝑑, 𝑥, 𝑐) và (𝑝, 𝑛, 𝑦, 𝑒).
Từ những phân tích trên cho thấy, phát triển lược đồ chữ ký số dựa trên
các bài toán khó được rất nhiều nhà nghiên cứu phát triển nhằm tăng tính an
toàn khi một trong các bài toán khó bị hóa giải. Cũng nhằm mục này, luận án
để xuất hệ mật bắt đầu từ xây dựng lược đồ dựa trên bài toán DLP và IFP sau.
3.2. Xây dựng lược đồ chữ ký số
Lược đồ chữ ký số đề xuất bao gồm thuật toán sinh chữ ký (Thuật toán
TT-K-02) và kiểm tra chữ ký (Thuật toán TT-KT-02), với các tham số hệ thống
cũng được hình thành theo TT-HT và khóa hình thành theo TT-K. Các tham
số (𝑥1, 𝑥2/𝑦) được tính theo (3.1), như sau:
(3.1) Chọn giá trị bí mật thứ nhất 𝑥1 trong khoảng (1, 𝑞) và tính 𝑦/𝑥2: 𝑦 = (𝑔)(𝑥1)−1 𝑚𝑜𝑑 𝑝, 𝑥2 = 𝑦−1 𝑚𝑜𝑑 𝜑(𝑛)
79
Thuật toán TT-K-02 và TT-KT-02 cũng như chứng minh tính đúng đắn,
độ an toàn của thuật toán đã được NCS công bố tại công trình [CT5], như sau:
3.2.1. Thuật toán sinh chữ ký TT-K-02
Thuật toán TT-K-02. Thuật toán sinh chữ ký
Input: p, q, g, 𝜑(𝑛), 𝑥1, 𝑥2, 𝑀 - thông điệp cần ký.
Output: 𝐸, 𝑆 - chữ ký
Bước 1. Chọn ngẫu nhiên giá trị 𝑘 trong khoảng (1, 𝑞)
Bước 2. Tính giá trị:
(3.2) 𝑅 = 𝑔𝑘 𝑚𝑜𝑑 𝑝
Bước 3. Tính thành phần thứ nhất 𝐸 của chữ ký theo:
(3.3) 𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞
(3.4) Bước 4. Tính thành phần thứ hai 𝑆 của chữ ký theo: 𝑆 = ((𝑥1)−1 × (𝑘 + 𝐸)𝑚𝑜𝑑 𝑞)𝑥2 𝑚𝑜𝑑 𝑛
3.2.2. Thuật toán kiểm tra chữ ký TT-KT-02
Thuật toán TT-KT-02. Thuật toán kiểm tra chữ ký
Input: 𝑝, 𝑞, 𝑔, 𝑦, 𝑛, (𝐸, 𝑆) - chữ ký cần kiểm tra
Output: (𝐸, 𝑆) = 𝑇𝑟𝑢𝑒/𝐹𝑎𝑙𝑠𝑒.
Bước 1. Tính giá trị B sử dụng khóa bí mật thứ hai để tính 𝑅 theo:
(3.5) 𝑅̅ = ((𝑦)(𝑆)𝑦𝑚𝑜𝑑𝑛 × (𝑔)−𝐸) 𝑚𝑜𝑑 𝑝
Bước 2. Tính giá trị:
𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞 (3.6)
Bước 3. Nếu 𝐸 = 𝐸 thì (𝐸, 𝑆)= true; nếu 𝐸 ≠ 𝐸 thì (𝐸, 𝑆)= false
Chú thích:
+ (𝐸, 𝑆)= true: chữ ký hợp lệ, thông điệp M được xác thực về nguồn gốc
và tính toàn vẹn.
+ (𝐸, 𝑆)= false: chữ ký hoặc/và thông điệp bị giả mạo.
80
3.2.3. Tính đúng đắn của lược đồ chữ ký số
𝑝−1 𝑞 𝑚𝑜𝑑 𝑝,
Điều cần chứng minh là: Cho p, q , 𝑝1, 𝑞1 là các số nguyên tố thỏa mãn:
𝑚𝑜𝑑 𝑝,
𝑞|(𝑝 − 1), 𝑛 = 𝑝1 × 𝑞1, 𝑛 > 𝑝, 1 < 𝛼 < 𝑝, 𝑔 = 𝛼 𝜑(𝑛) = (𝑝1 − 1) × (𝑞1 − 1), 1 < 𝑥1 < 𝑞, 𝑦 = 𝑔(𝑥1)−1 𝑥2 = (𝑦)−1𝑚𝑜𝑑 𝜑(𝑛), 1 < 𝑘 < 𝜑(𝑛), 𝑅 = 𝑔𝑘𝑚𝑜𝑑 𝑝, 𝐻: {0,1}∗ → 𝑍ℎ với 𝑞 < ℎ < 𝑝, 𝐸 = 𝐻(𝑀‖𝑆)𝑚𝑜𝑑𝑞, 𝑆 = (𝑥1 × (𝑘 + 𝐸)𝑚𝑜𝑑𝑞)𝑥2 𝑚𝑜𝑑𝑛. Nếu: 𝑅̅ = ((𝑦)(𝑆)𝑦𝑚𝑜𝑑𝑛 × (𝑔)−𝐸)𝑚𝑜𝑑𝑝, 𝐸̅ = 𝐻(𝑀‖𝑅̅)𝑚𝑜𝑑𝑞 thì 𝐸̅ = 𝐸.
Chứng minh:
Thật vậy, từ (3.1), (3.2), (3.4), (3.5) và (3.6) ta có:
((𝑥1.(𝑘+𝐸)𝑚𝑜𝑑𝑞)𝑥2𝑚𝑜𝑑𝑛)𝑦𝑚𝑜𝑑𝑛
𝑅̅ = ((𝑦)(𝑆)𝑦𝑚𝑜𝑑𝑛 × (𝑔)−𝐸𝑚𝑜𝑑𝑛)𝑚𝑜𝑑𝑝
𝑥1.(𝑘+𝐸)
= (((𝑔)(𝑥1)−1 𝑚𝑜𝑑𝑝) × (𝑔)−𝐸) 𝑚𝑜𝑑𝑝 (3.7)
= (((𝑔)(𝑥1)−1 𝑚𝑜𝑑𝑝) × (𝑔)−𝐸) 𝑚𝑜𝑑𝑝
× (𝑔)−𝐸)𝑚𝑜𝑑𝑝
= ((𝑔)(𝑥1)−1.𝑥1.(𝑘+𝐸) = ((𝑔)(𝑘+𝐸) × (𝑔)−𝐸)𝑚𝑜𝑑𝑝 = 𝑔𝑘𝑚𝑜𝑑𝑝 = 𝑅
Từ (3.2), (3.6) và (3.7) suy ra điều phải chứng minh: 𝐸̅ = 𝐻(𝑀‖𝑅̅)𝑚𝑜𝑑𝑞 = 𝐻(𝑀‖𝑅)𝑚𝑜𝑑𝑞 = 𝐸
3.2.4. Độ an toàn của lược đồ chữ ký số
a) Tấn công khóa bí mật
Ở thuật toán mới đề xuất, khóa bí mật là tích của cặp giá trị bí mật
(𝑥1, 𝑥2), tính an toàn của thuật toán sẽ bị phá vỡ khi cặp giá trị này có thể tính
được bởi một hay các đối tượng không mong muốn. Từ (3.1) cho thấy, để tìm
được 𝑥2cần phải tính được tham số 𝜑(𝑛), nghĩa là phải giải được 𝐼𝐹𝑃(𝑛), còn
để tính được 𝑥1 cần phải giải được DLP(p,g). Chú ý rằng, để tính 𝑥1 và 𝑥2 thì kẻ
tấn công cần phải giải được (3.4). Như vậy, để tìm được cặp khóa bí mật này
81
kẻ tấn công cần phải giải được bài toán 𝐼𝐹𝑃(𝑛) và DLP(p,g). Nói cách khác, độ
an toàn về khóa của thuật toán được đảm bảo bằng độ khó của việc giải đồng
thời 2 bài toán 𝐼𝐹𝑃(𝑛) và DLP(p,g).
b) Tấn công giả mạo chữ ký
Từ điều kiện của Thuật toán TT-K-02, một cặp (𝐸, 𝑆) bất kỳ sẽ được coi
là chữ ký hợp lệ của đối tượng sở hữu các tham số công khai(𝑛, 𝑦) lên thông
điệp M nếu thỏa mãn:
(3.8) 𝐸 = 𝐻(𝑀‖((𝑦)𝑆 × (𝑔)𝐸𝑚𝑜𝑑𝑛)𝑚𝑜𝑑𝑝)
Từ (3.8) dễ thấy rằng, nếu H(.) được chọn là hàm băm có tính kháng va
chạm cao (SHA 256/512,...) thì việc tạo ngẫu nhiên được cặp (𝐸, 𝑆) thỏa mãn
điều kiện của thuật toán kiểm tra là không khả thi trong các ứng dụng thực tế.
3.2.5. Hiệu quả thực hiện
Tính hiệu quả của lược đồ chữ ký có thể đánh giá qua chi phí thực hiện
của các thuật toán ký, kiểm tra theo Bảng 3.1 sau:
Bảng 3.1. Chi phí thực hiện của các lược đồ chữ ký dựa trên DLP và IFP
Lược đồ
Texp
Tmul
Th
Tsr
Rabin - Schnorr [23] 1 2 RSA – Schnorr [23] 2 WR-Schnorr [4] 1 Lược đồ đề xuất
K KT K KT K KT K KT 0 0 0 0
1 1 2 2
1 1 1 1
1 0 0 0
1 1 1 1
1 1 1 1
3 3 2 1
Nhận xét:
- Để rút ngắn độ dài chữ ký theo phương pháp [74] thì lược đồ Rabin -
Schnorr và RSA - Schnorr cần phải thực hiện bổ sung một số phép tính lũy
thừa, nhân, nghịch đảo modulo. Vì thế, chi phí thực hiện các lược đồ này sẽ
tăng đáng kể so với lược đồ đề xuất.
𝑎
𝑎
- Để lược đồ Rabin - Schnorr và RSA - Schnorr không phải thực hiện 4
𝑞
𝑞′ = −1 và phép khai căn bậc 2 thì lược đồ WR-
lần kiểm tra = −1 hoặc
82
Schnorr khắc phục lỗi và nâng cao tính hiệu quả cho 02 lược đồ chữ ký số dựa
trên hai bài toán khó trên bằng cách tính thêm 𝑠 là phép nhân modulo.
Từ so sánh tại Bảng 3.1 cho thấy lược đồ đề xuất với thuật toán sinh chữ
ký TT-K-02 và TT-KT-02 có chi phí thực hiện thấp nhất.
3.3. Thuật toán mã hóa, giải mã - xác thực dựa trên hai bài toán khó
Thuật toán mã hóa đề xuất bao gồm thuật toán mã hóa (thuật toán TT-
MH-02) và giải mã - xác thực (thuật toán TT-GM-02) với các tham số hệ thống
được hình thành theo TT-HT và khóa hình thành theo TT-K. Thuật toán mã
hóa thực hiện đồng thời chức năng bảo mật thông tin và xác thực nguồn gốc
cũng như tính toàn vẹn của thông điệp được mã hóa.
Thuật toán mã hóa và chứng minh tính đúng đắn, độ an toàn của lược đồ
đã được NCS công bố tại công trình [CT2], [CT3] như sau:
Giả thiết người gửi/mã hóa là A, người nhận/giải mã là B có cặp khóa bí
mật/công khai tương ứng là (𝑥1𝐴, 𝑥2𝐴/𝑦𝐴) và (𝑥1𝐵, 𝑥2𝐵/𝑦𝐵), trong đó:
(𝑥1𝐴, 𝑥1𝐵) được chọn ngẫu nhiên trong khoảng (1, 𝑞); (𝑥2𝐴, 𝑦𝐴) và (𝑥2𝐵, 𝑦𝐵)
được tính theo (3.1) như sau:
𝑦𝐴 = 𝑔−𝑥1𝐴 𝑚𝑜𝑑 𝑝, 𝑥2𝐴 = (𝑦𝐴)−1 𝑚𝑜𝑑 𝜑(𝑛𝐴) (3.9)
𝑦𝐵 = 𝑔−𝑥1𝐵 𝑚𝑜𝑑 𝑝, 𝑥2𝐵 = (𝑦𝐵)−1 𝑚𝑜𝑑 𝜑(𝑛𝐵)
3.3.1. Thuật toán mã hóa TT-MH-02
Thuật toán TT-MH-02. Thuật toán mã hóa
Input: 𝑝, 𝑞, 𝑔, 𝑥1𝐴, 𝑥2𝐴, 𝑛𝐴, 𝑛𝐵, M.
Output: 𝐶, 𝐸, 𝑆.
Bước 1. Biểu diễn thông điệp cần mã hóa M thành một giá trị 𝑚 tương ứng
trong khoảng [1, 𝑝 − 1], chọn ngẫu nhiên một giá trị 𝑘 trong khoảng (1, 𝑞)
rồi tính thành phần thứ nhất của bản mã:
(3.10) 𝐶 = (𝑚 × (𝑦𝐵)𝑘 𝑚𝑜𝑑 𝑝)𝑦𝐵 𝑚𝑜𝑑 𝑛𝐵
83
(3.11) Bước 2. Tính giá trị: 𝑅 = 𝑔𝑘 𝑚𝑜𝑑 𝑝
Bước 3. Tính thành phần thứ hai của bản mã:
(3.12) 𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞
Bước 4. Tính thành phần thứ ba của bản mã:
(3.13) 𝑆 = ((𝑥1𝐴)−1 × (𝑘 + 𝐸)𝑚𝑜𝑑 𝑞)𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴
Bước 5. Gửi bản mã (𝐶, 𝐸, S) cho người nhận B.
3.3.2. Thuật toán giải mã - xác thực TT-GM-02
Thuật toán TT-GM-02. Thuật toán giải mã - xác thực
Input: 𝑝, 𝑞, 𝑔, 𝑥1𝐵, 𝑥2𝐵, 𝑛𝐴, 𝑦𝐴, 𝑛𝐵, 𝑦𝐵, (𝐶, 𝐸, 𝑆). Output: 𝑀, (𝐸, 𝑆) = 𝑇𝑟𝑢𝑒/𝐹𝑎𝑙𝑠𝑒.
Bước 1. Người nhận sử dụng khóa bí mật thứ hai để tính 𝐶 theo:
(3.14) 𝐶 = (𝐶)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐵
Bước 2. Tính giá trị:
(3.15) 𝑆 = (𝑆)𝑦𝐴 𝑚𝑜𝑑 𝑛𝐴
(3.16) và 𝑅 = ((𝑦𝐴)𝑆 × (𝑔)−𝐸) 𝑚𝑜𝑑 𝑝
Bước 3. Từ 𝐶, 𝑅giải mã thông điệp nhận được:
(3.17) 𝑚 = 𝐶 × (𝑅)−𝑥1𝐵 𝑚𝑜𝑑 𝑝
Bước 4. Chuyển giá trị 𝑚 thành thông điệp 𝑀và tính:
(3.18) 𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞
Bước 5. Nếu 𝐸 = 𝐸 thì 𝑀 = 𝑀 và khẳng định người gửi A là chính xác.
3.3.3. Tính đúng đắn của thuật toán TT-MH-02; TT-GM-02
𝑝−1 𝑞 𝑚𝑜𝑑 𝑝,
Điều cần chứng minh là: Cho 𝑝, 𝑞, 𝑝1, 𝑞1là các số nguyên tố thỏa mãn:
𝑞|(𝑝 − 1), 𝑛 = 𝑝1 × 𝑞1, 𝑛 > 𝑝, 1 < 𝛼 < 𝑝, 𝑔 = 𝛼 1 < 𝑥1A, 𝑥1B < 𝑞, 𝑦𝐴 = 𝑔𝑥1𝐴 𝑚𝑜𝑑 𝑝, 𝑦𝐵 = 𝑔𝑥1𝐵 𝑚𝑜𝑑 𝑝,
84
𝑥2𝐴 = (𝑦𝐴)−1 𝑚𝑜𝑑 𝜑(𝑛𝐴),1 < 𝑘 < 𝑞, 𝑥2𝐵 = (𝑦𝐵)−1 𝑚𝑜𝑑 𝜑(𝑛𝐵), 0 ≤ 𝑀 ≤ 𝑝 − 1, 𝑅 = 𝑔𝑘 𝑚𝑜𝑑 𝑝, 𝐻: {0,1}∗ → 𝑍ℎ với |q| ≤ |h| < |𝑝|, 𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞, 𝑆 = 𝑥2𝐴 × ((𝑘 + 𝑥1𝐴 × 𝐸)𝑚𝑜𝑑 𝑞) 𝑚𝑜𝑑 𝜑(𝑛𝐴)
Nếu: 𝐶 = 𝐶𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐵, 𝑆 = (𝑆)𝑦𝐴 𝑚𝑜𝑑 𝑛𝐴, 𝑅 = ((𝑦𝐴)𝑆 × (𝑔)−𝐸) 𝑚𝑜𝑑 𝑝,
𝑀 = 𝐶 × (𝑅)−𝑥1𝐵 𝑚𝑜𝑑 𝑝, 𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞 thì 𝑀 = 𝑀 và 𝐸 = 𝐸
Chứng minh:
(3.19)
Từ (3.9), (3.10) và (3.14) ta có: 𝐶 = 𝐶𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐵 = = ((𝑀 × (𝑦𝐵)𝑘 𝑚𝑜𝑑 𝑝)𝑦𝐵𝑚𝑜𝑑 𝑛𝐵)𝑥2𝐵𝑚𝑜𝑑 𝑛𝐵 = (𝑀 × (𝑔𝑥1𝐵 𝑚𝑜𝑑 𝑝)𝑘𝑚𝑜𝑑𝑝)𝑦𝐵.𝑥2𝐵𝑚𝑜𝑑 𝑛𝐵 = (𝑀 × 𝑔𝑥1𝐵𝑚𝑜𝑑𝑝)𝑘𝑚𝑜𝑑𝑝 = 𝑀 × 𝑔𝑘.𝑥1𝐵 𝑚𝑜𝑑 𝑝
(3.20)
Từ (3.9), (3.13) và (3.15) ta lại có: 𝑆 = (𝑆)𝑦𝐴 𝑚𝑜𝑑 𝑛𝐴 = = (((𝑥1𝐴)−1 × (𝑘 + 𝐸)𝑚𝑜𝑑 𝑞)))𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴)𝑦𝐴𝑚𝑜𝑑 𝑛𝐴 = ((𝑥1𝐴)−1 × (𝑘 + 𝐸)𝑚𝑜𝑑 𝑞))𝑥2𝐴.𝑦𝐴 𝑚𝑜𝑑 𝑛𝐴 = (𝑥1𝐴)−1 × (𝑘 + 𝐸)𝑚𝑜𝑑 𝑞
Thay (3.9) và (3.20) vào (3.16) ta được: 𝑅 = ((𝑦𝐴)𝑆 × (𝑔)−𝐸) 𝑚𝑜𝑑 𝑝
= (((𝑔𝑥1𝐴 𝑚𝑜𝑑 𝑝)(𝑥1𝐴)−1.(𝑘+𝐸)) × (𝑔)−𝐸) 𝑚𝑜𝑑 𝑝
(3.21) = (𝑔𝑥1𝐴.(𝑥1𝐴)−1.(𝑘+𝐸) × 𝑔−𝐸)𝑚𝑜𝑑 𝑝 = (𝑔𝑘 × 𝑔𝐸 × 𝑔−𝐸)𝑚𝑜𝑑 𝑝
= 𝑔𝑘𝑚𝑜𝑑 𝑝 = 𝑅
Từ (3.9), (3.19) và (3.21) ta suy ra điều cần chứng minh thứ nhất:
𝑀 = 𝐶 × (𝑅)−𝑥1𝐵 𝑚𝑜𝑑 𝑝 = 𝑀 × 𝑔𝑥1𝐵.𝑘 × (𝑔𝑘 𝑚𝑜𝑑 𝑝)−𝑥1𝐵 𝑚𝑜𝑑 𝑝
(3.22) = (𝑀 × 𝑔𝑥1𝐵.𝑘 × 𝑔−𝑥1𝐵.𝑘) 𝑚𝑜𝑑 𝑝 = 𝑀
Từ (3.17), (3.18), (3.21) và (3.22) ta suy ra điều cần chứng minh thứ hai:
𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞 = 𝐸
3.3.4. Độ an toàn của thuật toán TT-MH-02; TT-GM-02
Thuật toán mã hóa được đề xuất ở đây thực chất là sự kết hợp giữa thuật
85
toán mật mã (tính 𝐸) với thuật toán chữ ký số (tính 𝑆), nhằm cung cấp tính năng
bảo mật nội dung của thông điệp và xác thực nguồn gốc cùng với tính toàn vẹn
của thông điệp được thực hiện một cách đồng thời. Nhờ đó, thuật toán này cho
phép chống lại các dạng tấn công giả mạo rất hiệu quả. Có một điểm cần lưu ý
là dạng tấn công giả mạo ở đây cần được hiểu theo nghĩa một kẻ thứ 3 (T) muốn
mạo danh người gửi để gửi cho người nhận thông điệp 𝑀 hoặc là T gửi một
thông điệp không phải 𝑀 cho B trong khi B hiểu rằng A đã gửi thông điệp 𝑀
cho mình. Từ thuật toán kiểm tra cho thấy, điều kiện để B nhận biết chính xác
thông điệp 𝑀 được A gửi đến khi nhận được 1 cặp (𝐶, 𝐸, 𝑆) là:
𝐸 = 𝐻 ((((𝐶)𝑥2𝐵𝑚𝑜𝑑𝑛𝐵) × ((𝑦𝐴)(𝑆)𝑦𝐴 ×
−𝑥1𝐵 𝑚𝑜𝑑𝑝)) 𝑚𝑜𝑑𝑝 ‖((((𝑦𝐴)(𝑆)𝑦𝐴 × (𝑔)−𝐸)) 𝑚𝑜𝑑𝑝) 𝑚𝑜𝑑 𝑞 (3.23)
(𝑔)−𝐸)
Kẻ tấn công giả mạo có thể thực hiện được (3.23) nếu thực hiện được
các bước tính toán sau:
𝑦𝐵𝑚𝑜𝑑 𝑛𝐵;
𝑚𝑜𝑑 𝑝) - Chọn giá trị 𝑘∗ và tính: 𝐶 = (𝑚 × (𝑦𝐵)𝑘∗
𝑅∗ = 𝑔𝑘∗
≡ 𝑅∗ × 𝑔𝐸 𝑚𝑜𝑑 𝑝
𝑚𝑜𝑑 𝑝 và: 𝐸 = 𝐻(𝑀‖𝑅∗) 𝑚𝑜𝑑 𝑞 - Giải bài toán DLP(p,g) để tìm 𝑆∗ từ: (𝑦𝐴)𝑆∗ - Giải bài toán RSAP(n,e) hoặc 𝐼𝐹𝑃(𝑛) để tìm 𝑆 từ: 𝑆∗ = (𝑆)𝑦𝐴 𝑚𝑜𝑑 𝑛𝐴
Tuy nhiên, để thực hiện được các bước tính toán như trên, kẻ tấn công
cũng buộc phải giải được đồng thời 2 bài toán toán DLP(p,g)và RSAP(n,e) hoặc
DLP(p,g)và 𝐼𝐹𝑃(𝑛). Như vậy, độ an toàn của thuật toán trước kiểu tấn công giả
mạo chữ ký cũng được đảm bảo bằng độ khó của việc giải đồng thời 2 bài toán.
Bên cạnh đó nếu 𝐻(. ) được chọn là hàm băm có tính kháng va chạm cao
(SHA 256/512,...) thì việc tạo ngẫu nhiên được cặp (C,E,S) thỏa mãn điều kiện
của thuật toán kiểm tra là không khả thi trong các ứng dụng thực tế.
86
3.4. Mã hóa có thể chối từ
Trong hệ mã khóa công khai, phương pháp truyền thống là ký lên thông
điệp rồi mã hóa nó và gửi tới cho người nhận. Người nhận sẽ giải mã thông
điệp rồi xác thực nó. Đây là phương pháp ký rồi mã hóa (signature-then-
encryption). Nhược điểm lớn nhất của phương pháp này là việc tạo chữ ký và
mã hóa làm tăng độ phức tạp của giao thức, và làm tăng kích thước của thông
điệp ban đầu. Từ đó, nhiều phương pháp được đưa ra để kết hợp các bước này
vào một phép tính duy nhất. Phương pháp này gọi là ký và mã hóa đồng thời
(signcryption). Một giao thức ký và mã hóa đồng thời cung cấp tính bảo mật
của cả mã hóa và chữ ký số: bảo mật, toàn vẹn, không thể chỉnh sửa và chống
chối từ.
Tuy nhiên, trong trường hợp tấn công cưỡng bức chủ động, mật mã dạng
này không đáp ứng được bảo mật thông tin. Lý do, khi kẻ tấn công thu được
bản mã của một thông điệp bí mật mà A muốn gửi cho B. Kẻ tấn công có thể
ép A hoặc B phải tiết lộ bản rõ của thông điệp tương ứng. Để làm điều này, A
phải chứng minh được rằng bản mã đó được xây dựng từ bản rõ này bằng cách
tiết lộ các lựa chọn ngẫu nhiên trong quá trình mã hóa, hoặc B phải chứng minh
rằng bản mã này có thể được giải mã bằng cách đưa ra khóa bí mật của mình.
Tất nhiên, những kẻ tấn công dạng này thường chiếm quyền của hệ thống.
Mã hóa có thể chối từ [71] giải quyết theo phương pháp: người bị tấn
công có thể cung cấp một khóa giả có thể sử dụng để giải mã bản mã thành một
bản rõ (có nghĩa thay thế). Kẻ tấn công sẽ không thể chứng minh được rằng
đây chỉ là một bản rõ giả.
Mã hóa có thể chối từ được triển khai trên cả hai hệ: hệ mật khóa bí mật
và hệ mật khóa công khai [110].
Mã hóa có thể chối từ có thể được phân loại theo phía bị tấn công, hoặc
hệ mã sử dụng [27], [28]. Phân loại theo hệ mã sử dụng, có thể phân thành hai
87
loại:
- Phân loại theo phía bị tấn công, được chia thành ba loại:
+ Mã hóa có thể chối từ phía người gửi: chống lại những cưỡng bức tới
phía người gửi “ép” đưa ra thông tin bí mật. Ở đó, tồn tại một thủ tục 𝑂𝑝𝑒𝑛𝐴
với đầu vào là khóa công khai 𝑝𝑘, thành phần ngẫu nhiên 𝑟, bản rõ thông điệp
𝑚, bản rõ thông điệp giả 𝑚’, và đầu ra là một thành phần ngẫu nhiên giả 𝑟’.
- Mã hóa có thể chối từ phía người nhận: chống lại những cưỡng bức tới
phía người nhận “ép” đưa ra thông tin bí mật. Ở đó, tồn tại một thủ tục 𝑂𝑝𝑒𝑛𝐵
với đầu vào là khóa bí mật 𝑠𝑘, bản mã 𝑐, một thông điệp giả 𝑚’ và đầu ra là
một khóa bí mật giả 𝑠𝑘’.
- Mã hóa có thể chối từ cả hai phía: chống lại những cưỡng bức tới phía
người gửi lẫn người nhận nhằm đưa ra thông tin bí mật. Ở đó, tồn tại hai thủ
tục 𝑂𝑝𝑒𝑛𝐴 và 𝑂𝑝𝑒𝑛𝐵.
Như vậy, phương pháp mã hóa chối từ có khả năng chống lại tấn công
cưỡng bức chủ động. Tuy nhiên, nhược điểm của nó là không cung cấp khả
năng xác thực người gửi. Để khắc phục điều này thường sẽ sử dụng phương
pháp SignCryption nhằm đáp ứng đồng thời cả mã hóa và xác thực, điển hình
là phương pháp ElGamal - SignCryption [17] đảm bảo tính đúng đắn trong quá
trính mã hóa và giải mã, tính chối đồng thời bên gửi và bên nhận.
Bản chất phương pháp ElGamal - SignCryption là sự kết hợp ký và mã
hóa đồng thời với mã hóa chối từ sử dụng khóa công khai, nhằm đảm bảo tính
bí mật, khả năng xác thực và chống tấn công cưỡng bức chủ động. Và luôn phải
tuân thủ nguyên tắc sau:
- Người gửi A sẽ gửi thông điệp tới người B chỉ khi đã xác thực.
- Tương tự, người nhận B sẽ giải mã thông điệp chỉ khi xác thực được
người gửi A.
Cũng dựa trên nguyên tắc và phương pháp ElGamal - SignCryption, luận
88
án đã trình bày phương pháp mã hai lần (thay phương pháp mã rồi ký hoặc
mã/ký đồng thời) nhằm mục đích mã hóa có xác thực người gửi và giải mã có
xác thực người mã. Có thể cụ thể như sau:
Tại Bước 4 của thuật toán mã hóa TT-MH-02. Khi tính thành phần thứ ba của bản mã: 𝑆 = ((𝑥1𝐴)−1 × (𝑘 + 𝐸)𝑚𝑜𝑑 𝑞)𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴. Đây chính là mã lần thứ hai trên bản mã lần thứ nhất tính 𝐸 tại Bước 3: 𝐸 = 𝐻(𝑀‖𝑅) 𝑚𝑜𝑑 𝑞.
Như vậy, ở đây luận án không sử dụng chữ ký của người mã. Và cũng lý
do này, người mã phải gửi người giải mã bản mã gồm 3 thành phần (𝐶, 𝐸, S)
để giải mã cũng như xác thực.
3.5. Xây dựng giao thức trao đổi khóa
NCS đề xuất xây dựng giao thức trao đổi khóa an toàn cho các hệ mật
khóa đối xứng dựa trên tính khó của việc giải đồng thời 2 bài toán logarit rời
rạc và phân tích số/khai căn. Khác với các giao thức trao đổi khóa an toàn được
nêu tại Chương 1 của luận án, giao thức mới đề xuất ở đây sử dụng mật mã
khóa công khai mà không phải chữ ký số để cung cấp tính năng xác thực khóa
bí mật chia sẻ, từ đó có thể chống lại các dạng tấn công giả mạo đã biết trong
thực tế. Giao thức trao đổi khóa cho các hệ mật khóa đối xứng này được thiết
kế để các thực thể cuối (người sử dụng) trong cùng một hệ thống có thể sử dụng
chung một bộ tham số hệ thống (tham số miền) do nhà cung cấp dịch vụ chứng
thực số tạo ra.
Giao thức trao đổi khóa đề xuất (ký hiệu: TT-TDK-02) cũng như chứng
minh tính đúng đắn, độ an toàn của thuật toán đã được NCS công bố tại công
trình [CT3], [CT5] như sau:
Giả thiết rằng 2 đối tượng tham gia truyền thông ở đây là A và B sử dụng
một thuật toán mật mã khóa đối xứng (DES, AES,...) để mã hóa dữ liệu cần
trao đổi với nhau, khi đó giao thức trao đổi khóa đề xuất được sử dụng để thiết
lập một khóa bí mật chung/chia sẻ giữa A và B. Các tham số hệ thống cũng
89
được hình thành theo TT-HT và khóa hình thành theo TT-K.
Giả thiết A, B có cặp khóa bí mật/công khai tương ứng là (𝑥1𝐴, 𝑥2𝐴/𝑦𝐴)
và (𝑥1𝐵, 𝑥2𝐵/𝑦𝐵) trong đó (𝑥1𝐴, 𝑥1𝐵) được chọn ngẫu nhiên trong khoảng
(1, 𝑞), còn (𝑥2𝐴, 𝑦𝐴) và (𝑥2𝐴, 𝑦𝐴) được tính theo (3.9).
3.5.1. Giao thức trao đổi khóa TT-TDK-02
Input: p, q , g, 𝑥1𝐴, 𝑥2𝐴, 𝑥1𝐵, 𝑥2𝐵, 𝑛𝐴, 𝑦𝐴, 𝑛𝐵, 𝑦𝐵.
Output: 𝐾𝐴𝐵, 𝐾𝐵𝐴.
Bảng 3.2 được sử dụng để mô tả trao đổi khóa bí mật chung/chia sẻ giữa
A và B như sau:
Bảng 3.2. Giao thức trao đổi khóa TT-TDK-02
A
B
Bước 1
- Chọn ngẫu nhiên một giá trị 𝑘𝐴:
- Chọn ngẫu nhiên một giá trị 𝑘𝐵:
0 < 𝑘𝐵 < 𝑞 Tính: 𝑇𝐵 = 𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝 (3.25) 𝑦𝐴 𝑚𝑜𝑑 𝑛𝐴 (3.29) 𝑅𝐵 = 𝑇𝐵 - Tính thành phần 𝑆𝐵 theo: 𝑆𝐵 = (𝑦𝐴)𝑥1𝐵 𝑚𝑜𝑑 𝑝 (3.30) - Tính thành phần 𝐸𝐵1 theo: 𝐸𝐵1 = 𝐻(𝑅𝐵‖𝑆𝐵‖𝑇𝐵) (3.31)
0 < 𝑘𝐴 < 𝑞 Tính: 𝑇𝐴 = 𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝 (3.24) 𝑦𝐵 𝑚𝑜𝑑 𝑛𝐵 (3.26) 𝑅𝐴 = 𝑇𝐴 - Tính thành phần 𝑆𝐴 theo: 𝑆𝐴 = (𝑦𝐵)𝑥1𝐴 𝑚𝑜𝑑 𝑝 (3.27) - Tính thành phần 𝐸𝐴1 theo: 𝐸𝐴1 = 𝐻(𝑅𝐴‖𝑆𝐴‖𝑇𝐴) (3.28) 𝑅𝐴, 𝐸𝐴1
𝑅𝐵, 𝐸𝐵1
Bước 2
- Tính 𝑇′𝐴 = (𝑅𝐵)𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴 - Tính 𝐸̅𝐵1: 𝐸̅𝐵1=𝐻(𝑅𝐵‖𝑆𝐴‖𝑇′𝐴) (3.32) - Kiểm tra nếu 𝐸̅𝐵1=𝐸𝐵1 thì thực hiện tiếp, nếu 𝐸̅𝐵1 ≠ 𝐸𝐵1 thì hủy giao thức.
- Tính 𝑇′𝐵 = (𝑅𝐴)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐴 - Tính 𝐸̅𝐴1: 𝐸̅𝐴1=𝐻(𝑅𝐴‖𝑆𝐵‖𝑇′𝐵) (3.33) - Kiểm tra nếu 𝐸̅𝐴1=𝐸𝐴1 thì thực hiện tiếp, nếu 𝐸̅𝐴1 ≠ 𝐸𝐴1 thì hủy giao thức.
Bước 3
- Tính khóa bí mật chia sẻ với B theo: 𝐾𝐴𝐵 = (𝑇′𝐴)𝑘𝐴 𝑚𝑜𝑑 𝑝 (3.34) - Tính thành phần 𝐸𝐴2 theo: 𝐸𝐴2 = 𝐻(𝐾𝐴𝐵‖𝑆𝐴‖𝑇𝐴) (3.36)
- Tính khóa bí mật chia sẻ với A theo: 𝐾𝐵𝐴 = (𝑇′𝐵)𝑘𝐵 𝑚𝑜𝑑 𝑝 (3.35) - Tính thành phần 𝐸𝐵2 theo: 𝐸𝐵2 = 𝐻(𝐾𝐵𝐴‖𝑆𝐵‖𝑇𝐵) (3.37)
𝐸𝐴2
𝐸𝐵2
Bước 4
90
A
B
- Tính 𝐸̅𝐵2: 𝐸̅𝐵2=𝐻(𝐾𝐴𝐵‖𝑆𝐴‖𝑇′𝐴) (3.38) Nếu 𝐸̅𝐵2 ≠ 𝐸𝐵2 thì khẳng định đối tượng tham gia trao đổi khóa là giả mạo và hủy giao thức.
- Tính 𝐸̅𝐴2: 𝐸̅𝐴2=𝐻(𝐾𝐵𝐴‖𝑆𝐵‖𝑇′𝐵) (3.39) Nếu 𝐸̅𝐴2 ≠ 𝐸𝐴2 thì khẳng định đối tượng tham gia trao đổi khóa là giả mạo và hủy khóa giao thức.
Bước 5
- Kiểm tra nếu 𝐸̅𝐵2=𝐸𝐵2 thì A khẳng định đối tượng tham gia trao đổi khóa là B và B đã thiết lập được khóa bí mật chia sẻ với A, sau đó A có thể dùng khóa này để trao đổi thông tin mật với B bằng một thuật toán mật mã khóa đối xứng. Giao thức thành công với khóa chung là 𝐾𝐴𝐵
- Kiểm tra nếu 𝐸̅𝐴2=𝐸𝐴2 thì B khẳng định đối tượng tham gia trao đổi khóa là A và A đã thiết lập được khóa bí mật chia sẻ với B, sau đó B có thể dùng khóa này để trao đổi thông tin mật với A bằng một thuật toán mật mã khóa đối xứng. Giao thức thành công với khóa chung là 𝐾𝐵𝐴
Nhận xét về giao thức:
Thứ nhất, 𝑇𝐴 và 𝑇𝐵 chính là thông tin thỏa thuận khóa với khóa thỏa
thuận được tính giống hệt như giao thức Diffie-Helman. Hai thông tin trên
không truyền công khai cho nhau mà thông qua bản mã theo hệ mật RSA của
chúng là 𝑅𝐴 và 𝑅𝐵.
Thứ hai, 𝑆𝐴 = 𝑆𝐵 = 𝑔𝑥𝐴.𝑥𝐵 𝑚𝑜𝑑 𝑝 về bản chất chính là khóa cặp hệ thống của A và B cho nên nếu tính sẵn các khóa này thì không có tác dụng đối
với giao thức này.
𝑦𝐵 𝑚𝑜𝑑 𝑛𝐵, 𝑇′𝐵 = (𝑅𝐴)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐴 với chú ý 𝑇𝐴 < 𝑝 < 𝑛𝐵 nên 𝑇′𝐵 = 𝑇𝐴. Tương tự ta cũng có 𝑇′𝐴 = 𝑇𝐵. Như vậy cả A lẫn B và
Thứ ba, từ 𝑅𝐴 = 𝑇𝐴
chỉ có họ mới có thể tính được thông tin thỏa thuận khóa 𝑇𝐵 và 𝑇𝐴.
3.5.2. Tính đúng đắn của giao thức TT-TDK-02
𝑝−1 𝑞 𝑚𝑜𝑑 𝑝,
Điều cần chứng minh là: Cho p, q, 𝑝1, 𝑞1 là các số nguyên tố thỏa mãn:
𝑞|(𝑝 − 1), 𝑛 = 𝑝1 × 𝑞1, 𝑛 > 𝑝, 1 < 𝛼 < 𝑝, 𝑔 = 𝛼 1 < 𝑥1𝐴, 𝑥1𝐵 < 𝑞, 𝑦𝐴 = 𝑔𝑥1𝐴 𝑚𝑜𝑑 𝑝, 𝑦𝐵 = 𝑔𝑥1𝐵 𝑚𝑜𝑑 𝑝, 1 < 𝑘𝐴 < 𝑞, 𝑥2𝐴 = (𝑦𝐴)−1 𝑚𝑜𝑑 𝜑(𝑛𝐴), 𝑥2𝐵 = (𝑦𝐵)−1 𝑚𝑜𝑑 𝜑(𝑛𝐵), 𝑅𝐴 = (𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝)𝑦𝐵 𝑚𝑜𝑑 𝑛𝐵, 1 < 𝑘𝐵 < 𝑞,
91
𝑅𝐵 = (𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝)𝑦𝐴 𝑚𝑜𝑑 𝑛𝐴, 𝑆𝐴 = (𝑦𝐵)𝑥1𝐴 𝑚𝑜𝑑 𝑝, 𝐸𝐴1 = 𝐻(𝑅𝐴‖𝑆𝐴‖𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝), 𝑆𝐵 = (𝑦𝐴)𝑥1𝐵 𝑚𝑜𝑑 𝑝,
𝐸𝐵1 = 𝐻(𝑅𝐵‖𝑆𝐵‖𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝), 𝐾𝐴𝐵 = ((𝑅𝐵)𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴 )𝑘𝐴 𝑚𝑜𝑑 𝑝,
𝐾𝐵𝐴 = ((𝑅𝐴)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐵 )𝑘𝐵 𝑚𝑜𝑑 𝑝, 𝐸𝐴2 = 𝐻(𝐾𝐴𝐵‖𝑆𝐴‖𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝),
𝐸𝐵2 = 𝐻(𝐾𝐵𝐴‖𝑆𝐵‖𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝) Nếu: 𝐸̅𝐴1= 𝐻(𝑅𝐴‖𝑆𝐵‖(𝑅𝐴)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐵), 𝐸̅𝐵1= 𝐻(𝑅𝐵‖𝑆𝐴‖(𝑅𝐵)𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴), 𝐸̅𝐴2= 𝐻(𝐾𝐵𝐴‖𝑆𝐵‖(𝑅𝐴)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐵), 𝐸̅𝐵2= 𝐻(𝐾𝐴𝐵‖𝑆𝐴‖(𝑅𝐵)𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴) thì:
𝐾𝐴𝐵=𝐾𝐵𝐴, 𝐸̅𝐴1=𝐸𝐴1, 𝐸̅𝐵1=𝐸𝐵1, 𝐸̅𝐴2=𝐸𝐴2, 𝐸̅𝐵2=𝐸𝐵2
Chứng minh:
(3.40) Từ (3.29), (3.34) ta có: 𝐾𝐴𝐵 = ((𝑅𝐵)𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴 )𝑘𝐴 𝑚𝑜𝑑 𝑝 = ((𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝)𝑦𝐵.𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐴)𝑘𝐴 𝑚𝑜𝑑 𝑝 =(𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝)𝑘𝐴 𝑚𝑜𝑑 𝑝 =𝑔𝑘𝐵.𝑘𝐴 𝑚𝑜𝑑 𝑝
(3.41) Từ (3.26), (3.35) ta có: 𝐾𝐵𝐴 = ((𝑅𝐴)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐵 )𝑘𝐵 𝑚𝑜𝑑 𝑝 = ((𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝)𝑦𝐵.𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐵)𝑘𝐵 𝑚𝑜𝑑 𝑝 =(𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝)𝑘𝐵 𝑚𝑜𝑑 𝑝 =𝑔𝑘𝐴.𝑘𝐵 𝑚𝑜𝑑 𝑝
(3.42) Từ (3.40), (3.41) ta có: 𝐾𝐴𝐵= 𝐾𝐵𝐴
Từ (3.27) và (3.25) ta có: 𝑆𝐴 = (𝑦𝐵)𝑥𝐴 𝑚𝑜𝑑 𝑝 = (𝑔𝑥𝐵 𝑚𝑜𝑑 𝑝)𝑥𝐴 𝑚𝑜𝑑 𝑝 =𝑔𝑥𝐴.𝑥𝐵 𝑚𝑜𝑑 𝑝 (3.43) Từ (3.30) và (3.24) ta có: 𝑆𝐵 = (𝑦𝐴)𝑥𝐵 𝑚𝑜𝑑 𝑝 = (𝑔𝑥𝐴 𝑚𝑜𝑑 𝑝)𝑥𝐵 𝑚𝑜𝑑 𝑝= 𝑔𝑥𝐴.𝑥𝐵 𝑚𝑜𝑑 𝑝 (3.44) (3.45) Từ (3.43) và (3.44) ta có: 𝑆𝐴= 𝑆𝐵
Từ (3.33) và (3.45) suy ra: 𝐸̅𝐴1= 𝐻(𝑅𝐴‖𝑆𝐵‖(𝑅𝐴)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐵) = 𝐻(𝑅𝐴‖𝑆𝐴‖𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝)= 𝐸𝐴1
Từ (3.32) và (3.45) suy ra: 𝐸̅𝐵1= 𝐻(𝑅𝐵‖𝑆𝐴‖(𝑅𝐵)𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴) = 𝐻(𝑅𝐵‖𝑆𝐵‖𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝)= 𝐸𝐵1
Từ (3.39), (3.42), (3.33) và (3.45) suy ra:
92
𝐸̅𝐴2= 𝐻(𝐾𝐵𝐴‖𝑆𝐵‖(𝑅𝐴)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐵) = 𝐻(𝐾𝐴𝐵‖𝑆𝐴‖𝑔𝑘𝐴 𝑚𝑜𝑑 𝑝) = 𝐸𝐴2
Từ (3.38), (3.42), (3.32) và (3.45) suy ra: 𝐸̅𝐵2= 𝐻(𝐾𝐴𝐵‖𝑆𝐴‖(𝑅𝐵)𝑥2𝐴 𝑚𝑜𝑑 𝑛𝐴) = 𝐻(𝐾𝐵𝐴‖𝑆𝐵‖𝑔𝑘𝐵 𝑚𝑜𝑑 𝑝) = 𝐸𝐵2
3.5.3. Độ an toàn của giao thức TT-TDK-02
Giao thức TT-TDK-02 được đề xuất bảo đảm các tính chất an toàn của
một giao thức trao đổi khóa:
- Xác thực thực thể (entity authentication): ở giao thức này việc kiểm tra điều kiện𝐸̅𝐴1= 𝐸𝐴1và 𝐸̅𝐵1= 𝐸𝐵1 cho phép các đối tượng tham gia trao đổi khóa hoàn toàn có thể xác thực được danh tính của nhau.
- Xác thực khóa hiện (explicit key authentication): bằng việc kiểm tra điều kiện 𝐸̅𝐵2= 𝐸𝐵2, A hoàn toàn có thể khẳng định B đã tạo được khóa bí mật chia sẻ với mình và B cũng có thể khẳng định được điều tương tự như thế với A khi điều kiện: 𝐸̅𝐴2= 𝐸𝐴2 thỏa mãn.
- Tính an toàn khóa đã biết (known - key security): việc biết một hoặc
một số khóa chia sẻ giữa A và B cũng không cho phép một đối tượng thứ 3 nào
đó có thể tính được các khóa khác cũng được thiết lập bởi A và B.
- Tính bí mật về phía trước (forward secrecy): việc tính các khóa bí mật
chia sẻ đã được thiết lập trước đó bởi A và B là không thể thực hiện được, dù
các khóa bí mật của A và B (𝑥1𝐴, 𝑥2𝐴, 𝑥1𝐵, 𝑥2𝐵) bị lộ.
- Tính kháng tấn công UKS: Tấn công được UKS thì kẻ tấn công 𝐴̂ phải tính được 𝐸𝐴1 = 𝐻(𝑅𝐴‖𝑆𝐴‖𝑇𝐴) và 𝐸̅𝐴1=𝐻(𝑅𝐴‖𝑆𝐵‖𝑇′𝐵) để có được 𝐸̅𝐴1=𝐸𝐴1 vì nếu 𝐸̅𝐴1≠𝐸𝐴1 thì giao thức bị hủy bỏ. Nhưng để có được 𝐸𝐴1 thì 𝐴̂ cần phải giải được 𝑥2𝐴 = (𝑦𝐴)−1 𝑚𝑜𝑑 𝜑(𝑛𝐴) kể cả khi biết 𝑥1𝐴rồi tính 𝑆𝐴và bài toán khai căn để tìm: 𝑔𝑘𝐴 = 𝑅𝑆𝐴𝑃(𝑛𝐵,𝑦𝐵)(𝑅𝐴) hoặc bài toán phân tích số để tìm khóa bí mật 𝑥2𝐵 rồi tính: 𝑔𝑘𝐴𝑚𝑜𝑑𝑝 = (𝑅𝐴)𝑥2𝐵𝑚𝑜𝑑𝑛𝐵 nhằm xác định 𝑇′𝐵 = (𝑅𝐴)𝑥2𝐵 𝑚𝑜𝑑 𝑛𝐴.
93
Như vậy, để có thể có được khóa bí mật chia sẻ với đối tượng còn lại thì 𝐴̂ cần
phải giải được đồng thời 2 bài toán: DLP(p,g)và𝐼𝐹𝑃(𝑛) hoặc DLP(p,g) và
RSAP(n,e).
Tiếp theo bước này thì giao thức thực hiện kiểm tra (bước 4) khóa bí mật
tra điều kiện 𝐸𝐴2 = 𝐻(𝐾𝐴𝐵‖𝑆𝐴‖𝑇𝐴) và chia sẻ bằng cách kiểm 𝐸̅𝐴2=𝐻(𝐾𝐵𝐴‖𝑆𝐵‖𝑇′𝐵) nếu 𝐸̅𝐴2=𝐸𝐴2 thì xác định được khóa bí mật chia sẻ, 𝐸̅𝐴2≠𝐸𝐴2 thì hủy. Đây chính là mã lần thứ 2 hay định danh người gửi và người nhận được xác thực trong quá trình trao đổi khóa - phương án được sử dụng
nhiều nhất để chống lại các cuộc tấn công UKS.
- Tính kháng tấn công KCI: Ở đây, kẻ tấn công 𝐵̂ cần khả năng giả mạo danh B để trao đổi giá trị duy nhất 𝑆𝐵̂ = (𝑦𝐴)𝑥1𝐵 𝑚𝑜𝑑 𝑝 mới của A (do 𝐵̂mạo danh B để trao đổi với A trong phiên này, nên B chưa bao giờ tính được giá trị
như vậy). Tuy nhiên, theo điều kiện của mệnh đề điều này là bất khả thi đối với kẻ tấn công vì bằng cách kiểm tra điều kiện 𝐸̅𝐵1= 𝐸𝐵1 kể cả khi kẻ tấn công biết được khóa phiên, vì nếu 𝐸̅𝐵1 ≠ 𝐸𝐵1 thì 𝑆𝐵̂ ≠ 𝑆𝐵và A khẳng định đối tượng tham gia trao đổi khóa là giả mạo và hủy khóa đã được tạo ra. Do vậy, khẳng
định giao thức cung cấp tính kháng tấn công KCI (Key Compromise
Impersonation - mạo danh thỏa hiệp khóa).
Các tính chất an toàn nói trên của thuật toán thực chất được đảm bảo bởi
mức độ an toàn của nó trước các dạng tấn công:
- Tấn công khóa bí mật chia sẻ:
Để tính được khóa 𝐾𝐴𝐵, từ (3.34) cho thấy kẻ tấn công cần phải tính được
𝑥2𝐴 và 𝑘𝐴. Để tính 𝑥2𝐴 cần phải giải được 𝐼𝐹𝑃(𝑛), còn để tính 𝑘𝐴 thì trước tiên cần phải giải được bài toán phân tích số 𝐼𝐹𝑃(𝑛)rồi tính: 𝑋 = (𝑅𝐵)𝑥2𝐴𝑚𝑜𝑑𝑛𝐴
hoặc phải giải được bài toán khai căn RSAP(n,e)để tìm: 𝑋 = 𝑅𝑆𝐴𝑃(𝑛𝐴,𝑦𝐴)(𝑅𝐵). Sau đó phải giải tiếp bài toán logarit rời rạc DLP(p,g) để tìm 𝑘𝐴: 𝑘𝐴 =
94
𝐷𝐿𝑃(𝑝,𝑞)(𝑅𝐴). Việc tính 𝐾𝐵𝐴 từ (3.35) cũng phải được thực hiện các bước tương
tự như thế. Như vậy, độ an toàn của thuật toán trước dạng tấn công khóa bí mật
chia sẻ luôn được đảm bảo bằng tính khó của việc giải đồng thời 2 bài toán:
DLP(p,g)và𝐼𝐹𝑃(𝑛); DLP(p,g) và RSAP(n,e).
- Tấn công giả mạo:
Một kẻ giả mạo T muốn mạo danh A để tạo khóa bí mật chia sẻ với B
hoặc mạo danh B để chia sẻ khóa bí mật với A thì cần phải tính được: 𝐸𝐴1, 𝐸𝐵1,
𝐸𝐴2, 𝐸𝐵2. Tuy nhiên, từ (3.28) cho thấy để tính được 𝐸𝐴1thì kẻ giả mạo cần
phải giải được bài toán loagrit rời rạc: 𝑥1𝐴 = 𝐷𝐿𝑃(𝑝,𝑞)(𝑦𝐴) rồi tính 𝑆𝐴và bài toán khai căn để tìm: 𝑔𝑘𝐴 = 𝑅𝑆𝐴𝑃(𝑛𝐵,𝑦𝐵)(𝑅𝐴) hoặc bài toán phân tích số để tìm khóa bí mật 𝑥2𝐵 rồi tính: 𝑔𝑘𝐴𝑚𝑜𝑑𝑝 = (𝑅𝐴)𝑥2𝐵𝑚𝑜𝑑𝑛𝐵. Để tính 𝐸𝐵1 từ (3.31) hay 𝐸𝐴2, 𝐸𝐵2 từ (3.36) và (3.37) thì kẻ tấn công cũng phải thực hiện các bước
tính toán tương tự. Như vậy, để có thể giả mạo thành công A hoặc B nhằm tạo
khóa bí mật chia sẻ với đối tượng còn lại thì kẻ tấn công cần phải giải được
đồng thời 2 bài toán: DLP(p,g)và𝐼𝐹𝑃(𝑛) hoặc DLP(p,g) và RSAP(n,e). Nghĩa là
độ an toàn trước dạng tấn công giả mạo của giao thức được đảm bảo bằng độ
khó của việc giải đồng thời 2 bài toán DLP(p,g)và𝐼𝐹𝑃(𝑛) hoặc DLP(p,g) và
RSAP(n,e).
Như vậy, luận án đã chỉ ra rằng giao thức TT-TDK-02 thỏa mãn các
thuộc tính an toàn của một giao thức trao đổi khóa bằng độ khó của việc giải
đồng thời 2 bài toán DLP(p,g)và𝐼𝐹𝑃(𝑛) hoặc DLP(p,g) và RSAP(n,e).
3.5.4. Hiệu quả thực hiện của TT-TDK-02
a) Thời gian thực hiện của giao thức DH-MM-KE [38]:
Thời gian tính toán các bước của bên A và B là:
Bước 1 (A): 2Texp
Bước 2 (B): (6Texp + 1Th + 2Tmul)
95
Bước 3 (A): (7Texp + 2Th + 3Tmul)
Bước 4 (B): (3Texp + 1Th + 1Tmul)
Tổng thời gian thực hiện: (18Texp + 4Th + 6Tmul )
b) Thời gian thực hiện của giao thức DH-MM-SC [38]:
Thời gian tính toán các bước của bên A và B là:
Bước 1 (A): (3Texp + 2Tmul)
Bước 2 (B): (7Texp + 2Th + 5Tmul)
Bước 3 (A): (9Texp + 3Th + 3Tmul)
Bước 4 (B): (5Texp + 1Th + 2Tmul)
Tổng thời gian thực hiện: (24Texp + 6Th + 12Tmul )
c) Thời gian thực hiện của giao thức TT-TDK-02:
Thời gian tính toán các bước của bên A là:
Bước 1: (3Texp+ Th)
Bước 2: (2Texp + 2Th)
Bước 3: (Th)
Thời gian thực hiện: (5Texp + 4Th)
Bên B cần thời gian tương tự để hoàn thành giao thức, vậy thời gian tính toán
cần thiết để hoàn thành giao thức là: (10Texp + 8Th)
3.6. Kết luận Chương 3
Trong Chương 3, luận án đã đề xuất hệ mật dựa trên tính khó của việc
giải đồng thời 2 bài toán logarit rời rạc và phân tích số/khai căn, gồm: sinh chữ
ký (TT-K-02) và kiểm tra chữ ký (TT-KT-02), lược đồ này đã được công bố
trong công trình [CT5]; mã hóa (TT-MH-02); giải mã - xác thực (TT-GM-02),
các thuật toán này đã được công bố trong công trình [CT2], [CT3]; trao đổi
khóa (TT-TDK-02) thuật toán này đã được công bố trong công trình [CT3],
[CT5].
Dựa trên 02 bài toán khó DLP và IFP: từ thiết kế phụ thuộc của khóa
96
công khai 𝑦 với khóa bí mật thứ nhất 𝑥1 theo công thức 𝑦 = 𝑔(𝑥1)−1 𝑚𝑜𝑑 𝑝, và tính 𝑥2 = 𝑦−1 𝑚𝑜𝑑 𝜑(𝑛) đã xây dựng bằng chứng và các thành phần của chữ ký nhằm thực hiện qui trình ký và qui trình kiểm tra chữ ký với bằng chứng
ngẫu nhiên. Cũng với thiết kế như vậy, luận án xây dựng các thuật toán mã hóa,
giải mã - xác thực và giao thức trao đổi khóa để xây dựng hệ mật hoàn chỉnh
với tính ưu việt so sánh với lược đồ chữ ký số Rabin - Schnorr, RSA - Schnorr,
WR - Schnorr.
Cũng tại Chương 3, đề xuất phương pháp mã hai lần mà vẫn đảm bảo
đầy đủ tính chất của Signcryption nhưng đơn giản và hiệu quả hơn. Đây cũng
chính là ý tưởng phát triển các thuật toán mã hóa - xác thực của luận án. Và
cũng là điểm khác khi luận án đề xuất giao thức trao đổi khóa sử dụng mật mã
khóa công khai mà không phải chữ ký số để cung cấp tính năng xác thực khóa
bí mật chia sẻ.
97
KẾT LUẬN
Trên cơ sở các mục tiêu đã đề ra và triển khai các nội dung nghiên cứu
của luận án, có thể khẳng định việc nâng cao độ an toàn cho các hệ mật (thuật
toán mật mã khóa công khai, lược đồ chữ ký số và trao đổi khóa) dựa trên tính
khó của việc giải đồng thời 2 bài toán khó là một hướng tiếp cận đang nhận được
nhiều sự quan tâm của các nhà nghiên cứu. Bên cạnh đó việc phát triển hệ mật
chỉ dựa trên bài toán DLP(p,g) mà đảm bảo độ an toàn lại được triển khai cho
các ứng dụng có yêu cầu không quá cao về độ an toàn nhưng đòi hỏi tốc độ.
A. Những kết quả đạt được của luận án:
1. Nghiên cứu tổng quan về bài toán logarit rời rạc, bài toán phân tích
số, bài toán khai căn; phân tích độ an toàn và các hình thức tấn công đối với
các bài toán này; một số định nghĩa và các yêu cầu an toàn đối với hệ mật khóa
công khai, lược đồ chữ ký số, giao thức trao đổi khóa; phân tích xu hướng
nghiên cứu, phát triển của các hệ mật khóa công khai.
2. Luận án đã tập trung vào nghiên cứu đề xuất và chứng minh tính đúng
đắn, độ an toàn, tính hiệu quả của các thuật toán mới nhằm xây dựng hệ mật
dựa trên hai hướng:
- Dựa trên 01 bài toán khó DLP: từ thiết kế phụ thuộc của khóa công khai
𝑦 với khóa bí mật 𝑥 theo công thức 𝑦 = 𝑔−(𝑥)−1 𝑚𝑜𝑑𝑝 đã xây dựng bằng
chứng và các thành phần của chữ ký nhằm thực hiện qui trình ký và qui trình
kiểm tra chữ ký với bằng chứng ngẫu nhiên. Cũng với thiết kế như vậy, luận
án xây dựng các thuật toán mã hóa, giải mã - xác thực và giao thức trao đổi
khóa để xây dựng hệ mật hoàn chỉnh với tính ưu việt so sánh với lược đồ chữ
ký số KCDSA (hiện Hàn Quốc đang sử dụng) và chuẩn ISO/IEC 14888-3:2018.
- Dựa trên 02 bài toán khó DLP và IFP: từ thiết kế phụ thuộc của khóa
công khai 𝑦 với khóa bí mật thứ nhất 𝑥1 theo công thức 𝑦 = 𝑔(𝑥1)−1 𝑚𝑜𝑑 𝑝, và tính 𝑥2 = 𝑦−1 𝑚𝑜𝑑 𝜑(𝑛) đã xây dựng bằng chứng và các thành phần của chữ
98
ký nhằm thực hiện qui trình ký và qui trình kiểm tra chữ ký với bằng chứng
ngẫu nhiên. Cũng với thiết kế như vậy, luận án xây dựng các thuật toán mã hóa,
giải mã - xác thực và giao thức trao đổi khóa để xây dựng hệ mật hoàn chỉnh
với tính ưu việt so sánh với lược đồ chữ ký số Rabin - Schnorr, RSA - Schnorr,
WR - Schnorr.
- Luận án đề xuất phương pháp mã hai lần mà vẫn đảm bảo đầy đủ tính
chất của Signcryption nhưng đơn giản và hiệu quả hơn. Đây là ý tưởng phát
triển các thuật toán mã hóa - xác thực của luận án. Và cũng là điểm khác khi
luận án đề xuất giao thức trao đổi khóa sử dụng mật mã khóa công khai mà
không phải chữ ký số để cung cấp tính năng xác thực khóa bí mật chia sẻ.
B. Những đóng góp mới của luận án:
1. Đề xuất lược đồ chữ ký số dựa trên bài toán logarit rời rạc nhằm nâng
cao hiệu năng tính toán.
2. Phát triển hệ mật khóa công khai dựa trên 02 bài toán khó logarit rời
và phân tích số nhằm nâng cao độ an toàn.
C. Hướng phát triển nghiên cứu tiếp theo của luận án:
1. Nghiên cứu và đưa vào ứng dụng thực tế hệ mật khóa công khai (sinh
tham số hệ thống, khóa, mã hóa, giải mã, chữ ký số, giao thức trao đổi khóa)
đối với các ứng dụng yêu cầu mức độ an ninh cao nhưng hạn chế về nguồn lực.
2. Nghiên cứu tăng hiệu quả tính toán của các thuật toán trong luận án
nhằm đáp ứng triển khai hoàn chỉnh trên cả phần mềm và phần cứng.
99
DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC ÐÃ CÔNG BỐ
[CT1] Nguyễn Vĩnh Thái, Bạch Nhật Hồng, Lưu Hồng Dũng (12/2017), “Phát
triển giao thức thiết lập khóa an toàn cho các hệ mã khóa bí mật”, Tạp chí
Nghiên cứu khoa học và công nghệ quân sự, trang 193-202. Số đặc san CNTT
12/2017, ISSN 1859-1043.
[CT2] Nguyễn Vĩnh Thái, Lưu Hồng Dũng (12/2018), “Hệ mật khóa công khai
dựa trên tính khó của việc giải đồng thời 2 bài toán phân tích số và logarithm
rời rạc/khai căn”, Tạp chí Thông tin và Truyền thông: Một số vấn đề chọn lọc
về an toàn an ninh thông tin 2018 - TP. Đà Nẵng, ngày 07/12/2018, pp.58-66,
ISSN 1859-3550.
[CT3] Nguyễn Vĩnh Thái, Lưu Hồng Dũng (4/2019), “Xây dựng giao thức trao
đổi khóa an toàn dựa trên tính khó của việc giải đồng thời 2 bài toán logarithm
rời rạc và phân tích số/khai căn cho các hệ mật khóa đối xứng”, Tạp chí Nghiên
cứu khoa học và công nghệ quân sự, trang 8-15. Số đặc san CNTT 04/2019,
ISSN 1859-1043.
[CT4] Nguyễn Vĩnh Thái, Lưu Hồng Dũng (4/2019), “Xây dựng các thuật toán
mật mã khóa công khai dựa trên tính khó của việc giải đồng thời 2 bài toán
logarithm rời rạc và phân tích số/khai căn”, Tạp chí Nghiên cứu khoa học và
công nghệ quân sự, trang 24-32. Số đặc san CNTT 04/2019, ISSN 1859-1043.
[CT5] Nguyễn Vĩnh Thái, Lưu Hồng Dũng (4/2019), “Một lược đồ chữ ký xây
dựng trên tính khó của việc giải đồng thời 2 bài toán logarithm rời rạc và phân
tích số”, Tạp chí Nghiên cứu khoa học và công nghệ quân sự, trang 57-64. Số
đặc san CNTT 04/2019, ISSN 1859-1043.
[CT6] Nguyễn Vĩnh Thái, Đỗ Anh Tuấn, Lưu Hồng Dũng, Đoàn Thị Bích
Ngọc (12/2020), “Giao thức trao đổi khóa an toàn, hiệu quả cho các hệ mật
khóa đối xứng”, Tạp chí Nghiên cứu khoa học và công nghệ quân sự, trang 80-
86. Số đặc san CNTT 12/2020, ISSN 1859-1043.
100
[CT7] Nguyen Vinh Thai, Đoan Thi Bich Ngoc, Luu Hong Dung (12/2021),
“An encryption - authentication algorithms developed from the elgamal
cryptosystem”, Journal of Military Science and Technology, pp61-70. Special
Issue No.5 12/2021, ISSN 1859-1043.
TÀI LIỆU THAM KHẢO
Tiếng Việt:
[1] Đinh Quốc Tiến (2016), “Nghiên cứu cơ sở toán học trong thiết kế các lược
đồ chữ ký số GOST R 34.10-2012”, Tạp chí An toàn thông tin.
[2] Hoàng Thị Mai, Nguyễn Hữu Mộng, Lưu Hồng Dũng (2015). “Một dạng
lược đồ chữ ký xây dựng trên bài toán phân tích số”. Tạp chí Nghiên cứu
KH&CNQS, số 39, tr. 75-81.
[3] Hoàng Văn Việt, Bùi Thế Truyền, Tống Minh Đức, Lưu Hồng Dũng
(06/2016), “Thuật toán thỏa thuận khóa an toàn cho hệ mật khóa đối xứng”,
Chuyên san CNTT và truyền thông/Tạp chí Khoa học và Kỹ thuật - Học viện
KTQS. Số 8, trang 52-62. ISSN: 1859 - 0209.
[4] Lều Đức Tân, Hồ Kim Giàu, “Khắc phục lỗi và nâng cao tính hiệu quả cho
các lược đồ chữ ký số dựa trên hai bài toán khó”, Tạp chí Khoa học công
nghệ thông tin và Truyền thông, số 01 (CS.01)2020. trang 50-56. ISSN:
2525-2224.
[5] Lưu Hồng Dũng (12-2012), “Phát triển thuật toán mật mã khóa công khai
dựa trên hệ mật ElGamal”, Chuyên san Các công trình nghiên cứu, phát
triển và ứng dụng CNTT và TT (Bộ Thông tin và Truyền thông), tập V-1, số
8(28).
[6] Lưu Hồng Dũng, Nguyễn Đức Thụy, Hồ Nhật Quang (2015), “Phát triển
lược đồ chữ ký số trên bài toán logarit rời rạc”, Tạp chí Nghiên cứu
KH&CNQS, số 37, 06-2015, tr. 103-110.
[7] Lưu Hồng Dũng và Nguyễn Vĩnh Thái (2017). “Phát triển thuật toán chữ ký
101
số dựa trên hệ mã Pohlig - Hellman”, Tạp chí Nghiên cứu KH&CNQS, Số
Đặc san CNTT, 12-2017, tr. 180-185.
[8] Lưu Hồng Dũng, Hồ Ngọc Duy, Tống Minh Đức, Bùi Thế Truyền, Đặng
Hùng Việt, “Giao thức trao đổi khóa an toàn cho các hệ mật khóa đối xứng”,
Kỷ yếu Hội nghị Quốc gia lần thứ X về Nghiên cứu cơ bản và ứng dụng
Công Nghệ thông tin (FAIR); Đà Nẵng, ngày 17-18/08/2017.
[9] Lưu Hồng Dũng, Trần Trung Dũng, Tống Minh Đức, “Nghiên cứu xây dựng
hệ tích hợp mật mã khóa công khai - chữ ký số”, Tạp chí Khoa học và Kỹ
thuật (Học viện KTQS), số 149 (08-2012). ISSN: 1859 - 0209. 01/08/2012.
[10] Nguyễn Đức Thụy và Lưu Hồng Dũng (2020). “Lược đồ chữ ký số xây
dựng trên tính khó của bài toán logarit rời rạc kết hợp khai căn trên Zp”,
Tạp chí Nghiên cứu KH&CNQS, số 66, tr. 40-44.
[11] Nguyễn Quốc Toàn (2016), “Xây dựng thuật toán và chương trình sinh
tham số an toàn cho lược đồ chữ ký số GOST R 34.10-2012”, Tạp chí An
toàn thông tin. http://antoanthongtin.vn/Detail.aspx?NewsID=3789604c-
89c5-420f-84f5-924da608eb93&CatID=85ec5d81-1cc8-4341-a0cb-
e30bd1a85d06.
[12] Võ Tùng Linh (2015), “Nghiên cứu cơ sở lý thuyết để giải bài toán
logarithm rời rạc trên trường hữu hạn (DLP) và trên đường cong elliptic
(ECDLP). Xây dựng thuật toán và chương trình sinh tham số an toàn cho
bài toán logarithm rời rạc trên trường nguyên tố”, Tạp chí An toàn thông tin.
Tiếng Anh:
[13] A. Menezes, Minghua Qu, and S. Vanstone (1995), “Some new key
agreement protocols providing implicit authentication”, Second Anuual
workshop on selected Areas in Cryptography (SAC95).
[14] A. Menezes, P. van Oorschot and S. Vanstone (2007),“Handbook of
Applied Cryptography”, Boca Raton, Florida: CRC Press.
102
[15] A. W. Dent, C. J. Mitchell, (2004), “User’s Guide to Cryptography and
Standards”, Artech House Computer Security Series, chapter 11-12, pp.
215-266.
[16] A.N. Berezin, N.A. Moldovyan, V.A. Shcherbacov, “Cryptoschemes
Based on Difficulty of Simultaneous Solving Two Different Difficult
Problems”, Computer Science Journal of Moldova, vol.21, no.2(62), 2013.
[17] Adrian Atanasiu, Laura Savu, “Signcryption based on different digital
signature schemes”, Jounal of Information Systems & Operations
Management: Vol. 6, Issue 1, Romanian-American University, May 2012.
[18] Andrew C. Yao, Frances F. Yao, Yunlei Zhao, Bin Zhu, (2010),
“Deniable Internet Key Exchange”, International Conference on Applied
Cryptography and Network Security ACNS 2010: Applied Cryptography
and Network Security, pp 329-348.
[19] Barker EB, Chen L, Roginsky A, Vassilev A, Davis R (2018)
Recommendation for Pair-Wise Key-Establishment Schemes Using
Discrete Logarithm Cryptography. (National Institute of Standards and
Technology, Gaithersburg, MD), NIST Special Publication (SP) 800-56A,
Rev. 3. https://doi.org/10.6028/NIST.SP.800-56Ar3.
[20] Barker EB, Chen L, Roginsky A, Vassilev A, Davis R, Simon S (2019)
Recommendation for Pair-Wise Key-Establishment Using Integer
Factorization Cryptography. (National Institute of Standards and
Technology, Gaithersburg, MD), NIST Special Publication (SP) 800-56B,
Rev. 2. https://doi.org/10.6028/NIST.SP.800-56Br2
[21] Barker EB (2020) Recommendation for Key Management: Part 1 -
General. (National Institute of Standards and Technology, Gaithersburg,
MD), NIST Special Publication (SP) 800-57 Part 1, Rev. 5.
https://doi.org/10.6028/NIST.SP.800-57pt1r5.
103
[22] Barker EB, Dang QH (2015) Recommendation for Key Management,
Part 3: Application Specific Key Management Guidance. (National Institute
of Standards and Technology, Gaithersburg, MD), NIST Special Publication
(SP) 800-57 Part 3, Rev.1. https://doi.org/10.6028/NIST.SP.800-57pt3r1.
[23] Binh V. Do, Minh H. Nguyen, Nikolay A. Moldovyan, “Digital
Signature Schemes from Two Hard Problems”, Multimedia and Ubiquitous
Engineering, Lecture Notes in Electrical Engineering 240, May 9-11, 2013,
pp. 817-825.
[24] Brickell E., Pointcheval D., Vaudenay S., Yung M. Design Validations
for Discrete Logarithm Based Signature Schemes, Proceedings of PKC
2000, LNCS 1751, pp. 276-292, Springer-Verlag, 2000.
[25] Brita Vesterås (2006), “Analysis of Key Agreement Protocols”,
Department of Computer Science and Media Technology Gjøvik University
College.
[26] Buchmann J., May A., Vollmer U. (2006), “Perspectives for
cryptographic long term security”. Communications of the ACM, vol.49(9),
pp.50-55.
[27] Canetti R, Dwork C, Naor M, Ostrovsky R (17–21/08/1997), “Deniable
encryption, in Attacker”, 17th Annual International Cryptology Conference;
Santa Barbara, California, USA. pp. 90-104.
[28] Canetti R., Sunoo P. and Oxana P. (2020), "Fully deniable Interactive
Encryption”, IACR Cryptology, ePrint Archive 2020.
[29] Chaum David, “Blind signatures for untraceable payments”, Advances
in Cryptology, CRYPTO’82, Plenum, pp. 199-203, 1983.
[30] Chaum David; van Antwerpen, Hans
(1990). “Undeniable
Signatures”. Advances in Cryptology - CRYPTO' 89 Proceedings. Lecture
Notes in Computer Science. Vol. 435. pp. 212-216.
104
[31] Chaum
David; van Heyst, Eugene (1991). “Group
Signatures”. Advances in Cryptology - EUROCRYPT '91. Lecture Notes in
Computer Science. Vol. 547. pp. 257-265.
[32] Chen, T.-H., Lee, W.-B, Horng, G. (2005), “Remarks on some signature
schemes based on factoring and discrete logarithms”. Applied Mathematics
and Computation, vol.169, pp.1070-1075.
[33] Chong-zhi Gao, Dongqing Xie, Baodian Wei (2012), Deniable
encryptions secure against adaptive chosen ciphertext attack. In ISPEC,
pages 46–62, Hangzhou, China.
[34] C-P. Schnorr. Efficient Identification and Signatures for Smart Card. In
Giles Brassard, editor, Advandces in Cryptology - CRYPTO’89, vol. 435 of
Lecture Notes in Computer Science, p. 239-252, Springer, 1989.
[35] Crandall, R., and Pomerance, C. (2001), Prime Numbers: A
Computational Perspective. New York: Springer-Verlag.
[36] Cryptography and network security principles and practice, Fifth
Edition, William Stallings, 2011, pp. 245-263.
[37] Dernova, E. S. (2009), “Information authentication protocols based on
two hard problems”. Ph.D. Dissertation. St. Petersburg State
Electrotechnical University. St. Petersburg, Russia.
[38] Do Viet Binh, “Authenticated key exchange protocol based on two hard
problems”, Tạp chí Nghiên cứu Khoa học và Công nghệ Quân sự, số 50
(08/2017), trang 147 - 152 . ISSN: 1859 - 1043.
[39] Draziotis. DSA lattice attacks based on Coppersmith’s method.
Information Processing Letters, p. 541-545, 2016.
[40] Eddie Shahrie Ismail, Tahat N.M.F., Rokiah. R. Ahmad, “A New Digital
Signature Scheme Based on Factoring and Discrete Logarithms”, Journal
105
of Mathematics and Statistics, 04/2008; 12(3). DOI:
10.3844/jmssp.2008.222.225 Source:DOAJ.
[41] G. Neven, N.P. Smart, and B. Warinschi. Hash function requirements for
Schnorr signatures. Journal of Mathematical Cryptology, vol. 3(1), p. 69-
87, 2007.
[42] GOST R 34.10-94 (1994), “Russian Federation Standard Information
Technology. Cryptographic data Security Produce and check procedures of
Electronic Digital Signature based on Asymmetric Cryptographic
Algorithm”, Government Committee of the Russia for Standards, Russian.
[43] H. M. Sun (2002), "Cryptanalysis of a Digital Signature Scheme Based
on Factoring and Discrete Logarithms,” NCS.
[44] Horster, M. Michels, and H. Petersen (1995), “Blind multisignature
schemes and their relevance for electronic voting”, Proc. of 11th Annual
Computer Security Applications Conference, New Orleans, IEEE Press.
[45] https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-
57pt1r5.pdf
[46] Hugh C. Williams (1980), “A modification of the RSA public-key
encryption procedure”, IEEE Transactions on Information Theory ISSN
0018-9448, 26, 726-729.
[47] Hugo Krawczyk (2005), “HMQV: A High-Performance Secure Diffie-
Hellman Protocol”, http://eprint.iacr.org/2005/176.
[48]
IEEE (1999), “IEEE Standard 1363-2000: standard specifications for
public key cryptography”, IEEE.
[49]
Internet X.509 Public Key Infrastructure Certificate and Certificate
Revocation List (CRL) Profile. https://tools.ietf.org/html/rfc5280.
[50]
Internet Text Messages. https://www.ietf.org/rfc/rfc2822.txt.
106
[51]
ISO/IEC 9796-2:2010. Information technology - Security techniques -
Digital signature schemes giving message recovery - Part 2: Integer
factorization based mechanisms. Standard, 2010.
[52]
ISO/IEC 9796-2:2010. Information technology - Security techniques -
Digital signature schemes giving message recovery - Part 3: Discrete
logarithm based mechanism. Standard, 2010.
[53]
ISO/IEC 10118-3:2018. IT Security techniques - Hash functions - Part
3: Dedicated hash-functions. Standard, 2018.
[54]
ISO/IEC 14888-3:2018. Information technology - Security techniques -
Digital signatures with appendix - Part 2: Integer factorization based
mechanisms. Standard, 2018.
[55]
ISO/IEC 14888-3:2018. Information technology - Security techniques -
Digital signatures with appendix - Part 3: Discrete logarithm based
mechanism. Standard, 2018.
[56]
ISO/IEC 14888-1:2018. Information technology - Security techniques -
Digital signatures with appendix - Part 1: General. Standard, 2018.
[57] Jansen, B.J.H (2012) “Mersenne primes and class field theory”, Number
Theory, Algebra and Geometry, Mathematical Instiute, Faculty of Science,
Leiden University.
[58] Joseph Silverman (2009), The Arithmetic of Elliptic Curves, Springer
2009.
[59] K. Lauter, A. Mityagin. Security Analysis of KEA Authenticated Key Exchange Protocol. International Workshop on Public Key Cryptography, PKC 2006: Public Key Cryptography - PKC 2006 pp 378-394.
[60] K. Nyberg and R. Rueppel (1994), “Weaknesses in some recent key
agreement protocols”, Electronics Letters, Vol. 30(1), pp.26-27.
107
[61] L. DeFeo, D. Jao, J. Plut (2014), Towards quantum-resistant
cryptosystems from supersingular elliptic curve isogenies. J. Math. Crypt.
8(3).
[62] L. Harn (1994), “Public-key cryptosystem design based on factoring and
discrete logarithms”. IEE Proc. Of Computers and Digital Techniques,
vol.141, no.3, pp.193-195.
[63] L. Harn (1995), “Modified key agreement protocol based on the digital
signature standard”. Electronics Letters, Vol.31(6), pp. 448-449.
[64] L. Harn, Ma. Mehta, and W. J. Hsin (2004), “Integrating Diffie-Hellman
key exchange into the digital signature algorithm (DSA)”, IEEE
Communication Letters, Vol.8(3), pp.198-200.
[65] L.C. Hwang, C.C Lee and M.S Hwang (2013), “A 𝑛2 + 𝑛 MQV key
argreement protocol”, International Arab Journal of Information
Technology, Vol.10(2), pp.137-142.
[66] Laura Savu (2012), “Combining public key encryption with Schnorr
digital signature”, Journal of Software Engineering and Applications.
[67] Lawrence C. Washington (2008), Elliptic Curves: Number Theory and
Cryptography, Second Edition, Chapman and Hall/CRC 2008.
[68] Lee N. Y., T. Hwang (1996), “Modified Harn signature scheme based on
factoring and discrete logarithms”. IEE Proceeding of Computers Digital
Techniques, May, 1996, IEEE Xplore, USA., pp:196-198.
[69] Leslie Lamport (1979), “Constructing digital signatures from a one-way
function.”, Technical Report CSL-98, SRI International.
[70] M. Just and S. Vaudenay. (1996), “Authenticated multi-party key
agreement”, ASIACRYPT’96.
[71] Marcel Sebek (2012), "Deniable encryption", Department of Algebra.
108
[72] Mark Stamp, Richard M. Low, “Applicd cryptanalysis: Breaking
Ciphers in the Real World”, John Wiley & Sons, Inc., ISBN 978-0-470-1.
[73] Michael O.Rabin (1979), “Digitalized signatures and public key
functions as interactable as factorization”, Technical Report 212, MIT
Laboratory for Computer Science.
[74] Moldovyan NA, “Short Signatures from Difficulty of Factorization
Problem”, Int J Netw Secur, 8(1), 2009, pp. 90-95.
[75] Nakamura and K. Itakura (1983), “A public-key cryptosystem suitable
for digital multisignatures”, NEC Research and Development, 71, pp. 1-8.
[76] National Institute of Standards and Technology, FIPS PUB 186-5,
February 3, 2023.
[77] Neven G., Smart N., Warinschi B. Hash function requirements for
Schnorr signatures. Journal of Mathematical Cryptology. 2009, 3 pp. 69-87.
[78] P.S Augustin, E.V Philippe, and B.Jean-Clude (2009), “A Secure and
Efficient Authenticated Diffie-Hellman protocol”, In European Public Key
Infrastructure Workshop, Springer Berlin Heidelberg, pp 83-98.
[79] Pedersen, Torben P. and Birgit Pfitzmann (1997). “Fail-stop
signatures.” SIAM Journal on Computing, 26 (2), pp 291-330.
[80] Pointcheval D., & Vaudenay S. On provable security for digital signature
algorithms, Technical Report LIENS-96-17, LIENS, 1996
[81] Q. X. WU, Y. X. Yang and Z. M. HU, “New signature schemes based
on discrete logarithms and factoring”, Journal of Beijing University of
Posts and Telecommunications, vol. 24, pp. 61-65, January 2001.
[82] Qin Yanlin, Wu Xiaoping,“New Digital Signature Scheme Based on
both ECDLP and IFP”, Computer Science and Information Technology,
2009. ICCSIT 2009. 2nd IEEE International Conference on, 8-11 Aug.
2009, E-ISBN : 978-1-4244-4520-2, pp 348 - 351.
109
[83] R. C. W. Phan (2005), “Fixing the integrated Diffie-Hellman DSA key
exchange protocol”, IEEE CommunicationLetters, Vol.9(6), pp. 570-572.
[84] R. Canetti, H. Krawczyk, “Analysis of key-exchange protocols and their
use for building secure channels”, Lect. Notes Comput. Sci., 2045: Springer-
Verlag, 2001, 453-474.
[85] R. L. Rivest, A. Shamir, and L. M. Adleman (1978), "A Method for
Obtaining Digital Signatures and Public Key Cryptosystems" Commun. of
the ACM, Vol. 21, No. 2, pp. 120-126.
URL:http://ncstrl.mit.edu/Dienst/UI/2.0/Describe/ncstrl.mit_lcs/MIT/
LCS/TR- 212.
[86] R. P. Brent (Sept. 1985), “Some integer factorization algorithms using
elliptic curves”, Report CMAR32-85, Centre for Math. Analysis, Australian
National University.
[87] Ralph Merkle (1990), “A certified digital signature”, In Gilles Brassard,
ed., Advances in Cryptology - CRYPTO '89, vol. 435 of Lecture Notes in
Computer Science, pp. 218-238, Spring Verlag.
[88] S. D. Galbraith, C. Petit, B. Shani, Y. B. Ti: On the Security of
Supersingular Isogeny Cryptosystems. ASIACRYPT 2016.
[89] S. D. Galbraith: Mathematics of Public Key Cryptography, Cambridge
University Press 2012.
[90] Schnorr, C. (1988), “Efficient Identification and Signatures for Smart
Cards.” EUROCRYPT.
[91] Schnorr, C. (1991), “Efficient Signature Generation by Smart Cards.”
Journal of Cryptology, No. 3.
[92] Shafi Goldwasser, Silvio Micali, Ronald Rivest (1988), "A digital
signature scheme secure against adaptive chosen-message attacks.". SIAM
Journal on Computing, 17(2):281-308.
110
[93] Shamir, A., and Tromer, E. (Summer 2003), “On the Cost of Factoring
RSA-1024.” CryptoBytes. http://www.rsasecurity.com/rsalabs.
[94] Shimin Wei, “Digital Signature Scheme Based on Two Hard Problems”,
IJCSNS International Journal of Computer Science and Network Security,
VOL.7 No.12, December 2007.
[95] Shin-Yan Chiou, Yi-Xuan He (2013), “Remarks on new Digital
Signature Algorithm based on Factorization and Discrete Logarithm
problem”, International Journal of Computer Trends and Technology
(IJCTT),V4(9):3322-3324 September Issue.
[96] Sushila Vishnoi, Vishal Shrivastava, “A new Digital Signature
Algorithm based on Factorization and Discrete Logarithm problem”,
International Journal of Computer Trends and Technology, volume 3, Issue
4, 2012.
[97] Swati Verma1, Birendra Kumar Sharma, “A New Digital Signature
Scheme Based on Two Hard Problems”, International Journal of Pure and
Applied Sciences and Technology, ISSN 2229 - 6107, Int. J. Pure Appl. Sci.
Technol., 5(2) (2011), pp. 55-59.
[98] T. ElGamal. A public key cryptosystem and a signature scheme based
on discrete logarithms. Proceeding of Crypto’84.
[99] TTAK.KO-12.0001/R3: Digital Signature Mechanism with Appendix -
Part 2: Korean Certificate-based Digital Signature Algorithm KCDSA
(2014).
[100] TTAK.KO-12.0015/R2, Digital Signature Mechanism with Appendix -
Part 3: Korean Certificatebased Digitial Signature Algorithm using Elliptic
Curves EC-KCDSA (2014).
111
[101] Tzeng S. F., Yang C. Y., Hwang M. S. (2004): "A new digital signature
scheme based on factoring and discrete logarithms". International Journal
of Computer Mathematics, vol. 81(1), pp.9-14.
[102] The ECMNET Project,
https://members.loria.fr/PZimmermann/records/ecmnet.html.
[103] W. Diffie, P. C. Van Oorschot, M.J. Wiener (1992), “Authentication and
authenticated key exchanges”, Designs, Codes and Cryptography, Vol2(2),
pp 107-125.
[104] W.Diffie & M. Hellman (1976), “New Directions in Cryptography”,
IEEE Trans. On Info. Theory, IT-22(6), pp.644-654.
[105] Wenbo Mao, Prentice Hall PTR (2003), Modern Cryptography: Theory
and Practice. River, New Jersey 07458.
[106] Xianmeng Meng, Xuexin Zheng (June 2015), “Cryptanalysis of RSA
with a small parameter revisited”, Information Processing Letters 115,
Elsevier, p. 858-862
[107] Y. M. Tseng (2002), “Robust generalised MQV key agreement protocol without
using one-way hash function”, Computer Standards & Interfaces, Vol. 24(3), pp.
241-246.
[108] Y. Seu. On the exact security of Schnorr-type signatures in the random
oracle model. Advances in Cryptology - EUCRYPT 2012, p. 554-571, 2012.
[109] YanmeiCao,
JianghongWei, FangguoZhang, YangXiang,
XiaofengChen, “Efficient public-key authenticated deniable encryption
schemes”, Computer Standards & Interfaces, Volume 82, August 2022.
[110] Yong Li, Willy Susilo, Yi Mu, Dingyi Pei, Designated Verifier
Signature: Definition, Framework and New Constructions. UIC 2007, pp.
1191-1200.
112
[111] Z. Y. Shen and X. Y. Yu, “Digital signature scheme based on discrete
logarithms and factoring”, Information Technology, vol. 28, pp. 21-22, June
2004.