Các lƣợc đồ mã hóa

Một phần của tài liệu (LUẬN văn THẠC sĩ) 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 - 36)

Chương 2. NGHIÊN CỨU CƠ SỞ LÝ THUYẾT VÀ MỘT SỐTIÊU CHUẨN VỀ CHỮ KÝ SỐ

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

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ệ 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.

d. Sinh một nhân chuỗi hệ 8 ngẫu nhiên chiều dài hLen.

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.

Một phần của tài liệu (LUẬN văn THẠC sĩ) 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 - 36)

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

(84 trang)