Sơ đồ chữ ký RSA

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu hệ mật mã khoá công khai trong giao dịch điện tử (Trang 63 - 68)

4.1 Sơ đồ chữ ký số

4.1.3 Sơ đồ chữ ký RSA

Mã hoá khoá công khai RSA có không gian bản tin và không gian bản mã đều là Z n = {0, 1, 2, … , n-1} trong đó n = p.q là tích của hai số nguyên tố phân biệt được lựa chọn ngẫu nhiên. Phép mã hoá và giải mã của hệ mã RSA là đối xứng hoàn toàn do đó nếu đổi ngược lại trình tự của mã hoá khoá công khai RSA, ta sẽ đạt được sơ đồ chữ ký RSA cho phép: phép giải mã được sử dụng làm phép biến đổi ký (sử dụng khoá cá nhân) và phép mã hoá được dùng là phép biến đổi xác minh chữ ký (sử dụng khoá công khai) và chỉ người gửi có thể kí trong khi ai cũng có thể xác minh chữ kí đó.

Sơ đồ chữ ký số RSA là sơ đồ chữ ký tiền định, cho phép khôi phục lại bản tin. Không gian ký M S và không gian chữ kí S, đều là Z n . (Do đó người ta còn sử dụng đặc tính có  Z n hay không để xác minh chữ ký).

Định nghĩa: Cho n=p.q, p,q là 2 số nguyên tố; P = A = Z n ; định nghĩa K = { (n,p,q,e,d): n=pq; p,q là các số nguyên tố; ed 1 (mod (n))}. Các giá trị công khai là n và e (khoá công khai) , các giá trị giữ bí mật là d, p, q trong đó d là khoá cá nhân. Với mỗi K K ta định nghĩa:

Sig K ( x ) = x d mod n = s

Ver K (s)= True x s e (mod n)

Như vậy, khi A muốn gửi cho B một bức điện x ( x tương đương với m ~ nói trên, là giá trị của bản tin m đã được biến đổi để ký được), A phải tạo một chữ ký bằng cách sử dụng hàm sig K : s = sig K ( x ). Sau đó A mã hoá ( x ,s) bằng khoá công khai của B: e B ( x ,s) = z , sau đó A gửi z cho B trên một kênh liên lạc.

Thông thường, khi B nhận được z , B sử dụng khoá cá nhân của mình để giải mã:

d B ( z ) = ( x ,s)

B sử dụng thuật toán xác minh để kiểm tra độ xác thực của chữ ký mà A dùng:

Ver A (s) = 

FALSE TRUE

Giải thuật xây dựng sơ đồ chữ ký RSA trong thực tế Tạo khoá

Mỗi người dùng tạo ra một khoá công khai RSA và một khoá cá nhân tương ứng, quá trình được thực hiện như sau:

1. Tạo hai số nguyên tố lớn ngẫu nhiên phân biệt p và q có cùng kích thước;

2. Tính n = p.q và tính  = (p-1)(q-1);

3. Chọn một số nguyên ngẫu nhiên e, 1 < e < , sao cho: UCLN(e,)

= 1;

4. Sử dụng thuật toán Euclid mở rộng để tìm ra một số nguyên duy nhất d thoả mãn: 1 < d <  và ed  1 (mod );

(n, e) được dùng làm khoá công khai và d được dùng làm khoá cá nhân của A.

Tạo và xác minh (khôi phục) chữ ký

Người ký A tạo chữ ký trên bản tin m  M, bất kỳ ai cũng có thể xác minh chữ ký của người tạo.

1. Tạo chữ ký: Người gửi A thực hiện những công việc sau:

a. Tính x = R(m), là một số nguyên trong khoảng [0,n-1]

(chuyển đổi bản tin gốc thành một số nguyên  Z n );

b. Tính s = x d mod n , s chính là chữ ký của A trên m.

2. Xác minh: Để xác minh chữ ký s của A (khôi phục) bản tin m, B thực hiện các việc sau:

a. Lấy khoá công khai (n, e) của A (trên chứng chỉ điện tử);

b. Tính xs e mod n (điều kiện x  Z n dùng để xác minh

c. m = R -1 ( x ).

4.1.3.2 Tiêu chuẩn mật mã khoá công khai sử dụng sơ đồ chữ ký RSA

Các tiêu chuẩn mật mã khoá công khai được đưa ra chứa những đặc điểm kỹ thuật cho việc sử mã hoá RSA làm sơ đồ chữ ký số. Có hai tiêu chuẩn được sử dụng làm tiêu chuẩn quốc tế cho việc áp dụng sơ đồ chữ ký RSA đó là: tiêu chuẩn mật mã khoá công khai số 1 và tiêu chuẩn ISO/IEC 9796. Trong đó tiêu chuẩn mật mã khoá công khai số 1 được RSA lab nghiên cứu và hoàn thiện hơn so với tiêu chuẩn ISO/IEC 9796.

Tiêu chuẩn mật mã khoá công khai số 1 - PKCS#1

PKCS#1 còn được gọi là tiêu chuẩn mã hoá RSA, giải thuật chữ ký số trong PKCS#1 không sử dụng tính năng khôi phục bản tin của sơ đồ chữ ký RSA. Do đó sơ đồ chữ ký theo PKCS#1 là các sơ đồ chữ ký có phụ lục. PKCS#1 sử dụng các hàm băm MD2, hoặc MD5 trong quá trình tạo (xác minh) chữ ký.

Bảng 4.1: Bảng các ký hiệu chung Biểu

tượng

ý nghĩa Biểu

tượng

ý nghĩa

k

n p,q

e d m MD MD’

Độ dài octet của n, (k ≥ 11)

Modulus, 2 8(k-1) ≤ n ≤ 2 8k Các thừa số nguyên tố của n

Số mũ công khai Số mũ cá nhân Bản tin

Tóm lược bản tin

Tóm lược bản tin sinh ra trong quá trình xác minh (so sánh với bản MD)

D EB Octet ab BT PS s

||

|| X

Dữ liệu

Encryption block 1 chuỗi chứa 8 bit Giá trị hexa của octet Kiểu block

Chuỗi đựơc gắn thêm Chữ ký

Độ dài octet của X

Nếu X là một xâu bội 8bit (octet string) , khi đó X i là bộ 8bit thứ i tính từ bên trái.

Định dạng dữ liệu của PKCS#1

Dữ liệu D là một xâu bội 8, khi đó || D || ≤ k -11. BT thường là một octet đơn biểu diễn dưới dạng hexa hoặc là 00 hoặc là 01. PS là một chuỗi octet có

||

||

3

||

|| PSk   D . Nếu BT = 00, khi đó tất cả octet trong PS cũng là 00; Nếu BT = 01, khi đó tất cả octet trong PS là ff. Khối dữ liệu được định dạng (là khối mã hoá) là EB = 00 || BT || PS || 00 || D.

Chú ý

 Block 00 đảm bảo cho chuỗi octet EB, khi biểu diễn sang số nguyên, nhỏ hơn giá trị modulus n;

 Nếu kiểu block là BT = 00, khi đó hoặc D phải bắt đầu bằng một octet khác 0 hoặc độ dài của nó phải xác định, để cho phép phân tích EB rõ ràng;

 Nếu BT = 01, khi đó luôn luôn có thể phân tích rõ ràng;

 Với một điều kiện cho trước (chỉ ra trong phần iii), để tránh tấn côn vào sơ đồ chữ ký khuyến cáo BT =01;

Trình xử lý chữ ký trong PKCS#1

Trình xử lý bao gồm các bước chỉ ra trong hình 4.4(a).

Lối vào trình xử lý là bản tin m, số mũ cá nhân d của người ký và modulus n.

1. Băm bản tin: Băm bản tin m bằng cách chọn một giải thuật tóm lược bản tin (hàm băm MD2, hoặc MD5) để tạo ra các xâu octet MD;

2. Mã hoá bản tóm lược bản tin: MD được biến đổi (sử dụng bộ nhận dạng giải thuật băm) để tạo thành xâu dữ liệu D bội 8;

3. Định dạng gói dữ liệu: Sử dụng giải thuật chỉ ra ở phần (i) nói trên để định dạng gói dữ liệu cho các xâu dữ liệu D;

4. Chuyển đổi chuỗi bội 8 sang số nguyên: Kết hợp EB 1 || EB 2 || … || EB k để tạo thành các octet của EB. Gọi EB ~ i là số nguyên có dạng biểu diễn nhị

phân là octet EB i (bit thấp nhất tính từ bên phải). Biểu diễn số nguyên của EB là 

ki

i i

k EB

m

1 ) ~ (

2 8 ; (vì EB 1 = 00 và n ≥ 2 8(k-1) nên 0 ≤ m ≤ n;

5. Tính mã RSA: x = m d mod n;

6. Chuyển đổi số nguyên sang chuỗi bội 8: Đặt ED i là chuỗi bit tương ứng dạng số nguyên 

ki

i i

k ED

x

1 ) ~ (

2 8 . Xâu bội 8 được tạo thành là ED = ED 1 || ED 2 || … || ED k . Chữ ký được tạo thành là s = ED.

Trình xử lý xác minh trong PKCS#1

Trình xử lý xác minh trong PKCS#1 gồm các bước chỉ ra trong hình 4.4(b).

Lối vào là bản tin m, chữ ký s, số mũ công khai e và giá trị modulus n.

1. Chuyển đổi xâu bội 8 sang số nguyên:

a. Từ chối s nếu như độ dài của s không là bội số của 8

b. Chuyển s thành số nguyên x giống như bước 4 của thủ tục ký thực hiện;

c. Từ chối s nếu x > n;

2. Tính giải mã RSA: m = x e mod n;

3. Chuyển số nguyên sang xâu bội 8: đổi m thành một xâu bội 8 là EB có độ dài k-octet

4. Phân tách EB thành một khối BT và thêm vào xâu PS, xâu dữ liệu D a. Từ chối chữ ký nếu việc phân tách cho kết qủa không rõ ràng;

b. Từ chối chữ ký nếu BT không phải là 00 hoặc 01;

c. Từ chối chữ ký nếu PS có ít hơn 8 octet hoặc trái ngược với BT;

Y N

Chuyển xâu octet sang số nguyên

m = x e mod n

Chuyển từ số nguyên

Từ chối Chữ ký và bản tin

Băm bản tin

Mã hoá bản tóm lược bản tin

Định dạng khối Bản tin

Hình 4.4: Thủ tục ký và xác minh trong PKCS#1 5. Giải mã dữ liệu:

a. Giải mã D để thu được bản tóm lược bản tin MD, cho MD qua bộ nhận dạng giải thuật băm;

b. Từ chối chữ ký nếu bộ nhận dạng giải thuật băm không nhận dạng được giải thuật được sử dụng (hoặc là MD2, hoặc là MD5);

6. Tạo bản tóm lược bản tin và so sánh:

a. Băm bản tin m’ với giải thuật tạo bản tóm lược bản tin đã được sử dụng để nhận được MD’

b. Chấp nhận chữ ký s là hợp lệ nếu và chỉ nếu MD’ = MD.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu hệ mật mã khoá công khai trong giao dịch điện tử (Trang 63 - 68)

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

(88 trang)