1. Trang chủ
  2. » Cao đẳng - Đại học

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

86 172 1

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 86
Dung lượng 584,61 KB

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

Nội dung

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 1

TRƯỜ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 2

TRƯỜ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 3

Luậ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 4

Tô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 5

Lờ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 6

1.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 7

2.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 8

DANH 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 9

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 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 10

LỜ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 11

dù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 12

CÁ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 13

Mộ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 15

1.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 16

Ta 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 17

Hệ 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 18

n 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 19

Chú ý: 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 21

Bước 1: Giá trị ban đầu z = 1

Trang 22

1.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 23

thuộ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 24

11 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 25

Từ 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 26

1.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 27

Bướ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 28

thể đả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 29

Bob 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 30

1.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 31

1.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 32

Từ 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 33

Kế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 34

Bướ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 36

Bước 2: Tạo khóa

Khóa riêng d thỏa mãn:

Trang 37

Cho 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 38

Thỏ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 39

TÍ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 40

thiế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

Ngày đăng: 04/10/2017, 10:43

HÌNH ẢNH LIÊN QUAN

Hình vẽ Nội dung Ghi chú - 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
Hình v ẽ Nội dung Ghi chú (Trang 9)
Hình 1.1: Sơ đồ mã hóa công khai RSA - 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
Hình 1.1 Sơ đồ mã hóa công khai RSA (Trang 27)
Hình 2.1: Tổng quan về hoạt động mạng - 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
Hình 2.1 Tổng quan về hoạt động mạng (Trang 48)
Hình 2.2: [Mỗi phần i của mỗi nút nguồn được gửi đến q, mã hóa với mỗi i (điểm đến) - 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
Hình 2.2 [Mỗi phần i của mỗi nút nguồn được gửi đến q, mã hóa với mỗi i (điểm đến) (Trang 51)
Hình 2.3: Ở bước 2 phần (b) của giao thức mở rộng, 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 q bằng cách tái mã hóa các thông điệp. - 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
Hình 2.3 Ở bước 2 phần (b) của giao thức mở rộng, 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 q bằng cách tái mã hóa các thông điệp (Trang 52)
Hình 2.5: Nút a và b làm hai so sánh đối xứng, kết quả của việc so sánh xác định nút có giá trị lớn hơn - 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
Hình 2.5 Nút a và b làm hai so sánh đối xứng, kết quả của việc so sánh xác định nút có giá trị lớn hơn (Trang 55)
Hình 2.6: Nếu có ít nhất một số 1 chưa bị gạch trong một cột, thì các nút với 0 (màu đỏ) được gạch bỏ; nếu không, chúng tôi tiếp tục đến cột tiếp theo (màu xanh lá cây) - 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
Hình 2.6 Nếu có ít nhất một số 1 chưa bị gạch trong một cột, thì các nút với 0 (màu đỏ) được gạch bỏ; nếu không, chúng tôi tiếp tục đến cột tiếp theo (màu xanh lá cây) (Trang 57)
Hình 2.7: Thứ tự của các nguy cơ bị rủi ro của một phủ định sai đối với số lượng khác nhau của các bit cho tối đa và cho các giá trị ngẫu nhiên. - 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
Hình 2.7 Thứ tự của các nguy cơ bị rủi ro của một phủ định sai đối với số lượng khác nhau của các bit cho tối đa và cho các giá trị ngẫu nhiên (Trang 58)
Hình 2.8: Tính toán giá trị là 11111b thay vì 11010b - 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
Hình 2.8 Tính toán giá trị là 11111b thay vì 11010b (Trang 59)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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