Thuật toán chữ ký RSA [5,7]

Một phần của tài liệu chữ ký số và ứng dụng bảo mật trang thông tin điện tử (Trang 35 - 78)

2.4.1.1 Sơ đồ

Bƣớc 1. Tạo cặp khóa (bí mật, công khai) (a, b)

Input: 2 số nguyên tố lớn phân biệt p và q. Output: Cặp (n,b) là khóa công khai.

Cặp (n,a) là khóa bí mật.

Thuật toán

1. Chọn bí mật số nguyên tố lớn p và q.

2. Tính n = p * q, công khai n, đặt P=C = Zn.

3. Tính bí mật (n) = (p-1).(q-1).

4. Chọn khóa công khai b < (n), nguyên tố với (n).

Thuật toán

Kích thước tính theo bit

Số chu kỳ Các thao tác Đụng độ Độ an toàn ? Kết quả Trạng thái Khối Thông điệp tối đa Từ

SHA-0 160 160 512 264 - 1 32 80 +, and, or,

xor, rotl Có 80

SHA-1 160 160 512 264 - 1 32 80 +, and, or, xor, rotl 263 thao tác 80 SHA- 256/22 4 256/ 224 256 512 2 64 - 1 32 80 +, and, or, xor, shr, rotr Chưa 112/ 128 SHA- 512/38 4 512/ 384 512 1024 2 128 – 1 64 80 +, and, or, xor, shr, rotr Chưa 192/ 256

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Khóa bí mật a là phần tử nghịch đảo của b theo mod (n) tức là

a*b  1(mod (n)).

5. Tập cặp khóa (bí mật, công khai) K = (a, b)/a,b  Zn , a*b  1 (mod(n)).

Bƣớc 2. Ký số:

Chữ ký trên x  P là y = Sig k (x) = x a (mod n), y  A. (1) Bƣớc 3. Kiểm tra chữ ký:

Verk (x,y) = đúng  x  y b (mod n). (2)

2.4.1.2 Ví dụ minh hoạ

Bƣớc 1. Tạo khoá (bí mật, công khai)

Chọn 2 số nguyên tố p = 11, q = 3. 1. n = p*q = 11*3 = 33 2. (n) = (p-1)*(q-1) = 10*2 = 20 3. Chọn b = 3 gcd (b, (n)) = gcd (3, 20) = 1 4. Tính a: 4.1. (n) = (b*a-1)*k . 4.2. Tập các ước số của (n) là ki = 1, 2, 4, 5, 10, 20. Khi ki = 1 => a = 7

Khi ki= 4, 10 => a không đồng dư với b theo mod (n) => loại Khi Ki = 2, 5, 20 => a không nguyên => loại

5. Khoá công khai = (n, b) = (33, 3) Khoá bí mật = (n, a) = (33, 7).

Bƣớc 2. Ký số

Chữ ký trên x = 3

y = Sig k (x) = x a (mod n) = 37 mod 33 = 837 mod 33 = 12 , y  A.

Bƣớc 3. Kiểm tra chữ ký:

Verk (x,y) = đúng  x  y b (mod n)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

2.4.1.3 Độ an toàn của chữ ký RSA

Bài toán căn bản bảo đảm độ an toàn của Sơ đồ chữ ký RSA

Bài toán tách số nguyên n thành tích của 2 số nguyên tố: n = p*q. Vì nếu giải được bài toán này thì có thể tính được khóa mật a từ khóa công khai b và phần tử

công khai n.

Người gửi G gửi tài liệu x cùng chữ ký y đến người nhận N, có 2 cách xử lý.

Ký trước, Mã hóa sau:

G ký trước vào x bằng chữ ký y = SigG(x), sau đó mã hoá x và y nhận được

z = eG (x, y). G gửi z cho N. Nhận được z, N giải mã z để được x, y. Tiếp theo kiểm

tra chữ ký VerN(x, y) = true ?

Mã hóa trước, Ký sau:

G mã hoá trước x bằng u = eG (x), sau đó ký vào u bằng chữ ký v = SigG

(u). G gửi (u, v) cho N. Nhận được (u, v), N giải mã u được x. Tiếp theo kiểm tra

chữ ký VerN(u, v) = true ?

Giả sử H lấy trộm được thông tin trên đường truyền từ G đến N.

Trong trường hợp ký trƣớc, mã hoá sau H lấy được z. Trong trường hợp mã hoá trƣớc, ký sau H lấy được (u,v).

Để tấn công x trong hai trường hợp, H đều phải giải mã thông tin lấy được. Để tấn công vào chữ ký, thay bằng chữ ký (giả mạo), thì xảy ra điều gì?

 Trường hợp ký trƣớc, mã hoá sau để tấn công chữ ký y, H phải giải mã z mới nhận được y.

 Trường hợp mã hoá trƣớc, ký sau để tấn công chữ ký v, H đã sẵn có v, H

chỉ việc thay v bằng v’. H thay chữ ký v trên u, bằng chữ ký của H là v’= SigH(u), gửi (u,v’) đến N. Khi nhận được v’, N kiểm thử thấy sai, gửi phản hồi lại G. G có

thể chứng minh chữ ký đó là giả mạo. G gửi chữ ký đúng v cho N, nhưng quá trình truyền tin sẽ bị chậm lại.

Như vậy trong trường hợp mã hoá trƣớc, ký sau thì H có thể giả mạo chữ ký mà không cần giải mã. Vì thế có lời khuyên: Hãy ký trước, sau đó mã hoá cả chữ ký.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

2.4.2 Thuật toán chữ ký DSA/ DSS [1,5,7] 2.4.2.1 Sơ đồ 2.4.2.1 Sơ đồ

Bƣớc 1. Tạo cặp khóa (bí mật, công khai) (a, h)

Input: 2 số nguyên tố lớn phân biệt p và q.

Output: Cặp (a,h) là khóa công khai và khoá bí mật. Thuật toán

Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là “khó” giải. Chọn q là ước nguyên tố của p -1. Tức là p -1 = t * q hay p = t * q + 1. (Số nguyên tố p cỡ 512 bit, q cỡ 160 bit).

Chọn g  Zp* là căn bậc q của 1 mod p, (g là phần tử sinh của Zp* ). Tính  = g t, chọn khóa bí mật a  Zp*, tính khóa công khai h a

mod p. - Đặt P = Z q*, A = Z q* x Z q* ,

K = (p, q, , a, h)/ a  Zp*, h  a mod p.

- Với mỗi khóa (p, q, , a, h), k‟ = a bí mật, k” = (p, q, , h) công khai. Bƣớc 2. Ký số

Dùng 2 khóa ký: khóa a và khóa ngẫu nhiên bí mật r  Z q*. Chữ ký trên x 

Zp* là Sig k‟ (x, r) = (, ),

Trong đó  = (r mod p) mod q,  = ((x + a *  ) * r -1 mod q (Chú ý r  Z

q*, để bảo đảm tồn tại r -1 mod q). Bƣớc 3. Kiểm tra chữ ký: Với e1 = x * -1 mod q, e2 =  * -1 mod q.

Ver k” (x, , ) = đúng  (e1 * h e2 mod p) mod q = 

2.4.2.2 Ví dụ

Bƣớc 1. Tạo cặp khóa (bí mật, công khai) (a, h):

Chọn p = 7649, q = 239 là ước nguyên tố của p - 1, t = 32.

Tức là p - 1 = t * q hay p = t * q + 1 = 32*q + 1 =32*239 + 1= 7649. Chọn g =3  Z7649 là phần tử sinh.  =g t mod p = 3 32mod 7649= 7098 Chọn khóa mật a = 85,

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Bƣớc 2. Ký số:

Dùng 2 khóa ký: a và khóa ngẫu nhiên r = 58  Z q*, r -1 mod q = 136. Chữ ký trên x = 1246 là Sig k‟ (x, r) = (, ) = (115, 87).

Trong đó:

 = (r mod p) mod q = (709858 mod 7649) mod 239 = 593 mod 239 = 115.

 = (x + a *  ) * r -1 mod q = (1246 + 85 * 115) *136 mod 239 = 87.

Bƣớc 3. Kiểm tra chữ ký:

(, ) = (115, 87) là chữ ký đúng trên x = 1246. e1 = x* -1 mod q = 1246 *11 mod q = 83, e2 =  * -1 mod q = 115*11 mod q = 70.

Điều kiện kiểm thử đúng (e1 * h e2 mod p) mod q =  , với  -1 = 11. (709883 *538770 mod 7649) mod 239 = 593 mod 239 = 115 = .

2.4.2.3 Độ an toàn của chữ ký DSA

a. Liên quan tới các tính toán cụ thể trong sơ đồ

Chú ý rằng phải có  0 (mod q) để bảo đảm có -1mod q trong điều kiện kiểm thử (tương đương UCLN(, p-1) = 1). Vì vậy nếu chọn r mà không được điều kiện trên, thì phải chọn r khác để có  0 (mod q). Tuy nhiên khả năng  0 mod q là 2-160 , điều đó hầu như không xảy ra. Một chú ý là thay vì tính p trước rồi mới tính q, ta sẽ tính q trước rồi tìm p.

b. Liên quan chung tới DSS (1991)

Độ dài cố định của p là 512 bit. Nhiều người muốn p có thể thay đổi lớn hơn. Vì thế NIST sửa đổi là p có độ dài thay đổi, là bội của 64: từ 512 đến 1024 bit.

Nếu dùng chữ ký RSA với thành phần kiểm tra chữ ký là nhỏ, thì việc kiểm tra nhanh hơn việc ký. Đối với DSS, ngược lại, việc ký nhanh hơn kiểm tra. Điều này dẫn đến vấn đề.

Một tài liệu chỉ được ký một lần, nhưng nó lại được kiểm tra nhiều lần, nên người ta muốn thuật toán kiểm tra nhanh hơn.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

2.5 Chứng thực khóa công khai 2.5.1 Giới thiệu

Chúng ta đã tìm hiểu về chữ ký số và chúng ta cũng biết được rằng phải quản lý khóa công khai thật tốt khoá công khai nhưng vấn đề đặt ra ở đây là người dùng phải lo quản lý “khóa công khai” của riêng họ, hay có cơ quan chung để quản lý “khóa công khai” của mọi người dùng. Câu trả lời: Người dùng phải lo quản lý khoá riêng (khoá bí mật) là điều tự nhiên.

Người dùng không đủ sức để quản lý “khóa công khai” của mình, vì nó đã được công khai cho nhiều người biết. Trên thực tế có một cơ quan chuyên cung cấp và quản lý một “giấy chứng nhận” có cơ sở pháp lý để chứng thực “khóa công khai” nào đó hiện thời do ai sở hữu. “Giấy chứng nhận” này được gọi là “chứng chỉ số”. Khi người dùng bị lộ khóa bí mật, họ phải báo cho cơ quan này biết, để xin được cấp “chứng chỉ số” cho “khóa công khai” mới.

Hiện nay trên thế giới người ta theo xu hướng tổ chức các cơ quan như trên để cung cấp và quản lý các “khóa công khai” của người dùng. Tổ chức này được gọi

cơ quan chứng thực “khóa công khai”. Các nội dung về chứng thực khóa công

khai sẽ được đề cập tại phần tiếp theo.

2.5.2 Hạ tầng khóa công khai

Khái niệm

PKI (Public Key Infrastructure) thực chất là các dịch vụ sử dụng phương thức mã hoá với khoá công khai. Thành phần chính của hệ thống PKI là các thẻ xác nhận. Mỗi thẻ xác nhận có hai thành phần thông tin cơ bản là định danh và khoá công khai của đối tượng sử dụng. Các thẻ xác nhận này do đối tượng quản lý thẻ xác nhận tạo ra và ký với phương thức chữ ký số. Trong một số hệ thống, đối tượng quản lý đăng ký được tách riêng ra khỏi CA. Đối tượng này không tạo ra các thẻ xác nhận. Nó có nhiệm vụ xác minh đối tượng truyền thông tức là quá trình xác thực khi một đối tượng yêu cầu một thẻ xác nhận của CA (Certification Authority) sẽ do RA (Registration Authority) cơ quan đăng ký đảm nhận.

PKI là một dịch vụ nền cho các dịch vụ an toàn an ninh dựa trên các thẻ xác nhận. Trong các hệ thống này, PKI đảm nhận vai trò tạo lập, quản lý và phân phát

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

các thẻ xác nhận cho các đối tượng truyền thông. Tất cả các chức năng quản lý của hệ thống PKI đều hướng tới một yêu cầu duy nhất: Quản lý các đối tượng sử dụng trong hệ thống với khoá công khai của các đối tượng đó.

Các thành phần của PKI: một PKI bao gồm các thành phần sau [10]

 Nhà cung cấp chứng thực số (CA - Certification Authority)

 Cơ quan đăng ký (RA - Registration Authority )

 Client PKI (PKI clients)

 Hệ thống quản lý chứng chỉ (Certificate Distribution System)

 Chứng chỉ số (Digital certificates)

Nhà cung cấp chứng thực số (CA - Certification Authority)

CA là một bên thứ ba đáng tin cậy xác thực các thực thể tham gia vào một giao dịch điện tử. Để xác thực một thực thể, CA phát hành một chứng chỉ số. Chứng chỉ số này là một tài liệu số thiết lập các thông tin của các đối tượng tham gia trong một giao dịch. Chứng chỉ số phát hành bởi CA, nó chứa thông tin về tên của người đăng ký, khoá bí mật và khoá công khai của người đăng ký, khoá công khai so CA cấp. Thông tin này phụ thuộc vào chính sách của công ty nơi phát hành chứng chỉ số (giấy chứng nhận).

Trước khi cấp một chứng chỉ số, CA xác minh theo yêu cầu cho một giấy chứng nhận với một cơ quan đăng ký (RA). Để xác nhận yêu cầu chứng chỉ, CA sử dụng các thủ tục riêng của nó. Các thủ tục này phụ thuộc vào một chính sách tổ chức và cơ sở hạ tầng có sẵn để xác nhận yêu cầu. Nếu yêu cầu xác nhận, CA phát hành giấy chứng nhận.

Cơ quan đăng ký (RA - Registration Authority )

RA chịu trách nhiệm liên lạc giữa khách hàng và các CA. RA hoạt động như một trung gian giữa CA và máy khách. Các nhiệm vụ sau được thực hiện bởi RA:

 Nhận yêu cầu thực thể và xác nhận chúng

 Gửi các yêu cầu tới CA

 Nhận giấy chứng nhận từ CA

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Các RA đặc biệt hữu ích cho việc mở rộng quy mô ứng dụng PKI trên vị trí các vùng khác nhau. Ví dụ, một CA có thể ủy thác trách nhiệm của mình để các RA khác nhau và phân công một vùng hoạt động cho mỗi RA, chẳng hạn như RA cho khu vực phía Bắc, khu vực phía Nam, vùng phía đông và phía tây.

Client PKI (PKI clients)

Client PKI là các đối tượng yêu cầu CA hoặc RA để cấp giấy chứng nhận. Để có được một giấy chứng nhận số từ một CA, một client PKI cần phải thực hiện các bước sau đây:

 Gửi một yêu cầu để tạo ra một cặp chìa khóa công khai – bí mật. Một CA hoặc client có thể làm nhiệm vụ này. Cặp khóa này chứa thông tin các chi tiết về khách hàng. Sau khi cặp khoá được tạo ra, một yêu cầu được gửi đến CA để chứng nhận CA. Yêu cầu này có thể được thực hiện thông qua một RA. Sau khi khách hàng nhận được giấy chứng nhận từ CA, nó có thể sử dụng giấy chứng nhận để xác định chính nó là một người giữ giấy chứng nhận xác thực.

 Tất cả các thông tin liên lạc giữa khách hàng và CA được giữ bí mật. Ngoài ra, khách hàng có trách nhiệm đảm bảo sự an toàn của khóa riêng của mình. Bởi vì nếu khóa riêng bị mất thông điệp được mã hóa không thể được giải mã và có thể bị kẻ trộm đọc được các thông điệp của mình. Bạn có thể đảm bảo sự an toàn của khóa bí mật của mình bằng cách sử dụng một số thành phần phần cứng được có sẵn, chẳng hạn như thẻ thông minh và thẻ (token). Token là một thiết bị vật lý, bạn có thể mang theo bên mình và có thể sử dụng để xác thực người sử dụng mạng. Tương tự như vậy, một thẻ thông minh cũng là một thiết bị vật lý, giống như thẻ tín dụng của bạn trong đó có một bộ vi xử lý để lưu trữ thông tin bảo mật. Bộ vi xử lý này không làm việc cho đến khi bạn chỉ rõ mã PIN. Bằng cách này, bạn có thể an toàn cho khoá bí mật của mình.

 Như có thể thấy, một thành phần quan trọng của việc triển khai PKI là chứng chỉ số. Giấy chứng nhận này hình thành cơ sở cài đặt một giải pháp PKI.

Chứng chỉ số (Digital certificates)

Điều quan trọng là đảm bảo an ninh cho khóa công khai để tránh trường hợp giả mạo và thay đổi khóa. Vì vậy, phải có một cơ chế toàn vẹn dữ liệu để đảm bảo

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

rằng khóa công khai không được sửa đổi. Tuy nhiên, cơ chế toàn vẹn dữ liệu một mình không đủ để đảm bảo rằng chìa khóa công khai thuộc về chủ sở. Một giải pháp liên kết khóa công khai với tổ chức tin cậy, có thể đảm bảo nhận dạng và xác thực của khóa công khai. :

 Thiết lập sự toàn vẹn của khoá công khai.

 Ràng buộc khoá công khai và các thông tin liên quan đến chủ sở hữu tin cậy.

 Trong môi trường PKI, chứng chỉ số thực hiện được hai mục tiêu trên. Chứng chỉ số đảm bảo rằng chỉ có khoá công khai đại diện cho một giấy chứng nhận đã được xác thực bởi một cơ quan chứng nhận hoạt động với khóa bí mật của chủ thể. Điều này giúp loại bỏ nguy cơ mạo danh.

Chứng chỉ số gồm các thành phần sau:

 Số giấy chứng nhận

 Chữ ký của CA

 Khóa công khai của người dùng do CA cấp

 Ngày hết hạn

 Tên của CA đã cấp chứng nhận

Sau khi có chứng chỉ số, các thực thể có thể sử dụng nó để giao tiếp với người nhận thông tin theo các bước sau:

1. Người gửi ký thông điệp với khóa riêng của mình để đảm bảo tính toàn vẹn

Một phần của tài liệu chữ ký số và ứng dụng bảo mật trang thông tin điện tử (Trang 35 - 78)

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

(78 trang)