You are on page 1of 4

MẬT MÃ VÀ AN NINH MẠNG

LAB 3
RSA ALGORITHM
1. Vai trò của khóa công khai và khóa riêng tư
- Khóa công khai: Khi ta cần gửi một thông điệp nào đó đến người khác thì
ta phải có được khóa công khai của người đó để mã hóa dữ liệu
- Khóa riêng tư: Khi người nhận nhận được bản mã thì cần khóa riêng tư
của người đó để giải mã dữ liệu
2. Hàm One-way là gì?
- Là hàm khi ta có input thì ta có thể tính toán được kết quả một cách dễ
dàng nhưng ta rất khó để tính toán các hàm ngược của chúng.
- Ví dụ như ta có giá trị x thì có thể dễ dàng tính toán giá trị của f(x) nhưng
khi có giá trị của f(x) thì rất khó để tính ra được chính xác giá trị của x.
3. Hàm trap-door one-way là gì?
- Là một hàm số có thể tính theo một chiều dễ dàng và được coi là rất khó
để tính toán theo chiều ngược lại nếu không có thông tin đặc biệt
- Một hàm trapdoor được định nghĩa bao gồm 3 giải thuật TDF= (G, F, F-
1
), trong đó:
o G () là giải thuật sinh ngẫu nhiên một cặp khóa công khai (pk) và
bí mật (sk)
o F (pk, x) = y là hàm ánh xạ phần tử x thuộc tập X tới phần từ y
thuộc tập Y sử dụng khóa công khai pk
o F-1 (sk, y) = x là hàm ngược của hàm F, ánh xạ phần tử y thuộc Y
tới phần tử x thuộc X, sử dụng khóa bí mật sk
4. Hiện thực việc mã hóa mà giải mã sử dụng giải thuật RSA
a. P=3, q=11, e=7, M=5
- Mã hóa:
p=3
q=11
m = 3*11=33
n = 2*10=20
e=7
(d*e) mod n = 1  (d*7) mod 20 = 1  d = 3
Ciphertext = (plaintext ^ e) mod m = (5^7) mod 33 = 14
- Giải mã:
Plaintext = (ciphertext^d) mod m = (14^3) mod 33 = 5
b. P=5, q=11, e=3, M=9
- Mã hóa:
p=5
q=11
m=5*11=55
n=4*10=40
e=3
(d*e) mod n = 1  (d*3) mod 40 = 1  d = 27
Ciphertext = (plaintext ^ e) mod m = (9^3) mod 55 = 14
- Giải mã:
Plaintext = (ciphertext^d) mod m = (14^27) mod 55 = 9
c. P=7, q = 11, e = 17, M = 8
- Mã hóa:
p=7
q=11
m=7*11=77
n=6*10=60
e=17
(d*e) mod n = 1  (d*17) mod 60 = 1  d = 53
Ciphertext = (plaintext ^ e) mod m = (8^17) mod 77 = 57
- Giải mã:
Plaintext = (ciphertext^d) mod m = (57^53) mod 77 = 8
d. P=11, q = 13, e = 11, M = 7
- Mã hóa:
p=11
q=13
m=11*13=143
n=10*12=120
e=11
(d*e) mod n = 1  (d*11) mod 120 = 1  d = 11
Ciphertext = (plaintext ^ e) mod m = (7^11) mod 143 = 106
- Giải mã:
Plaintext = (ciphertext^d) mod m = (106^11) mod 143 = 7
e. P=17, q = 31, e = 7, M = 2
- Mã hóa:
p=17
q=31
m=17*31=527
n=16*30=480
e=7
(d*e) mod n = 1  (d*7) mod 480 = 1  d = 343
Ciphertext = (plaintext ^ e) mod m = (2^7) mod 527 = 128
- Giải mã:
Plaintext = (ciphertext^d) mod m = (128^343) mod 527 = 2
5. Cipher text C = 10
e = 5, m = 35
m = p*q = 35  p = 5, q = 7 hoặc p = 7, q = 5 hoặc p = 1, q = 53 hoặc p =
35, q = 1
Do p = 1, q = 53 nên phi(m) = 0 (Không thoã) và p = 7, q = 5 hoặc p = 5, q =
7 đều cho một kết quả
Nên chọn p = 5, q = 7
phi(m) = (p-1) * (q-1) = 24
(d*e) mod phi(m) =1  (d*5) mod 24 = 1  d = 5
Plaintext = (C^d) mod m = (10^5) mod 35 = 5
Vậy plaintext = 5
6. e = 31, m = 3599
Tìm private key (p, q, d) của user này
m = p*q = 3599  p = 61, q = 59 hoặc p = 59, q = 61 hoặc p = 1, q = 3599
hoặc p = 3599, q = 1
Do p = 1, q = 3599 nên phi(m) = 0 (Không thoã) và p = 59, q = 61 hoặc p =
61, q = 59 đều cho một kết quả
Nên chọn p = 59, q = 61
phi(m) = (p-1) * (q-1) = 58 * 60 = 3480
(d*e) mod phi(m) =1  (d*31) mod 3480 = 1  d = 3031
Vậy private key của user đó là p = 59, q = 61, d = 3031 hoặc p = 61, q =59,
d=3031

Giải theo pp Euler:


m = 3599
e = 31
m = p*q = 3599  p = 61, q = 59 hoặc p = 59, q = 61 hoặc p = 1, q = 3599
hoặc p = 3599, q = 1
Do p = 1, q = 3599 nên phi(m) = 0 (Không thoã) và p = 59, q = 61 hoặc p =
61, q = 59 đều cho một kết quả
Nên chọn p = 59, q = 61
Phi(m) = (p-1) * (q-1) = 58 * 60 = 3480
3480 * X + 31 * Y = 1
Euler:
3480 = 112 * 31 + 8
8=1*7+1
Suy ra:
1=8–1*7
1 = 8 – 1 * (31-3*8)
1 = 4*8-1*31
1 = 4*(3480-112*31) -1*31
1 = 4 * 3480 – 449 * 31
Do đó: d = 3840 – 449 = 3031

You might also like