Tải bản đầy đủ (.doc) (24 trang)

ĐỀ CƯƠNG MÔN BẢO MẬT THÔNG TIN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (242.63 KB, 24 trang )

ĐỀ CƯƠNG MÔN BẢO MẬT THÔNG TIN
Câu 1: Trình bày các thành phần của một hệ mật mã, các loại hệ mật mã, các
tiêu chuẩn đánh giá hệ mật mã ?
* Các thành phần của một hệ mật mã
Hệ mật mã là 1 bộ 5(P,C,K,E,D)
P: tập hữu hạn các bản rõ Plantex hay còn gọi là không gian bản rõ.
C: tập hữu hạn các bản mã Crypto hay còn gọi là không gian bản mã.
K: tập hữu hạn các khóa hay còn gọi là không gian khóa.
*Các loại hệ mật mã
Có hai loại hệ mật mã:
- Hệ mật mã đối xứng hay còn gọi là hệ mật mã khóa bí mật.
- Hệ mật mã bất đối xứng hay còn gọi là hệ mật mã khóa công khai.
Hệ thống mật mã đối xứng (Hệ mật mã khóa bí mật - Symmetric Key
Cryptosystem - SKC)
Trong mô hình của hệ thống này, khóa của hai thuật toán sinh mã và giải mã là giống
nhau và bí mật đối với tất cả những người khác; nói cách khác, hai bên gửi và nhận tin
chia sẻ chung một khóa bí mật duy nhật. Vai trò của hai phía tham gia là giống nhau và
có thể đánh đổi vai trò, gửi và nhận tin, cho nên hệ thống được gọi là “mã hóa đối xứng”.
Hệ thống mật mã khóa bí mật đối xứng có những nhược điểm như:
- Nhược điểm lớn trên phương diện quản lý và lưu trữ, đặc biệt bộc lộ rõ
trong thế giới hiện đại khi liên lạc qua Internet đã rất phát triển.
- Số lượng khóa bí mật mà mỗi công ty hay cá nhân cần thiết lập với các đối
tác khác có thể khá lớn và do đó rất khó quản lý lưu trữ an toàn các thông tin khóa
riêng biệt này.
Khó khăn trong vấn đề xác lập và phân phối khóa bí mật này giữa hai bên.
1.
Hệ thống mật mã khóa công khai hay phi đối xứng (Public Key
Cryptosystem – PKC)
Khác cơ bản với SKC, trong mô hình mới này 2 khóa của thuật toán sinh mã và giải
mã là khác nhau và từ thông tin khóa sinh mã, mặc dù trên lý thuyết là có thể tìm được
khóa giải mã (có thể thử vét cạn) nhưng khả năng thực tế của việc này là hầu như bằng


không (bất khả thi về khối lượng tính toán).
-Ý tưởng mới này cho phép mỗi thực thể cá nhân công ty chỉ cần tạo ra cho mình một
cặp khóa, với hai thành phần:


- Thành phần khóa công khai, có thể đăng ký phổ biến rộng khắp, dùng để sinh mã
hoặc để xác thực chữ ký điện tử (cụ thể trong chương 3).
- Thành phần khóa bí mật, chỉ dành riêng cho bản thân, dùng để giải mã hoặc tạo ra
chữ ký điện tử.
a. Các tiêu chuẩn đánh giá hệ mật mã
- Đánh giá hệ mật mã thông qua một trong số các mô hình tấn công phổ biến:
+ Tấn công chỉ-biết-bản-mã (ciphertext-only attack): Ở đây kẻ địch E chỉ là một kẻ
hoàn toàn bên ngoài, tìm cách nghe trộm trên đường truyền để lấy được các giá trị Y, bản
mã của thông tin gửi đi. Mục tiêu hướng tới là khám phá nội dung một/nhiều bản rõ X
hoặc lấy được khóa mật Z (trường hợp phá giải hoàn toàn).
+ Tấn công biết-bản-rõ (known-plaintext attack):Trong mô hình này giả thiết là E có
thể biết một số cặp X-Y (bản rõ và bản mật tương ứng) nào đó. Mục tiêu của E là khám
phá nội dung các bản rõ quan trọng khác và/hoặc lấy được khóa mật.
+ Tấn công bản-rõ-chọn-sẵn (chosen-plaintext attack): Trong mô hình này, không
những E thu nhặt được một số cặp X-Y mà một số bản rõ X do bản thân E soạn ra
(chosen plaintext). Có thể nhận xét thấy rằng, việc được tự chọn giá trị của một số bản rõ
X sẽ thêm nhiều lợi ích cho E
trong phân tích quan hệ giữa bản mã và bản rõ để từ đó lần tìm giá trị khóa.
** Đánh giá tính an toàn của một hệ mã mật (khi đã áp vào 1 hay 1 số mô hình tấn
công cụ thể) có thể áp dụng một trong các mô hình đánh giá với các mức độ mạnh đến
yếu:
Bảo mật vô điều kiện (unconditional security): Đây là mô hình đánh giá ATBM mức
cao nhất, trong đó “vô điều kiện” được hiểu theo ý nghĩa của lý thuyết thông tin
(information theory), trong đó các ý niệm về “lượng tin” được hình thức hóa thông qua
các phép toán xác suất.

Bảo mật chứng minh được (provable security): Một hệ mật mã đạt được mức đánh
giá này đối với một mo hình tấn công cụ thể nào đó, nếu ta có thể chứng mình bằng toán
học rằng tính an toàn của hệ mật là được qui về tính NP-khó của một bài toán nào đó đã
được biết từ lâu.
Bảo mật tính toán được, hay bảo mật thực tiễn (computational security hay practical
security: Khi đánh giá ở mức này với một hệ mã cụ thể, người ta lượng hóa khối lượng
tính toán đặt ra để có thể phá hệ mã này, sử dụng kiểu tấn công mạnh nhất đã biết.


Bảo mật tự tác (ad hoc security): có thể sử dụng những lập luận đánh giá hợp lý nhất
định dựa trên việc ước đoán khối lượng tính toán của kẻ địch khi sử dụng những tấn công
mạnh nhấn đã biết và lập luận về tính bất khả thi thực tiễn để thực hiện.

Câu 2. Định nghĩa hai số nguyên tố cùng nhau. Trình bày thuật toán
Euclide?
Giả sử a ≥ 1 và m ≥ 2 là các số nguyên. UCLN(a,m) = 1 thì ta nói rằng a và m là
nguyên tố cùng nhau. Số các số nguyên trong Zm nguyên tố cùng nhau với m
thường được ký hiệu là φ(m) (hàm này được gọi là hàm Euler). Một kết quả quan
trọng trong lý thuyết số cho ta giá trị của φ(m) theo các thừa số trong phép phân
tích theo luỹ thừa các số nguyên tố của m. (Một số nguyên p >1 là số nguyên tố
nếu nó không có ước dương nào khác ngoài 1 và p. Mọi số nguyên m >1 có thể
phân tích được thành tích của các luỹ thừa các số nguyên tố theo cách duy nhất.
Thuật toán Euclide mở rộng:
VÀO: Hai số nguyên không âm a và b với a ≥ b

RA: d = UCLN( a , b ) và các số nguyên x và y thoả mãn ax + by = d .

(1) Nếu b = 0 thì đặt d ← a , x ← 1 , y ← 0 và return ( d, x , y )
(2) Đặt x 2 ← 1 , x 1 ← 0 , y 2 ← 0 , y1 ← 1
(3) While


b > 0 do
3.1.

q ¬ a mod b, r ¬ a − qb, x ¬ x2 − qx1 , y ¬ y2 − qy1

3.2.

a ← b , b ← r , x 2 ← x1 , x1 ← x , y 2 ← y1 , y1 ← y

(4) Đặt d ← a , x ← x 2 , y ← y 2 và return ( d, x , y )

Câu 3. Định nghĩa đồng dư. Tính chất của đồng dư?
• Định nghĩa Giả sử a và b là các số nguyên và m là một số nguyên dương.
Khi đó ta viết a ≡ b (mod m) nếu m chia hết cho b-a. Mệnh đề a ≡ b (mod m)
được gọi là " a đồng dư với b theo modulo m". Số nguyên m được gọi là
mudulus. Giả sử chia a và b cho m và ta thu được phần thương nguyên và
phần dư, các phần dư nằm giữa 0 và m-1, nghĩa là a = q1m + r1 và b = q2m
+ r2 trong đó 0 ≤ r1 ≤ m-1 và 0 ≤ r2 ≤ m-1. Khi đó có thể dễ dàng thấy rằng
a ≡ b (mod m) khi và chỉ khi r1 = r2
• Tính chất của đồng dư
- Phép cộng là đóng với bất kì a,b ∈ Zm, a+ b ∈ Zm
- Phép cộng là giao hoán tức là với a,b bất kì ∈ Zm a + b = b + a
- Phép cộng là kết hợp, tức là với bất kì a,b,c ∈ Zm(a + b) + c = a +(b+c)
- 0 là phần tử đơn vị của phép cộng có nghĩa là với a bất kì ∈ Zm a + 0 = 0 + a
=a


- Phần tử nghịch đảo của phép cộng của phần tử bất kì a ∈ Zm là m – a, nghĩa
là a +(m-a) =(m-a) + a = 0 với bất kì a ∈ Zm

- Phép nhân là đóng tức là với a,b,bất kì ∈ Zm, ab∈ Zm
- Phép nhân là giao hoán, nghĩa là với a,b bất kì ∈ Zm, ab = ba
- Phép nhân là kết hợp, nghĩa là với a,b,c ∈ Zm, (ab)c= a(cb)
- 1 là phần tử đơn vị của phép nhân, tức là với bất kì a ∈ Zm a x 1 = 1 x a = a
- Phép nhân có tính chat phân phối đối với phép cộng, tức là đối với a,b,c ∈ Zm
(a+b)c = (a.c) +(bc) và a(b+c) = (ab) + (ac)
Câu 4. Định nghĩa hệ thống mật mã. Trình bày bài toán về an toàn
thông tin? Cho ví dụ
*Hệ thống mật mã là một ngành khoa học chuyên nghiên cứu các phương pháp
truyền tin bí mật. Mật mã bao gồm : Lập mã và phá mã. Lập mã bao gồm hai quá
trình: mã hóa và giải mã
* Bài toán về an toàn thông tin
Để bảo vệ thông tin trên đường truyền người ta thường biến đổi nó từ dạng nhận
thức được sang dạng không nhận thức được trước khi truyền đi trên mạng, quá
trình này được gọi là mã hoá thông tin (encryption), ở trạm nhận phải thực hiện
quá trình ngược lại, tức là biến đổi thông tin từ dạng không nhận thức được (dữ
liệu đã được mã hoá) về dạng nhận thức được (dạng gốc), quá trình này được gọi là
giải mã.
Câu 5. Phân biệt hệ mã dòng và mã khối. Lấy ví dụ về hệ mã dòng
Đối với mã khối, khi mã hóa, dữ liệu ban đầu được chia thành các khối (block)
thường thì có kích thước bằng nhau, và kích thước này sẽ tùy thuộc vào thuật toán
mã hóa được dùng như DES, 3DES, AES, RC2,…. Nếu áp dụng DES thì các khối
dữ liệu phải có kích thước là 64 bits, còn nếu áp dụng AES thì kích thước này phải
là 128 bits. Mã khối cần đến một khóa k trong suốt quá trình mã hóa, khóa này
cũng tùy thuộc vào thuật toán mã hóa áp dụng như trên. Trong thực tế khi áp dụng
mã khối thì dữ liệu ban đầu phải biết trước về kích thước. Nghĩa là áp dụng mã
khối cho dữ liệu đã biết trước cụ thể. Sau khi dữ liệu ban đầu được chia ra thành
các khối có kích thước nhất định, quá trình mã hóa sẽ sử dụng đến một trong các
kiểu hoạt động (mode of operation) để tạo thành bản mã tương ứng cho dữ liệu ban
đầu. Các mode of operations như ECB, CBC, CFB, OFB, CTR.

Đối với mã dòng, trong thực tế khi được áp dụng thì dữ liệu thường ở dạng biến
thiên theo thời gian. Nghĩa là không biết trước được dữ liệu ban đầu. Mỗi phần của
dữ liệu hiện tại sẽ được mã hóa cùng với một khóa zj tương ứng, j ∈ [0, ∞) . Các zj
tạo thành một dòng khóa (keystream), mỗi zj được gọi là một keyword. Hàm mã
hóa đơn giản nhất trong thực tế có thể chỉ đơn giản là một phép XOR giữa các bits
bản rõ và keystream tương ứng. Chính xác hơn là mỗi ký tự (character) của bản rõ
XOR với zj. Mô hình mã dòng sử dụng một khóa k ban đầu để sinh ra các zj.
Câu 6. Định nghĩa hệ mã dịch chuyển, cho ví dụ minh họa


Giả sử a và b là các số nguyên và m là một số nguyên dương. Khi đó ta viết a ≡ b
(mod m) nếu m chia hết cho b-a. Mệnh đề a ≡ b (mod m) được gọi là " a đồng dư
với b theo modulo m". Số nguyên m được gọi là mudulus.
Ví dụ:
Bản rõ P = ‘ HELLO’ K= 13
B1: rõ chữ -> rõ số
HELLO -> 7 4 11 11 14
B2: rõ số -> mã số (cộng k = 13)
20 17 24 24 1
B3: mã số -> mã chữ
URYYB
Câu 7. Định nghĩa hệ mã hoán vị, cho ví dụ minh họa
K chứa mọi hoán vị có thể của 26 kí hiệu 0,1 …,25 Với mỗi phép hoán vị π ∈ K
eπ(x) = π(x) và dπ(y) = π-1(y) trong đó π-1 là hoán vị ngược π
Ví dụ
Hãy giải mã bản mã ‘goodbye’
Sử dụng hàm mã hóa eπ(x) = π(x)
Mã hóa : g o
o d
b y e

->
O F
F A N D H
Hàm giải mã là hoán vị ngược điều này được thực hiện bằng cách viết hàng thứ hai
trước rồi sắp xếp theo thứ tự chữ cái
Giải mã: O F
F A N D H
->
g o
o d
b
y e
Câu 8. Định nghĩa hệ mã Affine. Cho ví dụ minh họa
Định nghĩa Giả sử a ≥ 1 và m ≥ 2 là các số nguyên. UCLN(a,m) = 1 thì ta nói rằng
a và m là nguyên tố cùng nhau. Số các số nguyên trong Zm nguyên tố cùng nhau
với m thường được ký hiệu là φ(m) (hàm này được gọi là hàm Euler)
Cho P = C = Z26 và giả sử P{ (a,b) ∈ Z26 Z26 : UCLN (a,26) = 1}
Với K = (a,b) ∈ K , ta định nghĩa eK(x) = ax + b mod 26 và dK(y) = a-1(y-b) mod
26, x,y ∈ Z26
Ví dụ: cho a = 7 b = 2 mã hóa ‘HELLO’
ADCT: eK(x) = ax + b mod 26
X= a ek + b mod 26
H = 7.7 + 2 mod 26 = 25 -> Z
E = 7.4 + 2 mod 26 = 4 -> E
L = 7.11 + 2 mod 26 = 1 -> B
L = 7.11 + 2 mod 26 = 1 -> B
O = 7.14 + 2 mod 26 = 22 -> W
Vậy giải mã là ZEBBW



Câu 9. Định nghĩa hệ mã Vigenere, cho ví dụ minh họa
. Định nghĩa P = C = K = (Z26) m . Với khoá K = (k1, k2, . . . ,km) ta xác định :
eK(x1, x2, . . . ,xm) = (x1+k1, x2+k2, . . . , xm+km) và dK(y1, y2, . . . ,ym) = (y1k1, y2-k2, . . . , ym-km) trong đó tất cả các phép toán được thực hiện trong Z26
Ví dụ:
Giả sử m = 4 và từ khóa là NGAT tương ứng với K = ( 13 - 6 - 0 -19)
Mã hóa NGUYEN THI NGAT
N
G
U
Y
E
N
T
H
I
N
G
A
T
13
6
20 24
4
13 19
7
8
13
6
0
19

13
6
0
19 13
6
0
19 13
6
0
19 13
Mod 26
0
12 20 17 17 19 19 0
21 19 6
19 6
Kí tự tương ứng mã hóa là
A
M U
R
R
T

T

A

V

T


G

T

G

Câu 10. Định nghĩa hệ mã Hill. Cho ví dụ minh họa.
Cho số nguyên dương m, định nghĩa P = C = (Z26)m. Mỗi phần tử x∈P là một bộ
m thành phần, mỗi thành phần thuộc Z26. Ý tưởng chính của phương pháp này là sử
dụng m tổ hợp tuyến tính của m thành phần trong mỗi phần tử x∈P để phát sinh ra
m thành phần tạo thành phần tử y∈C.
Phương pháp mã hóa Hill Cipher
Chọn số nguyên dương m. Định nghĩa:
P = C = (Z26)m và K là tập hợp các ma trận m×m khả nghịch

 k1,1

 k 2,1
Với mỗi khóa k = 


k
 m ,1

k1, 2  k1,m 

  k 2 ,m 
∈ K , định nghĩa:

 


k m, 2  k m ,m 
 k1,1 k1, 2  k1,m 


 k 2,1   k 2,m 
ek ( x ) = xk = ( x1 , x2 ,..., x m ) 
với x=(x1, x2, ..., xm) ∈ P


 


k

k

k
m, 2
m,m 
 m,1

và dk(y) = yk–1 với y∈ C


Mọi phép toán số học đều được thực hiện trên Zn

Câu 11. Cho khóa của hệ mã dịch vòng k = 7
a. Hãy mã hóa bản tin x = “Fallinlove”
Bản rõ P=“Fallinlove” K= 7

B1: rõ chữ -> rõ số
F
A
L
L
I
5
0
11
11
8
B2: rõ số -> mã số (cộng k =7 )
5
0
11
11
Cộng k = 12
7
18
18
7 mod 26
B3: mã số -> mã chữ
12
7
18
18
15
M
H
S

S
P

N
13

L
11

O
14

4
E

17
T

E
4

8
15

13
20

11
18


14
21

21
28

20
U

18
S

21
V

28
C

11
L

F
5

L
11

b. Hãy giải mã bản tin y = “WVDLYVMLFLZ”
B1: rõ chữ -> rõ số
W

V
D
L
Y
V
M
L
5
21
3
11
24
21
12
11
B2: rõ số -> mã số ( trừ k =7 )
5
21
3
11
24
21
12
11
Trừ k = 7 -2
14
-4
4
17
14

5
4
Mod 26
24
14
22
4
17
14
5
4
B3: mã số -> mã chữ
24
14
22
Y
O
W

V
21

14
O

5
F

4
E


5
-2
24

24
Y

Vậy giải mã bản tin là :YOWETOFEYES
Câu 12. Cho mã khóa Affine (a,b) = (19,3)
a. Hãy trình bày quá trình mã hóa bản tin sau: “Hello”
a = 19 , b = 3 xâu “Hello” chuyến thành số 7-4-11-11-14
ADCT: eK(x) = ax + b mod 26
X= a ek + b mod 26
H = 19.7 + 3 mod 26 = 6 -> G
E = 19.4 + 3 mod 26 = 1 -> B
L = 19.11 + 3 mod 26 = 4 -> E

11
4
4

4
E

4
11

Z
25

25
18
18

18
S


L = 19.11 + 3 mod 26 = 4 -> E
O = 19.14 + 3 mod 26 = 9 -> J
Vậy bản tin mã hóa là: GBEEJ
b. Trình bày quá trình giải mã: “IJMB”
Chuyển các kí tự thành các số 8-912-1
Ta có a mũ -1 trrong modun 26
19−1 = 11
ADCT giải mã ta được
dK(8)= 19−1 (8-3) mod 26 = 55 mod 26 = 3 -> D
dK(9)= 19−1 (9-3) mod 26 = 66 mod 26 = 14 -> O
dK(12)= 19−1 (12-3) mod 26 = 99 mod 26 = 21 -> V
dK(1)= 19−1 (1-3) mod 26 = -22 mod 26 = -22+ 26*1 = 4 -> E
Vậy xâu đã được giải mã là: DOVE
Câu 13. Cho hệ mã viginere có từ khóa INFORMATION
a. Trình bày quá trình mã bản rõ x = “technologydepartment”
Từ khóa INFORMATION tương ứng k= 8-13-5-14-17-12-0-19-8-14-13
Mã hóa “technologydepartment”
T

E

19 3


+

8

C H

N

2

13 1 11 10 6
4
17 12 0 19 8

13 5

27 16 7

Mod26

1

16 7

7

O

L


O

G

1
4
21 30 26 11 29 1
4
21 4 0 11 3 1
4

Y

D

E

P

A R

2 3 4 15 0
4
1 13 8 13 5
4
38 16 12 28 5
12 16 12 2

5


T

M

E N

17 19 12 4

13 19

1 17 12 0
4
31 36 2 4
4
5 10 2 4
4

19 8
32 27
6

Kí tự tương ứng mã hóa là: BQHVEALDOMQMCFFKYEGB
b.Trình bày cách giải mã bản mã: y = “pbhhrbcaia”
Mod
26

P
15
8

7
7

B
1
13
-12
14

H
7
5
2
2

H
7
14
-7
19

R
17
17
0
0

B
1
12

-11
15

C
2
0
2
2

T

A
0
19
-19
7

I
8
8
0
0

A
0
14
-14
12

1



Kí tự tương ứng giải mã là : HOCTAPCHAM
Câu 14. Trình bày hệ mã Affine. Trong Z26 cho bản rõ x= “ UNINSTALL”
với 3 khóa như sau (9,15); (6,3); (11,25). Hãy chọn khóa cho phù hợp trong 3
khóa trên để lập bản rõ x.
Trình bày hệ mã Affine: Định nghĩa Giả sử a ≥ 1 và m ≥ 2 là các số nguyên.
UCLN(a,m) = 1 thì ta nói rằng a và m là nguyên tố cùng nhau. Số các số nguyên
trong Zm nguyên tố cùng nhau với m thường được ký hiệu là φ(m) (hàm này được
gọi là hàm Euler)
Cho P = C = Z26 và giả sử P{ (a,b) ∈ Z26 Z26 : UCLN (a,26) = 1}
Với K = (a,b) ∈ K , ta định nghĩa eK(x) = ax + b mod 26 và dK(y) = a-1(y-b) mod
26, x,y ∈ Z26
Cho bản rõ x = “ UNINSTALL” chọn khóa (6,3) a = 6 b = 3 ADCT:
eK(x) = ax + b mod 26
X= a ek + b mod 26
Đổi xâu: UNINSTALL thành các chữ số 20-13-8-13-18-0-11-11
eK(20) = 6*20 +3 mod 26 = 19 => T
eK(13) = 6*13 +3 mod 26 = 3 => D
eK(8) = 6*8 +3 mod 26 = 25 => Z
eK(13) = 6*13 +3 mod 26 = 3 => D
eK(18) = 6*18 +3 mod 26 = 7 =>H
eK(0) = 6*0 +3 mod 26 = 3 => D
eK(11) = 6*11 +3 mod 26 = 17 => R
eK(11) = 6*11 +3 mod 26 = 17 => R
Vậy bản rõ là : TDZDHDRR
Câu 15. Cho khóa của mã Affine (a,b) = (5,17)
a. Hãy trình bày quá trình mã hóa bản tin sau: “Antoanthongtin”
K(5,17) a = 5 b= 17
Đổi xâu “Antoanthongtin” thành các chữ số 0-13-19-14-0-13-19-7-14-13-6-198-13

eK(0) = 5*0 + 17 mod 26 = 17 -> R
eK(13) = 5*13 + 17 mod 26 = 4 -> E
eK(19) = 5*19 + 17 mod 26 = 8 -> I
eK(14) = 5*14 + 17 mod 26 = 9 -> J
eK(0) = 5*0 + 17 mod 26 = 17 ->R
eK(13) = 5*13 + 17 mod 26 = 4->E


eK(19) = 5*19 + 17 mod 26 = 8 -> I
eK(7) = 5*7 + 17 mod 26 = 0 -> A
eK(14) = 5*14 + 17 mod 26 = 9 -> J
eK(13) = 5*13 + 17 mod 26 = 4 -> E
eK(6) = 5*6 + 17 mod 26 = 21 -> V
eK(19) = 5*19 + 17 mod 26 = 8 -> I
eK(8) = 5*8 + 17 mod 26 = 5 -> F
eK(13) = 5*13 + 17 mod 26 = 4 -> E
Vậy bản tin mã hóa là: REIJREIAJEVIFE
b.Hãy trình bày quá trình giải mã: “AJBIROBARZBAF”
Chuyển các kí tự thành các số 0-9-1-8-17-14-1-0-17-25-1-0-5
Ta có a mũ -1 trrong modun 26
5−1 = 21
ADCT giải mã ta được
dK(0)= 5−1 (0-17) mod 26 = (-357) mod 26 = -357+ 14*26 = 7 -> H
dK(9)= 5−1 (9-17) mod 26 = (-168 )mod 26 = -168 +7*26 = 14 -> O
dK(1)= 5−1 (1-17) mod 26 = (-336) mod 26 = -336+ 13*26 = 2 -> C
dK(8)= 5−1 (8-17) mod 26 = (-189) mod 26 = -189+ 8*26 = 19 -> T
dK(17)= 5−1 (17-17) mod 26 = 0 ->A
dK(14)= 5−1 (14-17) mod 26 = (-63) mod 26 = -63+ 3*26 = 15 -> P
dK(1)= 5−1 (1-17) mod 26 = (-336) mod 26 = -336+ 13*26 = 2 -> C
dK(0)= 5−1 (0-17) mod 26 = (-357) mod 26 = -357+ 14*26 = 7 -> H

dK(17)= 5−1 (17-17) mod 26 = 0 ->A
dK(25)= 5−1 (25-17) mod 26 = 168 mod 26 = 12 -> M
dK(1)= 5−1 (1-17) mod 26 = (-336) mod 26 = -336+ 13*26 = 2 -> C
dK(0)= 5−1 (0-17) mod 26 = (-357) mod 26 = -357+ 14*26 = 7 -> H
dK(5)= 5−1 (5-17) mod 26 = (-252) mod 26 = -252+ 10*26 = 8 -> I
Vậy xâu đã được giải mã là: HOCTAPCHAMCHI
Câu 16. Trình bày về hệ mã khóa Vigenere trong Z26 cho bản rõ
x= “TOIYEUVIETNAM” với m= 4 và khóa k=(2,8,15,7) hãy tìm bản rõ x
Định nghĩa P = C = K = (Z26) m . Với khoá K = (k1, k2, . . . ,km) ta xác định :
eK(x1, x2, . . . ,xm) = (x1+k1, x2+k2, . . . , xm+km) và dK(y1, y2, . . . ,ym) = (y1k1, y2-k2, . . . , ym-km) trong đó tất cả các phép toán được thực hiện trong Z26
M=4 tương ứng với khóa K = (2-8-15-7)
Mã hóa x = “TOIYEUVIETNAM”
T
O
I
Y
E
U
V
I
E
T
N
A
M
19 14 8
24 4
20 21 8
4
19 13 0

12


+
Mod
26

2
21
21

8
22
22

15
23
23

7
31
5

2
6
6

8
28
2


15
36
8

7
15
15

2
6
6

8
27
1

15
28
2

7
7
7

2
14
14

Kí tự tương ứng mã hóa là: VWXFGCIPGBCHO

Câu 17. Cho khóa của mã Affine (a,b) = (19,3)
a. Hãy trình bày quá trình mã hóa bản tin sau: “Hello”
K(19,3) a = 19 b= 3
Đổi xâu “Hello” thành các chữ số 7-4-11-11-14
eK(7) = 19*7 + 3 mod 26 = 6 -> G
eK(4) = 19*4 + 3 mod 26 = 1-> B
eK(11) = 19*11 + 3 mod 26 = 4 -> E
eK(11) = 19*11 + 3 mod 26 = 4-> E
eK(14) = 19*14 + 3 mod 26 = 9 -> J
Vậy bản tin mã hóa là: GBEEJ
b.Hãy trình bày quá trình giải mã: “IJMB”
Chuyển các kí tự thành các số 8-912-1
Ta có a mũ -1 trrong modun 26
19−1 = 11
ADCT giải mã ta được
dK(8)= 19−1 (8-3) mod 26 = 55 mod 26 = 3 -> D
dK(9)= 19−1 (9-3) mod 26 = 66 mod 26 = 14 -> O
dK(12)= 19−1 (12-3) mod 26 = 99 mod 26 = 21 -> V
dK(1)= 19−1 (1-3) mod 26 = -22 mod 26 = -22+ 26*1 = 4 -> E
Vậy xâu đã được giải mã là: DOVE
Câu 18. Định nghĩa hệ mã Hill. Cho ví dụ minh họa.
Cho số nguyên dương m, định nghĩa P = C = (Z26)m. Mỗi phần tử x∈P là một bộ
m thành phần, mỗi thành phần thuộc Z26. Ý tưởng chính của phương pháp này là sử
dụng m tổ hợp tuyến tính của m thành phần trong mỗi phần tử x∈P để phát sinh ra
m thành phần tạo thành phần tử y∈C.
Phương pháp mã hóa Hill Cipher
Chọn số nguyên dương m. Định nghĩa:
P = C = (Z26)m và K là tập hợp các ma trận m×m khả nghịch



 k1,1

 k 2,1
Với mỗi khóa k = 


k
 m ,1

k1, 2  k1,m 

  k 2 ,m 
∈ K , định nghĩa:

 

k m, 2  k m ,m 
 k1,1 k1, 2  k1,m 


 k 2,1   k 2,m 
ek ( x ) = xk = ( x1 , x2 ,..., x m ) 
với x=(x1, x2, ..., xm) ∈ P


 


k


k

k
m
,
1
m
,
2
m
,
m



và dk(y) = yk–1 với y∈ C

Mọi phép toán số học đều được thực hiện trên Zn
Câu 19. Cho khóa của mã Affine (a,b) = (23,5)
a. Hãy trình bày cách mã hóa bản tin: “Hero”
K(23,5) a = 23 b= 5
Đổi xâu “Hero” thành các chữ số 7-4-17-14
eK(7) = 23*7 + 5 mod 26 = 10-> K
eK(4) = 23*4 + 5 mod 26 = 19-> T
eK(17) = 23*17 + 5 mod 26 = 6-> G
eK(4) = 23*14 + 5 mod 26 = 15 -> P
Vậy bản tin mã hóa là: KTGP
b.Hãy trình bày cách giải mã bản mã: “ZKTTG”
Chuyển các kí tự thành các số 25-10-19-19-6
Ta có a mũ -1 trrong modun 26

23−1 = 17
ADCT giải mã ta được
dK(25)= 23−1 (25-5) mod 26 = 340 mod 26 = 2-> C
dK(10)= 23−1 (10-5) mod 26 = 85 mod 26 = 7 -> H
dK(19)= 23−1 (19-5) mod 26 = 238 mod 26 = 4 -> E
dK(19)= 23−1 (19-5) mod 26 = 238 mod 26 = 4 -> E
dK(6)= 23−1 (6-5) mod 26 = 17 mod 26 = 17 - > R
Vậy xâu đã được giải mã là: CHEER
Câu 20. Biết khóa của mã Affine là (a,b) =(21,4)
a. Hãy giải mã bản mã: “XIREYEO”
K(21,4) a = 21 b= 4
Đổi xâu “XIREYEO” thành các chữ số 23-8-17-4-24-4-14


Ta có a mũ -1 trrong modun 26
21−1 = 5
ADCT giải mã ta được
dK(23)= 21−1 (23-4) mod 26 = -95 mod 26 = -95 + 26*3= 17-> R
dK(8)= 21−1 (8-4) mod 26 = 20 mod 26 = 20 -> U
dK(17)= 21−1 (17-4) mod 26 = -65 mod 26 = -65 + 26*2= 13-> N
dK(4)= 21−1 (4-4) mod 26 = 0 mod 26 = 0 -> A
dK(24)= 21−1 (24-4) mod 26 = 100 mod 26 = 22 -> W
dK(4)= 21−1 (4-4) mod 26 = 0 mod 26 0-> A
dK(14)= 21−1 (14-4) mod 26 = 260 mod 26 = 0 -> A
Vậy xâu đã được giải mã là: RUNAWAA

b.Hãy giải mã bản rõ: “Data”
K(21,4) a = 21 b= 4
Đổi xâu “DATA” thành các chữ số 3-0-19-0
eK(3) = 21*3 + 4 mod 26 = 15 -> P

eK(0) = 21*0 + 4 mod 26 = 4 -> E
eK(19) = 21*19 + 4 mod 26 = 13 -> N
eK(0) = 21*0 + 4 mod 26 = 4 -> E
Vậy bản tin mã hóa là: PENE

Câu 21. Cho khóa của hệ viginere là: DEMECIN
a. Hãy trình bày cách mã hóa bản tin: “Student”
Từ khóa DEMECIN tương ứng k = 3-4-12-4-2-8-13
Mã hóa “Student”

+
Mod26

S
18
3
21
21

T
19
4
23
23

U
20
12
32
6


D
3
4
7
7

E
4
2
6
6

Kí tự tương ứng mã hóa là: VXGHGVG
b.Trình bày cách giải mã bản mã: “WIMGJME”

N
13
8
21
21

T
19
13
32
6


Mod26


W
22
3
19
19

I
8
4
4
4

M
12
12
0
0

G
6
4
2
2

J
9
2
7
7


M
12
8
4
4

E
4
13
-9
17

Kí tự tương ứng giải mã là: TEACHER
Câu 22. Cho từ khóa PROTECT của hệ mật viginene
a. Hãy mã hóa bản rõ: “paintmylove”
Từ khóa PROTECT tương ứng = 15-17-14-19-4-2-19
Mã hóa “paintmylove”
P
15
15
+
30
Mod26 4

A
0
17
17
17


I
8
14
22
22

N
13
19
32
6

T
19
4
23
23

M
12
2
14
14

Y
24
19
43
17


L
11
15
26
0

O
14
17
31
5

V
21
14
35
9

E
4
19
23
23

Kí tự tương ứng mã hóa là : ERWGXORAFJX
b.Hãy giải mã bản mã: “HVOZEOX”

Mod26


H
7
15
-8
18

V
21
17
4
4

O
14
14
0
0

Z
25
19
6
6

E
4
4
0
0


O
14
2
12
12

X
23
19
4
4

Kí tự tương ứng giải mã là: SEAGAME
Câu 23. Cho từ khóa BAOMAT là từ khóa của hệ mã viginere
a. Hãy mã hóa bản tin: “Anninhmang”
Từ khóa BAOMAT tương ứng k= 1-0-14-12-0-19
Mã hóa “Anninhmang”
A
0
1
+
1
Mod 26 1

N
13
0
13
13


N
13
14
27
1

I
8
12
20
20

N
13
0
13
13

H
7
19
26
0

M
12
1
13
13


A
0
0
0
0

N
13
14
27
1

G
6
12
18
18


Kí tự tương ứng mã hóa là: BNBUNANABS
b.Hãy giải mã bản mã: “UUCZGEVA”
U
U
C
Z
G
20
20
2
25

6
1
0
14
12
0
19
20
-12
13
6
Mod26 19
20
14
13
6

E
4
19
-15
11

V
21
1
20
20

A

0
0
0
0

Kí tự tương ứng giải mã là : TUONGLUA
Câu 24. Trình bày hệ mã Affine. Trong Z26 cho bản rõ x= “ UNINSTALL”
với 3 khóa như sau (9,15); (6,3); (11,25). Hãy chọn khóa cho phù hợp trong 3
khóa trên để lập bản rõ x.
* Trình bày hệ mã Affine: Định nghĩa Giả sử a ≥ 1 và m ≥ 2 là các số nguyên.
UCLN(a,m) = 1 thì ta nói rằng a và m là nguyên tố cùng nhau. Số các số nguyên
trong Zm nguyên tố cùng nhau với m thường được ký hiệu là φ(m) (hàm này được
gọi là hàm Euler)
Cho P = C = Z26 và giả sử P{ (a,b) ∈ Z26 Z26 : UCLN (a,26) = 1}
Với K = (a,b) ∈ K , ta định nghĩa eK(x) = ax + b mod 26 và dK(y) = a-1(y-b) mod
26, x,y ∈ Z26
Ví dụ: Cho bản rõ x = “ UNINSTALL” chọn khóa (6,3) a = 6 b = 3 ADCT:
eK(x) = ax + b mod 26
X= a ek + b mod 26
Đổi xâu: UNINSTALL thành các chữ số 20-13-8-13-18-0-11-11
eK(20) = 6*20 +3 mod 26 = 19 => T
eK(13) = 6*13 +3 mod 26 = 3 => D
eK(8) = 6*8 +3 mod 26 = 25 => Z
eK(13) = 6*13 +3 mod 26 = 3 => D
eK(18) = 6*18 +3 mod 26 = 7 =>H
eK(0) = 6*0 +3 mod 26 = 3 => D
eK(11) = 6*11 +3 mod 26 = 17 => R
eK(11) = 6*11 +3 mod 26 = 17 => R
Vậy bản rõ là : TDZDHDRR
Câu 25. Trình bày về hệ mã khóa Vigenere trong Z26 cho bản rõ

x= “TOIYEUVIETNAM” với m= 4 và khóa k=(2,8,15,7) hãy tìm bản rõ x
Định nghĩa P = C = K = (Z26) m . Với khoá K = (k1, k2, . . . ,km) ta xác định :
eK(x1, x2, . . . ,xm) = (x1+k1, x2+k2, . . . , xm+km) và dK(y1, y2, . . . ,ym) = (y1k1, y2-k2, . . . , ym-km) trong đó tất cả các phép toán được thực hiện trong Z26
T
19

O
14

I
8

Y
24

E
4

U
20

V
21

I
8

E
4


T
19

N
13

A
0

M
12


+

2
21
Mod26 21

8
22
22

15
23
23

7
31
5


2
6
6

8
28
2

15
36
8

7
15
15

2
6
6

8
27
1

15
28
2

7

7
7

2
14
14

Kí tự tương ứng mã hóa là : VWXFGCIPGBCHO
Câu 26. Mô tả thuật toán DES. Đầu vào, đầu ra, vẽ sơ đồ tổng quả của thuật
toán, giải thích sơ đồ.
 Mô tả DES:
 DES mã hoá một xâu bit x của bản rõ độ dài 64 bằng một khoá 56 bit. Bản mã
nhận được cũng là một xâu bit có độ dài 64.
 Thuật toán tiến hành theo 3 bước:
 B1: Với bản rõ cho trước x, một xâu bit x 0 sẽ được xây dựng bằng cách
hoán vị các bit của x theo phép hoán vị cố định ban đầu IP. Ta viết: x 0 =
IP(x) = L0R0, trong đó L0 gồm 32 bit đầu và R0 là 32 bit cuối.
 B2: Sau đó tính toán 16 lần lặp theo một hàm xác định. Ta sẽ tính
LiRi, 1≤ i ≤ 16 theo quy tắc sau:
Li = Ri-1; Ri = Li-1 ⊕ f(Ri-1, ki)

 Trong đó:
 ⊕ là phép loại trừ của hai xâu bit
 f là một hàm sẽ được mô tả ở sau
 k1, k2, …, k16 là các xâu bit có độ dài 48 được tính như 1
hàm của khóa k (ki chính là một phép chọn hoán vị bit trong
k).
 Một vòng của phép mã hóa được mô tả như sau:

B3: Áp dụng phép hoán vị ngược IP-1 cho xâu bit R16L16, ta

thu được bản mã y. Tức là y = IP-1(R16L16) . Hãy chú ý thứ tự đã đảo của L16 và R16

Câu 27. Trình bày hàm mật mã f trong thuật toán mã hóa khối DES. Đầu vào,
đầu ra, vẽ sơ đồ thực hiện của hàm f
 Mô tả hàm f:
 Hàm f có 2 biến vào:
 Xâu bit A có độ dài 32


 Xâu bit J có độ dài 48
 Đầu ra của f là xâu bit có độ dài 32.
 Các bước thực hiện:
 B1: Biến thứ nhất A được mở rộng thành một xâu bit độ dài
48 theo một hàm mở rộng cố định E. E(A) gồm 32 bit của A
(được hoán vị theo cách cố định) với 16 bit xuất hiện hai lần.
 B2: Tính E(A) ⊕ J và viết kết quả thành một chuỗi 8 xâu 6 bit
là B1B2B3B4B5B6B7B8.
 B3: Bước tiếp theo dùng 8 bảng S 1S2,…,S8 ( được gọi là các
hộp S ). Với mỗi Si là một bảng 4×16 cố định có các hàng là
các số nguyên từ 0 đến 15. Với xâu bit có độ dài 6 (kí hiệu B i
= b1 b2 b3 b4 b5 b6), ta tính Sj(Bj) như sau:
(0≤ r ≤ 3)

 Hai bit b1b6 xác định biểu diễn nhị phân hàng r của Sj
 Bốn bit (b2 b3 b4 b5) xác định biểu diễn nhị phân của

cột c của Sj (0≤ c ≤ 15).
 Khi đó Sj(Bj) sẽ xác định phần tử Sj(r, c) ; phần tử này
viết dưới dạng nhị phân là một xâu bit có độ dài 4
 Bằng cách tương tự tính các Cj = Sj(Bj) , (1 ≤ j ≤ 8).

 B4: Xâu bit C = C1 C2 … C8 có độ dài 32 được hoán vị theo phép hoán vị cố định
P. Xâu kết quả là P(C) được xác định là f(A, J).

Câu 28. Trình bày thuận toán tạo khóa trong hệ mã hóa khối DES. Đầu vào,
đầu ra, vẽ sơ đồ thực hiện
Từ khoá mẹ 64 bit ban đầu sinh ra 16 khoá con ứng với từng vòng theo sơ đồ sau:


……………………..

Sinh khoá con.
Khoá ban đầu nhập vào là một chuỗi 64 bit, trong vòng đầu tiên khoá 64 bit được cho qua
hộp PC-1(Permuted Choice) để hoán vị có lựa chọn thành khoá 56 bit.
Hộp PC-1.

Theo đó, bit thứ 57 trở thành bit đầu tiên, bit thứ 49, 41, 33, … lần lượt là các bit tiếp
theo, và bit thứ 4 trở thành bit cuối cùng của chuỗi khoá.
Tiếp theo chia đôi khoá 56 bit đó thành hai nửa trái và phải, mỗi nửa này sẽ được dịch
vòng sang trái 1 hoặc 2 bit tuỳ mỗi vòng theo quy tắc sau:

Sau khi dịch, hai nửa của khoá lại được ghép lại rồi cho vào hộp PC-2 để tiếp tục hoán vị
có lựa chọn thành khoá 48 bit và đó chính là khoá con cho vòng tương ứng.
Hộp PC-2.


Khoá đi qua PC-2 thì bit thứ 14 trở thành bit đầu tiên, các bit thứ 17, 11, 24, … là các bit
tiếp theo, bit thứ 32 là bit cuối cùng của khoá con.

Câu 29. Thế nào là một hệ mã hóa khóa công khai? Cho ví dụ
Khoá công khai ra đời vào đầu những năm 1970. Có thể nói đây là bước tiến quan

trọng nhất trong lịch sử 3000 năm mã hoá. Ở đây người ta sử dụng 2 khoá: một khoá
riêng và một khoá công khai. Hai khoá này khác nhau, không đối xứng với nhau, do đó
mã khoá công khai, còn được gọi là mã không đối xứng. Người ta đã ứng dụng một cách
thông minh các kết quả của lý thuyết số về hàm số.
Khoá công khai ra đời hỗ trợ thêm để giải quyết một số bài toán an toàn, chứ
không phải thay thế khoá riêng. Cả hai khoá cùng tồn tại, phát triển và bổ sung cho nhau.
Khoá công khai/hai khoá/không đối xừng bao gồm việc sử dụng 2 khoá:
o Khoá công khai, mà mọi người đều biết, được dùng để mã hoá mẩu tin và
kiểm chứng chữ ký.
o Khoá riêng, chỉ người nhận biết, đề giải mã bản tin hoặc để tạo chữ ký.
o Là không đối xứng vì những người mã hoá và kiểm chứng chữ ký không thể
giải mã hoặc tạo chữ ký.

Sơ đồ mã khoá công khai
Khoá công khai sử dụng để giải quyết hai vấn đề sau về khoá nảy sinh trong thực tế:
o Phân phối khoá - làm sao có thể phân phối khóa an toàn mà không cần trung
tâm phân phối khoá tin cậy
o Chữ ký điện tử - làm sao có thể kiểm chứng được rằng mẩu tin gửi đến nguyên
vẹn từ đúng người đứng tên gửi.

Ví dụ
f: pq →n la hàm một chiều với p và q là các số nguyên tố lớn


Có thể dễ dàng thực hiên phép nhân đa thức (độ phức tạp đa thức)
Tính f-1 (phân tích ra thành thừa số nguyên tố độ phức tạp mũ ) là bài toán cực kì
khó
Câu 30. Trình bày cách tính khóa trong giải thuật mã hóa DES
DES tạo ra 16 khóa, mỗi khóa chiều dài 48 bit từ một khóa input 56 bit,
dùng cho 16 vòng lặp.

Khóa input là một khối 64 bit, với 8bit parity tại các vị trí 8, 16,.…, 64.
Permutation PC-1 sẽ loại bỏ các bit parity và sẽ hoán vị 56 bit còn lại theo bảng 5.
Kết quả, PC-1(K) sau đó được chia thành hai phần C 0 và D0 mỗi phần 28 bit. Khóa
Ki dùng trong vòng thứ i được tạo ra từ C i-1 và Di-1 theo quy tắc như sau: trong các
vòng 1, 2, 9 và 16, C i-1 và Di-1 được quay vòng một bít qua trái, trong các vòng còn
lại thì được quay vòng hai bít qua trái. Qua phép quay vòng này C i-1 và Di-1 sẽ được
biến đổi thành Ci và Di . Hốn vị Ci và Di. Sau khi hốn vị Ci bỏ qua các bít 9, 18, 22,
25 tạo thành nữa trái của K i (24 bít), còn Di bỏ đi các bít 35, 38, 43, 54 tạo ra nữa
phải của Ki (24 bít). Ghép nữa trái và nữa phải tạo ra khóa Ki 48 bít.
Câu 31. So sánh mã hóa đối xứng với hệ mã hóa công khai
So sánh giữa mã hóa đối xứng và mã hóa bất đối xứng:
- Mã khóa bí mật (mã hóa đối xứng-mã hóa khóa riêng):
+ Sử dụng cùng 1 khóa bởi người gửi (cho việc mã hóa) và người nhận (cho việc
giải mã).
+ Thuật toán được chấp nhận rộng rãi nhất cho việc mã hóa khóa bí mật là thuật
toán chuẩn mã hóa dữ liệu (DES). Giao thức SET chấp nhận thuật toán DES với
chìa khóa 64 bit của nó. Thuật toán này có thể phá mã được nhưng phải mất nhiều
năm với chi phí hàng triệu đôla.
+ Người gửi và người nhận thông điệp phải chia sẻ 1 bí mật, gọi là chìa khóa.
- Mã khóa công khai (mã hóa không đối xứng ):
+ Sử dụng 2 khóa khác nhau, 1 khóa công khai (để mã hóa thông điệp tất cả người
sử dụng được phép biết) và một khóa riêng (để giải mã thông điệp chỉ có người sở
hữu nó biết).
+ Thuật toán được chấp nhận rộng rãi nhất cho việc mã hóa công khai là thuật toán
RSA với nhiều kích cỡ khác nhau (1024 bit). Thuật toán này không bao giờ bị phá
bởi các hacker, do đó nó được xem là phương pháp mã hóa an toàn nhất được biết
cho đến nay.
+ Thông điệp được mã hóa chỉ có thể được giải mã với chìa khóa riêng của người
nhận
Câu 32. Tính an toàn của hệ mã hóa công khai? Cho ví dụ minh họa



Cũng giống như khoá riêng việc tìm kiếm vét cạn luôn luôn có thể, tức là khi biết
một trong hai khoá và thuật toán mã hoá về nguyên tắc ta có thể dò tìm khoá thứ
hai bằng cách tính toán các giá trị liên quan. Nói chung khối lượng cần tính toán là
rất lớn do độ phức tạp của bài toán xác định khoá. Nếu khoá sử dụng là rất lớn cỡ
hơn 512 bit, thì hầu như bài toán tìm khoá thứ hai là không khả thi, không thể thực
hiện được trong thời gian có nghĩa, cho dù nguồn lực có thể rất lớn.
Tính an toàn dựa trên sự khác biệt đủ lớn giữa các bài toán dễ là mã/giải mã khi
biết khoá và bài toán khó là thám mã khi không biết khoá tương ứng. Vì bài toán
thám mã nằm trong lớp các bài toán khó tổng quát hơn đã được biết đến và về mặt
lý thuyết đã được chứng minh là nó rất khó có thể thực hiện trên thực tế. Bởi vì nó
đòi hỏi sử dụng số rất lớn, nên số phép toán cần thực hiện là rất nhiều. Đây là ý
tưởng chính để tạo nên một mã công khai. Ta tìm kiếm các bài toán mà nếu biết
thông tin mật nào đó được che dấu thì nó rất dễ thực hiện, còn nếu không thì nó
thuộc lớp bài toán rất khó giải, hầu như không thể giải trên thực tế.
Mã công khai thường chậm hơn khá nhiều so với mã đối xứng, nên nó thường
được dùng mã những thông tin nhỏ quan trọng.
Câu 33. Trình bày sơ đồ hệ mã hóa công khai RSA.
Câu 34. Cơ sở của hệ mật RSA. Nêu cách tấn công hệ mật mã RSA
Cơ sở của hệ mật RSA
• Để mã hoá mẩu tin, người gủi:
o lấy khoá công khai của người nhận KU={e,N}
o Tính C=Me mod N, trong đó 0≤M• Để giải mã hoá bản mã, người sở hữu nhận:
o Sử dụng khóa riêng KR={d,p,q}
o Tính M=Cd mod N
• Lưu ý rằng bản tin M < N, do đó khi cần chia khối bản rõ.
Cơ sở của RSA
• Theo Định lý Ole

o aФ(n)mod N = 1 trong đó gcd(a,N)=1
o Ta có N=p.q
o Ф(N)=(p-1)(q-1)
o e.d=1 mod Ф(N)
o e.d=1+k.Ф(N) đối với một giá trị k nào đó.
Suy ra


o Cd = (Me)d = M1+k.Ф(N) = M1.(MФ(N))k suy ra
o
Cd
modN = M1.(1)k modN = M1 modN = M modN
Ví dụ
1. Chọn các số nguyên tố: p=17 & q=11.
2. Tính n = pq,
n = 17×11=187
3. Tính Ф(n)=(p–1)(q-1)=16×10=160
4. Chọn e : gcd(e,160)=1; Lấy e=7
5. Xác định d: de=1 mod 160 và d < 160
Giá trị cần tìm là d=23, vì 23×7=161= 10×160+1
6. In khoá công khai KU={7,187}
7. Giữ khoá riêng bí mật KR={23,17,11}
Ví dụ áp dụng mã RSA trên như sau:
• Cho mẩu tin M = 88 (vậy 88<187)
• Mã C = 887 mod 187 = 11
• Giải mã M = 1123 mod 187 = 88
• Có thể dùng định lý phần dư Trung Hoa để giải mã cho nhanh như sau:
a. Tính 1123 mod 11 = 0
b. Tính 1123mod 17 = (-6)23 mod 17 = (-6)16(-6)4 (-6)2 (-6) mod 17 = 3
Vì (-6)2 mod 17 = 2, nên (-6)4 mod 17 = 4, (-6)8 mod 17 = -1

(-6)16 mod 17 = 1
c. 11-1 mod 17 = (-6)-1 mod 17 = 14 nên c 2 = 11(11-1 mod 17) = 11 (14 mod 17)
= 154
d. Vậy M = (3.154) mod 187 = 462 mod 187 = 88
Cách tấn công hệ mật mã RSA
Trên thực té có nhiều cách tấn công khác nhau đối với mã công khai RSA như sau:
Tìm kiếm khoá bằng phương pháp vét cạn, phương pháp này không khả thi với kích
thước đủ lớn của các số hoặc tấn công bằng toán học dựa vào độ khó việc tính Ф(n) bằng
cách phân tích n thành hai số nguyên tố p và q hoặc tìm cách tính trực tiếp Ф(n). Trong
quá trình nghiên cứu việc thám mã người ta đề xuất kiểu tấn
công thời gian trong khi giải mã, tức là căn cứ vào tốc độ mã hoá và giải mã các mẩu tin
cho trước mà phán đoán các thông tin về khoá. Cuối cùng có những nghiên cứu tấn công
RSA với điều kiện biết trước bản mã cho trước. Cu thể như sau:
Bài toán phân tích
• Tấn công toán học có 3 dạng
o Phân tích N = p.q, sau đó tính Ф(N) và d
o Tìm n trực tiếp Ф(N) và tính d
o Tìm d trực tiếp


• Hiện tại tin rằng tất cả đều tương đương với bài toán phân tích
o Có các bước tiến chậm theo thời gian
o Hiện tại cho rằng RSA 1024 hoặc 2048 là an toàn
• Tấn công thời gian
o Phát triển vào giữa năm 1990
o Paul Kocher chỉ ra rằng kẻ thám mã có thể xác định được khoá riêng nếu theo
dõi thời gian máy tính cần để giải mã các bản tin.
o Tấn công thời gian không chỉ áp dụng cho RSA, mà cả với các hệ mã công
khai khác.
o Tấn công thời gian giống như kẻ cướp đoán số điện thọai bằng cách quan sát

một người nào đó trong bao lâu chuyển quay điện thoại từ số này sang số
khác.
• Tấn công bản mã chọn trước
o RSA có điểm yếu với tấn công bản mã chọn trước
o Kẻ tấn công chọn bản mã và đoán bản rõ được giải mã
o Chọn bản mã để khám phá RSA cung cấp thông tin để thám mã
o Có thể tính với bộ đệm ngãu nhiên của bản rõ
o Hoặc sử dụng bộ đệm mã hoá phản xứng.

Câu 35. Viết chương trình mã hóa dịch vòng?
Program ma dich chuyen
Uses crt
Var
RS,MS: array [ 1...255] of integer ;
RC, MC : string;
i, n, k : byte;
Procedure RoChu – RoSo;
Begin
For i:= 1 to n do
Begin
RC[i] := upcase (RC[i]);
RS[i] := ord (RC[i]) – 65;
End;
Writeln (“ ban ro so la!”);
For i:= 1 to n do write (RS[i]);
End;
Procedure RoSo – Ma So;
Begin
Write (‘ moi nhap khoa k:=’);
Readln (k);

For i := 1 to n do MS[i]:=(RS[i] + k ) mod 26;


For i:= 1 to n do write (MS[i]);
End;
Procedure MaSo – MaChu;
Begin
For i:= 1 to n do MC [i]:= chr (MS[i]) + 65;
Write (MC);
End;
Procedure MaChu – MaSo;
For i:= 1 to n do MS [i] := ord (MC[i]) – 65;
Procedure RoSo – RoChu;
For i:= 1 to n do RC[i]:= chr(RS[i]) + 65;
Begin
Clrscr;
Write(“ nhap xau can ma hoa”);
Readln(RC);
n:= lenght(RC);
RC- RS; writeln;
RS - MS; writeln;
MS - MC; writeln;
MC - MS; writeln;
RS- RC; writeln;
Readln;
End.

Câu 36. Viết chương trình mã hóa Affine?




×