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

nghiên cứu tìm hiểu số thuật toán, bảo đảm truyền thông tin mạng từ xây dựng chương trình ứng dụng thi từ xa

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 (369.35 KB, 70 trang )

Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

lời mở đầu
Với sự phát triển mạnh mẽ của công nghệ thông tin và sự giao lu thông
tin ngày càng trở nên phổ biến trên các mạng truyền thông_máy tính, yêu cầu
bảo đảm an toàn thông tin đã trở thành một yêu cầu chung của mọi hoạt động
kinh tế xã hội và giao tiếp của con ngời.
Lí thuyết mật mã hiện đại, tiếp nối ngành mật mã truyền thông, nhng đợc xây dựng trên cơ sở những quan niệm mới về bảo mật: phơng pháp bảo mật
dựa vào độ phức tạp tính toán, đã cho ta những giải pháp hữu hiệu.
Luận văn của em đi vào nghiên cứu tìm hiểu một số thuật toán, bảo đảm
sự khi truyền thông tin trên mạng và từ đó xây dựng chơng trình ứng dụng thi
từ xa.
Nội dung chính của luận văn gồm 3 chơng:
Chơng 1. Các khái niệm và thuật toán cơ bản.
Chơng 2. Sơ đồ định danh.
Chơng 3. Một số ứng dụng.

1


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

Chơng 1
Các khái niệm và thuật toán cơ bản
1. Một số khái niệm số học, đại số.
1.1. Kí hiệu và khái niệm.
1.1.1. Kí hiệu chia hết.


Cho a và b là hai số nguyên dơng.
Số a chia hết cho số b ký hiệu là a : b Tồn tại n N sao cho a= b * n
Khi đó ngời ta nói b là ớc của a và ký hiệu: b | a.
1.1.2. Ước số chung lớn nhất.
Cho a và b là hai số nguyên dơng.
Ước số chung lớn nhất của a và b là số tự nhiên m lớn nhất sao cho m | a và m
| b. Khi dó ký hiệu là UCLN(a, b) = m.
1.1.3. Hai số nguyên tố cùng nhau.
Cho a và b là hai số nguyên dơng.
Số a và số b đợc gọi là 2 nguyên tố cùng nhau UCLN (a, b) = 1
1.1.4. Đồng d module.
Cho n N, n 0 và a, b Zn*
Ký hiệu a b (mod n) nghĩa là a đồng d với b theo mod n
tồn tại số nguyên b Zn* sao cho a= b + k * n.
Tức là (a - b) = k * n, nh vậy n | (a b ).
1.1.5. Một số tính chất của đồng d module.
(a b) ( mod n ) [( a mod n ) (b mod n)]( mod n)
(a * b) ( mod n ) [( a mod n ) * ( b mod n)] (mod n)

2


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

1.1.6. Khái niệm nhóm.
Nhóm là một cặp (G, *). Trong đó G là tập hợp khác rỗng, * là phép
toán hai ngôi trên G thoả mãn ba điều kiện sau:
1. Phép toán có tính kết hợp:

( x * y )* z = x * (y * z) với mọi x, y, z G
2. Có phần tử trung lập e G
x * e = e * x = x với mọi x G
3. Với mọi x G, có phần tử nghịch đảo x G
x * x = x * x =e
1.1.7. Nhóm Cyclic.
Nhóm G đợc gọi là nhóm Cyclic nếu nó đợc sinh ra bởi một trong các
phần tử của nó. Tức là có phần tử g G mà mọi phần tử a x G đều tồn tại
số
n N để gn = a. Khi đó g đợc gọi là phần tử sinh hay phần tử nguyên thuỷ
của nhóm G.
Ví dụ:
Nhóm cộng Z gồm các số nguyên là nhóm Cyclie có phần tử sinh là 1.
Cấp của G là số phần tử của G nếu G có hữu hạn phần tử, và bằng nếu
G có vô hạn phần tử.
Ví dụ:
Nhóm cộng Z gồm các số nguyên là nhóm Cyclic vô hạn.
Nếu không tồn tại số tự nhiên n để gn = e thì G có cấp là
Trong trờng hợp ngợc lại, tồn tại số tự nhiên nhỏ nhất n mà g n = e thì G
sẽ gồm n phần tử khác nhau: e, g, g2, g3, .... , gn-1. Khi đó G đợc gọi là nhóm
Cyclic hữu hạn cấp n.
Phần tử G đợc gọi là có cấp d nếu d là số nguyên dơng nhỏ nhất
sao cho
d = e. Nó có cấp 1 nếu = e. Chính vì lẽ trên, nhóm Cyclic còn đợc
định nghĩa nh sau: Nhóm G đợc gọi là nhóm Cyclic nếu tồn tại số g sao cho
mọi phần tử trong G đều là một luỹ thừa nguyên nào đó của g.
1.1.8. Nhóm con.
Cho G là một nhóm, cho S G và S . S đợc gọi là nhóm con của G
nếu:
Phần tử trung lập e của G nằm trong S.

S khép kín đối với luật hợp thành trong G ( tức x * yS với mọi x, y S)
3


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

S khép kín đối với phép lấy nghịch đảo trong G ( tức x-1S với mọi x S )
1.1.9. Ký hiệu.
Zn = { 0, 1, 2, ......., n-1}. Tức Zn là tập các số nguyên không âm < n.
Tập này cùng với phép cộng lập thành nhóm Cyclic có phần tử sinh là
đó là nhóm hữu hạn có cấp n.
Zn* = { e Zn, e là nguyên tố cùng nhau với n}. Tức là e 0.
Đó là tập các số nguyên dơng < n, nhng nguyên tố cùng nhau với n đợc
gọi là tập Thặng d thu gọn theo mod n, lập thành một nhóm với phép nhân
mod n.
(n) là số các phần tử của tập Zn*.
1.1.10. Một số kết quả.
Những kết quả sau đã đợc chứng minh, nhắc lại để sử dụng:
*Định lý Lagrange:
Cho G là nhóm cấp n và g G. Khi đó cấp của g là ớc của n.
*Hệ quả:
Giả sử g Zn* có cấp m thì m là ớc của (n).
Nếu g Zn* thì b(n) 1 (mod n).
Nếu p là số nguyên tố thì (p) = p-1.
Do đó với mọi b Z* (tức b nguyên tố với p)
Thì b(n) 1 (mod n) hay bp-1 1 (mod n).
*Định lý :
Nếu p là số nguyên tố thì Z* là nhóm Cyclic.


4


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

Chú ý:
Theo các định nghĩa trên ta có: phần tử Zn* có cấp d nếu d là số nguyên
dơng nhỏ nhất sao cho d = e trong Zn*, tức là d 1 (mod n).
1.2. Logarit rời rạc.
*Khái niệm Logarit rời rạc:
Cho p là số nguyên tố, là phần tử nguyên thuỷ của ZP, ZP*
Logarit rời rạc chính là việc giải phơng trình x = log (mod p) với ẩn x.
Hay phải tìm số x duy nhất sao cho: x (mod p).
*Bổ đề :
Nếu (a, n) = 1 thì tồn tại a-1 Zn thoả mãn a* a-1 1 (mod n).
*Định lý ( Euler tổng quát):
Nếu (a, n)=1 thì a(n) mod n =1
*Hệ quả:
Với p là một số nguyên tố và (a, p) = 1 thì ap-1 (mod p) = 1.
1.3. Thặng d bậc hai và ký hiệu Legendre.
* Thặng d bậc hai:
Cho p là số nguyên tố lẻ, x là một số nguyên dơng p - 1.
x đợc gọi là thặng d bậc hai mod p, nếu phơng trình y2 x có lời giải.
* Ký hiệu Legendre:
Cho p là số nguyên tố lẻ, và a là một số nguyên dơng bất kỳ.
Ký hiệu Legendre nh sau:
a

p

0 nếu a 0 mod p
1 nếu a là thặng d bậc hai mod p
1 trong các trờng hợp còn lại.

5


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

Function lagendre (a, n : longint) :longint;
Var tam : longint;
Begin
If a mod n = 0 then tam:=0
Else
If (tinhmu (a,(n-1) div 2, n)=1) then
Tam:=1 else tam:=-1;
Lagendre:=tam;
End;

1.4. Hàm một phía và hàm cửa sập một phía.
Hàm f(x) đợc gọi là hàm một phía nếu tính y = f(x) thì dễ , nhng tính
x = f (y) lại rất khó .
-1

Ví dụ 1 :
Hàm f(x) = x (mod p), với p là số nguyên tố lớn, ( là phần tử nguyên

thuỷ) là hàm một phía.
Hàm f(x) đợc gọi là hàm cửa sập một phía nếu tính y = f(x) thì dễ ,
tính x = f -1 (y) lại rất khó . Tuy nhiên có cửa sập z để tính x = f 1 (y) là
dễ .
Ví dụ 2:
Hàm f(x) = xa ( mod n) ( với n là tích của hai số nguyên tố lớn n = p
*q ) là hàm một phía. Nếu chỉ biết a và n thì tính x = f 1 (y) rất khó nhng nếu
biết cửa sập p và q thì tính đợc f 1(y) là khá dễ.
1.5. Thuật toán nghịch đảo.
Cho a Zn* , a-1 ( mod n ) = 1.
Một số thuật toán tính nghịch đảo:
Cho a-1 chạy từ 2 đến n-1 đến khi đợc a*a-1 (mod n) = 1.
Nếu biết ( n ) thì chỉ cần tính: a-1 a(n) 1 (mod n ).

6


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

Dùng thuật toán Euclidean mở rộng nh sau:
Đầu vào: b và n.
Đầu ra:

- nghịch đảo của b theo mod n nếu tồn tại.
- 0 nếu không tồn tại.

Function nghichdao(b,n:longint) :longint;
Var

Aa ,i:longint;
Begin
Aa:=0;
For i:=1 to n do
If (b*i mod n) = 1 then Aa:=i;
nghichdao:=Aa;
End;

1.6. Thuật toán phân tích ra thừa số.
Bài toán : Cho n là tích của hai số nguyên tố lớn p và q, n = p*q, bài
toán đặt ra là nếu biết n, có cách nào để tìm đợc p và q không ?
Hiện nay ngời ta cha có cách nào tính trực tiếp p, q hữu hiệu từ n trừ khi
biết (n). Vì khi biết (n), ta có:
p*q = n
(n) = (p-1)*(q-1)
p + q = n - (n) + 1
Dựa vào định lý Viet p và q là nghiệm của phơng trình:
x2 - (n - (n) + 1 ) * x + n = 0
Giải phơng trình này ta dễ dàng tìm đợc p và q.
Ví dụ:
n = 84773093, (n) = 84754668 q=9539, p=8887.
Ngoài ra theo cách cổ điển, sử dụng thuật toán:
{dau vao n
daura:

p thoả mãn p | n
0 trong trờng hợp ngợc lại

for i = 3 to i <= sqrt (n)
if (n mod i) then

return i;
return 0;
7


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

Trong thuật toán trên vòng lặp là ( n 1/2/2 ). Nếu n có 512 bit, giá trị lớn
nhất của n là 2512. Nếu 1 máy tính thực hiện 10 6 chỉ lệnh trong 1 giây thì thời
gian thực hiện là:
T = n1/2/ 2 21/2 512/2 = 2256/2 = 2555 (giây) 2238 (ngày) 2230 (năm).
Nếu kẻ giả mạo muốn tìm p, q theo cách này thì đây là điều không tởng.

8


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

1.7 Thuật toán tính số mũ to
Đầu vào là : x, b, n là các số nguyên dơng
Đầu ra là : x mũ b theo mod n

Begin
i:=1;
t :=1;
nguyen : = x div 2;

du (i) : = P Mod 2;
Repeat
i : = i + 1;
du(i) : = nguyen Mod 2;
nguyen : = nguyen div 2;
Until (nguyen = 0)
For j := i downto 1 do
b( j ) : = du( j );
For k : = i + 1 downto 0 do
begin
t = (t * t) Mod n;
If ( b(k) = 1 ) Then
t = t * x Mod n;
end;
MuTo = t;
End;

9


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

1.8. Thuật toán cộng hai số nguyên lớn.
Đầu vào là 2 số nguyên lớn chứa trong 2 xâu A và B
Ví dụ :
A = 12345678934466362
B= 8763524323562732
Đầu ra là xâu KQ chứa tổng của 2 số nguyên lớn

Begin
chuc := 0;
If Lenth ( A ) > Lenth ( B ) Then
begin
C := A;
A := B;
B := C;
end;
For i:= Lenth ( B ) Downto 1 Do
begin
If ( i- ( Lenth ( A ) - Lenth ( B ))) > = 1 Then
ch1 := A( i- ( Lenth ( A ) - Lenth ( B )))
Else
ch1 := 0;
ch2 := B( i );
Val( ch1, x, code );
Val( ch2, y, code );
Tg := x + y + chuc;
chuc := Tg div 10;
dv := Tg mod 10;
KQ := str(dv) + KQ;
end;
If chuc <> 0 Then KQ := str( chuc) + KQ;
End.

10


Đồ án tốt nghiệp


Sơ đồ định danh và ứng dụng

1.9. Thuật toán Trừ hai số nguyên lớn.
Đầu vào là 2 số nguyên lớn chứa trong 2 xâu A và B
Ví dụ :
A = 1234567568934466362
B = 8763524323562732
Đầu ra là xâu kq chứa hiệu của 2 số nguyên lớn
BEGIN
dau=; nho := 1;
kt = SoSanh(A, B)
If kt = 2 Then
Begin
C := A ; A := B ; B := C ; dau=-
End
Else If kt = 3 Then
Begin
kq = 0; Break;
End;
For i = Length( A ) DownTo 1 Do
Begin
Val((A(i), x, code))
Val(B(i (Lenth(A)-Lenth(B))), y, code))
If (x >= (y + nho)) Then
begin
so = x - (y + nho)
nho = 0
kq = Str(so) + kq
end
Else

begin
x = x + 10
so = x - (y + nho)
nho = 1
kq = Str(so) + kq
end;
kq=dau + kq;
End;
END.

11


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

Chú ý : Hàm
SoSanh(A, B) =

1 Nếu A > B
2 Nếu A < B
3 Nếu A=B

1.10. Thuật toán Nhân hai số nguyên lớn.
Đầu vào là 2 số nguyên lớn chứa trong 2 xâu A và B
Ví dụ :
A = 1234567568934466362
B = 8763524323562732
Đầu ra là xâu kq chứa tích của 2 số nguyên lớn

BEGIN
chuc = 0 ; tich = ; kq = ;
If Lenth ( B ) > Lenth ( A ) Then
begin
C := A; A := B; B := C;
end;
For i = 1 To Lenth(B) Do
Begin
Val(i, x, code);
For j = 1 To Lenth(A) Do
Begin
Val(j, y, code); So = x*y + chuc
If So > 10 Then
begin
chuc = So div 10;
dv = So mod 10;
kq = Str(dv) + kq;
end
Else
kq = Str(so) + kq; chuc = 0;
End;
If chuc > 0 Then kq = Str(chuc) +kq;
tich = Cong(tich,kq); kq = ;
End;
END.

12


Đồ án tốt nghiệp


Sơ đồ định danh và ứng dụng

1.11. Thuật toán chia hai số nguyên lớn.
Đầu vào
- Hai số nguyên lớn chứa trong 2 xâu A và B
- P : Số chữ số phần thập phân
Đầu ra là xâu kq chứa Thơng của 2 số nguyên lớn
Function Chia(A : String; B :String; P :integer) : String
Begin
While (A( 1) = 0) Do
begin
A = Copy(A, 2, Len(A) - 1);
end;
If (SoSanh(A, B) = 1) Or (SoSanh(A, B) = 3) Then
Begin
solan := 0;
While (A(1) <> "-") Do
begin
solan = solan + 1; A := Tru(A, B);
end
kq := kq +Str(solan); adt := True;
If StrCmp(A , "0") Then P := 0;
A: = A +"0";
If (Not att) And (Lenth(A) <> 0) Then
begin
kq = kq & "."; att = True;
end;
End
Else

begin
if Not adt Then
begin
kq = kq + "0"; adt = True;
end
if Not att Then
begin
kq = kq + "."; att = True;
end
else
kq := kq + 0;
A:= A +0;
end;
If P >1 Then
kq := kq + Chia(A, B, P-1); Chia := kq;
End.

13


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

2.Vấn đề mã hoá.
2.1.Đặt vấn đề.
Ta biết rằng tin truyền trên mạng rất dễ bị lấy cắp. Để đảm bảo việc
truyền tin an toàn, ngời ta thờng mã hoá thông tin trớc khi truyền đi. Việc mã
hoá cần theo quy tắc nhất định gọi là hệ mật mã. Hiện nay có hai loại mật mã:
Mật mã cổ điển và mật mã khoá công khai. Mật mã cổ điển dễ hiểu, dễ thực

thi nhng có độ an toàn không cao. Vì giới hạn tính toán chỉ thực hiện trong
phạm vi bảng chữ cái sử dụng văn bản cần mã hoá (ví dụ Z 26 nếu dùng các chữ
cái tiếng anh, Z256 nếu dùng bảng mã ASCII...). Với các hệ mã cổ điển, nếu
biết khoá lập mã hay thuật toán lập mã, ngời ta có thể tìm ra ngay đợc bản rõ.
Ngợc lại, các hệ mật mã khoá công khai cho biết khoá lập mã K và hàm lập
mã ek, thì cũng rất khó tìm đợc cách giả mã. Và việc thám mã là rất khó khăn
do có độ phức tạp tính toán lớn. Vì thế trong chơng này, đầu tiên ta định nghĩa
khái niệm về mật mã sau đó tìm hiểu hệ mật mã công khai RSA vì nó thiết
thực cho ký điện tử.
Sau đây là khái niệm hệ mật mã.
2.2. Khái niệm hệ mật mã.
Hệ mật mã đợc định nghĩa là bộ năm (P,C,K,E,D), trong đó:
P là một tập hữu hạn các bản rõ có thể.
C là một tập hữu hạn các bản mã có thể.
K là một tập hữu hạn các khoá có thể.
E là tập các hàm lập mã.
D là tập các hàm giải mã.
Với mỗi kK, có một hàm lập mã ekE, ek:PC, và một hàm giải mã
dkD, dk:CP sao cho dk(ek(x)) = x xP.
Ngời gửi G Ngời nhận N

Kẻ tấn công H
Đờng đi của thông tin trong sơ đồ mã hoá nh sau:
Ngời gửi G muốn gửi một văn bản cho ngời nhận N, thay vì gửi văn bản
bình thờng, G mã hoá văn bản đó rồi mới gửi (tất nhiên phải cho ngời nhận
biết khoá để giải mã ). Khi ngời N nhận đợc bản mã, họ dùng khoá do G gửi
để giải mã thì mới đọc đợc. Nếu H lấy cắp bản tin này trên mạng thì anh ta
cũng không đọc đọc đợc nếu không có khoá mở.

14



Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

Lu ý:
1.Sau này khi nhắc đến các ký hiệu P, C, K, E, D, ta ngầm định chúng
có ý nghĩa nh trong sơ đồ chữ ký trên.
2.Đối với các hàm mã hoá ek(x), hàm lập mã dk(y) ......thì đó là các ký
hiệu chung. Còn khi dùng chỉ số khác (nh G, H, N) thì ta ngầm định là do ngời gửi (G), ngời nhận (N), hay kẻ tấn công (H) đa ra.
2.3. Phân loại hệ mã.
Hiện nay các hệ mật mã đợc chia thành hai loại chính: Hệ mật mã đối
xứng và hệ mật mã phi đối xứng.
2.3.1. Hệ mật mã đối xứng.
Hệ mật mã đối xứng (Hệ mã hoá cổ điển) là hệ mật mã mà khoá mã hoá
có thể tìm ra đợc từ khoá giải mã. Trong nhiều trờng hợp, khoá mã hoá và
khoá giải mã là giống nhau. Hệ này còn tên gọi khác nh Hệ mật mã khoá bí
mật, Hệ mật mã khoá đơn giản, Hệ mật mã một khoá.
Hệ mật mã đối xứng yêu cầu ngời gửi và ngời nhận phải thoả thuận một
khoá trớc khi tin tức đợc gửi đi, khoá này đợc cất giữ bí mật. Độ an toàn của
hệ này phụ thuộc vào khoá. Nếu để lộ khoá, thì bất cứ ngời nào cũng có thể
mã hoá và giải mã thông báo.
*Các đặc điểm của hệ mật mã đối xứng.
1. Các phơng pháp mã hoá cổ điển đòi hỏi ngời mã hoá và ngời giải mã
phải có chung một khoá.
2. Khoá phải đợc giữ bí mật tuyệt đối, khoá phải đợc gửi đi trên kênh an
toàn. Vì dễ dàng xác định một khoá nếu biết khoá kia.
3. Khi bị lộ khoá phải viết lại thuật toán. Thuật toán không thể phổ biến
đợc cho nhiều ngời dùng.

*Nơi ứng dụng.
Hệ mật mã đối xứng thờng đợc sử dụng trong môi trờng mà khoá có thể
dễ dàng trao chuyển bí mật, chẳng hạn trong cùng một văn phòng. Nó cũng đợc dùng để mã hoá thông tin khi lu trữ trên đĩa.
2.3.2. Hệ mật mã phi đối xứng.
Vào những năm 1970 Difie và Hellman đã phát minh ra một hệ mật mã
hoá mới đợc gọi là hệ mật mã phi đối xứng hay hệ mật mã khoá công khai.
Trong hệ mật mã này, khoá mã hoá khác với khoá giải mã. Mặt khác
biết đợc khoá này không thể dễ dàng tìm đợc khoá kia. Hệ này còn đợc gọi là
hệ mật mã hoá công khai bởi vì khoá mã hoá có thể công khai. Một ngời bất
15


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

kì có thể sử dụng khoá công khai để mã hoá tin tức, nhng chỉ ngời nào có
đúng khoá giải mã thì mới có khả năng xem đợc bản rõ.
Khoá mã hoá còn gọi là khoá công khai (public key), khoá giải mã đợc
gọi là khoá bí mật hay khoá riêng (private key).
*Các đặc điểm của hệ mật mã phi đối xứng.
1.Khi biết các điều kiện ban đầu, việc tìm ra cặp khoá công khai K n và
bí mật kn phải đợc thực hiện một cách dễ dàng, tức là trong thời gian đa thức.
2.Ngời gửi G có khoá công khai, có bản tin P thì có thể tạo ra đợc bản
mã C nhanh gọn, nghĩa là cũng trong thời đa thức.
3.Ngời N nhận đợc bản tin mã hoá C với khoá bí mật k n thì có thể giải
mã bản tin dễ dàng trong thời gian đa thức.
4.Nếu kẻ phá hoại biết khoá công khai K n, cố gắng tìm khoá bí mật kn,
thì khi đó chúng phải đơng đầu với tính toán nan giải, rất khó khả thi về mặt
thời gian.

5.Nếu kẻ phá hoại biết đợc khoá công khai Kb, và hơn nữa cả bản mã
hoá C, thì việc tìm ra bản rõ P là bài toán khó, số các phép thử là vô cùng lớn,
không khả thi .
6.Hệ mật mã phi đối xứng tiện lợi hơn hệ mật mã đối xứng ở chỗ thuật
toán đợc viết một lần cho nhiều lần dùng và cho nhiều ngời dùng. Chỉ cần bí
mật khoá riêng.
*Nơi ứng dụng.
Sử dụng chủ yếu trên các mạng công khai nh Internet, khi mà việc trao
chuyển khoá bí mật tơng đối khó khăn. Đặc trng nổi bật của hệ mã hoá công
khai là cả khoá công khai (public key) và bản mã (ciphertext) đều có thể gửi
đi trên một kênh an toàn thông tin không an toàn.

16


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

2.4.Hệ mật mã RSA.
2.4.1.Định nghĩa sơ đồ hệ mật mã RSA.
Cho n=p*q vợi p, q là số nguyên tố lớn. Đặt P=C=Zn
Chọn b nguyên tố với (n), (n) = (p-1)(q-1)
Ta định nghĩa : K = {(n, a, b):a*b 1 (mod (n))}.
Giá trị n và b là công khai, và a là bí mật
Với mỗi K=(n, a, b), mỗi xP, yC, định nghĩa:
Hàm mã hoá: y = ek(x) = xb mod n
Hàm giải mã: dk(x) = ya mod n
Chú ý : Theo sơ đồ trên, ngời ta thờng chọn b trớc, sau đó tính
a = b-1.


17


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

*Thuật toán lập mã
Procedure roso_maso;
Var t: integer;
Begin
Writeln ( Ban ro chu: );
Writeln(rc) ;
Rochu_Roso ;
Roso_Maso (b, n);
Maso_Machu ;
Writeln (Ban ro so : ) ;
i:=1;
Repeat
t:=RS[i] * 100 + RS[i+1] ;
If t <1000 then write( 0 , t)
else writeln( , t);
Inc(i, 2);
Until i>length(RC) ;
Writeln ( Ban ma so: ) ;
i:=1;
Repeat
t:=MS[i] * 100 + MS[i+1] ;
If t <1000 then write( 0 , t)

else writeln( , t);
Inc(I, 2);
Until i>length(RC) ;
End;

18


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

*Thuật toán giải mã

Procedure giaima;
Var t: integer;
Begin
Writeln ( Ban ma chu: ,MC) ;
Writeln ( Ban ma so: ) ;
i:=1;
Repeat
t:=MS[i] * 100 + MS[i+1] ;
If t <1000 then write( 0 , t)
else writeln( , t);
Inc(i, 2);
Until i>length(RC) ;
Phi_n:=(p -1) * (q -1);
writeln (phi_n =, phi_n);
a:=nghichdao (b, phi_n);
writeln (a . b =1 mod phi_n, a =,a);

Maso_Roso (a, n) ;
Roso_Rochu ;
i:=1;
Writeln ( Ban ro so: ) ;
Repeat
t:=RS[i] * 100 + RS1[i+1] ;
If t <1000 then write( 0 , t)
else writeln ( , t);
Inc(i, 2);
Until i>length(MC) ;
Writeln ();
Write (Ban ro chu: ,RC1) ;
End;

19


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

Ví dụ1:
- Chọn p = 109, q = 409
khi đó n=p*q = 109*409 = 44581,
(n) = (p-1)*(q-1) = 108*408 = 32*27*51 =44064.
- Chọn b sao cho b nguyên tố với (n) tức là chọn b sao cho b không
chia hết cho 2, 3 và 51.
Lấy b = 43*929 = 39947 khi đó a = b-1 trong (n) a= 13475.
Khi đó phép lập mã và giải mã đợc tính :
ek(x) = xb mod n = x39947 mod 44581

dk(x) = ya mod n = y13475 mod 44581
Nếu lấy x = 9798, ta đợc y = 9229.
2.4.2. Xét độ an toàn trong hệ mật mã RSA.
Ta thấy hệ mật mã RSA chỉ đợc an toàn khi giữ bí mật khoá giải mã a
và 2 thừa số p và q hay giữ bí mật (n).
Trờng hợp biết đợc p, q thì H dễ dàng tính đợc (n) = (q-1)*(p-1). Khi
biết đợc (n) thì H sẽ tính đợc a theo thuật toán Euclidean mở rộng.Khi biết a
thì toàn hệ thống sẽ bị phá vỡ ngay lập tức.
Vì khi biết a, toàn bộ khoá K = (n, a, b) đều đợc biết và H đọc ngay đợc
bản rõ. Ngoài ra, H có thể lập mã trên văn bản khác để gửi tiếp đến N. Mà ta
biết việc H đọc đợc bản rõ hay lập mã trên văn bản khác là cực kì nguy hiểm.
Nhất là những thông tin liên quan đến an ninh quốc gia, quân đội, ngân hàng...

20


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

2.5. Hệ mật mã DES (Data Encryption Standard)
2.5.1. Giới thiệu về DES:
Hệ mã hoá DES đợc xây dựng vào những năm đầu những thập kỷ 70,
Uỷ ban tiêu chuẩn quốc gia Mỹ đã công bố một khuyến nghị cho các hệ mật
mã trong hồ sơ quản lý liên bang. Điều này cuối cùng đã dẫn tới sự phát triển
của Chuẩn mã dữ liệu (DES: Data Encryption Standard) và nó trở thành một
hệ chuẩn mã sử dụng rộng rãi nhất trên thế giới. DES đợc IBM phát triển và
xem nh là một cải biến của hệ mật LUCIPHER DES và đợc công bố lần đầu
tiên vào ngày 17/03/1975. Sau nhiều cuộc tranh luận công khai cuối cùng DES
đợc công nhận nh một chuẩn liên bang vào ngày 23/11/1976 và đợc công bố

vào ngày 15/01/1977. Vào năm 1980, Cách dùng DES đợc công bố. Từ đó
cứ chu kỳ 5 năm DES đợc xem xét lại một lần bởi Uỷ ban tiêu chuẩn quốc gia
Mỹ và lần gần đây nhất là năm 1994.
2.5.2. Mô tả thuật toán DES:
Thuật toán DES sử dụng một khoá K có độ dài là 56 bit để mã hoá bản
rõ x độ dài 64 bit thành bản mã y cũng có độ dài là 64 bit. Quy trình của thuật
toán đợc thực hiện qua 3 bớc nh sau:
Bớc 1:Với bản rõ cho trớc x, một xâu bit x0 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.
Đặt x0 = IP(x) = L0R0 với L0 = 32 bit đầu tiên và R0 là 32 bit cuối.
Bớc 2: Tiếp theo thực hiện 16 vòng mã hoá với những phép toán giống
nhau, ở đây dữ liệu đợc kết hợp với khoá thông qua hàm f xác định. Ta sẽ tính
LiRi, với 1 i 16 theo qui tắc:
Li = Ri-1
RI = LI-1 (RI-1, Ki)
Trong đó:
-Phép toán : là kí hiệu phép toán hoặc loại trừ của hai xâu bit (cộng
theo modulo 2 )
- f: là một hàm mà ta sẽ mô tả sau
- Ki, với 1 i 16 là các xâu bit có độ dài 48 bit đợc tính nh một hàm
của khóa K. Ki là một phép hoán vị bit trong K, Ki tạo thành một bảng khoá.
Bớc 3: Cuối cùng áp dụng phép hoán vị ngợc IP-1 cho xâu bit R16L16 ta
thu đợc bản mã y.
y = IP-1(R16L16). (Lu ý thứ tự bit R16 và L16)

21


Đồ án tốt nghiệp


Sơ đồ định danh và ứng dụng

Sơ đồ DES :
Bản rõ
IP

L0

R0
f

L1 = R 0

K1

R1=L0f(R0,K1)
f

L2 = R 1

R2=L1f(R1,K2)

L15 = R14

R15=L14f(R14,K15)
f

K2

K1

6

R16=L15f(R15,K16)

L16 = R15
IP-1
Bản mã

22


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

2.5.3. Các hàm của DES:
2.5.3.1. Hàm f:
Hàm f có hai biến vào: biến thứ nhất R là một xâu bit độ dài 32, biến
thứ hai K là một xâu bit độ dài 48. Đầu ra của f là một xâu độ dài 32. Các bớc
thực hiện của f nh sau:
1. Mở rộng xâu bit R độ dài 32 bit thành một xâu bit có độ dài 48 bit
theo hàm mở rộng cố định E: R -> E(R) , E(R) gồm 32 bit của cũ R với 16
của R xuất hiện 2 lần.
2. Tính E(R) K và viết kết quả thành một chuỗi 8 xâu, một xâu có
độ dài 6 bit (8*6 = 48): B = B1 B2 B3 B4 B5 B6 B7 B8.
3. Dùng 8 bảng S1,S2,..,S8. Mỗi Si là một bảng cố định 4ì16 có các
phần tử là các số nguyên từ 0 -> 15 với mỗi xâu bít có độ dài 6
(kí hiệu Bj = b1 b2 b3 b4 b5 b6), ta tính Sj(Bj) nh sau:
- hai bit b1b6 xác định biểu diển nhị phân của hàng r trong Sj (0 r 3 ).
- bốn bit b2 b3 b4 b5 xác định biểu diển nhị phân của cột trong Sj (0 c 15 ).

Biểu diển nhị phân của nội dung Sj(r,c) cho ta 4 bit Cj. Tơng tự nh vậy ta
tính Cj = Sj (Bj) (1j 8).
4. Xâu bit C = C1 C2 C8 có độ dài 32 bit đợc hoán vị theo phép hoán
vị cố định P để cho ra kết quả: P(C) -> f(R,K).

23


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

Sơ đồ hàm f
K

R

E
E( R )

+
B1

B2

B3

B4

B5


B6

B7

B8

S1

S2

S3

S4

S5

S6

S7

S8

C1

C2

C3

C4


C5

C6

C7

C8

P

f (R, K)

24


Đồ án tốt nghiệp

Sơ đồ định danh và ứng dụng

* Bảng hoán vị ban đầu IP :
Bảng này có nghĩa là bit 58 của xlà bit đầu tiên của IP, bit 50 của
x là bit thứ 2 của IP..
58
60
62
64
57
59
61

63

50
52
54
56
49
51
53
55

42
44
46
48
41
43
45
47

34
36
38
40
33
35
37
39

26

28
30
32
25
27
29
31

18
20
22
24
17
19
21
23

10
12
14
16
9
11
13
15

2
4
6
8

1
3
5
7

* Bảng hoán vị cuối cùng IP-1 :
Bảng này có nghĩa là bit thứ 1 của x là vị trí 40 của IP(x)
40
39
38
37
36
35
34
33

8
7
6
5
4
3
2
1

48
47
46
45
44

43
42
41

16
15
14
13
12
11
10
9

56
55
54
53
52
51
50
49

24
23
22
21
20
19
18
17


64
63
62
61
60
59
58
57

32
31
30
29
28
27
26
25

*Phép hoán vị mở rộng E cố định nh sau:
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1

25



×