Việc tìm ra 2 s nguyên t lố ố đủ ớn p và q thường được th c hi n b ng cách th xác ự ệ ằ ử suất các s ng u nhố ẫ iên có độ ớ l n phù h p và p và q cợ ần được ch n không quá g n ọ ầ nhau để phòng trường h p phân tích n b ng ợ ằ phương pháp phân tích Fermat. Ngoài ra, n u p-1 ho c q-1 có th s nguyên t nh ế ặ ừa ố ố ỏ thì n cũng có thể ễ d dàng b phân tích ị và vì th p và q ế cũng cần được thử để tránh kh ả năng này
2.2.5.2. Tấn công liên quan đến tốc độ
RSA có tốc độ c hi n chthự ệ ậm hơn đáng kểso với DES và các thuật toán mã hóa đối x ng khác. Trên th c t , Bob s d ng m t thuứ ự ế ử ụ ộ ật toán mã hóa đối xứng nào đó đểmã hóa văn bản c n g i và ch s d ng RSA ầ ử ỉ ử ụ để mã hóa khóa để ải mã (thông thườ gi ng khóa ngắn hơn nhiều so với văn bản)
2.2.5.3. T n công vào quá trình phân ph i khoá ấ ố
Quá trình phân ph i khóa c n ch ng lố ầ ố ại được tấn công đứng giữa (man- - -middle in the attack). Giả ử s Eve có th g i cho Bob m t khóa b t k và khi n Bob tin rể ử ộ ấ ỳ ế ằng đó là khóa (công khai) của Alice. Đồng th Eve có kh ời ả năng đọc được thông tin trao đổi gi a Bob ữ và Alice. Khi đó, Eve s g i cho Bob khóa công khai c a chính mình (mà ẽ ử ủ Bob nghĩ rằng đó là khóa của Alice). Sau đó, Eve đọ ấ ả văn bảc t t c n mã hóa do Bob g i, gi i mã v i khóa bí m t c a mình, gi 1 bử ả ớ ậ ủ ữ ản copy đồng th i mã hóa b ng khóa ờ ằ công khai c a Alice và g i cho Alice. V nguyên t c, c ủ ử ề ắ ảBob và Alice đều không phát hi n ra s can thi p cệ ự ệ ủa người th ba. Các ứ phương pháp chống l i d ng t n công nàạ ạ ấ y
thường d a trên các ch ng th c khóa công khai (digital certificate) ho c các thành ự ứ ự ặ ph n cầ ủa hạ ầ t ng khóa công khai (public key infrastructure - PKI)
2.2.5.4. T n công d a trên thấ ự ời gian
N u k t n công nế ẻ ấ ắm đủ thông tin v ph n c ng th c hi n mã hóa và ề ầ ứ ự ệ xác định được th i gian giờ ải mã đố ới v i một số ả b n mã l a ch n thì có ự ọ thể nhanh chóng tìm ra khóa d. D ng t n công này có th ạ ấ ểáp dụng đối với hệ ng ch thố ữ ký điệ ử ử ụn t s d ng RSA. M t d ng t n công th c t : phân tích th a s RSA dùng m ng máy tính (Máy ch ộ ạ ấ ự ế ừ ố ạ ủ web dùng SSL)
Để ch ng l i t n công d a trên thố ạ ấ ự ời gian là đảm b o quá trình gi mã luôn di n ra ả ải ễ trong thời gian không đổ ấ ể văn bải b t k n mã
2.2.5.5. T n công l a ch n thích nghi b n mã ấ ự ọ ả
D ng t n công lạ ấ ựa chọn thích nghi b n mã (adaptive chosen ciphertext attack) có th ả ể thực hi n trên th c t i v i mệ ự ế đố ớ ột văn bản mã hóa bằng RSA. Văn bản này được mã hóa d a trên tiêu chu n PKCS #1 v1, m t tiêu chu n chuyự ẩ ộ ẩ ển đổ ải b n rõ có kh ả năng ki m tra tính h p l cể ợ ệ ủa văn bản sau khi gi i mã. Do nh ng khi m khuyả ữ ế ết của PKCS #1, Bleichenbacher có th c hi n m t t n công lên b n RSA dùng cho giao thểthự ệ ộ ấ ả ức SSL (tìm được khóa phiên). Do phát hi n này, các mô hình chuyệ ển đổi an toàn hơn như chuyển đổi mã hóa bất đối x ng tứ ối ưu (Optimal Asymmetric Encryption Padding) được khuy n cáo s d ng. ng th i phòng nghiên c u cế ử ụ Đồ ờ ứ ủa RSA cũng đưa ra phiên bản mới của
PKCS #1 có kh ả năng chống lại dạng t n công nói trên. ấ
2.3. CHỮ KÝ S RSA Ố 2.3.1. Đặt vấn đề
Trong trao đổi thông tin, thông điệp được truyền đi giữa bên g i và bên nh n c n có ử ậ ầ các tiêu chu n c n xác miẩ ầ nh, đó chính là xác thực. Xác th c thông báo là m t k thuự ộ ỹ ật trong mật mã học đểxác minh tính đúng đắn của thông báo đuợc g i. M t thông báo ử ộ
- Thông báo có nguồn gốc rõ ràng, chính xác - Nội dung thông báo toàn vẹn không b ị thay đổi - Thông báo được gửi đúng trình tự và thời điểm
Xác th c thông báo b o vự ả ệ hai bên tham gia trong quá trình trao đổi thông tin t k ừ ẻ thứ ba. Tuy nhiên, xác th c thông báo không có tác d ng khi bên g i và bên nh n ự ụ ử ậ muốn gây h i cho nhau: ạ
- Bên nh n gi mậ ả ạo thông báo c a bên g i ủ ử - Bên gửi chối là đã gửi thông báo đến bên nh n ậ
Chữ ký s không nh ng giúp xác th c thông báo mà còn b o v mố ữ ự ả ệ ỗi bên kh i bên kia ỏ Ở ph n này cung c p nhầ ấ ững đề xuất để n khai m t mã khóa công khai d a trên triể ậ ự thu t toán ậ RSA:
- Những s nguyên t m t mã. ố ố ậ - Lược đồ mã hóa
- Lược đồchữ ký s ố
Những gi i thi u nh m vào ớ ệ ằ ứng d ng ph bi n trong máy tính và các h ụ ổ ế ệthống truy n ề thông. Người ta k v ng r ng nh ng chu n ng d ng dỳ ọ ằ ữ ẩ ứ ụ ựa trên đặ ảc t này có th bao ể g m nh ng ràng bu c. ồ ữ ộ
2.3.2. Các biểu tượng
c – Đạ i diện d ữliệu mã hóa, một số ữ gi a 0 và n-1. C – ữ ệ D li u mã hóa, m t chu i sộ ỗ ố ệ h 8.
d S – ố mũ khóa riêng RSA.
di S – ố mũ hàm CRT của thừa số ộ c ng ri, m t s ộ ố nguyên dương e*di≡ 1 (mod(ri-1)), i=3, …, u.
e*dP≡1(mod(p-1))
dQ S – ố mũ hàm CRT của q, m t s ộ ố nguyên dương e*dQ≡1(mod(q-1))
e – ố mũ công khai RSA S
EM – Thông điệp được mã hóa, m t xâu hộ ệ 8.
emBits –Chiều dai theo bits của thông điệp được mã hóa EM. emLen – Chi u dài theo h 8 cề ệ ủa thông điệp được mã hóa EM. GCD (. , .) – Hàm ước s chung l n nh t c a hai s không âm. ố ớ ấ ủ ố Hash – Hàm băm.
hLen –Chiều dài d ữliệu đầu ra theo h 8 cệ ủa hàm băm Hash. k –Chiều dài theo h 8 cệ ủa số modulus RSA n.
K – Khóa riêng RSA.
L – Nhãn RSAES-OAEP tùy ch n, m t chuọ ộ ỗ ệi h 8.
LCM – Hàm b i sộ ố chung nh nhỏ ất của m t danh sách s nguyên không âm. ộ ố m – Đạ i diện thông điệp, một số nguyên dương giữa 0 và n- 1.
M – Thông điệp, m t chu i hộ ỗ ệ 8.
mask D u ra hàm MGF, m– ữliệ ột xâu hệ 8. maskLen –Chiều dài của xâu hệ 8 mask. MGF – Hàm sinh mask.
mgfSeed –Nhân, từ đó mask được sinh, m t xâu h 8. ộ ệ mLen Chi n dài theo h 8 c a m– ề ệ ủ ột thông điệp M.
(n, e) – Khóa công khai RSA.
p, q Hai th– ừa số nguyên t cố ủa số modulus n RSA. qInv H s CRT, m t s – ệ ố ộ ố nguyên dương nhỏ hơn p q*qInv≡1(mod p)
ri– Thừ ốa s nguyên t c a s modulus n RSA, bao g m r1=p, r2=q, và nh ng th a s ố ủ ố ồ ữ ừ ố b xung n u c n. ổ ế ầ
s – Đạ i diện ch ký, mữ ột số ữ gi a 0 và n-1. S – Ch ký, m t chuữ ộ ỗ ệi h 8.
sLen – Chi u dài h 8 c a khóa biề ệ ủ ến thiên (salt) EMSA-PSS.
ti – ệ ố H s CRT c a th a sủ ừ ố nguyên t c ng ri, mố ộ ột số nguyên dương nhỏ hơn ri -
r1*r2*….*ri 1*ti≡1(mod ri), i=3, …, u
u S c a các Th– ố ủ ừa số nguyên t c a hàm modulus RSA, u>2. ố ủ x M– ột số nguyên không âm.
X M t chu– ộ ỗi hệ 8 phù h p v i x. ợ ớ xLen –chiều dài c a chuủ ỗi hệ 8 X.
0x D u ch i di n h hexa c a m t s h 8 ho c m t chu i h – ấ ỉ đạ ệ ệ ủ ộ ố ệ ặ ộ ỗ ệ 8; “0x48” biểu th ị m t s h 8 v i giá tr ộ ố ệ ớ ị hexa 48; “(0x)48 09 0e” biểu th mị ột chu i ba s h 8 liên tiỗ ố ệ ếp với giá trị hexa theo trình t 48, 09 và 0e. ự
λ(n) – LCM (r1-1, r2-1, …, ru-1)
hàm lo i tr bít c a c– ạ ừ ủ ủa hai chuỗi hệ 8. ‖– Toán t c t ử ắ
≡ Biểu tượng đồng dư; a≡b(mod n) nghĩa là mộ ốt s nguyên n chia cho s nguyên a-ố b.
2.3.3. Các loại khóa
Hai loại khóa đượ ử ục s d ng trong các s nguyên t ố ố và lược đồ được định nghĩa trong tài li u này là ệ Khóa công khai RSA và Khóa riêng RSA. Khóa công khai RSA và khóa bí m t RSA t o nên c p khóa RSA. ậ ạ ặ
Đặ ảc t này h cái gỗtrợ ọi là RSA đa nguyên tố ở đó số modulus có th có nhiể ều hơn hai th a s nguyên t . L i ích cừ ố ố ợ ủa RSA đa nguyên tố là chi phí tính toán thấp hơn cho giải mã và ki m tra ch ký sể ữ ố, được cung c p mà thuấ ật toán CRT đượ ử ục s d ng. Hiệu năng có thể đạt được trên các n n t ng b x ề ả ộ ử lý đơn tốt hơn, nhưng m t ng r t ở ộ ấ l n trên các n n tớ ề ảng đa bộ ử lý, nơi mà các số mũ modulus bao gồ x m có th ể dược x ửlý song song.
2.3.3.1. Khóa công khai RSA
Khóa công khai RSA gồm 2 thành phần:
- n S modulus RSA, m– ố ột số nguyên dương. - e – ố mũ công khai RSA, mộ S t số nguyên dương.
M t khóa công khai h p l , s Modulus n RSA là k t qu c a ri các s nguyên t ộ ợ ệ ố ế ả ủ ố ố riêng biệt u, i=1, 2, …, u ở đó u>=2, và số mũ công khai e RSA là mộ ốt s nguyên gi a 3 và n-1 thữ ỏa mãn GCD(e, λ(n))≡1, ở đó λ(n)≡LCM(r1 1, …, ru- -1). Theo quy ước, hai s nguyên t ố ố đầu tiên r1 và r2 cũng có thể ám ch p và q theo trình t . ỉ ự
2.3.3.2. Khóa riêng RSA
Khóa riêng RSA có thể có một trong hai đại diện.
- Đại diện đầu tiên bao g m m t c p (n, d), ồ ộ ặ ở đó các thành phần có nghĩa sau đây:
n s modulus RSA, m– ố ột số nguyên dương. d s – ố mũ riêng RSA, một số nguyên dương.
- Đại di n th 2 bao g m b ệ ứ ồ ộ năm (p, q, dP, dQ, qInv) và một chu i ba s (ri, di, ỗ ố ti), i= 3, …, u, mot cho mỗ ối s nguyên t không trong b ố ộ năm, ở đó các thành
p –Thừa số đầ u tiên, một số nguyên dương. q –Thừa số hai, mthứ ột số nguyên dương.
dP S – ố mũ CRT của thừa số đầ u tiên, một số nguyên dương. dQ S – ố mũ CRT của thừa số 2, m t s thứ ộ ố nguyên dươn. qInv H s – ệ ố CRT đầu tiên, một số nguyên dương.
ri– ừ ố ứ th a s th i, m t s ộ ố nguyên dương.
di S – ố mũ CRT ủc a thừa số i, mthứ ột số nguyên dương. ti– ệ ố h s CRT c a th a s th i, mủ ừ ố ứ ộ ố nguyên dương.t s
Trong một khóa riêng RSA h p l v i bi u di n th nhât, s modulus n RSA là gi ng ợ ệ ớ ể ệ ứ ố ố như trong khóa công khai RSA tương ứng và là k t qu c a ri các s nguyên t u, ế ả ủ ố ố i=1, 2, …, u, ở đó u>2. Số mũ khóa riêng d RSA là mộ ố nguyên dương nhỏ hơn n t s thỏa mãn : e*d ≡ 1 (mod , λ(n)). (2.1)
Ở đó e phù hợp v i s ớ ố mũ công khai RSA và λ(n) được định nghĩa như trên.
Trong m t khóa riêng RSA h p l v i bi u di n th 2, hai th a s p và q là hai thộ ợ ệ ớ ể ễ ứ ừ ố ừa s u tiên c a s Modulus n RSA (t c là, r1 và r2), s ố đầ ủ ố ứ ố mũ dP và dQ CRT là hai số nguyên dương nhỏ hơn p và q thỏa mãn theo trình t : ự
e*dP ≡ 1 (mod (p-1)) (2.2) e*dQ ≡ 1 (mod (q-1)) (2.3) và h s qInv hàm CRT là mệ ố ột số nguyên dương nhỏ hơn p thỏa mãn:
q*qInv ≡ 1 (mod p) (2.4)
N u u >2, bi u di n này s bao g m m t ho c nhi u b ế ế ễ ẽ ồ ộ ặ ề ộ ba (ri, di, ti), i=3, …, u. Hệ s ri là các th a s nguyên t b xung c a s ố ừ ố ố ổ ủ ốModulus n RSA. Mỗ ố mũ di CRT i s (i=3, …, u) thỏa mãn:
e*di≡ 1 (mod(ri-1)) (2.5)
Ri*ti≡ 1(mod ri) trong đó Ri=r1*r2*…ri-1 (2.6)
2.3.4. Các nguyên hàm mật mã
Các nguyên hàm m t mã là các toán t toán hậ ử ọc cơ bả ở đó các lược đồ ận m t mã có thể được xây dựng. Chúng được s d ng tri n khai trong ph n cử ụ ể ầ ứng cũng như các module ph n mầ ềm.
B n loố ại nguyên hàm được ch ra trong tài liỉ ệu này, đượ ổc t ch c theo c p: Mã hóa ứ ặ và gi i mã; ký và ki m tra ch ký. ả ể ữ
Đặ ả ềc t v các nguyên hàm th a nh n rừ ậ ằng các điều ki n c th nào có th t b ng ệ ụ ể ể đạ ằ các đầu vào, trong trường h p này là khóa các Khóa riêng và khóa công khai h p l . ợ ợ ệ
2.3.4.1. Các nguyên hàm mã hóa và giải mã.
M t nguyên hàm mã hóa t o ra mộ ạ ột đại di n mã hóa t mệ ừ ột đại diện thông điệp qua một khóa công khai, và một nguyên hàm gi i mã phả ục hồ ại l i thông điệm đại diệ ừn t đại di n mã hóa qua khóa riêng phù h p. ệ ợ
M t c p nguyên hàm mã hóa và giộ ặ ải mã được s dử ụng trong các lược đồmã hóa được định nghĩa trong tài liệu này: RSAEP/RSADP. RSAEP và RSADP có toán t gi ng ử ố hệt nhau, với các khóa khác nhau đầu vào.
RSAEP
RSAEP((n, e), m) (2.7)
Đầu vào: (n. e) Khóa công khai RSA –
m, m nguyên gi a 0 và n-1. m – Đại diện thông điệ ột số ữ
Đầu ra: c i di n mã hóa, m t s nguyên gi a 0 và n-1. – Đạ ệ ộ ố ữ L ỗi: “Đại diện thông điệp ngoài phạm vi”
Giả đị nh: Khóa công khai RSA (n, e) hợ ệp l . Các bước:
1. Nếu đại diện thông điệp m không n m gi a 0 và n-1, k t qu i diằ ữ ế ả “đạ ện thông điệp ngoài phạm vị” và dừng l ại. 2. Để c≡me mod n. 3. Kết quả c. RSADP RSADP (K,c)
Đầu vào: K Khóa riêng RSA, – ở đó K có một trong các dạng sau đây. • Một cặp (n, d)
• Một bộ năm (p, q, dP, dQ, qInv) và một ch i ba rỗ ỗng (ri, di,ti), i=3, …, u) c – Đạ i diện b n mã, mả ột số nguyên gi a 0 và n-1. ữ
Đầu ra: m i di n b– Đạ ệ ản thông điệp, m t s gi a 0 và n-1. ộ ố ữ L ỗi: “Đại diện thông điệp ngoài phạm vi”.
Giả đị nh: Khóa riêng RSA K hợ ệp l . Các bước:
1. Nếu đại di n b n mã c không n m gi a 0 và n-1, k t qu ệ ả ằ ữ ế ả “Đại di n b n mã ngoài ệ ả phạm vi” và dừng thu t toán. ậ
2. Đại diện thông điệm m được tính toán như sau:
N u b u tiên (n, d) cế ộ đầ ủa K được sử ụng, để m≡cd modn d
N u b 2 (d, p, dP, dQ, qInv) và (ri, di, ti) cế ộthứ ủa K được sử ụ d ng, x ử lý như sau:
Để m1≡ cdP mod p và m2≡ cdQ mod q. N u u>2ế , cho mi≡ cdi mod ri, i=3, …, u. Cho h = m1-m2*qInv mod p.
N u u>2, cho R=ri và For i=3 ế Cho R=R*ri-1
Cho h=(mi-m)*ti(mod ri) Cho m = m+R*h
Kết quả m.
3.3.4.2. Các nguyên hàm ký s và ki m tra ch ố ể ữký.
M t nguyên hàm ký t o ra mộ ạ ộ ạt đ i di n ký t mệ ừ ột thông điệp qua khóa riêng, và một nguyên hàm ki m tra ký s phể ố ục hồi thông điệp t mừ ộ ạt đ i diện ký s qua khóa công ố khai tương ứng. M t c p nguyên hàm ký và ki m tra ch ộ ặ ể ữ ký được s dử ụng trong lược đồ ký s ố được định nghĩa trong tài liệu này và được đặ ảc t ởđây: RSASP1/RSAVP1. Các toán t toán ho c chính trong m i nguyên hàm là viử ạ ỗ ệc mũ hóa như trong các nguyên hàm mã hóa và gi i mã các ph n trên. RSASP1 và RSAVP1 giả ở ầ ống như RSADP và RSAEP ngo i tr tên cạ ừ ủa các đố ố đầu vào đầu ra; Chúng đượi s c phân biệt do chúng được sử ụ d ng trong các m c tiêu khác nhau. ụ
RSASP1
RSASP1 (K,m)
Đầu vào: K Khóa riêng RSA, – ở đó K có một trong các dạng sau đây. • M t c p (n, d) ộ ặ
• M t b ộ ộ năm (p, q, dP, dQ, qInv) và một ch i ba rỗ ỗng (ri, di,ti), i=3, …, u)