Thuật toán chữ ký RSA

Một phần của tài liệu ứng dụng chữ ký số trong bảo mật thông tin bưu điện tỉnh thái nguyên (Trang 67 - 88)

5. Tổng quan luận văn

2.3.4.Thuật toán chữ ký RSA

2.3.4.1 Sơ đồ

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

Bƣớc 2. Ký số:

Chữ ký trên xP y = Sig k (x) = x a (mod n), yA. (R1)

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

Verk (x,y) = đúng xy b(mod n). (R2)

Thuật toán tạo cặp khoá bí mật, công khai: 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

- Chọn bí mật số nguyên tố lớn pq, tính n = p * q, công khai n, đặt

P=C = Zn.

- Tính bí mật (n) = (p-1).(q-1). Chọn khóa công khai b< (n),nguyên tố với (n). Khóa bí mật a là phần tử nghịch đảo của b theo mod (n) tức là

- Tập cặp khóa (bí mật, công khai)

K = (a, b)/a,b  Zn , a*b1(mod(n)).

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

4. 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 , yA. Bƣớc 3. Kiểm tra chữ ký:

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

3123 (mod 33). .

2.3.4.3 Độ an toàn của 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.

1. 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ý: (adsbygoogle = window.adsbygoogle || []).push({});

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

G ký trƣớc vào x bằng chữ ký y = SigG(x), sau đó mã hoá xy 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 ?

b). 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 ?

2. 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 a, H lấy đƣợc z. Trong trƣờng hợp b, H lấy đƣợc (u,v).

 Để tấn công x trong cả 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 a, để tấn công chữ ký y, H phải giải mã z mới nhận

đƣợc y.

 Trƣờng hợp b, để 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 b, 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ý.

2.3.5 Thuật toán chữ ký DSA/ DSS 2.3.5.1 Sơ đồ 2.3.5.1 Sơ đồ

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

Bƣớc 2. Ký số

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

trên xZp* 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 = 

Thuật toán tạo cặp khoá 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 gZp* 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 (adsbygoogle = window.adsbygoogle || []).push({});

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

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

mod p.

2.3.5.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,

khóa công khai h =  a

mod p = 709885 mod 7649 = 5387.

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

* he2 mod p) mod q =  , với -1

= 11.

(709883 *538770 mod 7649) mod 239 = 593 mod 239 = 115 = .

2.3.5.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).

- Một chú ý là 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. (adsbygoogle = window.adsbygoogle || []).push({});

Máy tính ký và kiểm thử nhƣ thế nào? Nhiều ứng dụng dùng thẻ thông minh với khả năng có hạn, kết nối với 1 máy tính mạnh hơn, vì vậy nên xây dựng sơ đồ chữ ký ít liên quan đến thẻ. Nhƣng tình huống đặt ra là một thẻ thông minh có thể sinh ra chữ ký và cũng có thể kiểm tra chữ ký, do vậy rất khó kết luận ? Do đó NIST trả lời rằng thời gian kiểm tra và sinh chữ ký, cái nào nhanh hơn không quan trọng, miễn là đủ nhanh.

2.4. Các kiểu tấn công vào lƣợt đồ chữ ký

Một trong các cách tấn công chữ ký số của đối phƣơng là giả mạo chữ ký đó là đƣa ra các chữ ký đƣợc các cá thể khác chấp nhận. Tuỳ theo các kết quả

tấn công thu đƣợc, ngƣời ta đƣa ra một tập các tiêu chuẩn dựa vào mức độ thành

công của việc tấn công nhƣ sau:

(i) Bẻ gãy toàn bộ: Ngƣời tấn công hoặc là có thể tính đƣợc khoá riêng của ngƣời ký hoặc tìm đƣợc một cách tƣơng đƣơng với thao tác sinh chữ ký.

(ii) Giả mạo được chữ ký của một văn bản chọn trước: Ngƣời tấn công có khả năng thành công khi giả mạo chữ ký cho một văn bản P nào đó đã biết trƣớc.

(iii) Giả mạo được chữ ký của một văn bản nào đó: Ngƣời tấn công có khả năng thành công khi giả mạo chữ ký cho một văn bản P nào đó (chƣa đƣợc biết trƣớc).

Có hai kiểu tấn công cơ bản vào các lƣợt đồ chữ ký số khoá công khai, đó là:

Tấn công vào khoá: Đối phƣơng chỉ biết khoá công khai của ngƣời ký.

Tấn công thông điệp: Ngƣời tấn công biết thêm một số văn bản nào đó và

chữ ký của chúng. Tấn công thông điệp lại đƣợc chia làm ba lớp:

+ Tấn công khi biết thông báo và chữ ký tƣơng ứng của thông báo nhƣng không đƣợc chọn lựa theo ý của đối phƣơng.

+ Tấn công có thể chọn trƣớc một số văn bản và có chữ ký kèm theo.

+ Tấn công có thể lựa chọn các văn bản để lấy chữ ký ngay trong quá trình tấn công (căn cứ trên kết quả lấy chữ ký của các văn bản trƣớc đó). Đây là kiểu tấn công đƣợc chọn văn bản thích ứng.

2.5. Tính pháp lý và ứng dụng chữ ký số trong và ngoài nƣớc.

2.5.1 Trong nước

Hành lang pháp lý:

Luật giao dịch điện tử ngày 29/11/2005 (có hiệu lực từ 1/3/2006). Luật giao dịch điện tử quy định về thông điệp điện tử, chữ ký số và chứng thực chữ ký số; giao kết và thực hiện hợp đồng điện tử; giao dịch điện tử của cơ quan nhà nƣớc; an ninh, an toàn, bảo vệ, bảo mật trong giao dịch điện tử; giải quyết tranh chấp và xử lý vi phạm trong giao dịch điện tử...

Nghị định 26/2007/NĐ-CP, ngày 15/2/2007, quy định chi tiết thi hành Luật giao dịch điện tử về chữ ký số và dịch vụ chứng thực chữ ký số. Nghị định này quy định chi tiết về Chữ ký số và Chứng chỉ số; việc quản lý, cung cấp và sử dụng dịch vụ chứng thực chữ ký số. Áp dụng đối với cơ quan, tổ chức cung cấp dịch vụ chứng thực chữ ký số và cơ quan, tổ chức, cá nhân lựa chọn sử dụng chữ ký số và dịch vụ chứng thực chữ ký số trong giao dịch điện tử.

Nghị định 64/2007/NĐ-CP, ngày 10/4/2007 về ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nƣớc. Tại Nghị định này (Điều 40) cũng quy định việc sử dụng chữ ký số trong các giao dịch điện tử của các cơ quan nhà nƣớc.

Tình hình ứng dụng chữ ký số và chứng thực chữ ký số trong nƣớc:

Hiện nay ở Việt Nam có một số nhà cung cấp dịch vụ chữ ký số (CKS), chứng thực chữ ký số:

+ Tập đoàn Bƣu chính Viễn thông Việt Nam (VNPT): nhà cung cấp dịch vụ chứng thực CKS đầu tiên tại Việt Nam sau khi nhận Giấy phép cung cấp dịch vụ Chứng thực chữ ký số công cộng của Bộ TT&TT ngày 15/9/2009. Theo giấy phép này, VNPT đƣợc cung cấp dịch vụ chứng thực CKS cho cơ quan, tổ chức, cá nhân sử dụng trong các hoạt động công cộng. Các loại chứng thƣ số đƣợc VNPT cung cấp bao gồm: Chứng thƣ số cá nhân cho cơ quan, tổ chức, cá nhân; Chứng thƣ số SSL (chứng thƣ số danh cho website); Chứng thƣ số cho CodeSigning (chứng thƣ số dành cho ứng dụng). Trƣớc khi đƣợc cấp giấy phép, VNPT đã ký thỏa thuận cung cấp dịch vụ chứng thực CKS công cộng cho ngành tài chính, đồng thời hợp tác hỗ trợ triển khai thành công Dự án thí điểm “Ngƣời nộp thuế nộp hồ sơ qua mạng internet” và áp dụng CKS vào các thủ tục hải quan điện tử trong giai đoạn 2009 - 2010. Tiếp đến VNPT sẽ tiếp tục cung cấp dịch vụ này cho các ngân hàng, doanh nghiệp thƣơng mại điện tử, v.v…

+ Công ty cổ phẩn công nghệ thẻ NacencommSCT: chính thức là nhà cung cấp dịch vụ chứng thực CKS công khai thứ hai tại Việt Nam từ ngày 2/3/2010. NacencommSCT là công ty thành viên của công ty Điện tử Hà Nội (HANEL), hoạt động trong lĩnh vực công nghệ thẻ thông minh, phát triển các ứng dụng bảo mật và xác thực. Công ty NecencommSCT sẽ tổ chức cung cấp các dịch vụ xác thực chữ ký trong các giao dịch điện tử cho các doanh nghiệp, tổ chức, cá nhân.

+ Công ty An ninh mạng Bkav là nhà cung cấp dịch vụ chứng thực CKS công cộng thứ 3 kể từ ngay 8/4/2010, với tên giao dịch BkavCA. Bkav sẽ cung cấp 3 loại chứng thƣ số gồm: Chứng thƣ số cho cơ quan, tổ chức, cá nhân; chứng thƣ số SSL và Chứng thƣ số CodeSigning.

+ Viettel là nhà cung cấp dịch vụ chứng thực CKS công cộng thứ tƣ. Ngày 22/6/2010, Bộ TT&TT đã trao giấy phép cung cấp dịch vụ chứng thực CKS công cộng cho Viettel. Theo đó, Viettel đƣợc cung cấp ba loại chứng thƣ số bao gồm: Chứng thƣ số cho cơ quan, tổ chức, cá nhân giúp ngƣời dùng chứng thực cơ quan, tổ chức, cá nhân đó trong các giao dịch điện tử; Chứng thƣ số dành cho máy chủ (SSL) để chứng thực cho website và Chứng thƣ số cho phần mềm (CodeSigning) sử dụng cho các nhà sản xuất phần mềm để chứng thực và bảo đảm tính toàn vẹn của sản phẩm.

+ Công ty cổ phần Hệ thống thông tin FPT (FPT IS) gia nhập thị trƣờng cung cấp dịch vụ chứng thực CKS công cộng từ ngày 10/8/2010 và là nhà cung cấp CKS thứ 5 tại Việt Nam hiện nay. FPT IS sẽ đƣợc cung cấp 3 loại chứng thƣ số gồm: chứng thƣ số cho cơ quan, tổ chức, cá nhân giúp ngƣời dùng chứng thực các giao dịch điện tử nhƣ Internet Banking, chứng khoán trực tuyến, khai báo thuế, hải quan trực tuyến…; chứng thƣ số SSL cho các website và chứng thƣ số CodeSigning.

Để có thể đƣợc cấp phép, nhà cung cấp dịch vụ chứng thực CKS phải đạt đƣợc các tiêu chuẩn về tài chính, nhân lực, cũng nhƣ đãp ứng các yêu cầu khắt khe về hạ tầng kỹ thuật theo tiêu chuẩn quốc tế (tiêu chuẩn mật mã FIPS PUB 140 – 2 mức 3, PKCS#1 version 2.1…).

2.5.2 Ở một số nước trên thế giới (adsbygoogle = window.adsbygoogle || []).push({});

- Ở các nƣớc phát triển nhƣ Mỹ, Canada … hệ thống chứng thực số đã khá

hoàn thiện, với một hệ thống chính phủ điện tử hiện đại, việc quản lý sinh/tử, cấp hộ khẩu, công chứng, v.v...đã có thể thực hiện hoàn toàn thông qua mạng,

đặc biệt những năm gần đây dịch vụ chứng thực chữ ký số (CA) ngày càng phát triển. Một số CA nổi tiếng có thể kể đến nhƣ CA của các công ty VeriSign, WISeKey, eTrust,... có chi nhánh tại rất nhiều nƣớc trên thế giới.

- Ở các nƣớc trong khu vực dịch vụ chứng thực chữ ký số phát triển khá

mạnh. Nhật Bản đã ban hành Luật về chữ ký điện tử và các dịch vụ chứng thực vào năm 2001.

- Hàn Quốc ban hành luật chữ ký điện tử vào năm 1999 và sửa đổi vào

năm 2001. Hiện nay Hàn Quốc có 6 CA đƣợc cấp phép hoạt động.

- Hồng Kông ban hành sắc lệnh về giao dịch điện tử vào năm 2000.

- Đài Loan ban hành luật chữ ký số vào năm 2001.

- Malaysia ban hành luật chữ ký số vào năm 1997, hiện nay có 3 CA đƣợc

cấp phép hoạt động.

- Singapore ban hành luật giao dịch điện tử vào năm 1998 và Quy định về

giao dịch điện tử cho các CA vào năm 1999.

- Thái Lan ban hành luật giao dịch điện tử năm 2001.

Hiện nay chứng thực chữ ký số đƣợc sử dụng trong khá nhiều ứng dụng, theo số liệu điều tra gần đây của tổ chức thúc đẩy các tiêu chuẩn thông tin theo cấu trúc OASIS (Organization for the Advancement of Structured Information Standards) , 13,2% dùng trong thƣơng mại điện tử, 9,1% sử dụng để bảo vệ WLAN, 8% sử dụng bảo đảm an toàn cho các dịch vụ Web, 6% sử dụng bảo đảm an toàn cho Web Server, 6% sử dụng trong các mạng riêng ảo (VPN). Ngoài ra chứng thực điện tử còn đƣợc sử dụng trong một số ứng dụng khác

2.5.3 Ứng dụng trong thực tế

Dựa trên các tính năng cơ bản của chữ ký số là: Tính xác thực, tính bảo

Một phần của tài liệu ứng dụng chữ ký số trong bảo mật thông tin bưu điện tỉnh thái nguyên (Trang 67 - 88)