M thm t mã (, K, C) là hoàn hon u và chn u
BÀI 16 H MÃ KHÓA CÔNG KHAI RSA
16.1 Gi i thu t mã hóa và gi i mã RSA 16.2 an toàn c a RSA
H mã khóa công khai RSA do ba nhà nghiên c u Rivest, Shamir và Adleman đ xuát vào n m 1978. Vi c xây d ng nó đ t trên nên t ng các bài toán s h c mà đ c bi t là các bài toán v các s nguyên t l n.
16.1Gi i thu t mã hóa và gi i mã RSA
Quá trình mã hóa
Chúng ta s mã hóa t ng kh i kí t m t. M i kh i kí t có chi u dài m (kí t ). S m này s đ c l a ch n sao cho phù h p. N u v n b n ban đ u có chi u dài không là b i s c a m thì chúng ta s b sung thêm nhi u l n m t kí t X nào đó đ chi u dài này là b i s c a m.
Input:
- S t nhiên m là chi u dài c a kh i kí t c n mã hóa. - Kh i kí t w c n mã hóa có chi u dài m (kí t ).
- S nguyên n (n = pq v i p và q là hai s nguyên t đ l n, th ng l n h n s M
đ c tính bên d i).
- S t nhiên keđ l n sao cho, gcd(ke, φ(n)) = 1, đ ng th i t n t i s t nhiên kd th a
ke × kd ≡ 1 (mod φ(n)). Th ng ke đ c khuyên nên ch n là m t s nguyên t . - đây c p s (n, ke) chính là khóa công khai còn (n, kd) chính là khóa bí m t. Bí m t
đ c ch t s kd.
Output:
- Chu i m t mã c (là chu i các kí s ).
B c 1.
Bi u di n kh i kí t w thành m t s nguyên trong kho ng {1, 2, ..., n}. Thông
th ng cách bi u di n nh sau.
M i kí t c a w trong b ng ch cái (gi s là b ng ch cái latinh g m 26 kí t )
đ c bi u di n b ng m t s có hai ch s . Ch ng h n, A là 01, B là 02, …, Z là 26. K t qu chu i w đ c bi u di n thành m t chu i các kí s và có chi u dài là 2m (kí s ). G i chu i s này là N. Rõ ràng N có giá tr không v t quá giá tr c c đ i sau đây M = 2626…26 (m l n s 26) M = 26(100m - 1)/99 N < M Các s nguyên t p, q dùng đ tính n th ng l n h n s M này. p, q > M > N
Nh v y N s nguyên t cùng nhau v i p, q và d nhiên là nguyên t cùng nhau v i
n. B c 2. S t nhiên ke đ c ch n đ l n đ e k N > n v i đa s các s N trên.
Chu i m t mã c chính là chu i s có đ c thông qua phép toán sau.
D nhiên s c nh h n n và v i vi c ch n ke th a Nke > n thì c không th trùng v i e k N đ c. Quá trình gi i mã Input: - Chu i m t mã c (là chu i các kí s ). - S nguyên n đã cho gi i thu t mã hóa. - Khóa bí m t kd. Output: - Kh i kí t w ban đ u c n mã hóa. B c 1. Theo H qu 14.4 chúng ta có ( )ke kd N ≡ N (mod n) t c là d k c ≡ N (mod n) V y chu i N đ c tính b ng cách (v i N < n) N ≡ ckd (mod n) B c 2.
Chi u dài c a N s là 2m ho c 2m – 1 kí s . N u N dài 2m – 1 kí s thì thêm s 0
vào v trí đ u bên trái c a N (đ đ 2m kí s ). Tách t ng hai kí s m t t trái sang và bi n đ i thành kí t ch trong b ng ch cái đã cho ta đ c kh i kí t c n mã hóa ban đ u w.
Nh n xét
M u ch t c a h mã khóa công khai RSA n m ch cho dù bi t chu i m t mã c và khóa công khai ke, n u không bi t đ c khóa bí m t kd thì vi c tìm ra N là r t khó. Ta có ke
× kd ≡ 1 (mod φ(n)). V y đ tìm khóa kd chúng ta ph i bi t φ(n). Vi c tìm φ(n) d a vào n đã bi t không d h n so v i vi c phân tích n ra thành các th a s nguyên t , b i vì khi đã bi t
φ(n) thì chúng ta có th gi i ra p và q b ng m t h hai ph ng trình hai bi n.
n = pq
φ(n) = (p – 1) × (q – 1).
Khó đây n m ch chúng ta ph i làm vi c v i nh ng s nguyên r t r t l n. Ch ng h n b ng sau đây cho chúng ta th y đ ph c t p c a các thu t toán phân tích m t s nguyên
n ra th a s nguyên t b ng các thu t toán hi u qu nh t hi n nay trên m t máy tính có t c
đ x lý 1 t phép tính trong 1 giây. (Tham kh o t trang 5 và 6 sách s [5]) S ch s th p phân S phép tính bit Th i gian
50 1,4 × 1010 14 giây 75 9,0 × 1012 2,5 gi 100 2,3 × 1015 26 ngày 15 gi 200 1,2 × 1023 3,8 × 106 n m 300 1,5 × 1029 4,9 × 1012 n m 500 1,3 × 1039 4,2 × 1022 n m
16.2 an toàn c a RSA
N u p và q là các s nguyên t kho ng 100 ch s th p phân thì n có kho ng 200 ch s . Vi c phân tích n thành p và q nh b ng trên cho th y t n m t kho ng th i gian hàng tri u n m v i nh ng máy tính r t m nh.
Sau khi tìm ra h mã này, Rivest, Shamir và Adleman đã công b trên m t bài báo khoa h c đ ng MIT. Sau đó trên c t báo Martin Gardner’s c a t báo Scientific American, h có đ a ra l i thách th c b n đ c b khóa m t m u tin nh đã đ c mã hóa v i
n = 114381625757888867669235779976146612010218296721242362562561842
935706935245733897830597123563958705058989075147599290026879543541
e = 9007
M u tin
“first solver wins one hundred dollars”
xu t hi n trong d ng mã hóa v i A = 01, B = 02, …, Z = 26 và ch đ c gi i mã vào ngày 26/4/1994 b ng m t c g ng t ng l c mang tính qu c t (qua internet) v i vi c s d ng 1600 cái bao g m các tr m làm vi c (workstations), các máy c l n (mainframes) và các siêu máy tính (supercomputers) t n công trong vòng 8 tháng liên t c đ phân tích s nêu trên ra th a s nguyên t .
Th c t này cho th y r ng thu t toán RSA là r t an toàn, vì không m y khi có đi u ki n đ huy đ ng m t l c l ng tính toàn hùng h u nh th vào công vi c gi i mã m t m u tin.
Nh n xét
Gi i thu t mã hóa RSA m c dù r t an toàn nh ng t c đ mã hóa và gi i mã ch m, ch m h n gi i thu t DES nhi u l n (hàng ngàn l n). Vì v y ng i ta th ng k t h p hai ph ng pháp mã hóa DES và RSA theo cách sau:
1. Dùng DES đ mã hóa kh i v n b n.
2. Dùng RSA đ mã hóa khóa mà DES đã dùng đ mã hóa kh i v n b n.
S k t h p này tích h p đ c c u đi m nhanh chóng c a DES và u đi m an toàn c a RSA.
Các gi i thu t mã hóa DES và RSA còn đ c ng d ng vào r t nhi u v n đ khác c a vi c m t mã hóa ch ng h n nh vi c xác nh n ch th (xác nh n ng i g i v n b n đ tránh s gi m o) hay còn g i là ch ký đi n t . Tuy nhiên trong khuôn kh c a môn h c này không đ th i l ng cho phép chúng ta trình bày v n đ này. tìm hi u thêm b n đ c có th xem thêm các tài li u tham kh o.