2 affine antoanbmtt

23
An toàn và bảo mật thông tin Hệ mật mã affine 1.Bài toán về hệ mật mã affine 2.Kỹ thuật mã hóa affine 3.Thuật toán Euclid mở rộng 4.Giải mã trong affine 5.Một số giải thuật dùng trong lập trình Trình bày : Nguyễn Tiến Dũng Lớp: Hệ thống thông tin Khóa: 5

Upload: ironman-mim

Post on 06-Aug-2015

851 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 2 Affine AnToanBMTT

An toàn và bảo mật thông tin

Hệ mật mã affine1.Bài toán về hệ mật mã affine

2.Kỹ thuật mã hóa affine

3.Thuật toán Euclid mở rộng

4.Giải mã trong affine

5.Một số giải thuật dùng trong lập trình

Trình bày : Nguyễn Tiến Dũng

Lớp: Hệ thống thông tin

Khóa: 5

Page 2: 2 Affine AnToanBMTT

I. Bài toán về mã affine

• Phát biểu bài toán về hệ mật mã affine:

Không gian bản rõ và bản mã của hệ mã là các xâu được hình thành từ một bảng chữ cái A có độ dài là N. Khi đó không gian khóa của hệ mã affine được xác định như sau:

• Không gian khóa của hệ mã là các cặp số (a,b) với a,b Z∈ N và ước chung lớn nhất của a và N là 1

•Hoặc: K = { (a,b): a,b Z∈ N ,UCLN(a,N) =1}

Page 3: 2 Affine AnToanBMTT

I. Bài toán về mã affine

• Ước chung lớn nhất của 2 số a, b là số nguyên dương d lớn nhất thỏa mãn điều kiện d là ước của cả hai số nguyên a, b. Ký hiệu: UCLN( a, b) hoặc GCD( a, b).

• Trong vành ZN với a,b Z∈ N và a>=1, N>=2 nếu UCLN(a,b)=1 thì ta gọi a và b là các số nguyên tố cùng nhau

Page 4: 2 Affine AnToanBMTT

I. Bài toán về mã affine

Câu hỏi: Trong bảng chữ cái tiếng anh có 26 chữ( tức N =26), nếu ta đánh số các chữ cái của bảng chữ cái từ 0 25( như hình vẽ dưới). Hỏi ta sẽ có được bao nhiêu chữ số a, b thỏa mãn yêu cầu của bài toán mã affine và không gian khóa của hệ mã affine với bảng chữ cái trên sẽ bao gồm bao nhiêu bộ số?

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Page 5: 2 Affine AnToanBMTT

I. Bài toán về mã affineLời giải:

• Chữ số a theo yêu cầu của bài toán phải thỏa mãn 2 điều kiện sau: a Z∈ 26

UCLN( a, 26) =1

Các số thỏa mãn yêu cầu a ={1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25}

Như vậy có tất cả 12 chữ số a thỏa mãn yêu cầu của bài toán

• Chữ số b chỉ cần thỏa mãn điều kiện b Z∈ 26 có 26 chữ số b thỏa mãn yêu cầu bài toán.

• Có 12 cách chọn chữ số a, 26 cách chọn chữ số b không gian khóa K của bảng chữ cái tiếng anh trên sẽ gồm 12 x 26 = 312 khóa. Đây là con số tương đối nhỏ.

Page 6: 2 Affine AnToanBMTT

II. Mã hóa trong affine

• Để mã hóa người ta đánh số các chữ cái của bảng chữ cái từ 0 N-1 và tiến hành mã hóa, giải mã từng ký tự

• Hàm mã hóa trong affine có dạng như sau:

EK(x) = (ax +b)mod N với (a,b) K∈

Ký tự bản rõ có số thứ tự là x sẽ được chuyển thành ký tự có số ký tự là (ax +b)mod N trong bảng chữ cái A.

Với a = 1: ta sẽ được hệ mật mã dịch vòng

Page 7: 2 Affine AnToanBMTT

II. Mã hóa trong affine

Ví dụ: Mã hóa bản rõ WAR bằng hệ mật mã affine với K=(7,10) trong bảng chữ cái tiếng anh có 26 ký tự.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Page 8: 2 Affine AnToanBMTT

II. Mã hóa trong affine

Lời giải:• Đổi các chữ trong xâu WAR thành các chữ số tương ứng: 22, 0, 17

• K=(7,10) tức là ta có a= 7 và b=10, áp dụng vào hàm mã hóa trong affine ta được:

Ek(22) = (7*22+10) mod 26 = 8 I

Ek(0) = (7*0+10) mod 26 = 10 K

Ek(17) = (7*17+10) mod 26 = 25 Z

• Kết quả là : IKZ

Page 9: 2 Affine AnToanBMTT

III. Thuật toán Euclid mở rộng

• Giả sử a Z∈ N , phần tử nghịch đảo của a là phần tử a-1 Z∈ N sao cho a.a-1 = 1 mod N hoặc a.a-1 = 1

• Điều kiện để số a có nghịch đảo theo modulo N là UCLN( a,N) =1 hay GCD(a,N)=1 tức là a và N là 2 số nguyên tố cùng nhau.

• Cách tìm số nghịch đảo của a: Sử dụng thuật toán Euclid mở rộng

• Giải thuật Euclid mở rộng kết hợp quá trình tìm ƯCLN(a, b) trong thuật toán Eclid với việc tìm một cặp số x, y thoả mãn phương trình a*x +b* y = ƯCLN(a,b) (phương trình Đi-ô-phăng)

Page 10: 2 Affine AnToanBMTT

III. Thuật toán Eclid mở rộng

• Thuật toán Euclid: Giả sử cho hai số tự nhiên a, b, ngoài ra a>b>0. Đặt r0 =a, r1 =b, chia r0 cho r1 được số dư r2 và thương số nguyên q1. Nếu r2 =0 thì dừng, nếu r2 khác không, chia r1 cho r2 được số dư r3 và thương số nguyên q2, ...Vì dãy các ri là giảm thực sự nên sau hữu hạn bước ta được số dư rm =0• Ta có:

r0 = q1 * r1 + r2 , r1 > r2 >0 r1 = q2 * r2 + r3 , r2 > r3 >0 r2 = q3 * r3 + r4 , r3 > r4 >0.......rm-1 = qm * rm + rm+1, rm > rm+1 > 0 rm = qm+1 * r m+1

Số dư cuối cùng khác 0 là rm+1 UCLN(a,b)= rm+1

Page 11: 2 Affine AnToanBMTT

III. Thuật toán Eclid mở rộng

• Phương trình Đi-ô-phăng: a*x +b* y = ƯCLN(a,b)= d

x, y được tìm theo công thức truy hồi: a*xi + b* yi = d với i=1,2,..

x0= 1 , x1= 0, xi+2 = xi –qi+1 * xi+1

y0= 0 , y1= 1, yi+2 = yi –qi+1 * yi+1

• Ngịch đảo của a trong modulo N: Trong vành ZN nếu coi b=N thì ta có UCLN(a,N)=1 N*x +a* y = 1 với a, x, y Z∈ N

• Mặt khác: (N*x +a* y )mod N = (N*x) mod N + (a*y) mod N = (a*y) mod N

(a*y) mod N =1 mod N y là nghịch đảo của a theo modulo N

Chú ý: Nếu y<0 thì nghịch đảo của a là N+y

Page 12: 2 Affine AnToanBMTT

III. Thuật toán Euclid mở rộng

Ví dụ: Tìm nghịch đảo của a=11 trong Z26 tức N=26Lời giải: • Tìm UCLN(11,26) nếu bằng 1 thì 11 có nghịch đảo trong Z26 ngược lại thì 11

không có nghịch Z26

UCLN(11,26) =1 vậy 11 có nghịch đảo trong Z26

Bước i N a q r

0 26 11 2 4

1 11 4 2 3

2 4 3 1 1

3 3 1 3 0

Page 13: 2 Affine AnToanBMTT

III. Thuật toán Eclid mở rộng• Phương trình: 26*x +11*y = 1

Y0 = 0, Y1 =1 và Yi+2 = Yi – Yi+1 * Qi+1

• Ta được y = -7, vậy nghịch đảo của 11 trong vành Z26 là -7+26=19

• Trong Z26, chỉ bằng phương pháp thử và sai cũng có thể tìm được các nghịch đảo của các phần tử nguyên tố cùng nhau với 26: 1-1 = 1, 3-1 = 9, 5-1 = 21, 7-1 = 15, 11-1 = 19, 17-1 =23, 25-1 = 25.

Bước i N a Qi+1 Ri+1 Yi Yi+1 Yi+2

0 26 11 2 4 0 1 -2

1 11 4 2 3 1 -2 5

2 4 3 1 1 -2 5 -7

3 3 1 3 0

Page 14: 2 Affine AnToanBMTT

IV. Giải mã Affine

• Với bài toán đã được mã hóa:

EK(x) = (ax +b)mod N với (a,b) K∈

chúng ta sẽ cùng nhau đi giải mã bài toán trên

• Phân tích:

• Giả sử gọi x là số nguyên thể hiện ký tự ghi ở bản rõ và y là số nguyên thể hiện hiện ký tự ghi ở bản mã của ký tự x. Và gọi a-1 là nghịch đảo của a theo modulo N

Page 15: 2 Affine AnToanBMTT

IV. Giải mã Affine

• Ta có: y = (ax +b)mod N

ax = (y-b) mod N ( áp dụng tính chất kết hợp, phân phối và giao hoán )

a-1 ax = a-1 (y-b) mod N ( nhân cả 2 vế với a-1 )

x = a-1 (y-b) mod N

• Với a,b,y đã biết ta sẽ tính được x ký tự tương ứng với vị trí x trong bảng ký tự

• Hàm giải mã là: dK(y) = a-1(y-b) mod 26

Page 16: 2 Affine AnToanBMTT

IV. Giải mã Affine

Ví dụ: Giải mã thông điệp “FBWGC” bằng mã Affine với a = 7 và b = 7 bằng bộ chữ cái tiếng Anh (N = 26).

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Page 17: 2 Affine AnToanBMTT

IV. Giải mã Affine• Chuyển các ký tự thành các số: 5 1 22 6 2

• Ta tính a-1 trong modulo 26

Ta có 7-1 = 15

• Áp dụng công thức giải mã ta được:

dK(5) = 7-1(5-7) mod 26 = (-30) mod 26 = (-30+ 2*26) mod 26 = 22 W

dK(1) = 7-1(1-7) mod 26 = (-90) mod 26 = (-90 +4*26) mod 26 = 14 O

dK(22) = 7-1(22-7) mod 26 = 225 mod 26 = 17 R

dK(6) = 7-1(6-7) mod 26 = (-15) mod 26 = (-15+1*26) mod 26 = 11 L

d2(y) = 7-1(2-5) mod 26 = (-75) mod 26 = (-75 +3*26) mod 26 = 3 D

• Thông điệp được giải mã là: WORLD

Page 18: 2 Affine AnToanBMTT

V. Một số thuật toán dùng trong lập trình

1. Tìm UCLN(a,b)

• Sử dụng đệ quy:

• Sử dụng tính lặp lại:

Page 19: 2 Affine AnToanBMTT

V. Một số thuật toán dùng trong lập trình

• Sử dụng thuật toán nguyên bản:

Page 20: 2 Affine AnToanBMTT

V. Một số thuật toán dùng trong lập trình

• 2. Tìm mod của a và b

int mod(int a,int b,int x)

{

int kqmod = (a * x + b)%26;

return kqmod;

}

Page 21: 2 Affine AnToanBMTT

V. Một số thuật toán dùng trong lập trình

• 3. Giải thuật Eclud mở rộng

Procedure Euclid_Morong (a,m)

int, y0=0,y1:=1;

While a>0 do {

r:= m mod a ;

if r=0 then Break

q:= m div a ;

y:= y0-y1*q;

Page 22: 2 Affine AnToanBMTT

V. Một số thuật toán dùng trong lập trình

m:=a;

a:=r;

y0:=y1 ;

y1:=y;

}

If a>1 Then Return "A không khả nghịch theo mođun m"

else Return " Nghịch đảo modulo m của a là y“ ;

Page 23: 2 Affine AnToanBMTT

Xin chân thành cảm ơn!