Lƣợc đồ OAEP

Một phần của tài liệu Phân tích đánh giá một số hệ mã hóa (Trang 70)

Lược đồ dùng hàm một phía có cửa sập f trên những chuỗi k bit, f -1

là hàm ngược của nó. Lược đồ dùng tham số k0 và k1 trong đó k0 + k1  k , và thỏa mãn 2-k0

và 2-k1 là những lượng không đáng kể.

Lược đồ mã hóa message x  {0, 1}n , trong đó n = k – k0 – k1 . Lược đồ dùng hàm G: {0, 1}k0

→ {0, 1}n+k1 , và H: {0, 1}n+k1 → {0, 1}k0 . Hai hàm này được thiết kế như những máy tư vấn ngẫu nhiên, tức là đầu ra của hai hàm này là ngẫu nhiên, và được truy cập thông qua máy tư vấn ngẫu nhiên, các thực thể (party) tham gia đều có thể truy cập được kể cả thám mã.

Có thể cài đặt hai hàm G, H này là những hàm băm như đã trình bày ở mục 3.5.1.2.

Tạo khóa:

Chạy giải thuật tạo khóa của lược đồ để tạo ra hàm một phía có cửa sập f và hàm ngược f -1

(f và f -1 là những hàm đơn định). Khóa công khai là nhóm tham số dùng để tính hàm f. Khóa bí mật là cửa sập dùng để tính hàm ngược f -1

.

Ví dụ : Nếu f là RSA (3.1.2), thì khóa công khai sẽ là số mũ e, khóa bí mật sẽ là d.

Giải thuật tạo khóa là giải thuật xác suất thời gian đa thức F với đầu vào là {0, 1}k

, đầu ra là hai hàm đơn định (f , f -1), trong đó với mọi w  {0, 1}k thời gian để tính f(w) là khả thi với phần cứng và thời gian để tính

hàm ngược f -1

là bài toán "khó" (không khả thi với phần cứng hiện tại). Ta có thể cài đặt hàm f bằng hệ mật RSA ([7]).

Mã hóa:

Cho trước bản rõ x, giải thuật mã hóa chọn ngẫu nhiên r  {0, 1}k0, sau đó tính: s  {0, 1}n+k1 , t  {0, 1}k0 , w  {0, 1}k , y  {0, 1}k s = G(r)  (x || 0k1) , (1) t = H(s)  r , (2) w = s || t , (3) y = f(w). (4) Bản mã là y. Khóa bí mật sẽ là cửa sập để tính hàm ngược f – 1. Khóa công khai là nhóm tham số để tính hàm f.

Giải mã:

Cho trước bản mã y, giải thuật giải mã tính:

w  {0, 1}k , s  {0, 1}n+k1 , t  {0, 1}k0 , r  {0, 1}k0 , z  {0, 1}n+k1 , x  {0, 1}n , c  {0, 1}k1 w = f-1(y) , (5) s = w[0 … n + k1 – 1], (6) t = w[n + k1 … k] , (7) r = H(s)  t , (8) z = G(r)  s , (9) x = z[0 … n – 1] (10) c = z[n … n + k1 – 1] (11) Nếu c = 0k1 (có nghĩa là k1 bit 0), thì giải thuật cho đầu ra là bản rõ x. Ngược lại giải thuật không cho đầu ra là bản rõ, mà trả về giá trị *

(có nghĩa là không có bản rõ x tương ứng với bản mã y).

Ở đây w[0 … n + k1 – 1] có nghĩa là lấy n + k1 bit đầu tiên của w. w[n + k1 … k] có nghĩa là lấy k – n – k1 = k0 bit cuối cùng của w.

Một phần của tài liệu Phân tích đánh giá một số hệ mã hóa (Trang 70)