Tổng quan về các lƣợc đồ

Một phần của tài liệu Nghiên cứu và phát triển ứng dụng chữ ký số trên các thiết bị cầm tay (Trang 31)

4. ĐỐI TƢỢNG VÀ PHẠM VI NGHIÊN CỨU

2.3.5. 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ý.

Các lƣợc đồ chỉ ra trong tài liệu này giới hạn về phạm vi 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ổ xung cho các toán tử lƣợc đồ, một ứng dụng thƣờng có các toán tử quản lý khóa điển hình nhờ nó mà các bên có thể lựa chọn các khóa riêng và công khai RSA cho một toán tử lƣợc đồ. Các toán tử bổ xung cụ thể và các chi tiế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ụ thể bằng ứ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ực hiện với một khóa không hợp lệ cho một đơn vị chịu trách nhiệm sinh khóa.

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ụ thể chỉ trong 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.6. 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 khó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.6.1. Toán tử mã hóa

Các túy chọn: Hash – hàm băm (hLen biểu thị chiều dài hệ 8 kết quả của hàm băm)

MGF – Hàm sinh mặt nạ

Đầ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 chuỗi hệ 8 có chiều dài mLen, ở đó 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ới hạn đầu vào cho hàm băm (261- 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 cấ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.

b. Sinh ra một chuỗi hệ 8 PS gồm k-mLen-2hLen-2 số 0 hệ 8. Chiều dài của PS có thể là 0.

c. Cắt lHash, PS, một chuỗi hệ 8 với giá trị hexa 0x01, và thông điệp M để cấu thành khối dữ liệu DB chiều dài k- hLen-1 hệ tam nhƣ sau:

DB=lHash ‖PS‖ 0x01‖ M.

e. Cho dbMask = MGF(seed, k-hLen-1). f. Cho maskedDB = DB dbMask.

g. Cho seedMask = MGF (maskedDB, hLen). h. Cho maskedSeed=seed seedMask.

i. Cắt một số hệ 8 đơn với giá trị hexa 0x00, maskedSeed, maskedDB để tạo một thông điệp EM đƣợc mã hóa với chiều dài k hệ 8 nhƣ sau.

EM=0x00 ‖ maskedSeed ‖ maskedDB 3. Mã hóa RSA

a. Biến đổi thông điệp EM đƣợc mã hóa thành m đại diện thông điệp là số nguyên

M=OS2IP (EM).

b. Áp dụng nguyên hàm mã hóa RSAEP với khóa công khai RSA (n, e) và m đại diện thông điệp để tạo ra một đại diện thông bản mã số nguyên c

C=RSAEP ((n, e), m).

c. Biến đổi đại diện bản mã c thành bản mã C có chiều dài k theo hệ 8

C=I2OSP(c, k) 4. Đầu ra bãn mã C.

Hình 1:Toán tử mật mã EME-OAEP

2.3.6.2. Toán tử giải mã

RSAÉ-OAEP-DECRYPT (K, C, L)

Tùy chọn: Hash – Hàm băm (hLen biểu thị chiều dài hệ 8 của kết quả hàm băm).

MGF – Hàm sinh mặt nạ

Đầu vào: K – Khóa riênng RSA cả ngƣời nhận (k biểu thị chiều dài hệ 8 của số modulus RSA n).

C – Bản mã đƣợc giải mã, một chuỗi hệ 8 có chiều dài k, ở đó k>2hLen+2.

L – Nhãn tùy chọn, mối liên kết với thông điệp đƣợc kiểm tra; Giá trị mặc định cho L, nếu L không đƣợc cung cấp là xâu rỗng.

Đầu ra: M – Thông điệp, một xâu hệ 8 chiều dài mLen, ở đó mLen<=k- 2hLen-2.

Lỗi: “Lỗi giải mã”

Các bƣớc:

1. Kiểm tra chiều dài

a. Nếu chiều dài L lớn hơn giới hạn đầu vào cho hàm băm (261-1 hệ 8 cho hàm SHA-1), kết quả “Lỗi giải mã” và dừng lại.

b. Nếu chiều dài bản mã C không phải là k hệ 8, kết quả “Lỗi giải mã” và dừng lại.

c. Nếu k<2hLen+2, kết quả “Lỗi giải mã” và dừng lại. 2. Giải mã RSA

a. Biến đổi bản mã C thành đại diện bản mã số nguyên c. C=OS2IP(C)

b. Áp dụng ngyên hàm giải mã RSADP cho khóa riêng RSA K và đại diện bản mã c để tạo ra một đại diện thông điệp số nguyên m

M=RSADP (K, c).

Nếu các kết quả RSAD “Đại diện bản mã ngoài phạm vi” (Nghĩa là c>=n), kết quả “lỗi giải mã” và dừng lại. c. Biến đổi đại diện thông điệp m thành thông điệp đã

đƣợc mã EM có chiều dài k hệ 8. 3. Giải mã EME-OAEP

a. Nếu nhãn L không đƣợc cung cấp, cho L rỗng. cho lHash=Hash(L), một xâu hệ 8 có chiều dài hLen.

b. Phân tách bản thông điệp đƣợc mã hóa EM thành Y hệ 8 đơn, một chuỗi hệ 8 maskedSeed chiều dài hLen, và một xâu hệ 8 maskedDB có chiều dài k-hLen-1 nhƣ sau EM=Y ‖ maskedSeed ‖ maskedDB.

c. Cho seedMask=MGF (maskedDB, hLen). d. Cho seed=maskedSeed seedMask.

e. Cho dbMask=MGF(seed, k – hLen - 1). f. Vho DB=maskedDB dbMask.

g. Phân tách DB thành chuỗi lHash’ hệ 8 có chiều dài hLen. Một xâu đệm PS bao gồm hệ 8 với giá trị Hexa, và một thông điệp M nhƣ sau

DB=lHash’‖ PS ‖ 0x01 ‖ M

Nếu không ở hệ 8 với giá trị hexa 0x01 để phân tách PS từ M, nếu lHash không bằng lHash’, hoặc nếu Y không bằng không, kết quả “Lỗi giải mã” và dừng.

4. Kết quả thông điệp M.

2.3.7. Các lƣợc đồ chữ ký

Một lƣợc đồ chữ ký bao gồm toán tử sinh chữ ký và toán tử kiểm tra chữ ký số, ở đó toán tử sinh chữ ký tạo ra một chữ ký từ một thông điệp với một khóa riêng RSA của ngƣời ký, và toán tử kiểm tra chữ ký kiểm tra chữ ký trên thông điệp với khóa công khai RSA của ngƣời ký phù hợp. Để kiểm tra chữ ký đƣợc xây dựng với lƣợc đồ này cần thiết phải có thông điệp.

RSASSA-PSS kết hợp các nguyên hàm RSASP1 và RSSAVP1 với phƣuơng thức mã hóa EMSA-PSS . Chiều dài các thông điệp ở đó RSASSA-PSS có thể thao tác có thể là hoặc không giới hạn hoặc có ràng buộc bởi số rất lớn, phụ thuộc vào hàm băm dƣới cơ sở phƣơng thức mã hóa EMSSA-PSS.

2.2.7.1 Toán tử sinh chữ ký

RSASSA-PSS-SIGN (K, M)

Đầu vào: K – Khóa riêng RSA của ngƣời ký.

M – Thông điệp đƣợc ký, một chuỗi hệ 8.

Đầu ra: S – Chữ ký, một chuỗi hệ 8 chiều dài k, ở đó k là chiều dài hệ 8 của số modulus RSA n.

Các lỗi: “Thông điệp quá dài”; “Lỗi mã hóa” Các bƣớc:

1. Mã hóa EMSA-PSS: Áp dụng toán tử EMSA-PSS với thông điệp M để tạo ra EM thông điệp đƣợc mã hóa chiều dài làm tròn lên ((modBits-1)/8) hệ 8 nhƣ chiều dài bít của số nguyên OS2IP(EM) là ở modBits-1, ở đó modBits là chiều dài theo bit của số modulus RSA n.

EM=EMSA-PSS-ENCODE(M, modBits-1)

Chú ý rằng chiều dài hệ 8 của EM sẽ nhỏ hơn 1 so với k nếu modBits – 1 có thể chia hết cho 8 bằng k. Nếu toán tử mã hóa cho kết quả “Thông điệp quá dài” thông báo “Thông điệp quá dài” và kết thúc. Nếu toán tử mã hóa cho kết quả đầu ra “Lỗi mã hóa” thông báo “Lỗi mã hóa” và kết thúc.

2. Ký RSA

a. Biến đổi thông điệp đƣợc mã hóa EM thành một đại diện thông điệp số nguyên m:

M=OS2IP(EM).

b. Áp dụng nguyên hàm RSASP1 với khóa riêng RSA K và đại diện thống điệp m để tạo ra một đại diện ký số nguyên s:

S=RSASP1(K, m).

c. Biến đổi đại diện ký s thành một chữ ký S chiều dài k hệ 8

S=I2ÓP(s, k). 3. Kết quả là chữ ký S.

Một phần của tài liệu Nghiên cứu và phát triển ứng dụng chữ ký số trên các thiết bị cầm tay (Trang 31)

Tải bản đầy đủ (PDF)

(84 trang)