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 Zp⁡hay 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à 𝑝 − 1⁡có 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 𝑝 − 1⁡thỏ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 𝐾𝐴𝐵1⁡từ 𝐾𝐵𝐴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=𝐸𝐵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 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 = 𝐸𝐵2⁡là

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 𝑥2⁡cầ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, 𝑞1⁡là 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 𝐸𝐴1⁡thì 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.

PL-1

PHỤ LỤC A. KẾT QUẢ THỬ NGHIỆM VỚI 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

a) Hình thành tham số hệ thống (TT-HT)

Input: 𝑙𝑝 = 512⁡𝑏𝑖𝑡, 𝑙𝑞 = 160⁡𝑏𝑖𝑡⁡.

Output: p, q, g.

- Giá trị của 𝑝:

1345138914957317796499482870931819691622574528203625066711814418202

5005490333621301410241987788779129667738191310926409655774085560347

5468394001214099237945965790924602952606681958402000920917256841256

2085191417804455359748415852002990089514777244849547677332639157829

63688377706992982329377840729812698428619

- Giá trị của 𝑞:

1330140545667637763477544100975371750758689958590120225287510268950

8795037171806723226868481227714844768489803555229296299835553887724

820102354826435279637

- Giá trị của 𝑔:

8291999391357153207541323890217263286639785250099143560787164749471

5404606027361432716813237636086223307150639302156431474736795344139

9312476079542272668774853924601571804554332206627808907816716472135

9473929554600209447810073877362048588551023959849680990578669703366

9686903424098245164588088343415574171113

b) Sinh tham số và khóa (TT-K)

Input: 𝑝, 𝑞, 𝑔, 𝑙𝑝1 = 512⁡𝑏𝑖𝑡, 𝑙𝑞1 = 512⁡𝑏𝑖𝑡⁡.

Output: 𝑥1, 𝑥2, 𝑛, 𝑦. - Giá trị của 𝑙𝑝1: 1217146013474475481937967882876953859405235905919785289483945796106

1783364766172093027091487650153150592666300846981547011958931152941

571983074430621465977

- Giá trị của 𝑙𝑞1:

PL-2

6872961875577911861192940251995928287721725518387010567959281109790

0315889784371040236846237703940958497252503666445250681872386174494

66398545978530851931

- Giá trị của 𝑛:

8365398147621709390972506034309016924263363107897530378890959218959

7008436104010130986253115797329090688615428280845504551081506129991

3920408020153161519670614020338654336875318301326633178672556242610

6839759441631493498508759099286906787698378060081864859597190372832

5626786166629852034148409321249941251587

- Giá trị của 𝑥1:

1235270275397379877055207034212697487779686847060

- Giá trị của 𝑦:

3219730734604163957348103485082505041282555696210872220741170597143

2747833168471690198709577274211768925218289428517818634831590468683

5535102957078129503692844315332788307294894901005209052646297957149

9976446142206167371379121590712428957270647086529571897540173124772

073163990936295101995490661293867020387

- Giá trị của 𝑥2:

5711942265474324404643356846488183476946520674748992956884312284501

8159275667918615588777007534725576429640202754086772274132144166599

7531989518473976259097168408624832478963904173149079409604033448119

9317750072593538270736627772256137912885947516388322677216342746508

3288192699939066085364110531901376434443

c) Sinh chữ ký (Thuật toán TT-K-02)

Input: p, q , g, n, 𝑥1, 𝑥2, 𝑀

Output: 𝐸, 𝑆

- M = “THIS IS A NEW DIGITAL SIGNATURE ALGRITHM !”

- Giá trị của k:

1433613581663055673590566140391706674839159648027

PL-3

- Giá trị của R tính được:

8476171549536214318471541105029066247598388991972166204169889050022

0286458843533044059514651203312196691616927243311434408977837226674

6013437969296039343500069683646409380862257879380881073314634067062

8704552408985124972273682788748437955609818107226677051880947872080

4728412506981674519673214034205962443383

- Giá trị của E tính được:

8142760429895553275190290565091482031083265091770636208862951814703

5040619158061910451987491549602884755292508328504828787855907260222

64302974648467180424

- Giá trị của S tính được:

5373704513804968048790165883855412303643367944304999260530929228839

3406557376247622468854681691364763438665189237065314050126557130231

2142216866995629001190676554840644099007295705912663001041293369863

6401313183523411765776685178212389210341188441072238805634134090743

0863808070423356799977034178448958761293

Thời gian thực hiện: 0,01562760 giây

d) Kiểm tra chữ ký (Thuật toán TT-KT-02)

Input: p, q, g, n, y, M, (E,S)

+ Trường hợp 1: Chữ ký không bị giả mạo.

- Thông điệp cần kiểm tra:

M = “THIS IS A NEW DIGITAL SIGNATURE ALGRITHM !”

- Giá trị của 𝐸 cần kiểm tra:

8142760429895553275190290565091482031083265091770636208862951814703

5040619158061910451987491549602884755292508328504828787855907260222

64302974648467180424

- Giá trị của 𝑆 cần kiểm tra:

5373704513804968048790165883855412303643367944304999260530929228839

3406557376247622468854681691364763438665189237065314050126557130231

PL-4

2142216866995629001190676554840644099007295705912663001041293369863

6401313183523411765776685178212389210341188441072238805634134090743

0863808070423356799977034178448958761293 - Giá trị của 𝑅̅ tính được:

8476171549536214318471541105029066247598388991972166204169889050022

0286458843533044059514651203312196691616927243311434408977837226674

6013437969296039343500069683646409380862257879380881073314634067062

8704552408985124972273682788748437955609818107226677051880947872080

4728412506981674519673214034205962443383 - Giá trị của 𝐸̅ tính được:

8142760429895553275190290565091482031083265091770636208862951814703

5040619158061910451987491549602884755292508328504828787855907260222

64302974648467180424

Output: (E,S) = true.

Thời gian thực hiện: 0.03136370 giây

+ Trường hợp 2: Thông điệp bị giả mạo.

- Thông điệp cần kiểm tra:

M = “THIS IS A NEW DIGITAL SIGNATURE ALGRITHM”

- Giá trị của 𝐸 cần kiểm tra:

8814276042989555327519029056509148203108326509177063620886295181470

3504061915806191045198749154960288475529250832850482878785590726022

264302974648467180424

- Giá trị của 𝑆 cần kiểm tra:

5373704513804968048790165883855412303643367944304999260530929228839

3406557376247622468854681691364763438665189237065314050126557130231

2142216866995629001190676554840644099007295705912663001041293369863

6401313183523411765776685178212389210341188441072238805634134090743

0863808070423356799977034178448958761293 - Giá trị của 𝑅̅ tính được:

PL-5

8476171549536214318471541105029066247598388991972166204169889050022

0286458843533044059514651203312196691616927243311434408977837226674

6013437969296039343500069683646409380862257879380881073314634067062

8704552408985124972273682788748437955609818107226677051880947872080

4728412506981674519673214034205962443383 - Giá trị của 𝐸̅ tính được:

4457515763195560121529231489245599364794443494908101057780796626786

1295464030194968941460514857611438102784345493597348935245503742426

3110427573231443402

Output: (E,S) = false.

Thời gian thực hiện: 0.04647590 giây

+ Trường hợp 3: Thành phần S của chữ ký bị giả mạo.

- Thông điệp cần kiểm tra:

M = “THIS IS A NEW DIGITAL SIGNATURE ALGRITHM !”

- Giá trị của 𝐸 cần kiểm tra:

8814276042989555327519029056509148203108326509177063620886295181470

3504061915806191045198749154960288475529250832850482878785590726022

264302974648467180424

- Giá trị của 𝑆 cần kiểm tra:

5373704513804968048790165883855412303643367944304999260530929228839

3406557376247622468854681691364763438665189237065314050126557130231

2142216866995629001190676554840644099007295705912663001041293369863

6401313183523411765776685178212389210341188441072238805634134090743

0863808070423356799977034178448958761291 - Giá trị của 𝑅̅ tính được:

5109793030692270327907000056726317049417465754879445326081889108519

1319096023726725437255147140913047106238894616503880326193346071924

4846507948622289755108302264380519179348014993349018556486924234960

5568210332694213181776510364110234343773427262608897131164846204116

PL-6

1714530163923944762871133251119450160091 - Giá trị của 𝐸̅ tính được:

9275416083379612018767446136158055637064659549798162264028019525652

3196154498771128365365018728052953057158443415463533994662211527237

18004360562992118856

Output: (E,S) = false.

Thời gian thực hiện: 0.04704480 giây

e) Trao đổi khóa (Thuật toán TT-TDK-02)

Tính

A

B

𝑥1𝐴= 1251572752307449558408800

𝑥1𝐵= 1034276046805589148130169

235656101604346308525530

699842815982910353026125

𝑦𝐴= 4607189246311143078964283

𝑦𝐵= 7401383715050245753086359

0872117495828481487063426

7318694675298525772634846

3990422387287746676821863

9156229596070257062126134

7681703604513776981213923

0308784340974915594260100

4331327809502925725615371

4837481782448954871605447

2282802490404847976220264

0121778420056970394437379

1263279482986417064867449

3134350110430647524073050

1697276123274892909510707

3951247357252423007734651

3849416110972690687252133

4508325046633629367359992

5173112860507472104020046

0879843439021071778831452

5833863767520013605784245

9145579903583343520339812

8064354520488297392195137

0151999712635110999981045

79911889

99753059

𝑥2𝐴= 8390856028426583423575642

𝑥2𝐵= 1969713775008608165017598

0195594738973239975021122

5741162046793938758717015

0156035439034411906609383

9653662229662646939365996

5160877244885681164091374

6389067974847122576740536

4483504931342381990973640

8422621370357823343775162

PL-7

8105471902928864307807265

4145200437323609956486689

2172403474769099222704797

1210790776973701426934986

2937324885472597168802712

8508431895003555632948591

2443083870916608304115273

9137173198054583048633496

1773334522628223384795286

7449359021032447719389422

7517634412063817549196414

5578903860260123747304544

1090782577691212896647913

7173397321214878607918955

83114413

8402363

𝑘𝐴= 1380460033413275523532263

𝑘𝐵= 1398607975351177056632155

433203692609841903950707

414530849019747427114426

𝑛𝐴= 1396451795436071458612408

𝑛𝐵= 1169290561527370069559884

3487194858962800987662920

1279360820558527445718256

2322411669124402579557826

9996357385727538430742055

3459179080342727934188880

4127246500244642588752766

5695169901929908580478282

7643922450985149033514539

8532077458526818483310539

4404478573217751192945048

1381549188325845403224620

2056748427161872026000730

6035898076438082135546927

6525396477262021856353195

0363003086760193041846235

1083971274356912786562932

4349505582658045825387022

8277432027020200741021988

7820514908492072056164460

4240669359706040933860987

8066153879491289374799320

2342621106578584301183027

791669933

815908483

𝑅𝐴= 2955988558812470996872617 4376568314497192976050414

𝑅𝐵= 8053647540056501315986719 6228077333292516403867041

1106838965499670997190972

4139377861658384659606511

5972398040416386789396902

7363629857801815527434406

9338138149982081921323938

5958323000839745301577237

2425851504192457923619302

1513585601697836567480325

PL-8

5670740965678523930057322

0369255572911172380092063

1182963085805333021809789

2183701533450687607789816

2760405171560746412994813

4789798990410664151902130

0722573891416815217057316

6192367147790715818410408

0263191902772550845019264

2005836089312286985964086

8773412923741255772459478

9208496720604123082170122

33761747

74947739

𝑆𝐴= 1858976024991520099235790

𝑆𝐵= 1858976024991520099235790

0661241891429585846388853

0661241891429585846388853

3622690030339765300490307

3622690030339765300490307

3584631284642606339591637

3584631284642606339591637

4519030443290467731201289

4519030443290467731201289

0687982699604076650253539

0687982699604076650253539

8324668743635902760704222

8324668743635902760704222

8108218238898937923357551

8108218238898937923357551

7922375575043966075115795

7922375575043966075115795

8455302344257809704743531

8455302344257809704743531

7963791462565777940990627

7963791462565777940990627

3749227571272369876229965

3749227571272369876229965

73334703

73334703

𝐸𝐴1= 5562847522624110180081634

𝐸𝐵1= 7973653317756529264798868

2000712835983268596492199

1332197234941094052822243

2757429069888546829242618

2608057354614641950049634

8301551297159070533161047

9698991407606246509953875

3952870857837074834307624

0031906693698856099581980

1846680060671390777930235

6669712423206698540730688

361

6837

𝐸̅𝐵1= 7973653317756529264798868 1332197234941094052822243

𝐸̅𝐴1= 5562847522624110180081634 2000712835983268596492199

PL-9

2608057354614641950049634

2757429069888546829242618

9698991407606246509953875

8301551297159070533161047

0031906693698856099581980

3952870857837074834307624

6669712423206698540730688

1846680060671390777930235

6837

361

𝐾𝐴𝐵= 1203528883049614566525531

𝐾𝐵𝐴= 1203528883049614566525531

1165777729125164138143769

1165777729125164138143769

4639350360099867220855631

4639350360099867220855631

9454763083507546274658733

9454763083507546274658733

0710633684044341137793842

0710633684044341137793842

0427305079875758210065318

0427305079875758210065318

2491165825167367741419022

2491165825167367741419022

6112283239741406822324255

6112283239741406822324255

1897005126946046034880606

1897005126946046034880606

2481463362512282607410267

2481463362512282607410267

3919816787482516337442538

3919816787482516337442538

5624254645077568137922496

5624254645077568137922496

67701270

67701270

𝐸𝐴2= 2151354499420318665258618

𝐸𝐵2= 6735870777915530250618151

5752834946992653352418367

1651157722046631150925650

7664608422112974047504978

8978438763166312496778296

4149708384261777622181325

1554929248821334965287674

7189473366009611692332763

0024634870003497572761616

0154481197404448732828303

7002535007491879884837893

6019

3385

𝐸̅𝐵2= 6735870777915530250618151 1651157722046631150925650

𝐸̅𝐴2= 2151354499420318665258618 5752834946992653352418367

8978438763166312496778296

7664608422112974047504978

1554929248821334965287674

4149708384261777622181325

PL-10

0024634870003497572761616

7189473366009611692332763

7002535007491879884837893

0154481197404448732828303

3385

6019

Thời gian thực hiện: 1.71874720 giây

PL-11

PHỤ LỤC B. KẾT QUẢ THỬ NGHIỆM VỚI 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

- Các tham số dùng chung của hệ thống được A và B chọn như Phụ lục A:

- Giá trị của 𝑝:

1345138914957317796499482870931819691622574528203625066711814418202

5005490333621301410241987788779129667738191310926409655774085560347

5468394001214099237945965790924602952606681958402000920917256841256

2085191417804455359748415852002990089514777244849547677332639157829

63688377706992982329377840729812698428619

- Giá trị của 𝑞:

1330140545667637763477544100975371750758689958590120225287510268950

8795037171806723226868481227714844768489803555229296299835553887724

820102354826435279637

- Giá trị của 𝑔:

8291999391357153207541323890217263286639785250099143560787164749471

5404606027361432716813237636086223307150639302156431474736795344139

9312476079542272668774853924601571804554332206627808907816716472135

9473929554600209447810073877362048588551023959849680990578669703366

9686903424098245164588088343415574171113

- Giá trị của 𝑥:

1235270275397379877055207034212697487779686847060

- Giá trị của 𝑦:

3219730734604163957348103485082505041282555696210872220741170597143

2747833168471690198709577274211768925218289428517818634831590468683

5535102957078129503692844315332788307294894901005209052646297957149

9976446142206167371379121590712428957270647086529571897540173124772

073163990936295101995490661293867020387

a) Kiểm tra chữ ký (Thuật toán TT-K-01)

Input: 𝑝, 𝑞, 𝑔, 𝑥, 𝑀

Output: 𝐸, 𝑆

PL-12

- M = “THIS IS A NEW DIGITAL SIGNATURE ALGRITHM !”

- Giá trị của k:

1433613581663055673590566140391706674839159648027

- Giá trị của R tính được:

8476171549536214318471541105029066247598388991972166204169889050022

0286458843533044059514651203312196691616927243311434408977837226674

6013437969296039343500069683646409380862257879380881073314634067062

8704552408985124972273682788748437955609818107226677051880947872080

4728412506981674519673214034205962443383

- Giá trị của E tính được:

8142760429895553275190290565091482031083265091770636208862951814703

5040619158061910451987491549602884755292508328504828787855907260222

64302974648467180424

- Giá trị của S tính được:

3404995075538860653378871047223604749586059058389349584290738622796

8406112308894574075121820578387659198895714599384735313389491112367

71362970180992051445

Thời gian thực hiện: 0,00000127 giây

b) Kiểm tra chữ ký (Thuật toán TT-KT-01)

Input: p, q, g, n, y, M, (E,S)

+ Trường hợp 1: Chữ ký không bị giả mạo.

- Thông điệp cần kiểm tra:

M = “THIS IS A NEW DIGITAL SIGNATURE ALGRITHM !”

- Giá trị của 𝐸 cần kiểm tra:

8142760429895553275190290565091482031083265091770636208862951814703

5040619158061910451987491549602884755292508328504828787855907260222

64302974648467180424

- Giá trị của 𝑆 cần kiểm tra:

5373704513804968048790165883855412303643367944304999260530929228839

PL-13

3406557376247622468854681691364763438665189237065314050126557130231

2142216866995629001190676554840644099007295705912663001041293369863

6401313183523411765776685178212389210341188441072238805634134090743

0863808070423356799977034178448958761293 - Giá trị của 𝑅̅ tính được:

8476171549536214318471541105029066247598388991972166204169889050022

0286458843533044059514651203312196691616927243311434408977837226674

6013437969296039343500069683646409380862257879380881073314634067062

8704552408985124972273682788748437955609818107226677051880947872080

4728412506981674519673214034205962443383 - Giá trị của 𝐸̅ tính được:

8142760429895553275190290565091482031083265091770636208862951814703

5040619158061910451987491549602884755292508328504828787855907260222

64302974648467180424

Output: (E,S) = true.

Thời gian thực hiện: 0.01830720 giây

+ Trường hợp 2: Thông điệp bị giả mạo.

- Thông điệp cần kiểm tra:

M = “THIS IS A NEW DIGITAL SIGNATURE ALGRITHM”

- Giá trị của 𝐸 cần kiểm tra:

8814276042989555327519029056509148203108326509177063620886295181470

3504061915806191045198749154960288475529250832850482878785590726022

264302974648467180424

- Giá trị của 𝑆 cần kiểm tra:

5373704513804968048790165883855412303643367944304999260530929228839

3406557376247622468854681691364763438665189237065314050126557130231

2142216866995629001190676554840644099007295705912663001041293369863

6401313183523411765776685178212389210341188441072238805634134090743

0863808070423356799977034178448958761293

PL-14

- Giá trị của 𝑅̅ tính được:

6584890048542630100613357421368302325049064781936257655565349428894

5398494898569055555256555287410228515617278283322775426892802333919

0922279572504583324219856680661309284072034562902240097446551450312

6651798629022048849323834939669867975296531313322750618249695268147

641915972307654036597711916676369367416 - Giá trị của 𝐸̅ tính được:

1035560209526674299882451840162993647653636129433653875852714237159

7168152253564318716253614515968743440361616761399609065774774540675

661654141073224267538

Output: (E,S) = false.

Thời gian thực hiện: 0.03124860 giây

+ Trường hợp 3: Thành phần S của chữ ký bị giả mạo.

- Thông điệp cần kiểm tra:

M = “THIS IS A NEW DIGITAL SIGNATURE ALGRITHM !”

- Giá trị của 𝐸 cần kiểm tra:

8814276042989555327519029056509148203108326509177063620886295181470

3504061915806191045198749154960288475529250832850482878785590726022

264302974648467180424

- Giá trị của 𝑆 cần kiểm tra:

5373704513804968048790165883855412303643367944304999260530929228839

3406557376247622468854681691364763438665189237065314050126557130231

2142216866995629001190676554840644099007295705912663001041293369863

6401313183523411765776685178212389210341188441072238805634134090743

0863808070423356799977034178448958761291 - Giá trị của 𝑅̅ tính được:

2527058043344875800769210971948638843120430738297925857095913469990

2511488107425144801614060302454449116387237073692705850886398304121

9159803312454495220205061788263028455090806659217796478296356930285

PL-15

9794066630978815230500292740870131247838354764394789004226887440040

1270983382418900920094168382911264177449 - Giá trị của 𝐸̅ tính được:

1140389576934949976712123966273600768546962925656012066240558735887

2300210689291044206595388645082494145997728968491204528549636077138

285911442872473915039

Output: (E,S) = false.

Thời gian thực hiện: 0.03139290 giây

c) Trao đổi khóa (Thuật toán TT-TDK-01)

Tính

A

B

𝑥𝐴= 8762307541842128510635890

𝑥𝐵= 1124008447007012985357044

90477588628851643567029

919684832250251525390411

𝑦𝐴= 8362897980035546191852732

𝑦𝐵= 4585860306929612341663441

7860646039266367433852017

7912106743016536585474432

8932232901769080408477975

4106053134650571879192215

3076402768235148370559368

7339438518252635917276467

2556601404350117694818409

6154109090495464458314460

1761222407758455122782217

3722676445783415308139678

1490269220779975135033699

4965475075346039172730679

2318806058340632945409986

7148167274678814880830623

8209879087594361066321379

2770905044307096977203301

3952864618432511795935930

1235501822274971250143014

5497321183851743051840885

2319287942157987492356425

5152179366608661708858994

0307531926840487965545639

48411301

13537029

𝑘𝐴= 1435322781757310450021163

𝑘𝐵= 1319675154731866684475745

962491622201860937753336

735551200939747231925710

𝑛𝐴= 7196852340121058980382240

𝑛𝐵= 6036544463246942263093726

1818439351037448621420266

7756179494415532124313424

PL-16

7088150996315283565913561

0338769385862659832584178

1969309841559639665351488

3524860062560793754492274

4946880381172230070723543

9503141838477104879670662

0762538712948105686139222

7080929569829984140727662

3940630030942946556968658

5717649646302793294235390

5749782751795586836187193

0064139475079144234484865

8948814430224629495714612

8347146581340578087676241

5845496961489634843760932

5523738161465720156292181

5685718025171295405095982

6858283658100643811127475

3741254605246731019904272

9542381057055262774396335

01357391

34297503

𝑅𝐴= 1639951957233213850976910

𝑅𝐵= 3487921850696218440780523

5543826149945590219859031

1441590853586744984848623

9590519258064055336750305

9129928888250666545931830

5074638398125913093390495

2656369732545726102562797

7811923415949344478151664

9472341412954647905266987

7093753461080766249348254

9390190226454340524834852

6258917607247138768248308

2930357326752521310692073

3056489312098395943535028

6778530903112004417652099

2859617873455165736965716

5101842906859686866613260

4069944416217226551399005

2475743099991215649009434

0120430924369731245782446

4750581768395256273244764

1795766444953390590005083

4615288547234593511564107

97322282

97061960

𝑆𝐴= 2672612837755164322894887

𝑆𝐵= 2672612837755164322894887

0327667708162636946288856

0327667708162636946288856

6530912962977851355732787

6530912962977851355732787

5275512319457955395779541

5275512319457955395779541

1996170745592933972306261

1996170745592933972306261

PL-17

0907066003825621820843050

0907066003825621820843050

1764450960268614059756158

1764450960268614059756158

0474741212987332160306845

0474741212987332160306845

4212808450998583718188249

4212808450998583718188249

1244947350107707842601281

1244947350107707842601281

2724969967063223992993326

2724969967063223992993326

1760288163371236229499486

1760288163371236229499486

98583348

98583348

𝐸𝐴1= 1041113075954177765883422

𝐸𝐵1= 9061018595086928908968876

1309507841474706506239053

6795238062702126756982073

3984422958078891014873779

6666859728160534203778870

3131412744927761426784396

0580253690449005119044044

0895748237762953730574704

7689049455499981436573566

9808517296744668739832430

4095921048625161622195720

69438

1144

𝐸̅𝐵1= 9061018595086928908968876 6795238062702126756982073

𝐸̅𝐴1= 1041113075954177765883422 1309507841474706506239053

6666859728160534203778870

3984422958078891014873779

0580253690449005119044044

3131412744927761426784396

7689049455499981436573566

0895748237762953730574704

4095921048625161622195720

9808517296744668739832430

1144

69438

𝐾𝐴𝐵= 5734843018147528758326605

𝐾𝐵𝐴= 5734843018147528758326605

6417920412176397587555830

6417920412176397587555830

6750574538350235387629929

6750574538350235387629929

6371903196266694119042057

6371903196266694119042057

3903121617738114189287111

3903121617738114189287111

7971110850097055127634018

7971110850097055127634018

9818323662811389408470429

9818323662811389408470429

PL-18

8582930371638166037436281

8582930371638166037436281

6163828628957955880873572

6163828628957955880873572

4762802925884004663140789

4762802925884004663140789

5768249193801911785074787

5768249193801911785074787

5557183090807469776336306

5557183090807469776336306

47826249

47826249

𝐸𝐴2= 3047529537602895610722534 1117334220252471479447388

𝐸𝐵2= 3047529537602895610722534 1117334220252471479447388

2109247467274965766242729

2109247467274965766242729

2321686903488217595710053

2321686903488217595710053

6636246903955053508406731

6636246903955053508406731

8251416976286111617439587

8251416976286111617439587

5301

5301

Thời gian thực hiện: 1.64946 giây