Để chuyển từ CHỮ sang SỐ hay ngược lại từ SỐ trở về CHỮ, người ta theo một quy ước nào đó, ví dụ chữ cái thay bằng số theo modulo 26 như sau: Để thực hiện mã hóa hay giải mã với các “s
Trang 1ĐÀM CÔNG THẮNG
CHỮ KÝ KHÔNG THỂ PHỦ NHẬN VÀ ỨNG DỤNG TRONG CÁC GIAO DỊCH ĐẶT HÀNG QUA MẠNG
LUẬN VĂN THẠC SĨ MÁY TÍNH
Trang 2LUẬN VĂN THẠC SĨ MÁY TÍNH
Người hướng dẫn khoa học: TS Lê Văn Phùng
HÀ NỘI, 2015
Trang 3LỜI CẢM ƠN
Bằng sự kính trọng và lòng biết ơn sâu sắc, em xin chân thành cảm ơn TS Lê
Văn Phùng, người đã tận tình hướng dẫn và giúp đỡ em trong suốt quá trình nghiên
cứu và hoàn thành luận văn này
Em xin chân thành cám ơn các thầy cô trong khoa Công nghệ thông tin, phòng Sau đại học Trường Đại học Sư Phạm Hà Nội 2, các thầy cô trực tiếp giảng dạy các học phần trong toàn khóa học đã truyền thụ những kiến thức quý báu và tạo điều kiện cho em trong suốt quá trình học tập và nghiên cứu tại trường
Xin cảm ơn gia đình, bạn bè, đồng nghiệp đã quan tâm, giúp đỡ tôi trong suốt thời gian nghiên cứu và hoàn thành luận văn
Trong quá trình nghiên cứu, hoàn thiện luận văn khó tránh khỏi những thiếu sót Rất mong nhận được sự góp ý của quý thầy cô và bạn bè đồng nghiệp quan tâm đến luân văn này
Học viên
Đàm Công Thắng
Trang 4LỜI CAM ĐOAN
Trong quá trình hoàn thành luận văn, tôi đã tìm hiểu, nghiên cứu, tổng hợp nhiều nguồn tài liệu khác nhau, dưới sự chỉ dẫn, giúp đỡ của giáo viên hướng dẫn, kết quả của đề tài là sản phẩm lao động của cá nhân tôi Các nguồn tài liệu sử dụng được trích dẫn rõ ràng, khoa học
Nội dung luận văn này chưa từng được công bố hay xuất bản dưới bất kỳ hình thức nào và cũng không sao chép từ bất kỳ công trình nghiên cứu nào
Tôi xin cam đoan những điều trên hoàn toàn là đúng
Học viên
Đàm Công Thắng
Trang 5MỤC LỤC
TRANG BÌA PHỤ
LỜI CẢM ƠN
LỜI CAM ĐOAN
MỤC LỤC 1
DANH MỤC CÁC BẢNG 3
DANH MỤC CÁC HÌNH VẼ 4
Chương 1 5
Tổng quan về mã hóa dữ liệu và chữ ký số 5
1.1 Tổng quan về mã hóa dữ liệu 5
1.1.1 Cơ sở toán học của lý thuyết mật mã 5
1.1.2 Những vấn đề chung nhất về mã hóa dữ liệu 15
1.1.3 Giới thiệu một số hệ mã hóa cổ điển 17
1.1.4 Khái quát về các hệ mã hóa khóa hiện đại 24
1.2 Tổng quan về chữ ký số 29
1.2.1 Khái niệm về chữ ký số 29
1.2.2 Một số cách phân loại chữ ký số 34
1.2.3 Giới thiệu một số chữ ký số thông dụng 35
1.2.4 Đại diện tài liệu và hàm băm 40
1.2.5 Các ứng dụng của chữ ký số 41
Kết luận 44
Chương 2 45
Chữ ký số đặc biệt và chữ ký số không thể phủ nhận 45
2.1 Sơ đồ thuật toán và ứng dụng của một số loại chữ ký đặc biệt 45
2.1.1 Chữ ký “mù” RSA 45
2.1.2 Chữ ký mù nhóm 50
2.1.3 Chữ ký mù bội (Blind Multi Signature) 53
Trang 62.1.4 Chữ ký không thể phủ nhận 57
2.2 Sơ đồ chữ ký không thể phủ nhận 58
2.2.1 Sơ đồ chữ ký không thể phủ nhận Chaum – Van Antverpen 58
2.2.2 Tính hợp thức của các giao thức 59
2.2.3 Ví dụ về các giao thức kiểm thử và chối bỏ 62
2.2.4 Các ứng dụng chữ ký số không thể phủ nhận trong đời sống kinh tế -xã hội 65
Kết luận 66
Chương 3 67
Xây dựng chương trình ứng dụng chữ ký không thể phủ nhận trong việc xác thực các giao dịch đặt hàng qua mạng 67
3.1 Bài toán đặt ra và môi trường thử nghiệm 67
3.1.1 Bài toán 67
3.1.2 Môi trường thử nghiệm 67
3.2 Chức năng chính của chương trình và thuật toán sử dụng 68
3.2.1 Chức năng ký trên đơn hàng và gửi đơn hàng kèm chữ ký 68
3.2.2 Chức năng thực hiện giao thức kiểm thử 68
3.2.3 Chức năng thực hiện giao thức chối bỏ 70
3.3 Một số giao diện quan trọng trong chương trình 71
3.3.1 Giao diện nhập thông số chung 71
3.3.2 Giao diện nhập đơn hàng và nhận đơn hàng 72
3.3.3 Giao diện giao thức kiểm thử 73
3.3.4 Giao diện giao thức chối bỏ 74
3.4 Kết quả thử nghiệm chương trình và đánh giá 76
KẾT LUẬN 78
TÀI LIỆU THAM KHẢO 79
Trang 7DANH MỤC CÁC BẢNG
Bảng 1.1 Mô tả quá trình tính toán của thuật toán Euclid 6
Bảng 1.2 Mô tả quá trình tính toán của thuật toán Euclid mở rộng 8
Bảng 1.3 Tìm phần tử nghịch đảo của 3 trong Z7 13
Bảng 1.4 Mô tả quá trình mã hóa của hệ mã hóa VIGENERE 22
Trang 8DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Quá trình tạo chữ ký 31
Hình 1.2 Quá trình xác thực chữ ký số 33
Hình 2.1 Lưu đồ thuật toán chữ ký mù RSA 47
Hình 3.1 Sơ đồ chức năng ký trên đơn hàng và gửi đơn hàng kèm chữ ký 68
Hình 3.2 Sơ đồ chức năng thực hiện giao thức kiểm thử 69
Hình 3.3 Sơ đồ chức năng thực hiện giao thức chống chối bỏ: 71
Hình 3.4 giao diện nhập thông số chung 71
Hình 3.5 Giao diện nhập đơn hàng 72
Hình 3.6 Giao diện nhận đơn hàng 72
Hình 3.7 Giao diện kiểm thử của N và G 73
Hình 3.8 Thông báo xác nhận chữ ký 74
Hình 3.9 Thông báo yêu cầu thực hiện giao thức chối bỏ 74
Hình 3.10 Giao diện chương trình khi thực hiện với chữ ký giả mạo 74
Hình 3.11 Giao diện thực hiện giao thức chối bỏ 75
Hình 3.12 Thông báo chữ ký trong đơn hàng nhận được là giả mạo 75
Hình 3.13 Thông báo yêu cầu thiết lập lại giao dịch 76
Trang 9Chương 1 Tổng quan về mã hóa dữ liệu và chữ ký số
1.1 Tổng quan về mã hóa dữ liệu
1.1.1 Cơ sở toán học của lý thuyết mật mã
1.1.1.1 Khái niệm
Ước số , bội số
Cho hai số nguyên a, b (b0) Nếu có một số nguyên q sao cho a=b*q, ta nói rằng a chia hết cho b, kí hiệu b\a Ta nói b là ước của a và a là bội của b
Ước chung lớn nhất, bội chung nhỏ nhất
- Số nguyên d được gọi là ước chung của các số nguyên a1, a2,…,an, nếu nó là ước của tất cả các số đó
- Số nguyên m được gọi là bội chung của các số nguyên a1, a2,…,an, nếu nó là bội của tất cả các số đó
- Một ước chung d của tất cả các số nguyên a1, a2, …, antrong đó mọi ước chung của a1, a2, …, anđều là ước của d, thì d được gọi là ước chung lớn nhất (gcd) của a1, a2,
…, an.
Ký hiệu d = gcd(a1, a2,…, an) hay d= gcd(a1, a2,…, an).
- Nếu gcd(a1, a2, …, an) =1 thì các số a1, a2, …, anđược gọi là nguyên tố cùng nhau
- Một bội chung m>0 của các số nguyên a1, a2, …, an, trong đó mọi bội chung của a1, a2, …, an, đều là bội của m thì m được gọi là bội chung nhỏ nhất (BCNN) của
Trang 10+ Zn* = { eZn, e là nguyên tố cùng nhau với n} Tức e0
Thuật toán Euclide tìm ước chung lớn nhất
- Input: Cho hai số nguyên không âm a, b ( ab)
- Output: d = gcd(a, b) và hai số x, y sao cho ax + by = d
- Thuật toán:
1 Nếu b = 0 thì đặt d a, x 1, y 0 và cho ra (d, x, y)
2 Đặt x2 = 1, x1 = 0, y2 = 0, y1 = 1
Trang 113 Trong khi còn b > 0 thực hiện:
3.1 q a div b, r a mod b, x x2 – qx1, y y2 – qy1 3.2 a b, b r, x2 x1, x1 x, y2 y1 và y1 y
4 Đặt d a, x x2, y y2, và cho ra kết quả (d, x, y)
Ở đây d a giống như trong ngôn ngữ tựa Pascal là d:=a (gán giá trị a vào biến d)
Mô phỏng thuật toán bằng ngôn ngữ Pascal :
Trang 12Dùng thuật toán Euclide mở rộng cho các số a = 4864 và b = 3458, lần lượt được các giá trị sau đây cho các biến a, b, q, r, x, y, x1, x2, y1, y2 (sau mỗi chu trình thực hiện hai lệnh 3.1 và 3.2)
Bảng 1.2 Mô tả quá trình tính toán của thuật toán Euclid mở rộng
Ví dụ: 17 5 ( mod 3) vì chia 17 và 5 cho 3 được cùng số dư là 2
Nhận xét các mệnh đề sau đây là tương đương:
a b ( mod m)
m\ ( a – b )
Tồn tại số nguyên t sao cho a = b + mt
Các tính chất của quan hệ đồng dư
Trang 131/ Quan hệ đồng dư là quan hệ tương đương Z
Với mọi số nguyên dương m ta có
a a ( mod m) với mọi a Z; ( Tính chất phản xạ)
a b ( mod m) thì b a ( mod m); ( Tính chất đối xứng)
a b ( mod m) và b c ( mod m) thì a c ( mod m); ( Tính chất bắc cầu)
2/ Tổng hay hiệu các đồng dư
( a + b)( mod n) [( a mod n) + ( b mod n) ] ( mod n)
( a - b) (mod n) [(a mod n) – ( b mod n)] (mod n)
+ Có thể cộng hoặc trừ cùng một số vào hai vế của một đồng dư thức
+ Có thể chuyển vế các số hạng của đồng dư thức bằng cách đổi dấu các số hạng đó + Có thể cộng vào một vế của đồng dư thức một bội của modulo
a b ( mod m) a + km b ( mod m) với mọi k Z
+ Có thể nhân hai vế của một đồng dư thức cùng với một số:
a b ( mod m) ac bc ( mod m) với mọi c Z
Trang 14+ Có thể nâng lũy thừa bậc nguyên không âm cho 2 vế của một đồng dư thức
a b ( mod m) an bn ( mod m) với mọi n Z+
+ Có thể chia 2 vế đồng dư thức cho một ước chung nguyên tố với modulo
c\a, c\b, (c,m)=1, a b ( mod m) a/c b/c ( mod m)
+ Có thể nhân 2 vế đồng dư thức và modulo cùng với một số nguyên dương:
Nếu a b ( mod m), c>0 ac bc ( mod mc)
+ Có thể chia 2 vế đồng dư thức và modulo cho cùng một số nguyên dương là ước
chung của chúng:
Nếu c/( a, b, m) a/c b/c ( mod m/c)
+ a b ( mod m ) a b ( mod k ) với k\ m
+ a b ( mod m ) gcd(a, m) = gcd( b,m)
Các lớp thặng dư
- Quan hệ “đồng dư” theo modulo m trên tập Z ( tập các số nguyên) là một quan
hệ tương đương ( vì có tính chất phản xạ, đối xứng, bắc cầu), do đó nó tạo ra trên tập Z
một phần hoặc chỉ gồm các lớp tương đương khi và chỉ khi chúng có cùng một số dư
khi chia cho m
- Mỗi lớp tương đương đại diện bởi một số duy nhất Zm = { 0, 1, 2, …, m-1} là
số dư khi chia các số trong lớp cho m, ký hiệu một lớp được đại diện bởi số a là [a]m
Như vậy [a]m = [b]m a b (mod m)
Vì vậy ta có thể đồng nhất Zm với tập các lớp tương đương theo modulo m
- Zm = {0, 1, 2,…,m-1} được gọi là tập các thặng dư đầy đủ theo modulo m
Mọi số nguyên bất kỳ đều có thể tìm được trong Zm một số đồng dư với mình theo
Trang 15Pi( i = 1, 2, 3, …, k) là các số nguyên tố, từng đôi một khác nhau
- Định lý Mersence: Cho p= 2k – 1, nếu p là số nguyên tố thì k phải là số nguyên tố
Tập các số nguyên không âm nhỏ hơn 7 là Z7 = { 0, 1, 2, 3, 4, 5, 6}
Do 7 là số nguyên tố, nên tập các số nguyên dương nhỏ hơn 7 và nguyên tố cùng nhau với 7 là Z7* ={ 1, 2, 3, 4, 5, 6} Khi đó | Z| = ( )p p 1 =7 – 1 = 6
Định lý về hàm Euler
Nếu n là tích của hai số nguyên tố p, q thì ( ) n ( ) ( )p q (p1)(q1)
Định lý Ferma
Nếu p là số nguyên tố, a là số nguyên thì ap a( mod p )
Nếu p nguyên tố, p không chia hết cho a thì ap1 1(mod )p
Trang 16ca = cb(mod m) và suy ra ca camod( )m (mod ) m
Nhận xét : Hệ quả trên giúp giảm nhẹ việc tính toán đồng dư của lũy thừa bậc cao
Ví dụ : Ta thấy (15) = (5) (3) = 4*2 =8 và 1004 4 (mod 8)
Do đó 21004 ( mod 15) = 24(mod 15) = 16 ( mod 15) = 1
Hệ quả 2
Nếu các số nguyên e, d thỏa mãn e.d 1 ( mod (m)), thì với mọi số c nguyên
tố cùng nhau với m, ta có (ce)d c ( mod m)
Hệ quả này đóng vai trò then chốt trong việc thiết lập các hệ mã mũ sau này ví dụ: RSA
1.1.1.4 Phần tử nghịch đảo đối với phép nhân trong Zn theo mod n
Output: phần tử nghịch đảo của a
Mô phỏng thuật toán bằng ngôn ngữ lập trình Pascal:
Procedure Invert(a,n);
Begin
Trang 17g0:=n; g1:=a; u0:=1; u1:=0; v0:=0; v1:=1;
i:=1;
While gi ≠ 0 do
Begin
y:= gi-1 div gi; gi+1 := gi-1 – y.gi;
ui+1:= ui-1 – y.ui ; vi+1:= vi-1 – y.vi;
Ví dụ: Tìm phần tử nghịch đảo của 3 trong Z7
Tức là phải giải phương trình 3.x 1 ( mod 7), x sẽ là phần tử nghịch đảo của 3
Bảng 1.3 Tìm phần tử nghịch đảo của 3 trong Z7
Vậy 5 là phần tử nghịch đảo của 3 trong Z7
Định lý Euler tổng quát Nếu ( a, n) = 1 thì a( )n mod n = 1
Hệ quả : Nếu p là số nguyên tố và ( a, p) = 1 thì ap-1
Trang 18Khái niệm Nhóm Cyclic:
Nhóm (G, *) được gọi là Nhóm Cyclic nếu nó được sinh ra bởi một phần tử g
G Tức là với mỗi a G, đều tồn tại số n N để g n = g * … * g = a Khi đó
g được gọi là phần tử sinh hay phần tử nguyên thuỷ của nhóm G [3]
Trong lý thuyết số, người ta đã chứng minh được các tính chất sau đây của các phần
3/ Nếu g là phần tử nguyên thuỷ theo mod p, thì gimod p với mọi i mà
gcd(i, p -1) = 1, cũng là phần tử nguyên thuỷ theo mod p
Trang 19Định lý 3:
Xét tập hợp Z*
p, trong đó p là số nguyên tố Giả sử g là một phần tử nguyên thủy trong Z*p Khi đó, mỗi một phần tử bất kỳ a Z*n, đều tồn tại một j nguyên (j ≥ 1) sao cho a = gj ; số a là phần tử nguyên thủy nếu và chỉ nếu gcd(j, p-1)=1 Như vây, có bao nhiêu số j mà nguyên tố với p-1 thì sẽ có bấy nhiêu phần tử nguyên thủy trong Z*
Vì 466 = 2.233, nên mọi j không phải là số chẵn và thỏa mãn điều kiện 1 ≤ j < 233 thì
2j đều là phần tử nguyên thủy
Cấp (Bậc) của Nhóm Cyclic:
Cho (G, *) là Nhóm Cyclic với phần tử sinh g và phần tử trung lập e
Nếu tồn tại số tự nhiên nhỏ nhất n mà g n = e, thì G sẽ chỉ gồm có n phần tử
khác nhau: e, g, g2 , g3 , , g n – 1 Khi đó G được gọi là nhóm Cyclic hữu hạn cấp
n Nếu không tồn tại số tự nhiên n để g n = e, thì G có cấp
Ví dụ: (Z +, +) gồm các số nguyên dương là nhóm Cyclic với phần tử sinh g =
1,e = 0 Đó là Nhóm Cyclic vô hạn, vì không tồn tại số tự nhiên n để g n = e
Cấp (Bậc) của một phần tử trong Nhóm Cyclic:
Phần tử G được gọi là có cấp d, nếu d là số nguyên dương nhỏ nhất sao cho d
= e, trong đó e là phần tử trung lập của G
1.1.2 Những vấn đề chung nhất về mã hóa dữ liệu
1.1.2.1 Giới thiệu về mã hóa
Để đảm bảo An toàn thông tin lưu trữ trong máy tính (giữ gìn thông tin cố định) hay đảm bảo An toàn thông tin trên đường truyền tin (trên mạng máy tính), người ta phải
“Che giấu” các thông tin này
Trang 20“ Che ” thông tin (dữ liệu) hay “ Mã hóa” thông tin là thay đổi hình dạng thông tin gốc, và người khác khó nhận ra
Hệ mã hóa được định nghĩa là một bộ năm (P, C, K, E, D), trong đó:
Với khóa lập mã keK có hàm lập mã ekeE eke P, : C
Với khóa giải mã kdK có hàm giải mã dkdE dkd P, : C sao cho: ( ( )) ,
dkd eke x x x P
Ở đây x được gọi là bản rõ, eke x ( ) được gọi là bản mã.[6]
Mã hoá nhằm đảm bảo các tính chất sau của thông tin:
Tính bí mật (Confidentiality): thông tin chỉ được tiết lộ cho những ai được phép Tính toàn vẹn (Integrity): thông tin không thể bị thay đổi mà không bị phát hiện Tính xác thực (Authentication): người gửi (hoặc người nhận) có thể chứng minh đúng họ
Tính không chối bỏ (Non-repudiation): người gửi hoặc nhận sau này không thể chối bỏ việc đã gửi hoặc nhận thông tin [5]
1.1.2.2 Phân loại hệ mã hóa
1/ Hệ mã hóa khóa đối xứng
Mã hóa khóa đối xứng là Hệ mã hóa mà biết được khóa lập mã thì có thể “dễ” tính được khóa giải mã và ngược lại Đặc biệt một số Hệ mã hóa có khóa lập mã (ke)
và khóa giải mã trùng nhau (kd), như Hệ mã hóa “dịch chuyển” hay DES
2/ Hệ mã hóa khóa công khai
Trang 21- Hệ mã hóa khóa công khai hay Hệ mã hóa phi đối xứng do Diffie và Hellman phát minh vào những năm 1970
- Hệ mã hóa khóa phi đối xứng là Hệ mã hóa có khóa lập mã và khóa giải mã khác nhau (ke kd), biết được khóa này cũng “khó” tính được khóa kia
- Khóa lập mã cho công khai, gọi là khóa công khai (Public key)
- Khóa giải mã giữ bí mật, còn gọi là khóa riêng (Private key) hay khóa bí mật
Sơ đồ: ( Pivest, Shamir, Adleman đề xuất năm 1977)
- Tạo cặp khóa bí mật và khóa công khai (a, b):
Chọn bí mật số nguyên tố lớn p, q, tính n=p*q, công khai n đặt P= C= Zn
- Tính bí mật ( )n (p1) * (q1) Chọn khóa công khai b ( )n , nguyên tố cùng nhau ( )n
- Khóa bí mật a là phần tử nghịch đảo của b theo( ) : *n a b1(mod ( )) n
- Tập cặp khóa ( bí mật, công khai)
1.1.3 Giới thiệu một số hệ mã hóa cổ điển
Hệ mã hóa đối xứng đã được dùng từ rất sớm, nên còn gọi là Hệ mã hóa đối xứng – cổ điển ( gọi ngắn gọn là Hệ mã hóa đối xứng cổ điển) Trong hệ mã hóa đối xứng cổ điển bản mã hay bản rõ là dãy các ký tự Latin
Lập mã: thực hiện theo các bước sau:
1/ Nhập bản rõ ký tự: RÕ_CHỮ 2/ Chuyển RÕ_CHỮ RÕ _SỐ
3/ Chuyển RÕ_SỐ MÃ_SỐ 4/ Chuyển MÃ_SỐ MÃ_CHỮ
Giải mã: thực hiện theo các bước sau:
Trang 221/ Nhập bản mã ký tự: MÃ_CHỮ 2/ Chuyển MÃ_CHỮ MÃ_SỐ
3/ Chuyển MÃ_SỐ RÕ_SỐ 4/ Chuyển RÕ_SỐ RÕ_CHỮ
Để chuyển từ CHỮ sang SỐ hay ngược lại từ SỐ trở về CHỮ, người ta theo một
quy ước nào đó, ví dụ chữ cái thay bằng số theo modulo 26 như sau:
Để thực hiện mã hóa hay giải mã với các “số”, người ta dùng các phép toán số học
theo modulo 26
Mã hóa cổ điển gồm nhiều hệ, ví dụ:
Hệ mã hóa dịch chuyển: Khóa có 1 “chìa” (Thể hiện bằng 1 giá trị)
Hệ mã Affine: Khóa có 2 “chìa” (Thể hiện bằng 2 giá trị)
Hệ mã hóa thay thế: Khóa có 26 “chìa” (Thể hiện bằng 26 giá trị)
Hệ mã hóa VIGENERE: Khóa có m “chìa” (Thể hiện bằng m giá trị)
Hệ mã hóa HILL: Khóa có ma trận “chìa” (chùm chìa khóa)
Trang 23Bản rõ số:
19 14 8 26 13 0 24 26 19 7 0 26 21 8 17 20 18 Với phép mã hóa y = ek (x) = (x +k) mod 26 = (x + 3) mod 26, ta nhận được:
Bản mã số:
22 17 11 3 16 3 1 3 22 10 3 3 24 11 20 23 21 Bản mã chữ:
W R L D Q D B D W K D D Y L U X V Với phép giải mã x = dk (y) = (y – k) mod 26 = (y – 3) mod 26, ta nhận lại được bản rõ
số, sau đó là bản rõ chữ
Độ an toàn: Độ an toàn của mã dịch chuyển: Rất thấp
Tập khóa K chỉ có 26 khóa, nên việc phá khóa (thám khóa) có thể thực hiện dễ dàng bằng cách thử kiểm tra từng khóa: k = 1, 2, 3, …, 26
1.1.3.2 Hệ mã hóa thay thế ( Hoán vị toàn cục)
Sơ đồ
Đặt P = C = Z26 Bản mã y và bản rõ x Z26
Tập khóa K là tập mọi hoán vị trên Z26
Với khóa k = K, tức là 1 hoán vị trên Z26 , ta định nghĩa:
Trang 24Bản mã chữ:
E J P Z K Y V Z E Q Y Z C P G D F
Giải mã theo công thức x (y) = (y), ta nhận lại được bản rõ chữ
Độ an toàn: Độ an toàn của mã thay thế: Thuộc loại cao
Tập khóa K có 26! khóa ( > 4.1026), nên việc phá khóa ( thám mã) có thể thực hiện bằng cách duyệt tuần tự 26! hoán vị của 26 chữ cái
Để kiểm tra tất cả 26! khóa, tốn rất nhiều thời gian !
Hiện nay với hệ mã này, người ta có phương pháp thám mã khác nhanh hơn
1.1.3.3 Hệ mã hóa AFFINE
Sơ đồ:
Đặt P = C = Z26 Bản mã y và bản rõ x Z26
Tập khóa K = {(a, b), với a, b Z26 , gcd(a,26) = 1}
Với khóa k = (a, b) K, ta định nghĩa:
Trang 25Giải mã theo công thức x (y) = (y - b) mod 26
= 3-1 (y – 6) mod 26 = 9 * (y – 6) mod 26
Độ an toàn: Độ an toàn của Hệ mã hóa Affine: Rất thấp
+ Điều kiện gcd(a, 26) = 1 để bảo đảm a có phần tử nghịch đảo a-1
mod 26, tức là thuật
toán giải mã d K luôn thực hiện được
+ Số lượng a Z 26 nguyên tố với 26 là (26) = 12, đó là:
Chia bản rõ SX thành các đoạn, mỗi đoạn gồm m = 5 số
Với mỗi đoạn, áp dụng công thức mã hóa, ta nhận được bản mã số
Trang 26Bảng 1.4 Mô tả quá trình mã hóa của hệ mã hóa VIGENERE
Độ an toàn: Độ an toàn của mã VIGENERE: Tương đối cao
Nếu khóa gồm m ký tự khác nhau, mỗi ký tự có thể được ánh xạ vào 1 trong m
kí tự có thể, do đó hệ mật này được gọi là hệ thay thế đa biểu
Như vậy số khóa (độ dài m) có thể có trong mật Vigenere 26 m
Nếu dùng phương pháp “tấn công vét cạn”, thám mã phải kiểm tra 26 m
Tập khóa K là tập tất cả các hoán vị của {1, 2, …, m}
Với mỗi khóa k = K, k = (k1, k2, …, km), gồm m phần tử, ta định nghĩa:
Mã hóa: Y = (y1, y2, …, ym) (x1, x2, …, xm) = (xk(1), xk(2), …, xk(m))
Giải mã: X = (x1, x2, …, xm) (y1, y2, …, ym) = (yk(1)-1, yk(2)-1, …, yk(m)-1)
Trong đó k-1 = là hoán vị ngược của
Trang 27SHESEL | ISSEAS | HELLSB | YTHESE | ASHO
Với mỗi nhóm 6 kí tự, sắp xếp lại thành các chữ theo hoán vị , ta nhận được: EESLSH | SALSES | LSHBLE | HSYEET | HRAE
Tập khóa K = { K (Z26)m*m / det (K, 26) = 1} ( K phải có K-1)
Mỗi khóa K là một “Chùm chìa khóa” (một Ma trận “Các chìa khóa”.)
Trang 28Với mỗi K K, định nghĩa:
Hàm lập mã: Y = (y1, y2, …, ym) (x1, x2, …, xm) = (x1, x2, …, xm) * K mod 26 Hàm giải mã: X = (x1, x2, …, xm) (y1, y2, …, ym) = (y1, y2, …, ym) * K-1 mod 26
Nếu dùng phương pháp “tấn công vét cạn”, thám mã phải kiểm trả số khóa có thể với
m lần lượt là 2, 3, 4, … trong đó m lớn nhất là bằng độ dài bản rõ
1.1.4 Khái quát về các hệ mã hóa khóa hiện đại
1.1.4.1 Hệ mã hóa đối xứng DES
Giới thiệu
Hiện nay có nhiều hệ mã hóa đối xứng loại mới, mục này trình bày Chuẩn mã hóa dữ liệu DES (Data Encryption Standard)
15/05/1973, Ủy ban tiêu chuẩn quốc gia Mỹ (NBS) (được sự thẩm định của Cục
an ninh QG (NAS) đã công bố một khuyến nghị về hệ mã hóa chuẩn
Hệ mã hóa phải có độ an toàn cao
Hệ mã hóa phải được định nghĩa đầy đủ và dễ hiểu
Độ an toàn của Hệ mã hóa phải nằm ở Khóa, không nằm ở Thuật toán
Trang 29Hệ mã hóa phải sẵn sàng cho mọi người dùng ở các lĩnh vực khác nhau
Hệ mã hóa phải xuất khẩu được
DES được IBM phát triển, là một cải biên của hệ mật mã LUCIPHER DES, nó được công bố lần đầu tiên vào ngày 17/03/1975 Sau nhiều cuộc tranh luận công khai, cuối cùng DES được công nhận như một chuẩn liên bang vào ngày 23/11/1976 và được công bố vào ngày 15/01/1977
Năm 1980, “Cách dùng DES” được công bố Từ đó chu kỳ 5 năm DES được xem xét lại một lần bởi Ủy ban tiêu chuẩn quốc gia Mỹ, lần gần đây nhất là 2004
Quy trình mã hóa theo DES
Giai đoạn 1: Bản Rõ chữ ===== Bản Rõ số (Dạng nhị phân)
Chia thành
Giai đoạn 2: Bản Rõ số ===== Các đoạn 64 bit Rõ số
Giai đoạn 3: 64 bit Rõ số ===== 64 bit Mã số
Thuật toán DES tập trung thực hiện Giai đoạn 3 của quy trình mã hóa Đó là
chuyển đối bản rõ số với 64 bit thành bản mã với 64 bit
b) Thực hiện mã hóa DES theo Sơ đồ
Bản rõ là xâu x, Bản mã là xâu y, Khóa là xâu K, đều có độ dài 64 bit
Thuật toán mã hóa DES thực hiện qua 3 bước chính như sau:
Bước 1: Bản rõ x được hoán vị theo phép hoán vị IP, thành IP (x)
IP(x) = L0R0, trong đó L0 là 32 bit đầu (Left), R0 là 32 bit cuối (Right)
(IP (x) tách thành L R )
Trang 30Bước 2: Thực hiện 16 vòng mã hóa với những phép toán giống nhau
Dữ liệu được kết hợp với khóa thông qua hàm f:
Li = Ri-1, Ri = Li-1 f(Ri-1, ki), trong đó: là phép toán hoặc loại trừ của hai xâu bit (cộng theo modulo 2) k1, k2, …, k16 là các khóa con (48 bit) được tính từ khóa gốc K
Bước 3: Thực hiện phép hoán vị ngược IP-1 cho xâu R16L16, thu được bản mã y
y = IP-1 (R16 , L16 )
c) Tính các khóa con k 1 , k 2 , …, k 16 từ khóa gốc K
d) Quy trình giải mã DES
Qui trình giải mã của DES tương tự như qui trình lập mã, nhưng theo dùng các khóa thứ tự ngược lại: k16, k15, …, k1
Xuất phát (đầu vào) từ bản mã y, kết quả (đầu ra) là bản rõ x
Độ an toàn của Hệ mã hóa DES
1) Độ an toàn của Hệ mã hóa DES có liên quan đến các bảng Sj:
Ngoại trừ các bảng S, mọi tính toán trong DES đều tuyến tính, tức là việc tính
phép hoặc loại trừ của hai đầu ra cũng giống như phép hoặc loại trừ của hai đầu vào, rồi tính toán đầu ra
Các bảng S chứa đựng nhiều thành phần phi tuyến của hệ mật, là yếu tố quan
trọng nhất đối với độ mật của hệ thống
Khi mới xây dựng hệ mật DES, thì tiêu chuẩn xây dựng các hộp S không được
biết đầy đủ Và có thể các hộp S này có thể chứa các “cửa sập” được giấu kín Và đó
cũng là một điểm đảm bảo tính bảo mật của hệ DES
2) Hạn chế của DES chính là kích thước không gian khóa:
Số khóa có thể là 256, không gian này là nhỏ để đảm bảo an toàn thực sự Nhiều thiết bị chuyên dụng đã được đề xuất nhằm phục vụ cho phép tấn công với bản rõ đã biết Phép tấn công này chủ yếu thực hiện theo phương pháp “vét cạn” Tức là với bản
rõ x và bản mã y tương ứng (64 bit), mỗi khóa có thể đều được kiểm tra cho tới khi tìm được một khóa K thỏa mãn eK(x) = y
Trang 311.1.4.2 Hệ mã hóa khóa công khai
a) Hệ mã hóa RSA
Sơ đồ (Rivest, Shamir, Adleman để xuất năm 1977)
Tạo cặp khóa (bí mật, công khai) (a, b):
Chọn bí mật số nguyên tố lớn p, q, 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): a*b ≡ 1 (mod (n))
Tập cặp khóa (bí mật, công khai) K = {(a, b)/ a, b Zn, a*b ≡ 1 (mod (n))}
+ Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b ≡ 1 (mod (n))
Từ a*b ≡ 1 (mod (n)), ta nhận được khóa bí mật a = 791
Trang 322) Hệ mật RSA an toàn, khi giữ được bí mật khóa giải mã a, p, q, (n)
Nếu biết được p và q, thì thám mã dễ dàng tính được (n) = (q-1)*(p-1)
Nếu biết được (n), thì thám mã sẽ tính được a theo thuật toán Euclide mở rộng
Nhưng phân tích n thành tích của p và q là bài toán “khó”
Độ an toàn của Hệ mật RSA dựa vào khả năng giải bài toán phân tích số nguyên dương n thành tích của 2 số nguyên tố lớn p và q
b) Hệ mã hóa Elgamal
Sơ đồ (Elgamal đề xuất năm 1985)
Tạo cặp khóa (bí mật, công khai) (a, b):
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 phần tử nguyên thủy g Zp* Đặt P = Zp* , C = Zp* Zp*
Chọn khóa bí mật là a Zp* Tính khóa công khai h ≡ g* mod p
Định nghĩa tập khóa: K = {(p, g, a, h): h ≡ g*
mod p}
Các giá trị p, g, h được công khai, phải giữ bí mật a
Với Bản rõ x P và Bản mã y C, với khóa k K định nghĩa:
Lập mã: Chọn ngẫu nhiên bí mật r Zp-1, bản mã là y = ek (x, r) = (y1,y2)
Trong đó y1 = gr mod p và y2 = x * hr mod p
Giải mã: dk (y1, y2) = y2 (y1a)-1 mod p = x
Trang 332) Độ an toàn của Hệ mật Elgamal dựa vào khả năng giải bài toán logarit rời rạc trong
Zp Theo giả thiết trong sơ đồ, thì bài toán này phải là “khó” giải: a =
Cụ thể như sau: Theo công thức lập mã: y = ek(x, r) = (y1, y2), trong đó y1 = grmod p và y2 = x * hr mod p, r =
Như vậy muốn xác định bản rõ x từ công thức y2, thám mã phải biết được r Giá trị này có thể tính được từ công thức y1, nhưng lại gặp bài toán logarit rời rạc
1.2 Tổng quan về chữ ký số
1.2.1 Khái niệm về chữ ký số
Chữ ký số là xâu bit được dùng để xác thực một tài liệu số, đảm bảo người gửi không thể chối bỏ rằng mình đã gửi bản tin và người nhận không thể giả mạo bản tin hoặc chữ ký Đồng thời, người nhận có thể chứng minh với người khác nội dung bản tin là chính xác do người gửi ban đầu gửi đến
Sơ đồ chữ ký số:
Sơ đồ chữ ký số là bộ năm ( P, A, K, S, V) trong đó;
P là tập hữu hạn các văn bản có thể
Trang 341.2.1.1 Quá trình tạo chữ ký số
Đầu vào của quá trình này chính là bản tin cần ký, bằng cách sử dụng khóa bí mật của người gửi, ta có thể tạo ra chữ ký cho bản tin hiện thời, bản tin gửi đi bao gồm bản tin ban đầu được ký bằng chữ ký vừa tạo ra
Quá trình tạo chữ ký số được thực hiện tại bên gửi gồm hai bước:
1/ Tính giá trị băm
Bước đầu tiên của quá trình tạo chữ ký là tạo giá trị băm của bản tin cần gửi Các hàm băm có thể sử dụng là MD2, MD4, Md5, SHA-1, SHA-256,… Kết quả thu được là một message digest có chiều dài cố định, nhỏ hơn rất nhiều lần bản tin ban đầu Theo tính chất của hàm băm, xác suất để hai bản tin khác nhau có cùng một giái trị băm là rất nhỏ và có thể bỏ qua Vì vậy nếu giá trị băm của hai bản tin trùng nhau thì bản tin ban đầu cũng trùng nhau
2/ Tính toán chữ ký số
Kết quả băm thu được được ký bằng khóa bí mật của bên nhận Kết quả thu được này chính là chữ ký số Các thuật toán tạo khóa có thể sử dụng để tạo chữ ký số là
Trang 35RSA, ELGamal, ECDSA, chữ ký này được gắn vào bản tin ban đầu và truyền đến người gửi trên môi trường mạng
Hình 1.1 Quá trình tạo chữ ký 1.2.1.2 Quá trình xác thực chữ ký số
Đây là quá trình sử dụng khóa công khai của người nhận để xác thực chữ ký Quá trình xác thực chữ ký số gồm các bước sau đây:
1/ Tính toán giá trị băm hiện thời
Sau khi nhận được bản tin có chữ ký người gửi, bên nhận tiến hành tách ra bản tin ban đầu, chữ ký người gửi Băm lại bản tin ban đầu thu được giá trị băm (gọi là giá trị băm hiện thời vì nó được tính từ bản tin hiện thời)
2/ Tính toán giá trị băm ban đầu
Truyền Bản rõ
Băm
Bản tóm lược
(Message digest)
Thông điệp đã ký
Trang 36Trong bước thứ hai của quá trình giải mã, chữ ký số đính kèm được giải mã bằng khóa công khai tương ứng với khóa bí mật dùng để tạo chữ ký ở bên gửi Kết quả thu được giá trị băm ban đầu
3/ So sánh giá trị băm hiện thời với giá trị băm ban đầu
Trong bước này ta tiến hành so sánh giá trị băm hiện thời ở (1/) với giá trị băm ban đầu ở (2/) trong quá trình xác minh chữ ký số
Nếu so sánh hai giá trị băm này trùng nhau thì quá trình xác thực thành công, bản tin đã được ký bằng khóa bí mật tương ứng với khóa công khai khi xác thực, đồng thời bản tin cũng không bị thay đổi trong quá trình truyền đi
Nếu so sánh hai giá trị băm này không trùng nhau thì quá trình xác thực thất bại,
có hai trường hợp mất an toàn đã xẩy ra:
- Khóa bí mật của người gửi không được sử dụng khi tạo chữ ký
- Bản tin đã bị thay đổi trong quá trình truyền đi
Trang 37Bản tóm lược (Message digest)
Giải mã
Trùng nhau
Bản tin toàn vẹn
Khóa công khai
của người gửi
Đúng Bản tin bị thay đổi
Đúng
Trang 381.2.2 Một số cách phân loại chữ ký số
Có nhiều loại chữ ký tùy theo cách phân loại, sau đây xin giới thiệu một số cách [6]
- Phân loại chữ ký theo đặc trƣng kiểm tra chữ ký
Chữ ký khôi phục thông điệp: Người gửi chỉ cần gửi “chữ ký” , người nhận có thể khôi phục lại được thông điệp, đã được “ký” bởi “chữ ký” này
Ví dụ: Chữ ký RSA là chữ ký khôi phục thông điệp
Chữ ký đi kèm thông điệp: Là loại chữ ký, trong đó người gửi chỉ cần gửi “chữ ký”, phải gửi kèm cả thông điệp đã được “ký” bởi “chữ ký” này Ngược lại, người nhận sẽ không có được thông điệp gốc
Ví dụ: Chữ ký Elgamal là chữ ký đi kèm thông điệp
- Phân loại chữ ký theo mức an toàn
Chữ ký “không thể phủ nhận”: Nhằm tránh việc nhân bản chữ ký để sử dụng nhiều lần, tốt nhất là người gửi tham gia trực tiếp vào việc kiểm thử chữ ký Điều đó được thực hiện bằng một giao thức kiểm thử, dưới dạng một giao thức mời hỏi và trả lời
Ví dụ: Chữ ký không phủ định (Chaum- van Antverpen)
Chữ ký “một lần”: Để bảo đảm an toàn, “Khóa ký” chỉ dùng 1 lần (one – time) trên 1 tài liệu
Ví dụ: Chữ ký một lần Lamport Chữ ký Fail – Stop (Van Heyst & Pedersen)
- Phân loại chữ ký theo ứng dụng đặc trƣng
+ Chữ ký “mù” (Blind Signature)
+ Chữ ký “nhóm” (Group Signature)
+ Chữ ký “bội” (Multy Signature)
+ Chữ ký “mù nhóm” (Blind Group Signature)
+ Chữ ký “mù bội” (Blind Multy Signature) [6]
Trang 391.2.3 Giới thiệu một số chữ ký số thông dụng
1.2.3.1 Sơ đồ chữ ký số RSA
Đặc điểm của sơ đồ chữ ký này là mức độ tính toán phụ thuộc hoàn toàn vào độ lớn của giải thuật giải quyết các bài toán nhân số nguyên – bài toán luỹ thừa
Sơ đồ chữ ký bao gồm cả hai loại kèm thông điệp và khôi phục thông điệp Sơ
đồ chữ ký RSA được phát minh bởi 3 nhà nghiên cứu Rivest, Shamir và Adleman, đây
là sơ đồ có ứng dụng thực tế rộng rãi nhất dựa trên công nghệ sử dụng khoá chung Các phương pháp tấn công RSA đầu tiên (multicative property) và các vấn đề khác liên quan tới chữ ký RSA, do Davia, Jonge và Chaum đưa ra
Thuật toán sinh khoá:
Thực thể A tạo khoá công khai RSA và khoá riêng tương ứng theo phương thức sau :
Sinh ra hai số nguyên tố lớn ngẫu nhiên p và q cùng kích thước bit;
Khoá công khai của A là K’ = (n, e), khoá riêng của A là K” = (n, d)
Thuật toán sinh chữ ký:
Thực thể A ký trên thông điệp m dựa vào khóa bí mật của mình đã có
Sinh chữ ký: Thực thể A làm theo các bước sau:
Tính m' = H(m), là một số nguyên trong khoảng 0,n-1
Tính y = m'd mod n
Chữ ký của A cho m là y
Thuật toán kiểm thử chữ ký:
Trang 40Thực thể B có thể xác nhận được chữ ký của A bằng khóa công khai của A và khôi phục lại thông điệp từ chữ ký Việc xác nhận chữ ký của thực thể B làm theo các bước sau:
Nhận khoá công khai của A là (n, e)
Tính m' = ye mod n
Kiểm tra m' MR nếu không sẽ không chấp nhận chữ ký
Lấy lại thông điệp m từ m = H-1
(m')
Độ an toàn của sơ đồ chữ ký số RSA:
Độ an toàn của chữ ký số RSA phụ thuộc vào bài toán tách n thành hai số nguyên tố p và q Vì nếu biết được p và q thì sẽ biết được bí mật ϕ(n) sau đó dựa vào công thức e.d ≡ 1 (mod ϕ(n)), với e là khóa công khai đã biết thì có thể tính được khóa
bí mật d
Nếu sơ đồ ký số thực hiện đơn giản thì tội phạm dễ dàng lừa Ví dụ như họ có thể chọn ngẫu nhiên *
NZ
y và tính toán độ lớn: m ye (modn) Rõ ràng quá trình thẩm tra (m,y) là hoàn toàn đúng Ngoài ra do tính chất nhân của hàm RSA, tức là nếu có hai bức điện m1 và m2 tương ứng với nó là 2 chữ ký y1 và y2 thì dễ dàng hình thành chữ ký thứ ba y1y2 với bức điện thứ ba m1m2: (m1m2)d m1d m2d y1y2
1.2.3.2 Sơ đồ chữ ký Elgama
Sơ đồ chữ ký ElGamal được đề xuất năm 1985, gần như đồng thời với sơ đồ hệ mật mã ElGamal, cũng dựa trên độ khó của bài toán lôgarit rời rạc Sơ đồ được thiết kế đặc biệt cho mục đích ký trên các văn bản điện tử, được mô tả như một hệ
S = (, , , , ), trong đó =Zp, =ZpZp1, với p là một số nguyên tố sao cho bài toán tính lôgarit rời rạc trong Zplà rất khó Tập hợp gồm các cặp khoá K =(K’,K'' )
Thuật toán sinh khóa: