2 Chƣơng trình ký điện tử theo sơ đồ chữ ký RSA

Một phần của tài liệu Một số thuật toán ký và xác nhận chữ ký điện tử hiện nay (Trang 53 - 57)

Chương trình có menu chính như sau: 1. Vào bản rõ 2. Xem bản rõ 3. Xem bản số hoá 4. Xem bản ký 5. Xem bản mã 6. Xem chữ ký mã 7. Giải mã văn bản 8. Giải mã chữ ký 9. Về bản số hoá 10. Về bản rõ 11. Kiểm thử 12. Thốt

Q trình ký như sau:

Bản rõ  số hóa ký  mã hóa  giải mã  kiểm thử

Các văn bản lần lượt được sinh ra:

“banro”  “sohoa” ”banky”  (“vbma”, ”ckma”)  (“vbgiai”, “ckgiai”)  “vebanro”

Các bước thực hiện :

1. G chuyển "banro" thành bản "sohoa"(sử dụng bảng ký tự quy ước trên).

2. Sau đó G ký trên bản "banro" được "banky".

3. G Dùng hàm lập mã để mã hoá trên văn bản "sohoa" và "banky" được hai văn bản "vbma" và "ckma".

4. G gửi "vbma", "ckma" cùng khoá cho N.

5. N dùng hàm giải mã với khoá đã biết để giải mã "vbma" và "ckma" được "vbgiai" và "ckgiai".

6. N kiểm thử trên "ckgiai", đòng thời dùng ngược lại quy ước bảng ký tự trên văn bản "vbgiai" để được "banro" ban đầu.

Giả sử G muốn ký trên văn bản "banro" có nội dung:

"Ngay chu nhat 27 thang 5 toi o nha khong di dau ca. "

Sử dụng quy ước chuyển số hoá như trong hệ mật mã RSA, G được bản "sohoa" sau:

"13322650622833466239332645625459624533263932625762454034624062393326623633403932622934622926466228266563" 34624062393326623633403932622934622926466228266563"

Sau đó G ký trên bản "sohoa", sử dụng thuật toán ký: y = sigk (x) = xa mod n

Giả sử G chọn ngẫu nhiên p và q được p = 83, q = 89  (n) = 11*41*8 = 7216, n = 7387.

Chọn b sao cho ƯCLN(b, (n) = 1), chọn b không chia hết cho 11, 41 và 2

Chọn b = 9*17 = 153  a = b-1

= 4905.

Sau đó tính yi = xib

mod n, được "banky" :

"7161156220025387613118417045054772351841333254837235644633736311841020231683332035509004547306015176572 ” 4633736311841020231683332035509004547306015176572 ”

Sau khi ký, G mã cả "banky" và bản "sohoa" tức G lại phải tính hàm lập mã và giải mã.

Sử dụng sơ đồ mật mã RSA, G chọn p1 = 73, q1 = 97, (n) = 72*96 = 256*27 = 6912,

n = 7081, b1 = 101*67 = 6767  a1 = b1-1

= 143.

Thực hiện việc mã hoá như trên được hai bản "vbma" và "ckma":

"vbma" có nội dung:

"335439522682475141463634540004062889363453072621288945

76639941463634353705155307423164571740173047385673”

Văn bản "ckma":

"556928420909317345254704255740130502470442481086050209

59215645254704192810174248596461290299680156624563”

Tiếp sau đó G gửi hai văn bản "vbma" và "ckma" cùng khoá (a, a1) đến cho N. Khi nhận được bản mã, đầu tiên N giải mã "vbma" và "ckma" để được "vbgiai" và "ckgiai". Sau đó N kiểm thử chữ ký trên văn bản ckgiai và

thực hiện ngược q trình chuyển số hố "vbgiai" để được bản rõ. Nếu quá trình kiểm thử chữ ký thành công, N gửi thông báo "Chấp nhận chữ ký đúng.” đến G, ngược lại, nếu kiểm thử thấy chữ ký khôn0g đúng anh cũng thông báo lại rằng "Chữ ký không đúng.” đến G.

TÀI LIỆU THAM KHẢO

1. Douglas, Cryptography, Theory and Practice, CRT Press.

2. Josef Pieprzyk & Jennifer Seberry, Cryptography: An introducetion to Computer Security.

3. Sze-tsen Hu. Đại số hiện đại.

4. Phạm Văn Ất, Kỹ thuật lập trình C cơ sở và nâng cao, nhà xuất bản khoa học và kỹ thuật.

5. Phạm Văn Ất, C++ và lập trình hướng đối tượng, nhà xuất bản khoa học và kỹ thuật.

Một phần của tài liệu Một số thuật toán ký và xác nhận chữ ký điện tử hiện nay (Trang 53 - 57)

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

(57 trang)