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) m – Đạ i diệ thông điện 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 .
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ử ụng, để s≡md mod n 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:
Để 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: (n. e) Khóa công khai RSA –
n ch ký, m nguyên gi a 0 và n-1. s – Đại diệ ữ ột số ữ
Đầu ra: m i di– Đạ ện thông điệp, m t s nguyên gi a 0 và n-1. ộ ố ữ L ỗi: “Đại diện ch ký 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 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 . Hai loộ ụ ề ụthể ạ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ý. ữ
Các lược đồ ch ra trong tài li u này giỉ ệ ới hạn v ph m v mà các toán t bao g m ch ề ạ ị ử ồ ỉ có các bước xử lý d li u v i khóa công khai và khóa riêng RSA, và không bao g m ữ ệ ớ ồ các b c t o ra khóa ho c kiướ ạ ặ ểm tra khóa. Do đó để ổ b xun cho các toán t ử lược đồ, một ứng d ng có s ph bi n g n các toán t quan lý mà nh ụ ẽ ổ ế ắ ử ờ đó các đối tượng tham gia có th l y các khóa công khai và khóa riêng cho m t toán t ể ấ ộ ử lược đồ. Các toán t ử b xung c và các chi tiổ ụthể ết của nó ngoài ph m vi c a tài li u này. ạ ủ ệ
Các đặ ảc t và toán t ửlược đồ ừ th a nhận các điều ki n ch c chệ ắ ắn đạt được b i các ở đầu vào, c th là c p khóa công khai và riêng là h p lụ ể ặ ợ ệ. Do đó cách xử lý m t khóa ộ không h p l ợ ệ không được ch ỉra ở đây. Ảnh hưởng trên các x ử lý không được ch ra ỉ ở đây phụ thu c vào ng d ng. Các kh ộ ứ ụ ả năng có thể ể ki m tra h p l khóa bao g m ợ ệ ồ ki m tra khóa c b ng ể ụthể ằ ứng d ng; ki m tra khóa trong h t ng mã khóa công khai; ụ ể ạ ầ và giao trách nhi m cho các toán t ệ ử được th hi n v i m t khóa không h p l cho ực ệ ớ ộ ợ ệ một đơn vị u trách nhi m sinh khóa. chị ệ
M t th c ti n m t mã t t nói chung là s d ng m t c p khóa RSA c trong ộ ự ễ ậ ố ử ụ ộ ặ ụ thểchỉ một lược dồ. Điều này tránh r i ro rủ ằng điểm y u trong mế ột lược đồ có th làm hể ại đến an ninh của lượ đồc khác, và có th ể là căn bản duy trì an ninh có th ểchứng minh.
2.3.5. Các lược đồ mã hóa.
Một lược đồ mã hóa bao g m m t toán t mã hóa và m t toán t gi i mã, ồ ộ ử ộ ử ả ở đó toán t mã hóa t o ra mử ạ ột bản mã t ừ thông điệp với khóa công khai RSA của người nhận, và toán t gi i mã ph c hử ả ụ ồi thông điệp t b n mã v i khóa riêng RSA cừ ả ớ ủa người nh n. ậ Một lược đồ mã hóa có th ể được s d ng trong các ử ụ ứng dụng đa dạng khác nhau. Một ứng dụng điển hình là giao th c thi t l p hóa, ứ ế ậ ởđó thông điệp ch a tài liứ ệu khóa được phân ph i bí mố ậ ừ ột t m t ngư i đờ ến người khác.
2.3.5.1. Toán tử mã hóa
RSAES-OAEP-ENCRYPT((n,e), M, L)
Các tùy ch n: ọ Hash –hàm băm (hLen biểu th ịchiều dài h h 8 k t qu cệ ệ ế ả ủa hàm băm) Hàm sinh m t n
MGF – ặ ạ
Đầu vào: (n, e) Khóa công khai RSA c– ủa người nh n (k, bi u th chi u dài h 8 ậ ể ị ề ệ của số modulus RSA n)
M – Thông điệp cần được mã hóa, m t ch i h 8 có chi u dài mLen, ộ ỗ ệ ề ở đo mLen<=k-2hLen-2.
L – Nhãn tùy chọn được g n vắ ới thông điệp; giá tr mị ặc định cho L, nếu L không được cung c p, là m t chu i r ng. ấ ộ ỗ ỗ
Đầu ra: C b n mã, m t chu i h 8 có chi u dài k. – ả ộ ỗ ệ ề L ỗi: “Thông điệp quá dài”; “Nhãn quá dài” Thừa nhận: Khóa công khai RSA (n, e) là h p l . ợ ệ
Các bước:
1.Kiểm tra chi u dài. ề
a. N u chi u dài c a L lế ề ủ ớn hơn giớ ạn đầu vào cho hàm băm (261i h - 1 h 8 ệ cho SHA-1), đầu ra “Nhãn quá dài” và d ng l ừ ại.
b. N u mLen>k-2hLen-2, kế ết quả “Thông điệp quá dài” và dừng l ại.
2.EME-OAEP mã hóa
a. Nếu nhãn L không được cung ch p, cho L là m t chu i r ng. cho ấ ộ ỗ ỗ lHash=Hash(L), m t chuộ ỗi hệ 8 có chi u dài hLen. ề