2.3. Hệ mật mã khoá công khai
2.3.1. Giới thiệu về mật mã khóa công khai
Năm 1976 Diffie và Hellman đã đưa ra hệ mã hoá công khai
hay hệ mã hoá phi đối xứng, khoá sử dụng vào việc mã hoá là khác
so với khoá giải mã và khoá giải mã không thể tính toán được từ
khoá mã hoá. Người gửi A có được khoá công khai của người nhận
B và có bản tin P cần gửi đi thì có thể dễ dàng tạo ra được bản mã C.
C = E
KB
(P) = E
B
(P)
Người nhận B khi nhận được bản tin mã hóa C với khoá bí mật
k
B
thì có thể giải mã bản tin trong thời gian đa thức.
P = D
kB
(C) = D
B
[E
B
(M)]
Một số hệ mật khoá công khai quan trọng gồm: Hệ mật RSA,
Hệ mật xếp ba lô Merkle - Hellman, Hệ mật McEliece, Hệ mật
ElGamal, Hệ mật Chor-Rivest, Hệ mật trên các đường cong Elliptic.
2.3.2. Hệ mật RSA
2.3.2.1. Mở đầu
Hệ mật RSA được mô tả như sau: Ta có sơ đồ chung của hệ mật
mã khoá công khai được cho bởi:
S=(P, C, K, E, D)
(1)
Trong đó P là tập ký tự bản rõ, C là tập ký tự bản mã, K là tập
các khoá k, mỗi khoá k gồm có hai phần k=(k', k''), k' là khoá công
khai dành cho việc lập mật mã, còn k'' là khoá bí mật dành chi việc
giải mã. Với mỗi ký tự bản rõ xP, thuật toán lập mã E cho ta ký tự
mã tương ứng y=E(k', x)C, và với ký tự mã y thuật toán giải mã D
sẽ cho ta lại ký tự bản rõ x: D(k'', y)=D(k'', E(k', x))=x.
Để xây dựng một hệ mật mã khoá công khai RSA, ta chọn trước
một số nguyên n=p.q là tích của hai số nguyên tố lớn, chọn một số e
sao cho gcd(e,(n))=1, và tính số d sao cho: e.d1(mod((n))
Mỗi cặp k=(k',k''), với k'=(n,e) và k''=d sẽ là một cặp khoá của
một hệ mật mã RSA cụ thể cho một người tham gia.
- 14 -
Như vậy, sơ đồ chung của hệ mật mã RSA được định nghĩa bởi
danh sách (1), trong đó:
P=C=Z
n
, trong đó n là một số nguyên Blum, tức là tích của hai
số nguyên tố;
K={k=(k', k''): k'=(n, e) và k''=d, gcd(e,
(n))=1, e.d
1(mod(n))};
E và D được xác định bởi:
E(k', x) = x
e
mod n, với mọi x P
D(k'', y) = y
d
mod n, với mọi y C
2.3.2.2. Thực hiện hệ mật mã RSA
Để thực hiện hệ mật mã RSA cho một mạng truyền tin bảo mật,
ngoài việc xây dựng các chương trình tính toán hàm E (với tham biến
đầu vào là n, e và x) và hàm D (với tham biến đầu vào là n, d và y),
ta còn phải chọn cho mỗi người tham gia một bộ (n,e,d) để tạo các
khoá công khai k' và khoá bí mật k''. Hệ mã của mỗi người tham gia
chỉ có khả năng bảo mật khi n=p.q là số nguyên rất lớn (và do đó p, q
cũng phải là những số nguyên tố rất lớn); rất lớn có nghĩa là p, q phải
có biểu diễn thập phân cỡ hơn 100 chữ số, do đó n có cỡ hơn 200
chữ số thập phân, hay n10
200
.
2.3.2.3. Tính bảo mật của mật mã RSA
Bài toán thám mã (khi chỉ biết bản mã) đối với mật mã RSA là:
biết khoá công khai k'=(n,e), biết bản mã y=x
e
mod n, tìm x. Với bài
toán này có độ khó tương đương với bài toán phân tích số nguyên
(Blum) thành thừa số nguyên tố. Do đó, giữ tuyệt mật d, hay giữ
tuyệt mật các thừa số p, q là có ý nghĩa rất quyết định đến việc bảo
vệ tính an toàn của hệ mật mã RSA.
Bên cạnh đó có một số sơ hở mà người thám mã có thể lợi dụng
để tấn công như: dùng môđun n chung, dùng số mũ lập mã e nhỏ, lợi
dụng tính nhân của hàm lập mã, tấn công bằng cách lặp phép mã.
2.3.2.4. Ứng dụng của RSA
Hệ mã hóa RSA được ứng dụng rộng rãi chủ yếu cho web và
- 15 -
các chương trình email, các công nghệ bảo mật sử dụng cho thương
mại điện tử.
Chia sẻ với bạn bè của bạn: |