Thuật toán sinh và chứng thực chữ ký RSA

Một phần của tài liệu Hệ mật RSA và ứng dụng lược đồ chữ ký số trong xác thực thông tin (Trang 48)

Cá thể A ký một thông điệp P  M. Một cá thể B bất kỳ có thể chứng thực chữ ký có đúng là của A hay không? Đồng thời khôi phục lại thông điệp từ chữ ký.

a) Sinh chữ ký

Cá thể A thực hiện:

i) Số hoá thông điệp P thành một số nguyên m  [0, n – 1]; m = R(P); P

m s

M

Mh Ms

R

Hình 3.3 : Lược đồ chữ ký số kèm bản rõ thu được từ một lược đồ tự khôi phục thông điệp gốc

MR h

SigA;k’

m=h(P)

ii) Tính s = md mod n

iii)Chữ ký của A cho thông điệp P là s, gửi s cho B.

b) Chứng thực chữ ký

Để xác thực chữ ký x là của A và khôi phục lại thông điệp gốc P, B làm như sau: i) Xác thực đúng khoá công khai của A là (n, e)

ii) Tính m = se mod n

iii)Xác nhận chữ ký nếu m  MR, ngược lại từ chối chữ ký của A iv) Khôi phục lại P = R-1

(m) Chứng minh việc xác thực chữ ký:

Nếu s là chữ ký cho thông điệp P thì: s = md mod n. Ở đây m = R(P). Từ e.d = 1 mod (n), se = mde mod n = m mod n.

Cuối cùng ta có R-1

(m) = R-1(R(P)) = P

Chú ý:

Chữ ký RSA dựa vào hàm luỹ thừa với số lớn vì vậy tốc độ mã hoá sẽ chậm. Với những thông điệp có độ dài nhỏ, hạn chế về tốc độ mã hoá có thể được bỏ qua vì thế người ta thường dùng các cặp khoá RSA của các cá thể tham gia vào trao đổi thông tin để ký và bảo mật thông điệp.

Chẳng hạn: Nếu A có khoá (na, ea, da); giữ bí mật da và công khai (na, ea), B có khoá (nb, eb, db) giữ bí mật db và công khai (nb, eb), thì A có thể gửi văn bản và kèm chữ ký điện tử cho B như sau:

3.5.3 Các ví dụ a) Ví dụ 3.1 a) Ví dụ 3.1

A: công khai (na, ea), bí mật da B: công khai (nb, eb), bí mật db

A gửi văn bản P cho B cùng với chữ ký (chữ ký tự khôi phục thông điệp gốc) như sau:

i) Mã P bằng khoá bí mật của A: s = da

P mod n (chữ ký của A) ii) Mã s bằng khoá công khai của B để được bản mã: C = eb

S mod n iii)A gửi bản mã C cho B

iv) Khi nhận được bản mã của A gửi, B chỉ việc giải mã bằng cách: v) Dùng khóa riêng của B để tính được: S = db

C =  eb db

vi) Dùng khoá công khai của A để có bản rõ P (xác thực chữ ký của A đồng thời khôi phục bản rõ): P = ea  da e daea P P S   = Pk(n) + 1 mod n

Với p, e chọn trước thì số lượng bản rõ không được bộc lộ là: [1 + (e - 1, p - 1)] [1+ (e - 1, q - 1)] b) Ví dụ 3.2 (không cần bảo mật bản rõ) Sinh khoá: Cá thể A thực hiện i) Chọn các số nguyên tố: p = 7927, q = 6997 ii) Tính n = pq = 55465219 và (n)=7926 6996 = 55450296 iii)A chọn e = 5

iv) Tính d: Từ e.d = 1 mod 55450296, tính được d = 44360237 A có khoá công khai là (n= 55465219, e = 5)

Và khóa riêng d = 44360237

Sinh chữ ký:

Giả sử M = Zn và hàm R: M  Zn xác định R(P) = P cho tất cả P  M. Để ký thông điệp P = 31229978

i) Số hoá thông điệp: A tính m = R(P) = 31229978 ii) Tính chữ ký s = md

mod n = 312297844360237 mod 55465219 = 30729435 iii)Gửi s cho B

Chứng thực chữ ký:

i) Xác nhận khoá công khai của Alà (n = 55465219, e =5) ii) B tính m = se mod n = 307294355 mod 55465219 = 31229978 iii)31229978  [0; 55465219] Chấp nhận chữ ký của A iv) Khôi phục P = R-1 (m) = 31229978 3.6 Các kiểu tấn công lƣợc đồ chữ ký số

Mục đích 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:

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

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.

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ược đồ chữ ký số khoá công khai đó là:

Chỉ tấn công vào khoá: Trong kiểu tấn công này đối phương chỉ biết khoá công khai của người ký.

Tấn công vào thông điệp: Đối phương biết thêm một số văn bản nào đó và chữ ký tương ứng của chúng. Tấn công vào thông điệp lại được chia làm ba loại:

Tấn công vào thông điệp đã biết: Biết thông điệp và chữ ký tương ứng của thông điệp nhưng không được chọn lựa theo ý của đối phương.

Tấn công vào thông điệp được chọn: Đối phương có thể chọn trước một số văn bản và có chữ ký của chúng.

Tấn công vào thông điệp được chọn thích ứng: Đối phươ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 vác văn bản trước đó).

3.7 Kết chƣơng

Khi bước vào thế giới điện tử, bằng cách nào có thể xác minh và đặt niềm tin vào những người mà chúng ta không hề nhìn thấy, nghe thấy, thậm chí không thể biết được chữ ký của họ? Làm thế nào để chúng ra có thể giữ bí mật giao dịch mà không có các phong bì dán kín đóng dấu niêm phong? Làm sao chúng ta có thể biết được thông tin nguyên vẹn đã đến đúng người nhận? v.v... Cơ sở hạ tầng mã khoá công khai (PKI) đã cung cấp chìa khoá để mở cánh cửa bước vào thế giới số đích thực và an toàn.

Bảo mật – công tác quan trọng trong các giao dịch thông quá mạng máy tính. Và với hệ mã khoá công khai, bài toán giữ bí mật không những giải quyết được mà còn được ứng dụng rộng rãi, đảm bảo được bốn nội dung cơ bản là: tính bí mật, tính toàn vẹn, tính xác thực và tính trách nhiệm.

Với hệ mã khoá công khai, mỗi người tham gia có hai chìa khoá: một khoá công khai được công bố công khai để mọi người có thể dùng để mã hoá thông tin gửi đến cho người khác; một khoá cá nhân giữ bí mật để giải mã thông tin mà người khác đã mã hoá và gửi đến cho mình. Ngoài chức năng mã hoá, khoá công khai và khoá cá nhân còn dùng để tạo lập và xác thực “chữ ký số”, mỗi chữ ký được gắn vào một nội dung văn bản và xác nhận người được gửi. Chữ ký số là bài toán ngược của bài toán lập và giải mã. Người gửi dùng khoá riêng của mình để ký văn bản, người nhận dùng khoá công khai của người gửi để xác thực chữ ký của người gửi (xác nhận rằng văn bản nhận được là của đúng người gửi và chữ ký đi kèm là của người gửi).

Trong khoảng thời gian mười năm gần đây, vấn đề sử dụng chữ ký điện tử đang thu hút sự quan tâm của cộng đồng mật mã trên thế giới. Người ta đang cố gắng đưa ra những lược đồ ký sao cho tính không thể giả mạo được của nó có thể được đánh giá thông qua các hàm một chiều mà nó sử dụng. Các hàm một chiều được sử dụng trong các hệ mã này hiện nay được xem là an toàn, nhưng hệ mã RSA được sử dụng phổ biến hơn cả vì tính đơn giản của nó trong khi xây dựng các hàm mã hoá và giải mã (chỉ dùng phép luỹ thừa).

Chữ ký điện tử tại Việt Nam:

Việc xây dựng PKI cho chữ ký điện tử đã trở thành xu thế của thời đại. Các nước công nghiệp phát triển đã có những bộ luật công nhận chữ ký điện tử. Các nước trong khu vực như Singapore, Malaysia, Thái Lan, Philippines cũng đã có những bộ luật về chữ ký điện tử được Quốc hội thông qua. Chính phủ Malaysia đang triển khai dự án “Thẻ Chính phủ”, tích hợp chữ ký điện tử vào chứng minh thư, giấy phép lái xe, y tế, thanh toán nhỏ, xuất nhập cảnh. Chính phủ Mỹ cũng đang tích cực chuẩn bị cho các dự án chứng minh thư qua điện tử.

Về phía chính phủ, Việt Nam cũng đã ký kết hiệp định khung ASEAN điện tử, trong đó cam kết xây dựng chính phủ điện tử. Tháng 3/2002, Thủ tướng Chính phủ đã có quyết định số 44/2002/QĐ-TTg về việc sử dụng chứng từ điện tử làm chứng từ kế toán và thanh toán vốn của các tổ chức cung ứng dịch vụ thanh toán. Theo đó, chữ ký điện tử có giá trị như chữ ký tay trên chứng từ giấy. Sau đó, Thống đốc Ngân hàng Nhà nước Việt Nam đã ban hành quy định về xây dựng, cấp phát, sử dụng chữ ký điện tử trong hệ thống thanh toán điện tử liên ngân hàng. Tuy nhiên, trong các lĩnh vực khác, chữ ký điện tử vẫn chưa được áp dụng phổ biến, cũng như chưa có văn bản pháp lý nào về tích hợp pháp của nó.

Mặc dù vậy, một số cơ quan, tổ chức trong nước đã và đang nghiên cứu và thử nghiệm công nghệ chứng thực số và chữ ký điện tử. Mới đây công ty phát triển phần mềm VASC đã đưa ra sản phẩm chứng thực số và giải pháp thanh toán trực tuyến. Trung tâm chứng thực số: http://www.most.gov.vn.chukydientu/ đã xây dựng website đấu thầu trực tuyến http://www.most.gov.vn.dauthau/ . Website này cung cấp các

thông tin, hồ sơ liên quan đến gói thầu và các nhà cung cấp có thể đăng ký dự thầu, ký và gửi hồ sơ thầu trực tuyến (và tất nhiên là chưa thể thanh toán trực tuyến). Hiện nay, Bộ khoa học và Công nghệ đang mở gói thầu cung cấp thiết bị máy tính, bước đầu kết hợp cả phương thức truyền thống và thử nghiệm phương thức đấu thầu điện tử. Mỗi công ty dự thầu được cung cấp một đầu đọc và thẻ thông minh PKI, và phải gửi hồ sơ thầu bằng cả hai hình thức điện tử và bằng giấy như thông thường. Tất cả các thao tác giao dịch đều thể hiện qua giao diện Web, việc truy cập như xem thông tin, soạn hồ sơ thầu, ký và gửi hồ sơ đều được xác thực bằng thẻ thông minh.

Hiện nay, vừa chưa có tính pháp lý và đang trong qúa trình thử nghiệm nên các cơ quan cấp chứng chỉ (CA) chỉ hoạt động riêng biệt, không thừa nhận lẫn nhau. Trong thực tế, chúng ta có thể hình dung mỗi CA như là cơ quan công an cấp quận, huyện trong việc cung cấp chứng minh thư. Tuy nhiên, trong một cơ quốc gia cũng có thể chỉ cần một CA vì trong môi trường mạng, khoảng cách không còn là yếu tố gây trở ngại nữa.

Được biết, Bộ Thương mại đang xây dựng dự thảo Pháp lệnh Thương mại điện tử, nếu sớm được Quốc hội thông qua, cùng các văn bản pháp lý khác, chắc chắn việc chấp nhận và ứng dụng chứng thực số và chữ ký điện tử vào các hoạt động khác sẽ thành hiện thực, chúng ta sẽ bước nhanh hơn vào thế giới số.

CHƢƠNG 4 - CHƢƠNG TRÌNH MÃ HOÁ DỮ LIỆU

4.1 Giới thiệu bài toán

Mục tiêu của chương này nhằm xây dựng một chương trình mã hoá ứng dụng mô hình mật mã RSA với lược đồ chữ ký số phục vụ bảo mật thông tin trong môi trường truyền tin. Chương trình có thể áp dụng trong các lĩnh vực có nhu cầu bảo mật dữ liệu, trong đó có lĩnh vực ngân hàng.

Trong hoạt động ngân hàng, việc truyền tin (dữ liệu) giữa các chi nhánh trong một ngân hàng hoặc giữa các ngân hàng với nhau đóng vai trò hết sức quan trọng. Dữ liệu ngân hàng gồm có các nhóm thông tin:

 Thông tin về khách hàng;

 Thông tin về hệ thống tài khoản;

 Các lệnh giao dịch gửi tiền, rút tiền, thanh toán, v.v...

 Thông tin trao đổi giữa ngân hàng với các đối tác cung cấp giải pháp công nghệ ngân hàng: các khoá liên quan đến sản xuất thẻ chip, khoá mã hoá phục vụ truyền dữ liệu giữa ngân hàng với các tổ chức thẻ quốc tế, v.v...

 Thông tin khác phục vụ hoạt động của ngân hàng: các thông số an ninh của thiết bị, mạng, mật khẩu truy cập hệ thống, v.v...

Dữ liệu ngân hàng thuộc nhóm thông tin quan trọng, đòi hỏi độ bảo mật và tin cậy cao trong quá trình truyền tin.

Ngày nay, có nhiều kỹ thuật truyền dữ liệu hiện đại được các ngân hàng áp dụng như: cơ chế giao tiếp giữa các Database sử dụng Database Link; cơ chế gửi Message theo các chuẩn tin điện riêng của mỗi ngân hàng hoặc theo chuẩn quốc tế (ISO-8583, v.v...). Bên cạnh đó, việc truyền tin sử dụng các cơ chế truyền file (FTP) vẫn được sử dụng phổ biến vì tính đơn giản, và đặc biệt trong trường hợp các ngân hàng không có kết nối sử dụng đường truyền thông thuê riêng (cáp quang, leased line, v.v...). Việc gửi dữ liệu qua internet là giải pháp cho trường hợp này.

Với bài toàn truyền tin như trên, quá trình gửi/nhận thông tin phải đảm bảo các yêu cầu sau:

 Bảo mật thông tin trong quá trình truyền tin. Thông tin được mã hoá ở phía người gửi và được giải mã ở phía người nhận. Việc thực hiện mã hoá sử dụng thuật toán mã hoá có độ phức tạp cao và thời gian thực hiện nhanh.

 Có cơ chế để người nhận có thể kiểm tra tính hợp lệ của thông tin nhận được (thông tin được gửi đi bởi đúng người gửi và không bị thay đổi nội dung trên đường truyền)

Chương trình mã hoá được xây dựng hoạt động theo mô hình như sau:

Quá trình mã hoá:

1) Tính giá trị “băm” của văn bản/dữ liệu: toàn bộ dữ liệu hoặc văn bản điện tử được đưa qua thuật toán băm 1 chiều để tạo ra một mã nhận dạng có tính duy nhất (Hash Value)

2) Tạo chữ ký số: mã nhận dạng này được mã hoá bằng khoá riêng của người ký (Private Key A) để tạo ra 1 chữ ký số (Digital Signature)

3) Chuẩn bị dữ liệu mã hoá: Gắn chữ ký số này và chứng chỉ số của người ký (Certificate A) với dữ liệu hoặc văn bản điện tử.

4) Mã hoá dữ liệu: toàn bộ dữ liệu hoặc văn bản điện tử, chữ ký số và chứng chỉ số được mã hoá bằng thuật toán AES bởi một khoá mã hoá/giải mã (khoá mật) sinh ra ngẫu nhiên cho mỗi phiên giao dịch.

5) Mã hoá khoá mật: khoá mã hoá/giải mã sau đó được mã hoá bằng khoá công khai của người nhận (Public Key B). Khoá công khai này được lấy từ chứng chỉ số của người nhận (Certificate B)

Quá trình truyền thông tin:

6) Dữ liệu và khoá mật đã được mã hoá được gửi đến người nhận qua các kênh truyền thông công cộng.

Quá trình giải mã:

7) Giải mã khoá mật: sử dụng khoá riêng của người nhận (Private Key B) để giải mã khoá mật.

8) Giải mã dữ liệu: sử dụng khoá mật để giải mã toàn bộ dữ liệu hoặc văn bản điện tử, chữ ký và chứng chỉ số.

9) Tính giá trị “băm” của văn bản: toàn bộ dữ liệu hoặc văn bản điện tử gốc được đưa qua thuật toán băm 1 chiều để tạo ra một mã nhận dạng có tính duy nhất (Hash Value)

10) Kiểm tra tính hợp lệ của văn bản: sử dụng khoá công khai của người gửi (Public Key A) để kiểm tra chữ ký số trên giá trị “băm” của văn bản để kết luận về tính hợp lệ của dữ liệu hoặc văn bản:

- Nếu kết quả kiểm tra đúng, chứng tỏ thông tin là do người gửi gửi (khoá giải mã cùng cặp khoá với khoá mã hoá); và nội dung thông tin còn nguyên gốc sau khi ký.

- Nếu kết quả kiểm tra sai thì chứng tỏ thông tin không phải do người gửi gửi (khoá giải mã không cùng cặp khoá với khoá mã hoá); và nội dung thông tin không còn nguyên gốc sau khi ký

Mô hình hoạt động của chương trình được minh hoạ qua sơ đồ sau:

4.2 Thiết kế chƣơng trình

4.2.1 Công cụ và ngôn ngữ lập trình phục vụ phát triển ứng dụng a) Các thành phần ActiveX a) Các thành phần ActiveX

Việc phát triển ứng dụng được thực hiện trên cơ sở sử dụng các activeX của nhà

Một phần của tài liệu Hệ mật RSA và ứng dụng lược đồ chữ ký số trong xác thực thông tin (Trang 48)

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

(97 trang)