DANH MỤC HÌNH VẼđược gửi đến q, mã hóa vớimỗi i điểm đến và q xác minhHình 2.3 Ở bước 2 phần b của giao thức mở rộng, Trang 45 các nút được cung cấp có thể giải mã; họ tổng hợp và gửi kế
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
——————————————–
VŨ MẠNH ĐẠT
NGHIÊN CỨU MỘT SỐ GIAO THỨC TÍNH TOÁN
ĐA BÊN AN TOÀN SỬ DỤNG MÃ ĐỒNG CẤU
LUẬN VĂN THẠC SĨ TOÁN HỌC
HÀ NỘI, 2017
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
——————————————–
VŨ MẠNH ĐẠT
NGHIÊN CỨU MỘT SỐ GIAO THỨC TÍNH TOÁN
ĐA BÊN AN TOÀN SỬ DỤNG MÃ ĐỒNG CẤU
Chuyên ngành: Toán ứng dụng
Mã số: 60 46 01 12
LUẬN VĂN THẠC SĨ TOÁN HỌC
Người hướng dẫn khoa học: TS Trần Văn Dũng
HÀ NỘI, 2017
Trang 3Luận văn được hoàn thành tại trường Đại học Sư phạm Hà Nội 2 dưới sựhướng dẫn của TS Trần Văn Dũng.
Tác giả xin bày tỏ lòng biết ơn sâu sắc nhất tới TS Trần Văn Dũng, giảngviên trường Đại học GTVT Hà Nội đã nhiệt tình giúp đỡ, trực tiếp chỉ bảohướng dẫn để tác giả hoàn thành luận văn này
Tác giả xin bày tỏ lòng biết ơn chân thành tới Phòng Sau đại học, các thầy
cô giáo dạy cao học chuyên ngành Toán Ứng dụng trường Đại học Sư phạm
Hà Nội 2 đã giúp đỡ tác giả trong suốt quá trình học tập
Cuối cùng tác giả xin gửi lời cảm ơn chân thành đến gia đình, bạn bè, ngườithân đã luôn động viên và khuyến khích, tạo mọi điều kiện thuận lợi cho tácgiả trong quá trình học tập và hoàn thành luận văn
Hà Nội, 15 tháng 07 năm 2017
Tác giả luận văn
Vũ Mạnh Đạt
Trang 4Tôi xin cam đoan rằng những số liệu và kết quả nghiên cứu trong luận vănnày là trung thực, không trùng lặp với các luận văn khác Tôi cũng xin camđoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn này đã được cảm ơn
và các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc
Tác giả luận văn
Vũ Mạnh Đạt
Trang 5Lời mở đầu 3
1.1 Số học Mudulo 5
1.1.1 Các số nguyên tố và các số nguyên tố cùng nhau 5
1.1.2 Số học trong lớp số dư 7
1.1.3 Lý thuyết về đồng dư 7
1.1.4 Các số nguyên modulo n 8
1.1.5 Hàm Euler, định lý Euler, định lý Fermat 8
1.1.6 Thuật toán Euclide mở rộng 10
1.1.7 Định lý phần dư Trung Hoa 12
1.1.8 Căn nguyên thuỷ và logarit rời rạc 15
1.2 Mã hóa công khai RSA 19
1.2.1 Mô tả sơ lược 19
1.2.2 Mã hóa 20
1.2.3 Giải mã 21
1.2.4 Tính đúng đắn của thuật toán RSA 21
1.3 Chữ ký điện tử DSA 23
1.3.1 Khái niệm 23
1.3.2 Tạo khóa DSA 23
Trang 61.3.3 Tạo chữ ký DSA 24
1.3.4 Xác nhận chữ ký DSA 24
1.3.5 Tính đúng đắn của thuật toán DSA 24
1.4 Mã hóa ElGamal và mã hóa Paillier 26
1.4.1 Hệ mã hóa ElGamal 26
1.4.2 Hệ mã hóa Paillier 28
1.5 Mã hóa đồng cấu 30
1.5.1 Khái niệm 30
1.5.2 Tính chất đồng cấu 30
Chương 2 TÍNH TOÁN ĐA BÊN AN TOÀN DỰA TRÊN MÃ ĐỒNG CẤU 32 2.1 Các khái niệm và mô hình 32
2.1.1 Các khái niệm 32
2.1.2 Các mô hình 33
2.2 Giao thức Sigma 35
2.2.1 Giao thức định danh Schnorr 35
2.2.2 Giao thức Chaum - Pedersen 37
2.2.3 Giao thức “Hoặc" 37
2.3 Giao thức tổng 39
2.3.1 Đặt vấn đề 39
2.3.2 Mô hình tấn công thụ động 40
2.3.3 Mật mã cơ bản 41
2.3.4 Mô hình tấn công chủ động 42
2.4 Giao thức cực đại 46
2.4.1 Các vấn đề 46
Trang 72.4.2 Giao thức 1 47
2.4.3 Giao thức 2 50
2.4.4 Thảo luận cho các mô hình tấn công chủ động 51
Chương 3 MỘT SỐ VÍ DỤ TÍNH TOÁN ĐA BÊN AN TOÀN 54 3.1 Tính toán giao thức Sigma 54
3.1.1 Ví dụ giao thức định danh Schnorr 54
3.1.2 Ví dụ giao thức Chaum – Pedersen 56
3.1.3 Ví dụ giao thức “Hoặc” 57
3.2 Một số tính toán số học đa bên 58
3.2.1 Tính toán trong giao thức tổng 58
3.2.2 Chứng minh tính hợp lệ của bản rõ sử dụng khóa công khai Elgamal 66
3.3 So sánh đa bên an toàn 70
3.3.1 Mã đồng cấu với tính vô hướng 70
3.3.2 Mã hóa 0 và mã hóa 1 71
3.3.3 Giao thức 73
3.4 Đánh giá an toàn 76
Trang 8DANH MỤC KÍ HIỆU, TỪ VIẾT TẮT
(Ron Rivest, Adi Shamir và Len Adleman)
(Digital Signature Algorithm)
(Multi Party Computation)
(Zero - Knowledge Proofs)
không tiết lộ thông tin(Set Membership – Zero Knowledge Proofs)
9 ZKPs (P E − ZKP ) Kiểm tra sự bằng nhau của hai bản rõ
không tiết lộ thông tin(Plaintext Equality - Zero Knowledge Proofs)
(Decisional Diffie Hellman)
Trang 9DANH MỤC HÌNH VẼ
được gửi đến q, mã hóa vớimỗi i (điểm đến) và q (xác minh)Hình 2.3 Ở bước 2 phần (b) của giao thức mở rộng, Trang 45
các nút được cung cấp có thể giải mã;
họ tổng hợp và gửi kết quả đến qbằng cách tái mã hóa các thông điệp
Hình 2.6 Sự so sánh thông qua giá trị nhị phân Trang 50Hình 2.7 Thứ tự của các nguy cơ bị rủi ro của một Trang 51
phủ định sai đối với số lượng khác nhau củacác bit cho tối đa và cho các giá trị ngẫu nhiênHình 2.8 Tính toán giá trị là 11111b thay vì 11010b Trang 52
Trang 10LỜI MỞ ĐẦU
1 Lý do chọn đề tài
Trong cuộc sống ngày nay, công nghệ thông tin và truyền thông đã có mặt
ở nhiều phương diện trong cuộc sống hàng ngày của chúng ta, giờ đây điệnthoại di động, máy tính để bàn, thư điện tử và việc sử dụng Internet đã trởthành tâm điểm trong văn hóa và cộng đồng của chúng ta, qua đó nhu cầutrao đổi thông tin dữ liệu giữa các công ty, cơ quan, doanh nghiệp ngàycàng cao Trong quá trình trao đổi thông tin thì vấn đề bảo mật thông tin
là một trong những vẫn đề được đặt lên hàng đầu, tuy nhiên trong quátrình trao đổi giữa các bên vẫn còn có các mạng bị tấn công, bị những kẻgian lận đánh cắp thông tin, gây những ra tổn thất nặng nề Khi đó nhucầu về bảo mật thông tin giữa các bên phải được an toàn tuyệt đối Do đó
nó đảm bảo việc tính toán đa bên được an toàn
Giao thức tính toán đa bên an toàn sử dụng mã đồng cấu không phải
là một lĩnh vực mới mẻ của an toàn bảo mật thông tin, nhưng hứa hẹn
sẽ mang đến những ứng dụng rộng khắp ở tất cả các lĩnh vực, các ngànhnghề cần được đảm bảo giữ bí mật riêng tư, khi có nhiều bên cùng thamgia giải quyết một bài toán chung
Mã đồng cấu là loại mã cho phép tái hiện lại việc kết hợp trên các bản
rõ thành phần, khi ta dùng kết quả kết hợp các bản mã tương ứng củachúng Từ đó, mỗi người tham gia có thể mã hoá đầu vào của mình và từkết quả kết hợp các bản mã thành phần đó có thể biết được kết quả củabài toán chung Đó là ý tưởng của các giao thức tính toán đa bên an toàn
Trang 11dùng mã đồng cấu.
Được sự gợi ý của TS Trần Văn Dũng hướng dẫn và nhận thấy tínhthiết thực của vấn đề em đã chọn đề tài “Nghiên cứu một số giao thức tínhtoán đa bên an toàn sử dụng mã đồng cấu” để làm nội dung cho luận văn
2 Mục đích nghiên cứu
Tìm hiểu một số giao thức tính toán đa bên an toàn dựa trên mã đồngcấu, cơ sở an toàn của chúng
3 Nhiệm vụ nghiên cứu
Hiểu cơ sở toán học của mã công khai có tính chất đồng cấu và việc ápdụng chúng để giải một số bài toán tính toán đa bên an toàn
4 Đối tượng và phạm vi nghiên cứu
4.1 Đối tượng nghiên cứu
Nghiên cứu cơ sở toán học của mã công khai, các giao thức an ninh.4.2 Phạm vi nghiên cứu
Nghiên cứu trên cơ sở toán học, trường số modulo, mã đồng cấu, các giaothức đa bên an toàn
5 Dự kiến đóng góp mới của đề tài
Tóm tắt về mã công khai, mã đồng cấu, trình bày một số giao thức đabên an toàn sử dụng mã đồng cấu Nêu các bước chi tiết của các giao thứcthông qua các số liệu của riêng mình
6 Phương pháp nghiên cứu
Nghiên cứu cơ sở lý thuyết của các giao thức và áp dụng vào trường sốmodulo để tính toán giải các bài toán
Trang 12CÁC KIẾN THỨC CƠ SỞ
Trong chương 1 luận văn trình bày những kiến thức cơ sở quan trọng
để áp dụng vào các thuật toán, giao thức chia sẻ thông tin bí mật Cụ thểluận văn đề cập đến một số định nghĩa cơ bản trong số học Modulo như: sốnguyên tố, nguyên tố cùng nhau, lý thuyết về đồng dư, , và các định lýquan trọng để áp dụng giải các bài toán về đồng dư trong các thuật toán,giao thức như: định lí Euler, định lí Fermat, định lí phần dư Trung Hoa.Ngoài ra luận văn cũng giới thiệu về logarit rời rạc và căn nguyên thuỷ,một số giao thức mã hóa công khai như: RSA, DSA, Elgamal
1.1 Số học Mudulo
1.1.1 Các số nguyên tố và các số nguyên tố cùng nhau
Ta nói rằng b (một số khác 0) là ước số của a nếu a = mb, với một giátrị m nào đó, ở đây a, b, m là các số nguyên Như vậy, b là ước số của a,nếu như chia a cho b không còn lại số dư Để kí hiệu b là ước số của athường sử dụng cách viết b| a
Có các quan hệ sau:
Trang 13Một số nguyên bất kỳ s > 1 có thể phân tích thành các thừa số và đượctrình bày dưới dạng: s = pα1
ii) Ước số bất kỳ của a và b đều là ước số của c
Khi đó ước chung lớn nhất của hai số a và b được ký hiệu là: gcd(a, b) hoặc
U CLN (a, b) Theo định nghĩa ta có c = gcd(a, b) hoặc c = U CLN (a, b)
Số nguyên a và b được gọi là hai số nguyên tố cùng nhau, nếu ước chunglớn nhất của chúng bằng 1
Nhận xét:
(1) UCLN của hai số nguyên là một số dương, bởi vì:
gcd(a, b) = gcd(a, −b) = gcd(−a, b) = gcd(−a, −b)
(2) Vì tất cả các số nguyên khác không đều là ước số của số 0, chúng taluôn luôn có: gcd(a, 0) = |a|
(3) Số 1 là nguyên tố cùng nhau với mọi số nguyên
(4) Một số nguyên tố là một cặp số nguyên tố với tất cả những số khácloại trừ những số là bội của số đó
Trang 14(5) Cho n số nguyên a1, a2, , an Các số này được gọi là nguyên tố cùngnhau nếu ước chung lớn nhất của n số đó bằng 1.
(6) Nếu a và b là hai số nguyên tố cùng nhau, khi đó tồn tại các số nguyên
Trang 151.1.4 Các số nguyên modulo n
Các số nguyên modulo n (ký hiệu Zn) là tập hợp các số nguyên {0, 1, 2, , n − 1}bao gồm 2 phép toán cộng và nhân Việc cộng và nhân trong Zn được thực
hiện giống như cộng và nhân các số nguyên, ngoại trừ một điểm là các kết
quả trung gian và cuối cùng sẽ được rút gọn theo modulo n
Các định nghĩa trên phép cộng và phép nhân trong Zn thoả mãn hầu hết
các quy tắc quen thuộc trong số học Sau đây ta sẽ liệt kê mà không chứng
minh các tính chất này:
(1) Phép cộng là đóng: a + b ∈ Zn, ∀a, b ∈ Zn
(2) Phép cộng có tính chất giao hoán: a + b = b + a, ∀a, b ∈ Zn
(3) Phép cộng có tính chất kết hợp: (a + b) + c = a + (b + c), ∀a, b, c ∈ Zn
(4) 0 là phần tử đơn vị của phép cộng: a + 0 = 0 + a = a, ∀a ∈ Zn
(5) Phần tử đối của phép cộng của một phần tử bất kì a ∈ Zn là −a, tức
là: a + (−a) = (−a) + a = 0
(6) Phép nhân là đóng: a × b ∈ Zn, ∀a, b ∈ Zn
(7) Phép nhân có tính chất giao hoán: a × b = b × a, ∀a, b ∈ Zn
(8) Phép cộng có tính chất kết hợp: (a × b) × c = a × (b × c), ∀a, b, c ∈ Zn
(9) 1 là phần tử đơn vị của phép nhân: a × 1 = 1 × a = a, ∀a ∈ Zn
(10) Phép nhân có tính chất phân phối đối với phép cộng:
(a + b) × c = a × c + b × c; a × (b + c) = a × b + a × c, ∀a, b, c ∈ Zn
1.1.5 Hàm Euler, định lý Euler, định lý Fermat
Định nghĩa 1.2 Cho n là số nguyên dương, đặt ϕ(n) là số các phần tử
của tập hợp các số nguyên trong khoảng [1, n] mà nguyên tố cùng nhau với
n, thì ϕ(n) gọi là hàm Euler
Trang 16Ta công nhận một số tính chất quan trọng của hàm Euler:
xia, với i ∈ 1, ϕ(n) Bởi vì a nguyên tố cùng nhau với n và xi nguyên
tố cùng nhau với n, nên tích xia cũng nguyên tố cùng nhau với n, do
đó có xia ≡ xj mod (n), chú ý rằng các phần dư của phép chia xia cho
n là khác nhau Nếu điều này không đúng, có nghĩa là tồn tại i1 6= i2,sao cho: xi1a ≡ xi2a mod (n), cho nên (xi1 − xi2)a ≡ 0 mod n Bởi vì
a nguyên tố cùng nhau với n, nên biểu thức cuối cùng tương đương với:
Hệ quả 1.1 Cho n > 1, gcd(a, n) = 1, và ϕ(n) là hàm Euler Khi đó ta
Trang 17Hệ quả 1.2 Cho a ∈ Z p là số nguyên tố, thì ta có: ap ≡ a mod p
1.1.6 Thuật toán Euclide mở rộng
Định nghĩa 1.3 (phần tử nghịch đảo)
Cho a ∈ Zn, phần tử nghịch đảo của a là phần tử b ∈ Zn sao cho a × b ≡
b × a ≡ 1 mod n Kí hiệu phần tử nghịch đảo của a là a−1 mod nĐịnh lý 1.3 Cho số nguyên a > 0 nguyên tố cùng nhau với n, thì luôntồn tại phần tử nghịch đảo của a theo modulo n
Chứng minh: Xét tập hợp S = {1, 2, , n − 1} (n ≥ 2) Nhân từngphần tử của tập hợp S với a theo modulo n, nhận được tập hợp:
S0 = {a mod n, 2a mod n, , (n − 1)a mod n)}
Nhận thấy tập S0 bao gồm các số 1, 2, 3, , (n − 1) (vì khi chia cho n thì
số dư trong phép chia nhỏ hơn n), khi đó sẽ tồn tại một số b ∈ S sao cho(b × a) mod n = 1
Ta đi chứng minh b là duy nhất Thật vậy: Giả sử tìm được hai số b; b0 ∈ S,sao cho (b × a) mod n = 1 và (b0× a) mod n = 1 Mặt khác do a là nguyên
tố cùng nhau với n (giả thiết) nên tồn tại số nguyên x và y sao cho:
a × x + n × y = 1 Nhân cả hai vế a × x + n × y = 1 với b rồi lấy modulo
Trang 18n ta được: (b × a × x) mod n + (b × n × y) mod n = b mod n Suy ra
x = b mod (n) Nhân cả hai vế a × x + n × y = 1 với b0 rồi lấy modulo
n ta được: (b0 × a × x) mod n + (b0 × n × y) mod n = b0 mod n Suy ra
x = b0 mod n
Từ đó suy ra: b mod n = b0 mod n, mặt khác b; b0 ∈ S nên suy ra b = b0
Hệ quả 1.3 Nếu như p là số nguyên tố, thì bất kỳ số a, 0 < a < p, luôntồn tại phần tử nghịch đảo theo modulo p
Thuật toán Euclide mở rộng (tìm phần tử nghịch đảo)
Ta chia a cho b theo thuật toán Euclide như sau:
rk = a × x + b × y Nếu như gcd(a, b) = 1, tức là a × x + b × y = 1, theođịnh lý trên thì khi đó y là phần tử nghịch đảo của b theo modulo a hay
262 5 + 23 55 = 23 57 – 262 5
Nên phần tử nghịch đảo của 23 modulo 262 là 57, hay 23−1 mod 262 = 57
Trang 19Chú ý: Có thể tìm phần tử nghịch đảo được trình bày dưới bảng sau:
Nên phần tử nghịch đảo của 23 modulo 262 là 57, hay 23−1 mod 262 = 57
Định lý 1.4 Giả sử cho các số n1, n2, , nk là các số nguyên dương nguyên
tố cùng nhau từng đôi một và c1, c2, , ck là các số nguyên khi đó hệ phươngtrình đồng dư:
Ta có Ni chia hết cho ns, khi s 6= i Điều này dẫn đến x0 ≡ Ni(Ni−1 mod
ni)ci(modni), từ đó x0 ≡ ci(modni) Điều này có nghĩa hệ trên tương
Trang 20đương với hệ sau:
Điều này tương đương với một phương trình sau: x ≡ x0 mod n Mà ta
đã biết phương trình này có nghiệm duy nhất là: x ≡ x0 mod n
Ví dụ 1.2 Giải hệ phương trình đồng dư sau:
Ta có n = 7×13×17 = 1547; N1 = n7 = 221; N2 = 13n = 119; N3 = 17n = 91
Ta đi tính phần tử nghịch đảo của Ni theo modulo ni
221−1 mod 7 = 2; 119−1 mod 13 = 7; 91−1 mod 17 = 3
Khi đó ta có được nghiệm của hệ phương trình là:
x = (6 × 221 × 2 + 8 × 119 × 7 + 9 × 91 × 3) mod 1547 = 944
Ngoài ra để tính toán nhanh modulo khi sử dụng định lý phần dư TrungHoa, người ta dùng thuật toán "bình phương và nhân" Nội dung của thuậttoán như sau: Để tính z = xb mod n, ta coi rằng số mũ b được biểu thị
ở dạng nhị phân như sau:
Trang 21Bước 1: Giá trị ban đầu z = 1
Trang 221.1.8 Căn nguyên thuỷ và logarit rời rạc
Định nghĩa 1.4 (Căn nguyên thuỷ)
s được gọi là căn nguyên thuỷ của n, nếu s nguyên tố cùng nhau với n vànhóm cyclic sinh bởi s trong modulo n trùng với tập số nguyên dương nhỏhơn n: s mod n, s2 mod n, , sϕ(n) mod n = {1, 2, , (n − 1)}
Nói cách khác, một căn nguyên thủy s modulo n là một số nguyên a màmọi số nguyên không có ước chung với n ngoài các lũy thừa của s (modulon)
Ví dụ 1.4 Cho n = 10, khi đó nhóm với phép nhân modulo n gồm các sốnguyên mà nguyên tố cùng nhau với n là: (Z10)∗ = {m ∈ Z∗|gcd (m, 10) = 1}.Nhóm Z10 là nhóm cyclic vì 10 = 2 × 51
Suy ra các phần tử của Z10 là các lớp đồng dư của 1, 3, 7, 9, trong đó
s = 3 và s = 7 là các căn nguyên thủy modulo 10 vì:
9 không phải là căn nguyên thủy modulo 10 vì:
92 mod 10 = 1; 93 mod 10 = 9; 94 mod 10 = 1; 95 mod 10 = 9
(khi tăng chỉ số mũ của 9k mod 10 thì ta được kết quả là các phần tử chỉ
Trang 23thuộc các lớp đồng dư của 1 và 9, không phải là phần tử của lớp đồng dư
Bài toán logarit trên trường số thực
Cho hai số dương x, y và cơ số a > 0; a 6= 1 thỏa mãn đẳng thức y = axthì x được gọi là logarit cơ số a của y Kí hiệu x = logay
Một số tính chất của logarit:
Tính chất 1 loga1 = 0; logaa = 1 (0 < a 6= 1)
Tính chất 2 logaβbα = αβ × logab (a, b > 0, a 6= 1, β 6= 0)
Tính chất 3 loga(b.c) = loga|b| + loga|c| và loga(bc) = loga|b| − loga|c|Tính chất 4 logab = log1
b a
Bài toán logarit trên trường hữu hạn
Cho p là một số nguyên tố và s là một căn nguyên thủy trên trường Fp∗ x
là phần tử của Fp∗ Bài toán logarit rời rạc theo mod p là bài toán tìm, với
x là phần tử của Fp∗, một số y (1 ≤ y ≤ p − 1) sao cho x = sy mod p, tức
Trang 2411 mod 13, khi đó bài toán logarit rời rạc là bài toán nghịch, tức là tìm xsao cho thỏa mãn: 7x ≡ 11 mod 13
(3) Logarit rời rạc có ứng dụng trong hệ mã hóa ElGamal
Cách tính logarit rời rạc
Bài toán đặt ra: Cho p là số nguyên tố, s là phần tử nguyên thủy theo mod
p, với x là phần tử của Fp∗ Tính y = logsx mod p
* Thuật toán “Duyệt toàn bộ”
Ta đi duyệt các số y từ 1 đến (p − 1), cho đến khi tìm được y thỏa mãn
y = logsx(modp) Tất nhiên thuật toán này không hiệu quả khi p là sốnguyên tố rất lớn
Ví dụ 1.5 Chọn p = 11, dễ thấy s = 2 là một căn nguyên thủy theomodulo 11
Xét bài toán thuận sau: Cho s = 2, p = 11 Tính x = 2y mod 11
Ta xét bảng sau:
Từ kết quả bảng trên ta có nhận xét sau:
i) Vì s=2 là căn nguyên thủy nên kết quả của x = 2y mod 11 đi qua hếtcác phần tử của lớp đồng dư Z11
ii) Từ kết quả của x ta nhận thấy: 2 × 6 = 12 ≡ 1 mod 11; 4 × 3 = 12 ≡
1 mod 11; 8 × 7 = 56 ≡ 1 mod 11; 5 × 9 = 45 ≡ 1 mod 11; suy ra các phần
tử nguyên thủy của modulo 11 là: {s} = {2; 3; 4; 5; 6; 7; 8; 9}, tương ứng có
4 cặp nghịch đảo
Xét bài toán nghịch sau: Cho s=2, p=11 Tính y = log28(mod11)
Trang 25Từ bảng tính ở trên, ta có các giá trị ngược sau:
Kết luận: Vậy y = log28(mod11) = 3
* Thuật toán “Shanks” [1, tr.52]
Đặt m = √p − 1 Ta tìm y có dạng y = mj + i (0 ≤ i, j ≤ m − 1).Khi đó: y = logsx mod p ⇔ x ≡ sy mod p ⇔ x ≡ smj+i mod p ⇔ x.s−i ≡
smj mod p
Ta lập hai danh sách gồm các cặp (i, x.s−i) và (j, smj) với 0 ≤ i, j ≤ m − 1.Nếu kết quả trong hai danh sách có hai phần tử bằng nhau thì ta được kếtquả y = mj + i, hay chính là giá trị y = logsx mod p cần tìm
Nhận xét: Thuật toán “Shanks” sẽ hiệu quả khi p là số nguyên tố nhỏ, cònđối với p là số nguyên tố lớn thì việc lập hai danh sách sẽ gặp khó khăn vì
có nhiều trường hợp của i và j Cho nên bài toán logarit rời rạc là một bàitoán khó
Ví dụ 1.6 Cho s=2, p=11 Tính y = log28(mod11)
Lời giải:
Ta có m = √p − 1 = √11 − 1 = 3 Tìm y có dạng y = 3j + i (0 ≤
i, j ≤ 2) Ta lập hai danh sách gồm các cặp (i, 8 × 2−i) và (j, 23j) với
Trang 261.2 Mã hóa công khai RSA [7, tr.172]
1.2.1 Mô tả sơ lược
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) vàkhóa bí mật (hay khóa cá nhân) Mỗi khóa là những số cố định sử dụngtrong quá trình mã hóa và giải mã Khóa công khai được công bố rộng rãicho mọi người và được dùng để mã hóa Những thông tin được mã hóabằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng.Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa
cá nhân (bí mật) mới có thể giải mã được
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênhkhông an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiêncần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theocác bước sau:
Bước 1 Chọn 2 số nguyên tố lớn p và q, lựa chọn ngẫu nhiên và độc lậpBước 2 Tính N = p.q
Trang 27Bước 3 Tính giá trị hàm số Ơle: ϕ(N ) = (p − 1).(q − 1)
Bước 4 Chọn số tự nhiên e sao cho 1 < e < ϕ(N ) và gcd(e, ϕ(N )) = 1Bước 5 Tính d sao cho d.e ≡ 1 mod ϕ(N ) hay d = e−1 mod ϕ(N )
Khi đó khóa công khai là: {e, N } và mod (số e còn gọi là số mũ công khai)
và khóa bí mật là: {d, p, q} (số d còn gọi là số mũ bí mật, hay số mũ giảimã) Sau khi Alice tạo khóa công khai và khóa bí mật thì Alice gửi khóacông khai cho Bob, và giữ bí mật khóa cá nhân của mình Ở đây, p và qgiữ vai trò rất quan trọng Chúng là các phần tử của n và cho phép tính dkhi biết e Nếu không sử dụng dạng sau của khóa bí mật thì p và q sẽ đượcxóa ngay sau khi thực hiện xong quá trình tạo khóa Có thể mô phỏng quátrình RSA qua sơ đồ sau:
Hình 1.1: Sơ đồ mã hóa công khai RSA
Sau khi Alice gửi khóa công khai cho mọi người, giả sử Bob muốn gửiđoạn thông tin M cho Alice thì Bob mã hóa thông tin M qua các bước sau:Bước 6 Đầu tiên Bob chuyển M thành một số m < N theo một hàm có
Trang 28thể đảo ngược (từ m có thể xác định lại M ) được thỏa thuận trước.
Bước 7 Tính c là bản mã của m theo công thức: c = me mod N
Tính được giá trị c thì Bod gửi c cho Alice
1.2.3 Giải mã
Bước 8 Alice nhận giá trị c từ Bob và biết khóa bảo mật {d, p, q}.Alice có thể tìm được m từ c theo công thức sau: m = cd mod N
Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước
Theo bước 5 ta có ed ≡ 1 mod (p−1)(q −1) nên ed có thể biểu diễn dướidạng sau: ed = 1 + k(p − 1)(q − 1) (k ∈ Z), mặt khác theo định lí Euler
ta có: m(p−1)(q−1) ≡ 1 mod N , do đó cd = (me)d = med = m1+k(p−1)(q−1) =
m × (m(p−1)(q−1))k, suy ra cd mod N = m × (m(p−1)(q−1))k(modN ) = m
Ví dụ 1.7 Alice sử dụng mã hóa công khai RSA để gửi thông điệp M choBob, quá trình gửi như sau:
Tạo cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:
Bước 1 Chọn 2 số nguyên tố p = 67 và q = 47
Bước 2 Tính N = p.q = 67.47 = 3149
Bước 3 Tính giá trị hàm số Ơle: ϕ(N ) = (p − 1).(q − 1) = 66 × 46 = 3036Bước 4 Chọn e = 101 thỏa mãn e ∈ (1, ϕ(N )) và gcd(101, 3036) = 1Bước 5 Tính d thỏa mãn d = e−1 mod ϕ(N ) = 101−1 mod 3036 = 2525(sử dụng thuật toán Euclide mở rộng)
Khi đó khóa công khai {e, N } = {101, 3036} và khóa bí mật {d, p, q} ={2525, 67, 47}
Trang 29Bob sử dụng khóa công khai của Alice để mã hóa thông điệp M gửi choAlice qua các bước:
Bước 6 Bob chuyển M thành một số m = 203 (thỏa mãn m < N ) theomột hàm có thể đảo ngược được thỏa thuận trước
Bước 7 Tính bản mã c = me mod N = 203101 mod 3149 = 3078
Khi đó Bob gửi giá trị c = 3078 cho Alice
Bước 8 Alice dùng khóa riêng của mình để giải mã như sau (sử dụng định
lí phần dư Trung Hoa): m = cd mod N = 30782525 mod 3149 = 203
Biết m = 203, Alice tìm lại M theo phương pháp đã thỏa thuận trướcNhận xét:
(1) Giải mã hiệu quả
Như chúng ta thấy qua ví dụ trên, nếu biết N = p.q, thì ta có thể giải mãnhanh bằng cách sử dụng định lý phần dư Trung Hoa tính toán theo cácmodulo p và q Sau đó kết hợp lại để tìm ra bản rõ Vì ở đây người sử dụng
sở hữu khóa riêng, nên biết được p và q, do đó có thể sử dụng kỹ thuậtnày Nếu sử dụng định lý phần dư Trung Hoa để giải mã thì hiệu quả lànhanh rất nhiều lần so với giải mã tính trực tiếp
(2) Sinh khóa RSA
Người sử dụng RSA cần phải xác định ngẫu nhiên hai số nguyên tố rấtlớn, thông thường khoảng 512 bit Do đó việc sinh ra ngẫu nhiên p, q vàkiểm tra xác suất tính nguyên tố của chúng có nhiều giải pháp khác nhauvới độ tin cậy cao Sau khi chọn được một khóa e hoặc d nguyên tố cùngnhau với ϕ(N ), dễ dàng tính được khóa kia chính là số nghịch đảo của nóqua thuật toán Euclide mở rộng
Trang 301.3 Chữ ký điện tử DSA [7, tr.224-226]
Chữ ký điện tử DSA là từ viết tắt của “Digital Signature Algorithm”
là chuẩn của chính phủ Mỹ hoặc FIPS cho các chữ ký số Thuật toán nàyđược đề nghị bởi Viện các tiêu chuẩn và công nghệ quốc gia vào tháng8/1991 để sử dụng trong chuẩn chữ ký số
Thuật toán chữ ký điện tử nhằm giúp người nhận kiểm tra chữ ký trênmột văn bản (mẩu tin) nào đó có phải của người gửi hay không? Thuậttoán cung cấp những khả năng sau:
i) Kiểm tra ngày, giờ ký của người gửi
ii) Xác nhận nội dung văn bản (mẩu tin)
iii) Được xác nhận bởi bên thứ ba để chống từ chối
Quá trình tạo khóa DSA diễn ra theo các bước sau:
Bước 1 Chọn số nguyên tố p và q thỏa mãn: p = 2L, trong đó 512 bit ≤
L ≤ 1024 bit, L chia hết cho 64 và số nguyên tố q 160 bit và là ước của(p − 1)
Bước 2 Chọn g = hp−1q mod p, trong đó h < (p − 1); g (modp) > 1Bước 3 Chọn x ngẫu nhiên, thỏa mãn 0 < x < q và tính khóa công khai
y = gx(modp)
Khi đó khóa công khai là (p, q, g, y) và khóa riêng là x
Trang 311.3.3 Tạo chữ ký DSA
Bước 4 Để tạo ra chữ ký DSA trên một văn bản M, người gửi phảisinh khóa chữ ký ngẫu nhiên k, thỏa mãn 0 < k < q (giá trị k được xóasau khi dùng và không bao giờ dùng lại)
Bước 5 Tính các giá trị r, s thỏa mãn:
r = gk(modp) (modq)
s = k−1(SHA (M ) + x.r) (modq)Trong đó SHA(M) là hàm băm mã hóa SHA áp dụng cho văn bản MBước 6 Gửi cặp chữ ký (r, s) cùng với văn bản M
Bước 7 Người nhận nhận văn bản M cùng với cặp chữ ký (r, s) Trướchết người nhận loại bỏ chữ ký nếu 0 < r < q hoặc 0 < s < q Khi thỏamãn điều kiện của r và s, người nhận cần tính các giá trị:
w = s−1 mod q
u1 = (SHA(M ) × w) mod q
u2 = (r × w) mod q
v = (gu1.yu2(modp)) mod qNếu v = r thì chữ ký đã được xác nhận
Thuật toán chữ ký số DSA là đúng đắn có ý nghĩa khi người xác nhậnluôn chấp nhận các chữ ký thật Điều này có thể được chỉ ra như sau:
Trang 32Từ g = hp−1q mod p Suy ra gq mod p = hq×p−1q mod p = hp−1 mod p = 1(theo định lí Fermat)
Người gửi tính: s = k−1(SHA (M ) + x.r) (modq)
Như vậy: k ≡ (SHA(M )s−1+ xrs−1) mod q ≡ (SHA(M )w + xrw) mod qMặt khác: gk ≡ (gSHA(M )wgxrw) mod p ≡ gSHA(M )wyrw ≡ (gu 1yu2) mod pCuối cùng, tính đúng đắn của DSA là:
r = (gk mod p) mod q = (gu1yu2 mod p) mod q = v
Ví dụ 1.8 Xây dựng một ví dụ về thuật toán chữ ký điện tử DSA nhằmgiúp người nhận kiểm tra chữ ký trên một văn bản hay mẩu tin nào đó cóphải của người gửi hay không
Tạo khóa DSA:
Bước 1: Chọn số nguyên tố p = 43 và q = 7 (thảo mãn q là ước của p-1)Bước 2: Chọn h = 11, khi đó g = hp−1q mod p = 116 mod 43 = 4 > 1
Bước 3: Chọn x = 5 < 7, khi đó y = gx mod p = 45 mod 43 = 35
Khi đó: Khóa riêng là: x = 5 và khóa công khai là: (p, q, g, y) = (43, 7,
4, 35)
Tạo chữ ký DSA:
Bước 4: Chọn số tự nhiên k = 15; SHA(M) = 20
Bước 5: Tính các giá trị (r, s)
r = gk(modp) (modq) = (415(mod43)) mod 7 = 4
s = k−1(SHA (M ) + x.r) (modq) = (15−1(20 + 5 × 4)) mod 7 = (15−1×40) mod 7 = 5
Bước 6: Gửi cặp chữ ký điện tử là: (r, s) = (4, 5) cùng với văn bản MKiểm chứng chữ ký điện tử DSA:
Trang 33Kết luận: Văn bản M nhận được là toàn vẹn, không bị chỉnh sửa
1.4 Mã hóa ElGamal và mã hóa Paillier
1.4.1 Hệ mã hóa ElGamal [7, tr.178]
Các thuật toán mã hóa đơn giản dựa trên bài toán logarit rời rạc làthuật toán mã hóa Elgamal Trong phần tiếp theo chúng ta sẽ mô tả tương
tự trường hữu hạn của mã hóa Elgamal
Không giống như các thuật toán RSA, trong mã hóa Elgamal có một sốthông số nào đó có thể được chia sẻ bởi một số người sử dụng Chúng đượcgọi là các thông số tên miền Khi đó thuật toán mã hóa Elgmal tiến hànhqua các bước sau:
Bước 1 Chọn p một “nguyên tố lớn” sao cho bài toán logarit rời rạc trong
là khó giải, qua đó chúng ta có nghĩa là một với khoảng 1024 bits, như vậy
là (p – 1) chia hết cho một ’số nguyên tố vừa’ q khoảng 160 bit Chọn gmột phần tử của Fp∗ của số nguyên tố q, ví dụ: g = rp−1q (modp) 6= 1 với
r ∈ Fp∗
Bước 2 Các khóa riêng được chọn là một số nguyên x, trong khi khóacông khai được cho bởi: h = gx(modp)
Trang 34Bước 3 Mã hóa một thông điệp m ∈ Fp∗ chúng ta tính các đại lượng:
- Tạo ra một cách ngẫu nhiên khóa k
Trang 35= (1412.(1247)70) mod 1609 = 300
1.4.2 Hệ mã hóa Paillier [7, tr.181]
Bước 1 Thiết lập thông số miền
Đầu tiên chúng ta chọn một modulo RSA: N = p × q, nhưng thay vì làmviệc với các nhóm nhân (Z/N Z)∗, chúng ta làm việc trên (Z/N2Z)∗ Thứ
tự của nhóm cuối cùng này được cho bởi: φ(N ) = N × (p − 1) × (q − 1).Điều đó có nghĩa là với gcd(a, N ) = 1 ta có: aN.(p−1).(q−1) ≡ 1(modN2)Bước 2 Tạo khóa
Các khóa riêng cho chương trình Paillier được định nghĩa là một số nguyên
d (d có thể được theo định lí phần dư Trung Hoa) sao cho:
d ≡ 1 (modN )
d ≡ 0 (mod(p − 1).(q − 1))Khi đó khóa công khai là chỉ số nguyên N, và khoá riêng là số nguyên d.Bước 3 Mã hóa
Tin nhắn được xác định là các phần tử m của Z/Z, để mã hóa một thôngđiệp như vậy, ta chọn một số nguyên r ∈ Z/N2Z và tính:
Trang 36Bước 2: Tạo khóa
Khóa riêng d thỏa mãn:
Trang 37Cho P là tập bản rõ tạo thành nhóm với phép tính (+), C là tập bản
mã tạo thành nhóm với phép tính (×), Ek(m) là hàm mã hóa bản rõ
m theo tham số ngẫu nhiên bí mật k Hệ mã hóa E được gọi là có tínhchất ((+), (×)) đồng cấu nếu Ek1(m1) × Ek2(m2) = Ek(m1+ m2), trong đó
m1; m2 là hai bản rõ; k1; k2 là 2 tham số ngẫu nhiên bí mật
(1) Hệ mã hóa Elgamal có tính chất đồng cấu nhân Thật vậy:
Với k = k1 + k2, ta có: Ek1(m1) = (gk1, hk1m1) và Ek2(m2) = (gk2, hk2m2)Khi đó:
Ek1(m1) ∗ Ek2(m2) = (gk1gk2, hk1hk2m1m2)
= (gk1 +k 1, hk1 +k 1m1m2)
= (gk, hkm1m2)
= Ek(m1m2)(2) Hệ mã hóa Paillier có tính chất đồng cấu cộng Thật vậy:
Thật vậy: Với tham số k = k1 + k2, ta có: Ek1(m1) = (1 + N )m1 × (k1)N
và Ek2(m2) = (1 + N )m2 × (k2)N
Trang 38Thỏa mãn công thức đồng cấu:
Ek1(m1) × Ek2(m2) = ((1 + N )m1 × (k1)N) × ((1 + N )m2 × (k2)N)
= ((1 + N )m1 +m 2 × (k1k2)N)
= ((1 + N )m1 +m 2 × (k1k2)N)
= Ek1k2(m1 + m2)Tóm tắt chương 1:
Trong chương 1, luận văn đã trình bày các kiến thức cơ sở về số học modulo,giới thiệu các định lý Euler, định lý Fermat, định lí phần dư Trung Hoa
để dùng trong việc tính toán trong các giao thức chia sẻ thông tin bí mật.Ngoài ra luận văn trình bày khá niệm, các bước trong mã công khai RSA,chữ ký điện tử DSA, mã hóa ElGamal và mã hóa Paillier, cùng với đó làcác ví dụ minh họa cho các khái niệm, các bước nêu trên
Trong chương tiếp theo, luận văn sẽ tiếp tục trình bày về các khái niệmgiao thức: giao thức Sigma, giao thức tổng, giao thức cực đại
Trang 39TÍNH TOÁN ĐA BÊN AN TOÀN DỰA TRÊN MÃ ĐỒNG CẤU
Trong chương này, chúng tôi trình bày về các khái niệm, các mô hình
về tính toán đa bên MPC, tiếp đó luận văn nghiên cứu về các giao thứcthực hiện tính toán đa bên an toàn đối với trường hợp có nhiều bên: giaothức tổng, giao thức cực đại; sử dụng mã đồng cấu trong quá trình tínhtoán Chúng ta đề cập đến vấn đề an toàn thông tin, không tiết lộ thôngtin của các giá trị đầu vào ở mỗi bên, các kết quả được sử dụng cần phảiđòi hỏi 1 chương trình cam kết để đảm bảo rằng các giá trị sử dụng đượctính toán đúng trong các bước của giao thức, thể hiện thông qua các giaothức Sigma
2.1 Các khái niệm và mô hình [4, tr.2]
2.1.1 Các khái niệm
Giao thức là một tập hợp các quy tắc chuẩn dành cho việc biểu diễn dữliệu, phát tín hiệu, chứng thực và phát hiện lỗi dữ liệu - những việc cần
Trang 40thiết để gửi thông tin qua các kênh truyền thông, nhờ đó mà các máy tính(và các thiết bị) có thể kết nối và trao đổi thông tin với nhau.
Phương pháp chứng minh không tiết lộ thông tin là phương pháp để chứngminh một vấn đề gì đó cho người khác hiểu, nhưng không tiết lộ thông tintrực tiếp về vấn đề, nhưng vẫn khẳng định vấn đề đó là đúng
Chứng minh không tiết lộ thông tin là chứng minh không để lộ thông tin mànghĩa là để lộ thông tin ở mức ít nhất về sự việc cần chứng minh Với nhữngthông tin để lộ, người xác minh không có nhiều hiểu biết (knowledge) về
sự vật sự việc, họ chỉ thu được chút ít thông tin (coi như zero knowledge)
Computa-có thể thể hiện cùng một loại hàm số, đạt đến mức của một đa thức (cácphép tính số học có thể được thực hiện bởi một mạch Boolean và ngượclại) Tuy nhiên, số lượng các phép toán mã hóa (thống trị độ phức tạp củacác giao thức MPC) thường tỷ lệ thuận với số cổng trong mạch, và do đó
có thể đạt được hiệu suất bằng cách chọn mô hình tính toán đúng: ví dụnhư tính toán an toàn một phép nhân giữa số l-bit với một mạch Boolean
có thể lên tới l2 đắt hơn so với các mạch số học Mặt khác có rất nhiềuphép toán phi tuyến tính bậc cao, như so sánh, có thể được tính hiệu quảhơn bằng cách sử dụng biểu diễn Boolean