You are on page 1of 25

From AT16H with love!

BÀI TẬP VỀ MẬT MÃ

Một số công thức tính toán ..................................................................................... 3


Bình phương có lặp ............................................................................................. 3
Euclid mở rộng .................................................................................................... 3
Dạng 1. Mã hóa giải mã RSA ................................................................................. 4
Bài 1. Trong hệ mật RSA, cho P=17, Q=31, e=7, Hãy xác định bản mã của
thông điệp m=32. ................................................................................................. 4
Bài 2. Trong hệ mật RSA, cho P=29, Q=13, e=5, Hãy giải mã bản mã c=301.
............................................................................................................................... 5
Bài 3. Hệ mật RSA mã hoá ra C=6, khoá công khai là n=p.q=187, e=107 ..... 5
Bài 4. Cho n=143, e = 23 là khoá công khai của hệ mật RSA, với bản mã
C=9. ....................................................................................................................... 6
Bài 5. Giả sử khoá công khai của hệ mật RSA là (143, 11).............................. 7
Bài 6. Khóa công khai của hệ mật RSA là (N, e) = (629, 17). .......................... 8
Câu 7. Tìm khóa bí mật của hệ mật RSA với p=61, q=29 biết khóa công
khai e=19. Tính bản mã của bản rõ m=37 và tiến hành giải mã ngược lại để
kiểm tra lại kết quả. .......................................................................................... 11
Câu 8. Cho biết A và B sử dụng mật mã khóa công khai RSA trong đảm
bảo an toàn thông tin, A có khóa bí mật KSA = (1517, 1051) và khóa công
khai KPA = (1517, 211), B có khóa bí mật KSB = (437, 317) và khóa công
khai KPB = (437, 5). Giả sử A muốn gửi thông điệp bí mật m=10 cho B.
Anh/chị hãy trình bày quá trình mã hóa và giải mã mà A và B cần thực
hiện để gửi/nhận thông điệp nói trên. .............................................................. 12
Dạng 2. Mã hóa, giải mã Elgamal ........................................................................ 13
Bài 1. Trong hệ mật Elgamal, trên Z113*, với phần tử sinh g=3, khoá bí mật
là x=86, Hãy tìm khoá công khai của hệ mật và sử dụng khoá công khai để
mã hoá thông điệp m=18. .................................................................................. 13
Bài 2. Sử dụng hệ mật Elgamal với số nguyên tố p = 211, phần tử sinh α =
39 của Z*211. Giả sử người dùng A chọn khóa bí mật a = 113. ...................... 14

1
From AT16H with love!

Bài 3. Cho khoá công khai của hệ mật Elgamal là (p,a,X)= (53,2,16) và bản
mã thu được của hệ mật sau phép mã hoá là (C1,C2)=(15,50). Hãy tìm bản
rõ tương ứng. ..................................................................................................... 16
Dạng 3. Mã hóa, giải mã ECC .............................................................................. 16
Bài 1. Cho đường cong E={(x,y) :y2=x3+x+ 6 mod 11} ................................... 16
Bài 2. Cho đường cong y2=x3+5x+4 mod 1, điểm sinh α =(10,3), khoá bí mật
d=5. ..................................................................................................................... 19
Dạng 4. Trao đổi khóa Diffie-Hellman ................................................................ 22
Bài 1. Giả sử A và B chọn p = 11 và α = 2 là tham số công khai chung. Xác
định khóa chia sẻ trong giao thức Diffie-Hellman biết khóa bí mật của A và
B lần lượt là 4 và 7. Trình bày rõ các bước tính toán khóa chia sẻ chung của
A và B. ................................................................................................................ 22
Dạng 5. Diffie-Hellman trên đường cong Elliptic ............................................... 24
Bài 1. Cho đường cong Ellipic:......................................................................... 24
Bài 2. Cho đường cong Ellipic:......................................................................... 24

2
From AT16H with love!

Một số công thức tính toán


Bình phương có lặp
Có dạng: AB mod C

Quy đổi B thành dạng nhị phân: Sử dụng Casio (Đổi từ DEX sang BIN)

VD: 7 = 111 = 20 + 21 + 22

Dòng ki sẽ là hệ BIN viết ngược lại (từ phải sang trái). VD: 110 thì viết lại là 011

i 0 1 2
𝑘! 1 1 1
2
A A T = A :R C (:R có trong máy Tương tự
tính)
b Nếu ki = 1 thì b = A Nếu ki = 1 thì b = A*T :R C Tương tự
Nếu ki = 0 thì b = 1 Nếu ki = 0 thì giữ nguyên b cũ
Kết quả sẽ là b cuối cùng.

Euclid mở rộng
Có dạng: d = 𝑒 "# mod Φ(n)

q r x y a b 𝑥$ 𝑥# 𝑦$ 𝑦#
- - - - Φ(n) e 1 0 0 1
1 2 3 4 5 6 7 8 9 10

Từ bước 2 trở đi sẽ là như thế này:

1: q = a :R b

2: r = Dư của phép chia 1

3: x = x2 – q*x1

4: y = y2 – q*y1

5: a = b

6: b = r
3
From AT16H with love!

7: x2 = x1

8: x1 = x

9: y2 = y1

10: y1 = y

Các dòng tiếp theo sẽ tương tự, cho đến khi r,b = 0 thì lấy kết quả là y2

Dạng 1. Mã hóa giải mã RSA


Bài 1. Trong hệ mật RSA, cho P=17, Q=31, e=7, Hãy xác định bản mã của
thông điệp m=32.
n = p * q = 17 * 31 = 527

Φ(n) = (p-1)(q-1) = (17-1).(31-1) = 480

c = 𝑚% mod n = 32& mod 527

7 = 111

7 = 2$ + 2# + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2
𝑘! 1 1 1
A 32 497 373
b 32 94 280
Nếu ki = 1 thì b = A

Nếu ki = 0 thì b = 1

32^2 mod 527 = 497

Bản mã c = 32& mod 527 = 280


4
From AT16H with love!

Bài 2. Trong hệ mật RSA, cho P=29, Q=13, e=5, Hãy giải mã bản mã c=301.
n = p * q = 29 * 13 = 377

Φ(n) = (p-1)(q-1) = 28*12 = 336

d = 𝑒 "# mod Φ(n)

=> d = 5"# mod 336

q r x y a b 𝑥$ 𝑥# 𝑦$ 𝑦#
- - - - 336 5 1 0 0 1
67 1 1 -67 5 1 0 1 1 -67
5 0 -5 336 1 0 1 -5 -67 336
Số mũ giải mã: d = -67 mod 336 = 269

c = 301

m = 𝑐 ( mod n = 301$)* mod 377

269 = 100001101

269 = 2+ + 2, + 2$ + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 1 1 0 0 0 0 1
A 301 121 315 74 198 373 16 256 315
b 301 301 188 340 340 340 340 340 32
Bản rõ: m = 301 $)* mod 377 = 32

Bài 3. Hệ mật RSA mã hoá ra C=6, khoá công khai là n=p.q=187, e=107
- Xác định khoá bí mật

- Tìm M

5
From AT16H with love!

187 = 11*17

Φ(n) = (p-1)(q-1) = 10*16 = 160

Khóa bí mật 𝑘( = d = 𝑒 "# mod Φ(n) = 107"# mod 160

q r x y a b 𝑥$ 𝑥# 𝑦$ 𝑦#
- - - - 160 107 1 0 0 1
1 53 1 -1 107 53 0 1 1 -1
2 1 -2 3 53 1 1 -2 -1 3
53 0 107 -160 1 0 -2 107 3 -160
=> 𝑘( = d = 3

M = 𝐶 ( mod n = 6, mod 187 = 29

Bài 4. Cho n=143, e = 23 là khoá công khai của hệ mật RSA, với bản mã C=9.
- Xác định khoá bí mật

- Tìm M

n=143 => q=11 , p=13 => φ(n) = 143*(1-1/11)*(1-1/13)=120

Khóa bí mật d sẽ được tính bằng e-1 mod 120

Áp dụng euclid mở rộng :

q r x y A= 𝜑(𝑛) B=e X2 X1 Y2 Y1
- - - - 120 23 1 0 0 1
5 5 1 -5 23 5 0 1 1 -5
4 3 -4 21 5 3 1 -4 -5 21
1 2 5 -26 3 2 -4 5 21 -26
1 1 -9 47 2 1 5 -9 -26 47
1 0 14 -73 1 0 -9 14 47 -73
Vậy d=47

Bản rõ M sẽ được tính bằng Cd mod n hay 947 mod 143

Áp dụng phương pháp nhân bình phương có lặp:

d (10) = 47 = 101111

i 0 1 2 3 4 5

6
From AT16H with love!

Ki 1 1 1 1 0 1
A 9 81 126 3 9 81
b 9 14 48 1 1 81
Vậy bản rõ M có giá trị là 81

Bài 5. Giả sử khoá công khai của hệ mật RSA là (143, 11)
- Tìm khoá bí mật

- Giải mã thông điệp (111,4,88,57,116,67) (chuyển đổi bản rõ ra dạng ASCII)

Khóa công khai 𝑘% = (143, 11) = (n, e) => n = 143, e = 11

143 = 11*13

Φ(n) = 10*12 = 120

Khóa bí mật 𝑘( = d = 𝑒 "# mod Φ(n) = 11"# mod 120

q r x y a b 𝑥$ 𝑥# 𝑦$ 𝑦#
- - - - 120 11 1 0 0 1
10 10 1 -10 11 10 0 1 1 -10
1 1 -1 11 10 1 1 -1 -10 11
10 0 11 -120 1 0 -1 11 11 -120
=> 𝑘( = d = 11

C = (111, 4, 88, 57, 116, 67)

M = 𝐶 ( mod n = 𝐶 ## mod 143

11 = 2, + 2# + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3
𝑘! 1 1 0 1
A 111 23 100 133
b 111 122 122 67
i 0 1 2 3
𝑘! 1 1 0 1
A 4 16 113 42
b 4 64 64 114

7
From AT16H with love!

i 0 1 2 3
𝑘! 1 1 0 1
A 88 22 55 22
b 88 77 77 121

i 0 1 2 3
𝑘! 1 1 0 1
A 57 103 27 14
b 57 8 8 112

i 0 1 2 3
𝑘! 1 1 0 1
A 116 14 53 92
b 116 51 51 116

i 0 1 2 3
𝑘! 1 1 0 1
A 67 56 133 100
b 67 34 34 111
=> M = (67, 114, 121, 112, 116, 111)

Chuyển đổi bản rõ ra dạng ASCII:

M = “Crypto”

Bài 6. Khóa công khai của hệ mật RSA là (N, e) = (629, 17).
- Hãy mã hóa ký tự A trong bảng mã ASCII sử dụng khóa công khai trên

- Cho văn bản bí mật là 247, 337, 322, 463, 15, 73, 440, 15, 342, 323, 435

m = 65

c = 𝑚% mod N = 65#& mod 629

17 = 2- + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4
8
From AT16H with love!

𝑘! 1 0 0 0 1
A 65 451 234 33 460
b 65 65 65 65 337
=> Bản mã c = 337

629 = 17*37

Φ(n) = 16*36 = 576

Khóa bí mật 𝑘( = d = 𝑒 "# mod Φ(n) = 17"# mod 576

q r x y a b 𝑥$ 𝑥# 𝑦$ 𝑦#
- - - - 576 17 1 0 0 1
33 15 1 -33 17 15 0 1 1 -33
1 2 -1 34 15 2 1 -1 -33 34
7 1 8 -271 2 1 -1 8 34 -271
2 0 -17 576 1 0 8 -17 -271 576
=> 𝑘( = d = -271 mod 576 = 305

C = (247, 337, 322, 463, 15, 73, 440, 15, 342, 323, 435)

M = 𝑐 ( mod N = 𝑐 ,'. mod 629

305 = 2+ + 2. + 2- + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 247 625 16 256 120 562 86 477 460
b 247 247 247 247 77 502 502 502 77

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 337 349 404 305 562 86 477 460 256
b 337 337 337 337 65 558 558 558 65

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1

9
From AT16H with love!

A 322 528 137 528 137 528 137 528 137


b 322 322 322 322 84 322 322 322 84

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 463 509 562 86 477 460 256 120 562
b 463 463 463 463 72 412 412 412 72

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 15 225 305 562 86 477 460 256 120
b 15 15 15 15 32 168 168 168 32

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 73 297 149 186 1 1 1 1 1
b 73 73 73 73 73 73 73 73 73

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 440 497 441 120 562 86 477 460 256
b 440 440 440 440 83 219 219 219 83

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 15 225 305 562 86 477 460 256 120
b 15 15 15 15 32 168 168 168 32

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 342 599 271 477 460 256 120 562 86
b 342 342 342 342 70 308 308 308 70

10
From AT16H with love!

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 323 544 306 544 306 544 306 544 306
b 323 323 323 323 85 323 323 323 85

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 0 0 1 1 0 0 1
A 435 525 123 33 460 256 120 562 86
b 435 435 435 435 78 469 469 469 78
=> M = (77, 65, 84, 72, 32, 73, 83, 32, 70, 85, 78)

Câu 7. Tìm khóa bí mật của hệ mật RSA với p=61, q=29 biết khóa công khai
e=19. Tính bản mã của bản rõ m=37 và tiến hành giải mã ngược lại để kiểm
tra lại kết quả.
n = p * q = 61 * 29 = 1769

Φ(n) = 60*28 = 1680

d = 𝑒 "# mod Φ(n)

=> d = 19"# mod 1680

q r x y a b 𝑥$ 𝑥# 𝑦$ 𝑦#
- - - - 1680 19 1 0 0 1
88 8 1 -88 19 8 0 1 1 -88
2 3 -2 177 8 3 1 -2 -88 177
2 2 5 -442 3 2 -2 5 177 -442
1 1 -7 619 2 1 5 -7 -442 619
2 0 19 -1680 1 0 -7 19 619 -1680
Số mũ giải mã: d = 619

m = 37

c = 𝑚% mod n = 37#* mod 1769

19 = 2- + 2# + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4

11
From AT16H with love!

𝑘! 1 1 0 0 1
A 37 1369 790 1412 81
b 37 1121 1121 1121 582
#*
Bản mã thu được: c = 37 mod 1769 = 582

c = 582

m = 𝑐 ( mod n = 582)#* mod 1769

619 = 2* + 2) + 2. + 2, + 2# + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4 5 6 7 8 9
𝑘! 1 1 0 1 0 1 1 0 0 1
A 582 845 1118 1010 1156 741 691 1620 973 314
b 582 8 8 1004 1004 984 648 648 648 37
)#*
Bản rõ: m = 582 mod 1769 = 37

Câu 8. Cho biết A và B sử dụng mật mã khóa công khai RSA trong đảm bảo
an toàn thông tin, A có khóa bí mật KSA = (1517, 1051) và khóa công khai
KPA = (1517, 211), B có khóa bí mật KSB = (437, 317) và khóa công khai KPB
= (437, 5). Giả sử A muốn gửi thông điệp bí mật m=10 cho B. Anh/chị hãy
trình bày quá trình mã hóa và giải mã mà A và B cần thực hiện để gửi/nhận
thông điệp nói trên.
KSA = (1517, 1051) = (n, dA)

KPA = (1517, 211) = (n, eA)

KSB = (437, 317) = (n, dB)

KPB = (437, 5) = (n, eB)

Giả sử A muốn gửi thông điệp bí mật m=10 cho B (B => người nhận => chỉ
dùng khóa của B)

Mã hóa: A sẽ dùng KCK (eB) của B để mã hóa

c = m^eB mod n

Giải mã: B sẽ dùng KBM (dB) của B để giải mã

12
From AT16H with love!

m = c^dB mod n

A mã hóa m bằng khóa công khai 𝐾𝑃/ của B:

𝐾𝑃/ = (437,5) => 𝑛/ = 437, 𝑒/ = 5

Bản mã c = 𝑚%! mod 𝑛/ = 10. mod 437 = 364

B giải mã c bằng khóa bí mật 𝐾𝑆/ của B:

𝐾𝑆/ = (437,317) => 𝑑/ = 317

Bản rõ m = 𝑐 (! mod 𝑛/ = 364,#& mod 437

317 = 2+ + 2. + 2- + 2, + 2$ + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4 5 6 7 8
𝑘! 1 0 1 1 1 1 0 0 1
A 364 85 233 101 150 213 358 123 271
b 364 364 34 375 314 21 21 21 10
=> Bản rõ m = 10

Dạng 2. Mã hóa, giải mã Elgamal


Bài 1. Trong hệ mật Elgamal, trên Z113*, với phần tử sinh g=3, khoá bí mật là
x=86, Hãy tìm khoá công khai của hệ mật và sử dụng khoá công khai để mã
hoá thông điệp m=18.
Tính 𝑔 0 mod 113 = 3+) mod 113

86 = 2) + 2- + 2$ + 2#

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4 5 6
𝑘! 0 1 1 0 1 0 1
A 3 9 81 7 49 28 106
b 1 9 51 51 13 13 22
0
Khóa công khai là (p, g, 𝑔 ) = (113, 3, 22)

Tính 𝑦# = 𝑔1 mod p = 3$, mod 113

13
From AT16H with love!

23 = 2- + 2$ + 2# + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4
𝑘! 1 1 1 0 1
A 3 9 81 7 49
b 3 27 40 40 39
Vậy 𝑦# = 39

Tính 𝑦$ = m*(𝑔 0 )1 mod 113 = 18*(22)$, mod 113

Tính (22)$, mod 113

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4
𝑘! 1 1 1 0 1
A 22 32 7 49 28
b 22 26 69 69 11
0 1
δ = m(𝑔 ) mod 113 = 18*11 mod 113 = 85

Vậy bản mã y = (𝑦# , 𝑦$ ) = (39, 85)

Bài 2. Sử dụng hệ mật Elgamal với số nguyên tố p = 211, phần tử sinh α = 39


của Z*211. Giả sử người dùng A chọn khóa bí mật a = 113.
- Hãy tìm khoá công khai của A?

- Giả sử chọn số ngẫu nhiên k = 23, hãy thực hiện mã hoá bản tin x = 34 với khoá
công khai của A, và giả mã bản mã vừa thu được.

Tính α2 mod 211 = 39##, mod 211

113 = 2) + 2. + 2- + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4 5 6
𝑘! 1 0 0 0 1 1 1
A 39 44 37 103 59 105 53
b 39 39 39 39 191 10 108

14
From AT16H with love!

Khóa công khai là (p, α, α0 ) = (211, 39, 108)

Tính 𝑦# = α1 mod p = 39$, mod 211

23 = 2- + 2$ + 2# + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4
𝑘! 1 1 1 0 1
A 39 44 37 103 59
b 39 28 192 192 145
Vậy 𝑦# = 145

Tính 𝑦$ = x*(α2 )1 mod 211 = 34*(108)$, mod 211

Tính (108)$, mod 211

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4
𝑘! 1 1 1 0 1
A 108 59 105 53 66
b 108 42 190 190 91
2 1
δ = m(α ) mod 211 = 34*91 mod 211 = 140

Vậy bản mã y = (𝑦# , 𝑦$ ) = (145, 140)


3"#"2
(𝑦#2 )"# mod p = 𝑦# mod 211 = 145$##"#"##, mod 211 = 145*& mod 211

97 = 2) + 2. + 2'

Áp dụng phương pháp nhân bình phương có lặp:

i 0 1 2 3 4 5 6
𝑘! 1 0 0 0 0 1 1
A 145 136 139 120 52 172 44
b 145 145 145 145 145 42 160
3"#"2
x = 𝑦$ * 𝑦# = 140*160 mod 211 = 34

15
From AT16H with love!

Bài 3. Cho khoá công khai của hệ mật Elgamal là (p,a,X)= (53,2,16) và bản mã
thu được của hệ mật sau phép mã hoá là (C1,C2)=(15,50). Hãy tìm bản rõ
tương ứng.
𝑦 = (𝑦1, 𝑦2) = (15, 50)

KCK (p, a, X) = (53, 2, 16)

Hàm giải mã 𝑥 = 𝑦2.(𝑦𝑎1) −1 𝑚𝑜𝑑 𝑝

Tính a: 16 = 𝑎𝛼 = 2𝑎 => 𝑎 = log216 𝑚𝑜𝑑 53

Áp dụng thuật toán bước lớn bước nhỏ: Ta có ⌈√𝑜𝑟𝑑(2)⌉ = 8

Ta lập bảng (𝑗, 2𝑗) 𝑣ớ𝑖 𝑗 = 0 -> 7

j 0 1 2 3 4 5 6 7
j
2 mod 53 1 2 4 8 16 32 11 22
Ta có 2 𝑚𝑜𝑑 53 = 27 => 2 𝑚𝑜𝑑 53 = 278 𝑚𝑜𝑑 53 = 47. Lập bảng tính
−1 −8

𝛽. (𝛼−𝑚) 𝑖 𝑚𝑜𝑑 𝑛 = 16.47𝑖 𝑚𝑜𝑑 53 𝑣ớ𝑖 𝑖 = 0 -> 7

i 0 1 2 3 4 5 6 7
i
16.47 mod 53 16 10 46 42 13 28 44 1
Vậy 𝑎 = log216 𝑚𝑜𝑑 53 = 𝑚𝑖 + 𝑗 = 8.0 + 4 = 4

Tính (𝑦𝑎1) −1 𝑚𝑜𝑑 𝑝 = 𝑦1𝑝−1−𝑎 𝑚𝑜𝑑 53 = 1553−1−4 𝑚𝑜𝑑 53 = 1548 𝑚𝑜𝑑 53.

Ta phân tích 48 = 110000

I 0 1 2 3 4 5
ki 0 0 0 0 1 1
A 15 13 10 47 36 24
B 1 1 1 1 36 16
Khôi phục bản rõ x bằng cách tính 𝑥 = 𝑦2. 𝑦1𝑝 𝑎 = 50. 16 𝑚𝑜𝑑 53 = 5
−1−

Vậy bản rõ m tìm được là 5

Dạng 3. Mã hóa, giải mã ECC


Bài 1. Cho đường cong E={(x,y) :y2=x3+x+ 6 mod 11}
- Xác định tất cả các điểm của đường cong

16
From AT16H with love!

- Tính tất cả các giá trị của kα với 1< k <14, trong đó α= (2,7)

- ECC ElGamal encryption:

+ Tính khóa công khai biết khóa bí mật là 6

+ Tính khóa công khai biết khóa bí mật là 2

+ Tính khóa công khai biết khóa bí mật là 7

- Với khóa bí mật của người nhận là 7. Tham số ngẫu nhiên là 3.

+ Mã hóa thông điệp 10

+ Giải mã và kiểm chứng

Tìm các số là thặng dư bậc 2 của z*11 băng cách xác định trong các số từ 1 đến 10
số a nào có a (11-1)/2 mod 11=1

Ta có bảng:

a 1 2 3 4 5 6 7 8 9 10
5
a mod 11 1 10 1 1 1 10 10 10 1 10
Vậy các thặng dư bậc 2 trên z*11 là tập Q(1,3,4,5,9)

Có tiếp bảng để xác định những giá trị nào xuất hiện trong biểu thức: y2=x3+x+6
mod 11

x z= y2=x3+x+6 Z thuộc Q hay y


mod 11 không
0 6 Không
1 8 Không
2 5 Có {4,7}
3 3 Có {5,6}
4 8 Không
5 4 Có {2,9}
6 8 Không
7 4 Có {2,9}
8 9 Có {3,8}
9 7 Không
10 4 có {2,9}
Ta cần xác định căn bậc 2 của các thặng dư bậc 2 xét bảng sau:
17
From AT16H with love!

i 1 2 3 4 5 6 7 8 9 10
2
i mod 11 1 4 9 5 3 3 5 9 4 1
Vậy căn bậc 2 của 1{1,10}, 3{5,6}, 4{2,9},5{4,7},9{3,8}

Hoàn thiện bảng trên, điền giá trị y tương ứng vào ta có 13 điểm tính cả điểm O

(2,4); (2,7); (3,5); (3,6); (5,2); (5,9); (7,2); (7,9); (8,3); (8,8); (10,2); (10,9); O
Tính tất cả các giá trị của ka với 1 < k < 14, trong đó a = (2, 7):

• k =1 → a = (2, 7)
• k =2 → 2a = a + a
,0"# 42 ,.$# 4# #, 89( ## $
o s= $5
= $.& = #- 89( ## = , = 2.3-1 = 2.4 = 8 mod 11
o 𝑥$2 = 𝑠 $ - 2𝑥2 = 8$ - 2.2 = 5 mod 11
o 𝑦$2 = 𝑠 (𝑥2 - 𝑥$2 )- 𝑦2 = 8(2-5)-7 = -31 = 2 mod 11
o 2a = (5, 2)
• k =3 → 3a = (8, 3)
• k =4 → 4a = (10, 2)
• k =5 → 5a = (3, 6)
• k =6 → 6a = (7, 9)
• k =7 → 7a = (7, 2)
• k =8 → 8a = (3, 5)
• k =9 → 9a = (10, 9)
• k =10 → 10a = (8, 8)
• k =11 → 11a = (5, 9)
• k =12 → 12a = (2, 4)
• k =13 → 13a = (∞)
• k =14 → 14a = (2, 7)
Tính khóa công khai:

• k = 6 → Q = ka → (7, 9)
• k = 2 → Q = ka → (5, 2)
• k = 7 → Q = ka → (7, 2)
y2 = x3 + x +6 mod 11

- Chọn 1 điểm trên đường cong : P = (2, 7)


- k=3

18
From AT16H with love!

• Sinh cặp khóa :


- Khóa bí mật : d =7
- Khóa công khai : Q = d*P = 7(2, 7)= (7, 2)
• Nhúng m=10 vào đường cong ta được :
- y2 = 103 + 10 +6 mod 11 = 4 ⇒ y= 2
ð M(10, 2);
• Mã hóa :
- C1 =kP= 3(2, 7)= (8, 3);
- C2= M + kQ = (10, 2) + 3(7, 2) = (2, 4)
ð C = [(8, 3),(2, 4)]
• Giải mã :
M = C2 - dC1 = (2, 4) – 7(8, 3) = (2, 4) – (3, 5) = (2, 4)+ (3, 6) = (10, 2)
𝑃𝐶 = [𝑘𝐺, 𝑃𝑀 + 𝑘𝑃] = [(8, 3), (10,2)] = [𝑃1, 𝑃2] dùng khóa bí mật n = 7 để giải mã
𝑃𝑀 = 𝑃2 − 𝑛. 𝑃1 = (10,2) − 7. (8,3)

Tính 7(8,3) = 4(8,3) +3(8,3) =

Vì 4(8,3) = 4.3. 𝐺 = 12𝐺 = (2,4)

Và 3(8,3) = 3.3G = 9G = (10,9)

Vậy 7(8,3) = (2,4) + (10,9) = (3,5)

Tính 𝑃𝑀 = (10,2) − (3, 5) = (10,2) + (3, −5)


:$ " :# ". " $
𝜆= = =1
;$ " ;# , "#'

𝑥3 = 𝜆2 − 𝑥1 − 𝑥2 = 12 − 10 − 3 = −12 𝑚𝑜𝑑 11 = 10

𝑦3 = 𝜆(𝑥1 − 𝑥3 ) − 𝑦1 = 1(10 − 10) − 2 = −2 𝑚𝑜𝑑 11 = 9

Vậy 𝑃𝑀 = (10,9) trùng với 𝑃𝑀 ban đầu

Bài 2. Cho đường cong y2=x3+5x+4 mod 1, điểm sinh α =(10,3), khoá bí mật
d=5.
- Tìm khoá công khai

- Chọn ngẫu nhiên k=2, mã hoá thông điệp x=(2,0)

- Giải mã ngược lại

19
From AT16H with love!

Khóa công khai P = 5.G

Tính 5𝐺 = 5. (10,3) = 𝐺 + 2𝐺 + 2𝐺

Tính 2𝐺 = 𝐺 + 𝐺 = (10,3) + (10,3)

𝑥3 = 𝜆2 − 𝑥1 − 𝑥2 = 52 − 10 − 10 = 5

𝑦3 = 𝜆(𝑥1 − 𝑥3) − 𝑦1 = 5.(10 − 5) − 3 = 0

Tính 2𝐺 + 𝐺 = (5,0) + (10,3) = (10,8)

Tính 5𝐺 = 3𝐺 + 2𝐺 = (10,8) + (5,0) = (10,3)

Vậy khóa công khai là (10,3)

Mã hóa thông điệp (2,0), với k = 2

Ta có 𝑃𝐶 = [𝑘𝐺, 𝑃𝑀 + 𝑘𝑃] = [ 2𝐺, ((2,0) + 2. (10,3))] = [ (7,0), ((2,0) + 2. (10,3))]

Tính 2(10,3) = 2G = (5,0)

Tính 𝑃2 = (2,0) + (5,0)

𝑥3 = 𝜆2 − 𝑥1 − 𝑥2 = 02 − 2 − 5 = 4

𝑦3 = 𝜆(𝑥1 − 𝑥3) − 𝑦1 = 0(2 − 4) − 0 = 0

Vậy 𝑃𝐶 = [𝑘𝐺, 𝑃𝑀 + 2𝑃] = [(5,0), (4,0)]

Giải mã 𝑃𝐶 = [𝑘𝐺, 𝑃𝑀 + 𝑘𝑃] = [(5,0), (4,0)] = [𝑃1, 𝑃2] dùng khóa bí mật n = 5 để
giải mã 𝑃𝑀 = 𝑃2 − 𝑛. 𝑃1 = (4,0) − 5. (5,0)

Tính 5(5,0) = 5. 2.G = 10G = 5G + 5G

Tính 5G + 5G = (10,3) + (10,3)

20
From AT16H with love!

𝑥3 = 𝜆2 − 𝑥1 − 𝑥2 = 52 − 10 − 10 = 5

𝑦3 = 𝜆(𝑥1 − 𝑥3) − 𝑦1 = 5.(10 − 5) − 3 = 0

Vậy 5.(5,0) = (5,0)

Tính 𝑃𝑀 = (4,0) − (5,0) = (4,0) + (5,0)

𝑥3 = 𝜆2 − 𝑥1 − 𝑥2 = 02 − 4 − 5 = −9 𝑚𝑜𝑑 11 = 2

𝑦3 = 𝜆(𝑥1 − 𝑥3 ) − 𝑦1 = 0(4 − 2) − 0 = 0

Vậy 𝑃𝑀 = (2,0) trùng với 𝑃𝑀 ban đầu

21
From AT16H with love!

Dạng 4. Trao đổi khóa Diffie-Hellman

22
From AT16H with love!

23
From AT16H with love!

Bài 1. Giả sử A và B chọn p = 11 và α = 2 là tham số công khai chung. Xác


định khóa chia sẻ trong giao thức Diffie-Hellman biết khóa bí mật của A và B
lần lượt là 4 và 7. Trình bày rõ các bước tính toán khóa chia sẻ chung của A
và B.
Khóa bí mật của A: x = 4

A gửi cho B giá trị 𝛽< = 𝛼 0 mod p = 2- mod 11 = 5

Khóa bí mật của B: y = 7

B gửi cho A giá trị 𝛽/ = 𝛼 5 mod p = 2& mod 11 = 7

B nhận được 𝛽< = 5 và tính khoá chung k = (24)7 mod 11 = 5& mod 11 = 3

A nhận được 𝛽/ = 7 và tính khoá chung k = (27)4 mod 11 = 7- mod 11 = 3

Dạng 5. Diffie-Hellman trên đường cong Elliptic


Bài 1. Cho đường cong Ellipic:
E={(x,y) :y2=x3+x+ 6 mod 11}

và C=(2,7). Xác định khóa chia sẻ trong giao thức Diffie-Hellman trên đường
cong E, biết hai khóa bí mật của 2 bên tham gia là 3 và 5.

Tính khóa công khai của A và B: 𝑃𝐴 = 𝑛𝐴𝐺 = 3𝐺; 𝑃𝐵 = 𝑛𝐵. 𝐺 = 5𝐺

Tính 𝑃𝐴 = 3𝐺 = 3. (2,7) = (8,3) (đã tính ở dạng 3)

Tính 𝑃𝐵 = 5𝐺 = 5. (2,7) = (3,6) (đã tính ở dạng 3)

Vậy KCK của A là (8,3), KCK của B là (3,6)

Bài 2. Cho đường cong Ellipic:


E={(x,y) :y2=x3+ 2x+ 7 mod 19}

và C=(6,8). Xác định khóa chia sẻ trong giao thức Difie-Hellman trên đường
cong E, biết hai khóa bí mật của 2 bên tham gia là 4 và 7.

Tính khóa công khai của A và B: 𝑃𝐴 = 𝑛𝐴𝐺 = 4𝐺; 𝑃𝐵 = 𝑛𝐵. 𝐺 = 7𝐺

• 𝑃𝐴 = 4𝐺 = 2𝐺 + 2𝐺

Tính 2𝐺 = 𝐺 + 𝐺 = (6,8) + (6,8)


24
From AT16H with love!

y3 = 𝜆(x1 – x3) – y1 = 14(6-13)-8=8

Tính 2𝐺 + 2𝐺 = (13,8) + (13,8) = (18,17)

𝑃𝐵 = 7𝐺 = 4𝐺 + 2𝐺 + 𝐺

Tính 2𝐺 + 𝐺 = (13,8) + (6,8) = (0,11)

Tính 4𝐺 + 2𝐺 + 𝐺 = (18,17) + (0,11) = (18,2)

Vậy KCK của A là (18,17), KCK của B là (18,2)

25

You might also like