:Toán tử mật mã EME-OAEP

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 34 - 40)

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.

2.3.7.2 Toán tử kiểm tra chữ ký

RSASSA-PSS-VERIFY ((n, e), M, S)

Đầu vào: (n, e) – Khóa công khai RSA của ngƣời ký.

M - Thông điệp mà chữ ký của nó cần đƣợc kiểm tra, một chuỗi hệ 8.

S – Chƣ ký cần đƣợc kiểm tra, một chuỗi hệ 8 chiều dài k, ở đó k là chiều dài hệ 8 của số modulus RSA hệ 8.

Đầu ra: “Chữ ký hợp lệ” hoặc “Chữ ký không hợp lệ” Các bƣớc:

1. Kiểm tra chiều dài: Nếu chiều dài chữ ký S không phải là k hệ 8, thông báo “Chữ ký không hợp lệ” và kết thúc.

2. Kiểm tra RSA

a. Biến đổi chữ ký S thành đại diện ký số nguyên s S=OS2IP(S)

b. Áp dụng nguyên hàm kiểm tra RSAVP1 với khóa công khai RSA (n, e) và đại diện ký s để tạo ra một đại diện thông điệp nguyên m:

M=RSAVP1((n, e), s)

Nếu RSAVP1 cho kết quả “Đại diện chữ ký ngoài phạm vi” thông báo “chữ ký không hợp lệ” 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ã hóa EM chiều dài emLen=Tròn trên(modBits-1)/8 hệ 8, ở đó modBits là chiều dài bit của số modulus RSA n:

EM=I2OSP(m, emLen)

Chú ý rằng emLen sẽ nhỏ hơn k một nếu modBits-1 có thể chia cho 8 và bằng k. Nếu I2OSP cho kết quả “Số nguyên quá lớn” thông báo “Chữ ký khônghợp lệ” và dừng lại.

3. Kiểm tra EMSA-PSS: Áp dụng toán tử kiểm tra EMSA-PSS với thông điệp M và thông điệp đƣợc mã hóa EM để quyết định liệu chung có nhất quán:

Result=EMSA-PSS-VERIFY (M, EM, modBits-1) 4. Nếu Result=”Nhất quán” thông báo “Chữ ký hợp lệ” khác thì

2.4. CHUẨN PKCS#11 2.4.1 Giới thiệu 2.4.1 Giới thiệu

Các thiết bị tính toán di động nhƣ các Token, Thẻ thông minh (Smart Card), thẻ OCMCIA, các đĩa mềm thông minh, máy tính bảng, điện thoại thôn minh là những công cụ hoàn hảo cho triển khai mật mã khóa công khai. Những dòng thiết bị này mang đến cho ta cách để lƣu trữ phần khóa bí mật của cặp khóa Công khai/Bí mật một cách bảo mật, dƣới sự kiểm soát của một ngƣời dùng duy nhất. Với một thiết bị nhƣ vậy, một ứng dụng thay vì tự thực hiện các toán tử mật mã, sử dụng thiết bị để thực hiện các toán tử, với các thông tin nhậy cảm nhƣ khóa bí mật sẽ không bao giờ bị lộ. Càng nhiều ứng dụng đƣợc phát triên cho mật mã khóa công khai, một giao diện lập trình chuẩn cho các thiết bị càng trả lên có giá trị.Chuẩn này tập trung vào nhu cầu này. Chuẩn PKCS#11 là chuẩn đặc tả giao diện lập trình ứng dụng đƣợc gọi là Cryptoki cho các thiết bị lƣu trữ thông tin mật mã và thực hiện các hàm mật mã. Cryptoki tuân theo phƣơng pháp hƣớng đối tƣợng đơn giản, tập trung vào các mục tiêu độc lập công nghệ và chia sẻ tài nguyền, phô ra cho các ứng dụng khung nhìn logic và chung của thiết bị đƣợc đƣợc gọi là một Cryptographic Token.

Chuẩn này đặc tả các kiểu dữ liệu và các hàm sẵn có cho một ứng dụng đòi hỏi các dịch vụ mật mã sử dụng ngôn ngữ lập trình C theo chuẩn ANSI. Các kiểu dữ liệu và hàm sẽ đƣợc cung cấp phổ biết qua các các file tiêu đề hàm H của ngôn ngữ lập trình C bởi các nhà cung cấp thƣ viên Cryptoki. Các file tiêu đề hàm H cho Cryptoki ở trên web chuẩn mã mã khóa công khai (PKCS)

2.4.2. Mục tiêu thiết kế

Theo dự kiến từ đầu Cryptoki là một giao diện giữa các ứn dụng và tất cả các thiết bị mật mã di động nhƣ các thiết bị Token, Thẻ thông minh, Thẻ PCMCIA, các đĩa mềm thông minh, điện thoại thông minh, máy tính bảng. Mục tiêu chính của Cryptoki là giao diện lập trình mức thấp hơn, nó trừu trƣợng hóa các chi tiết của thiết bị, và biểu diễn trƣớc ứng dụng một mô hình chung của thiết bị mật mã, đƣợc gọi là Token mật mã.

Mục tiêu thứ hai là chia sẻ tài nguyên, khi các hệ điều hành đa nhiệm cho máy tính bàn trở lên phổ biến hơn, một thiết bị đơn sẽ đƣợc chia cho nhiều ứng dụng.Hơn nữa, một ứng dụng có thể giao tiếp với nhiều thiết bị tại cùng một thời điểm cụ thể.

2.4.3. Mô hình chung

Mô hình chung của Cryptoki đƣợc minh họa ở hình sau, mô hình bắt đầu với một hoặc nhiều ứng dung cần thực hiện các toán tử mật mã cụ thể, và kết thúc với một hoặc nhiều thiết bị. Ở đó một vài hoặc tất cả các toán tử thực sự đƣợc thực hiện.Một ngƣời dùng có thể hoặc không liên quan tới một ứng dụng.

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 34 - 40)