2.2.5.1. Tấn công trong quá trình tạo khóa
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 nhiê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ừa số nguyên tố nhỏ 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 độ thực hiện chậ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 để giải mã (thông thườngkhó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-in-the-middle 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ời Eve có khả 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 đọc tất cả văn bản mã hóa do Bobgử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
26
thường dựa trên các chứng thực khóa công khai (digital certifcate) 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ệ thống chữ 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ải mã luôn diễn ra trong thời gian không đổi bất kể văn bả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ể thực hiện một tấn công lên bản RSA dùng cho giao 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 minh, đó 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 đuợc xác thực khi thỏa mãn các yêu cầu :
27
- 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 để triển khai mật mã khóa công khai dựa trên 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ể baogồ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.
dP – Số mũ hàm CRT của p, môt số nguyên dương
28
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 – Số mũ công khai RSA
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ữ liệu ra hàm MGF, mộ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 – Số modulus RSA, n= r1*r2*…*ru, u>2
29
(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ỗ trợ cái gọ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ộ xử lý, nơi mà các số mũ modulus bao gồ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 – Số mũ công khai RSA, mộ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 phần có ý nghĩa sau đây:
31
p – Thừa số đầu tiên, một số nguyên dương.
q – Thừa số thứ hai, mộ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ố thứ 2, một số 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ố thứi, một số nguyên dương.
ti– hệ số CRT của thừa số thứ i, một số nguyên dương.
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ột số nguyên dương nhỏ hơn n
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))
e*dQ ≡ 1 (mod (q-1))
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)
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ỗi số mũ di CRT (i=3, …, u) thỏa mãn:
e*di≡ 1 (mod(ri-1))
Mỗi hệ số CRT ti (i=3, …, u) là một số nguyên dương nhỏ hơn ri thỏa mãn
32
Ri*ti≡ 1(mod ri) trong đó Ri=r1*r2*…ri-1
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ản ở đó các lược đồ 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ốnghệ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 – Đại diện thông điệm, một số nguyên giữa 0 và n-1.
Đầ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:
33
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ử dụng, để m≡cd modn
Nếu bộ thứ 2 (d, p, dP, dQ, qInv) và (ri, di, ti) củ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. Cho m=m2+q*h.
34
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 đối số đầu vào đầu ra; Chúng đượ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)
m – Đại diện thông điệp, một số nguyên giữa 0 và n-1.
Đầu ra: s – Đại diện chữ ký, 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ệ.
35
Các bước:
1.Nếu đại diện bả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 vi” và dừng thuật toán.
2. Đại diện chữ ký s được tính toán như sau:
Nếu bộ đầu tiên (n, d) của K được sử dụng, để s≡md mod n
Nếu bộ thứ 2 (d, p, dP, dQ, qInv) và (ri, di, ti) của K được sử dụng, xử lý như sau:
Để s1≡ mdP mod p và s2≡ mdQ mod q.
Nếu u>2, cho si≡ mdi mod ri, i=3, …, u.
Cho h = (s1-s2)*qInv mod p. Cho s=s2+q*h.
Nếu u>2, cho R=ri và For i=3 to u do Cho R=R*ri-1
Cho h=(si-s)*ti(mod ri) Cho s = s+R*h 3. Kết quả s. RSAVP1 RSAVP1((n, e), s) Đầu vào: Đầu ra: Lỗi: Giả định: Các bước: download by : skknchat@gmail.com
1. Nếu đại diện chữ ký s 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. Để m≡se mod n.
3. Kết quả m.
3.3.4.2. Tổng quan về các lược đồ.
Một lược đồ kết hợp với các nguyên hàm mật mã và các kỹ thuật khác để đạt được một mục tiêu về an ninh cụ thể. Hai loại lược đồ được đưa ra trong tài liệu này: Các lược đồ mã hóa và các lược đồ chữ ký.