26 DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT CHỮ VIẾT 3-DES Triple Data Encrytion Standard Áp dụng giải thuật DES 3 lần cho mỗi khối dữ liệu AES Advanced Encryption Standard Hệ mật mã t
Trang 1NGUYỄN VĂN LIỆU
TÌM HIỂU CHỮ KÝ SỐ
VÀ ỨNG DỤNG CỦA NÓ
Ngành: Công nghệ thông tin
Chuyên ngành: Truyền dữ liệu và Mạng máy tính
Trang 2MỤC LỤC
LỜI CAM ĐOAN Error! Bookmark not defined LỜI CẢM ƠN Error! Bookmark not defined
MỤC LỤC ii
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT iv
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ vi
MỞ ĐẦU 7
CHƯƠNG 1: CÁC KHÁI NIỆM TOÁN HỌC CƠ BẢN 8
1 1 CÁC CẤU TRÚC ĐẠI SỐ 8
1.1.1 Nhóm 8
1.1.2 Vành 8
1.1.3 Trường 9
1.2 SỐ HỌC TRÊN MODULO 9
1.2.1 Định nghĩa Modulo 9
1.2.2 Các phép toán số học trên Modulo 9
1.2.3 Tính chia hết của các số nguyên - Thuật toán Euclide 9
1.3 TRƯỜNG GALOA 11
1.3.1 Trường Galoa 11
1.3.2 Tìm số nghịch đảo 11
1.3.3 Số học đa thức 12
1.3.4 Phép toán đa thức với Modulo đa thức 12
1.4 LÝ THUYẾT SỐ 13
1.4.1 Các số nguyên tố 13
1.4.2 Phân tích ra thừa số nguyên tố 13
1.4.3 Các số nguyên tố cùng nhau và GCD 14
1.4.4 Định lý Ferma (Định lý Ferma nhỏ) 14
1.4.5 Hàm Ole 14
1.4.6 Định lý Ole 15
1.4.7 Kiểm tra tính nguyên tố 15
1.4.8 Định lý phần dư Trung Hoa 16
1.4.9 Căn nguyên tố 16
1.4.10 Logarit rời rạc 17
CHƯƠNG 2: MẬT MÃ, HÀM BĂM 17
2.1 HỆ MẬT MÃ KHOÁ CÔNG KHAI 17
2.1.1 Giới thiệu 17
2.1.2 Hệ mật mã RSA [3] 18
2.1.3 Hệ mật mã Elgamal [3] 19
2.1.4 Hệ mật mã Rabin [3] 22
2.1.5 Các hệ mật mã dựa trên các bài toán NP-đầy đủ [3] 23
2.1.6 Các Hệ mật mã xác suất [3] 25
2.2 HỆ MẬT TRÊN ĐƯỜNG CONG ELLIPTIC Error! Bookmark not defined 2.2.1 Cơ bản về đường cong Elliptic Error! Bookmark not defined 2.2.2 Các hệ mật dựa trên đường cong Elliptic [4] Error! Bookmark not defined 2.2.3 Đánh giá hệ mật ECC Error! Bookmark not defined 2.3 HỆ MẬT TRÊN KHÔNG GIAN KHÔNG GIAO HOÁN Error! Bookmark not defined 2.3.1 Giới thiệu chung Error! Bookmark not defined 2.3.2 Hệ mã hoá khoá công khai trên nhóm Bện [6] Error! Bookmark not defined
Trang 32.4.1 Đặt vấn đề Error! Bookmark not defined 2.4.2 Hàm băm MD5 Error! Bookmark not defined 2.4.4 Hàm băm Davies – Mayer và ứng dụng của TT Rijndael vào hàm băm Error!
Bookmark not defined
2.4.5 Các hàm băm sử dụng thuật toán Rijndael Error! Bookmark not defined CHƯƠNG 3: CÁC MÔ HÌNH CHỮ KÝ SỐ Error! Bookmark not defined 3.1 TỔNG QUAN VỀ CHỮ KÝ SỐ Error! Bookmark not defined 3.1.1 Giới thiệu về chữ ký số Error! Bookmark not defined 3.1.2 Định nghĩa lược đồ chữ ký số Error! Bookmark not defined 3.1.3 Phân loại chữ ký số Error! Bookmark not defined 3.1.4 Tầm quan trọng và ý nghĩa thực tiễn của chữ ký số Error! Bookmark not defined 3.2 CÁC LƯỢC ĐỒ CHỮ KÝ SỐ CƠ BẢN Error! Bookmark not defined 3.2.1 Lược đồ RSA [3] Error! Bookmark not defined 3.2.2 Lược đồ Elgamal [3] Error! Bookmark not defined 3.2.3 Lược đồ chữ ký số chuẩn DSS [3] Error! Bookmark not defined 3.3 LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN EC Error! Bookmark not defined 3.3.1 Lược đồ chữ ký ECDSA [4] Error! Bookmark not defined 3.3.2 Lược đồ ký mù Harn trên EC [4] Error! Bookmark not defined 3.3.3 Lược đồ chữ ký Nyberg – Rueppel trên EC Error! Bookmark not defined 3.4 LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN KHÔNG GIAN KHÔNG GIAO HOÁN Error!
Bookmark not defined
3.4.1 Giao thức trao đổi khoá mật trên không gian không giao hoán Error! Bookmark not
defined
3.4.2 Lược đồ chữ ký số trên không gian không giao hoán Error! Bookmark not defined 3.5 MỘT SỐ LƯỢC ĐỒ CHỮ KÝ SỐ KHÁC Error! Bookmark not defined 3.5.1 Lược đồ chữ ký số Rabin [3] Error! Bookmark not defined 3.5.2 Lược đồ chữ ký số Schnorr [3] Error! Bookmark not defined 3.5.3 Lược đồ chữ ký số một lần [5] Error! Bookmark not defined 3.5.4 Lược đồ chữ ký số Fail – Stop Error! Bookmark not defined 3.5.5 Lược đồ chữ ký uỷ nhiệm Error! Bookmark not defined CHƯƠNG 4: CHỮ KÝ CHỐNG CHỐI BỎ VÀ ỨNG DỤNG Error! Bookmark not defined 4.1 ĐẶT VẤN ĐỀ Error! Bookmark not defined 4.2 LỊCH SỬ PHÁT TRIỂN CỦA CHỮ KÝ CHỐNG CHỐI BỎ [32] Error! Bookmark not
defined
4.3 LƯỢC ĐỒ CHỮ KÝ CHỐNG CHỐI BỎ Error! Bookmark not defined 4.3.1 Lược đồ chữ ký Chaum-van Antverpen [3] Error! Bookmark not defined 4.3.2 Tính hợp thức của các giao thức Error! Bookmark not defined 4.3.3 Tính an toàn của Lược đồ chữ ký Chaum-van Antverpen Error! Bookmark not
defined
Trang 44.5.2 Một số ứng dụng chung Error! Bookmark not defined KẾT LUẬN Error! Bookmark not defined
1 CÁC VẤN ĐỀ ĐƯỢC TÌM HIỂU TRONG LUẬN VĂN Error! Bookmark not defined
2 HƯỚNG NGHIÊN CỨU TIẾP THEO Error! Bookmark not defined
TÀI LIỆU THAM KHẢO 26
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
CHỮ VIẾT
3-DES Triple Data Encrytion Standard Áp dụng giải thuật DES 3 lần cho
mỗi khối dữ liệu AES Advanced Encryption Standard Hệ mật mã tiên tiến
CDP Conjugacy Decision Problem Vấn đề phân xử liên hợp
CDP Conjugacy Decomposition
CSP Conjugacy Search Problem Vấn đề tìm kiếm liên hợp
DES Data Encryption Standard Hệ mật mã chuẩn
DLP Discrete Logarithm Problem Vấn đề Logarit rời rạc
DSS Digital Signature Standard Chuẩn chữ ký số
DVS Designated Verifier Signature Chữ ký người thẩm định được chỉ
định ECC Elliptic curve cryptography Hệ mã hóa đường con Elliptic
ECDSA Elliptic Curve Digital Signature
Algorithm
Thuật toán ký trên EC EDLP Elliptic Discrete Logarithm
Problem
Vấn đề Logarith rời rạc trên EC
GCD Greatest Common Divisor Ước số chung lớn nhất
GCSP Generalized Conjugacy Search
IFP Integer Factorization Problem Vấn đề phân tích thừa số nguyên
LCM Least Common Multiple Bội số chung nhỏ nhất
Trang 5MUO M Mambo, K Usuda, E
Okamoto
Lược đồ ký uỷ nhiệm được đề xuất bởi M Mambo, K Usuda và E Okamoto
Adleman
Thuật toán mã hóa khóa công khai
do 3 tác giả Ron Rivest, Adi Shamir, Len Adleman đề xuất
SDVS Strong Designated Verifier
Signature
Chữ ký người thẩm định được chỉ định mạnh
SHA Secure Hash Algorithm Thuật toán hàm băm an toàn
TTP Trusted Third Party Thành phần thứ ba tin cậy
Trang 6Bookmark not defined
Hình 3.1 Lƣợc đồ chữ ký số với phần đính kèm Error! Bookmark not defined Hình 3.2 Lƣợc đồ chữ ký số khôi phục thông điệp Error! Bookmark not defined Hình 3.3 Sự trao đổi khóa k giữa Bob và Alice Error! Bookmark not defined Hình 3.4 Sự trao đổi khóa f giữa Bob và Alice Error! Bookmark not defined Hình 3.5 Sơ đồ xác nhận chữ ký số giữa Bob và Alice Error! Bookmark not defined Hình 3.6 Cách thứ hai để xác nhận chữ ký số Error! Bookmark not defined
Hình 4.1 Mô hình để P1,2 chứng tỏ với P3 quyền đƣợc thẩm định chữ ký Error! Bookmark not
defined
Trang 7MỞ ĐẦU
Trong các hoạt động thương mại điện tử cũng như việc xây dựng một nền hành chính điện tử, không thể không tính đến mức độ chính xác, an toàn của các bản thông báo điện tử được gửi đi và đến cũng như việc xác thực đối tượng gửi bản thông báo đó Điều này nói lên sự cần thiết của việc xác thực và chữ ký số
Hiện nay, Bộ Thương mại và Ngân hàng Nhà nước Việt Nam đã được Chính phủ cho phép triển khai chữ ký số và xác thực trong thanh toán điện tử từ năm
2006 Hiện nay, Hàn Quốc cũng đang giúp ta triển khai hạ tầng cơ sở khoá công khai PKI trong chính phủ điện tử
Tất cả kết quả trên chủ yếu là được chuyển giao từ bên ngoài Xét về lĩnh vực an ninh quốc gia, chúng ta sẽ đặt câu hỏi: mức độ an toàn của chữ ký số và tính xác thực của văn bản có đảm bảo yêu cầu của chúng ta không khi mà chúng ta phải nhập ngoại hoàn toàn dây chuyền công nghệ ?
Để giúp các nhà an ninh an toàn mạng có được cơ sở đánh giá mức độ an toàn của hệ thống đó, em chọn đề tài: “Tìm hiểu chữ ký số và ứng dụng của nó” làm đối tượng để nghiên cứu phục vụ cho luận văn của mình
Bố cục của luận văn gồm 4 chương:
Chương 1 Các khái niệm toán học cơ bản
Chương 2 Mật mã, hàm băm
Chương 3 Các mô hình chữ ký số
Chương 4 Chữ ký chống chối bỏ và ứng dụng
Trong đó, Chương 4 là trọng tâm của luận văn này Ở chương này, luận văn
đi sâu tìm hiểu mô hình chữ ký số chống chối bỏ, một số biến thể của mô hình này cũng như đưa ra một số trường hợp có thể áp dụng mô hình chữ ký này trong cuộc sống Trong chương này em cũng đưa ra chương trình demo bằng ngôn ngữ C# để
có thể hình dung rõ hơn về mô hình chữ ký có thể được áp dụng
Do khả năng còn hạn chế, đặc biệt là khả năng toán học cho nên mặc dù em
đã có nhiều cố gắng nhằm hoàn thành tốt nhất nhiệm vụ của mình nhưng không khỏi còn có nhiều thiếu sót Em rất mong được sự chỉ bảo, đóng góp của các thầy
cô giáo để luận văn này được hoàn thiện hơn
Em xin chân thành cảm ơn./
Trang 8CHƯƠNG 1: CÁC KHÁI NIỆM TOÁN HỌC CƠ BẢN
1 1 CÁC CẤU TRÚC ĐẠI SỐ
1.1.1 Nhóm
Cho một tập các phần tử hoặc “số” và một phép toán hai ngôi, mà kết quả cũng là một phần tử của tập hợp đó Tức là ứng với mỗi cặp phần tử trên tập đó, kết quả của phép toán cũng là một phần tử xác định của tập đã cho Tính chất này
ta gọi là tính đóng của phép toán trên tập đang xét, ta có định nghĩa sau đây về nhóm
Định nghĩa nhóm Tập hợp G cùng với phép toán „.’ đóng kín trên G được
gọi là nhóm, nếu nó thỏa mãn các tính chất sau với mọi phần tử a, b, c thuộc G:
- Tính kết hợp (a.b).c = a.(b.c)
- Có đơn vị e: e.a = a.e = a
- Có nghịch đảo a-1: a.a-1 = e
Nếu có thêm tính giao hoán a.b = b.a, thì gọi là nhóm Aben
Định nghĩa nhóm Cyclic
Giả sử cho trước một nhóm hữu hạn (G, ) (tức G là một tập hợp khác rỗng
và gồm một số hữu hạn phần tử) Khi đó, một phần tử a Є G được gọi là phần tử sinh của G nếu: ak = a.a.a a = e (k lần a)
và không tồn tại số nguyên dương h < k mà ah = e , trong đó số k là số phần
tử của tập hợp G
Một nhóm (G, ) có ít nhất một phần tử sinh thì được gọi là nhóm cyclic
1.1.2 Vành
Cho một tập R các “số” với hai phép toán là cộng và nhân Tập với hai phép
toán trên được gọi là vành, nếu hai phép toán thoả mãn các tính chất sau:
- Với phép cộng, R là nhóm Aben
- Với phép nhân, có: tính đóng ; tính kết hợp; tính phân phối đối với phép cộng a(b+c) = ab + ac
Nếu phép nhân có tính giao hoán thì tạo thành vành giao hoán
Nếu phép nhân có nghịch đảo và không có thương 0, thì nó tạo thành miền
nguyên
Trang 91.1.3 Trường
Trường là một tập hợp F với hai phép toán cộng và nhân, thoả mãn:
- Với phép cộng F là nhóm Aben
- Với phép nhân F trừ phần tử 0 là nhóm Aben
- a(b+c) = ab + ac (với mọi a, b, c Є )
1.2 SỐ HỌC TRÊN MODULO
1.2.1 Định nghĩa Modulo
Cho số tự nhiên n và số nguyên a
Định nghĩa: a mod n là phần dư dương khi chia a cho n
1.2.2 Các phép toán số học trên Modulo
Cho số n Ta muốn thực hiện các phép toán theo Modulo của n Ta có thể
thực hiện các phép toán trên các số nguyên như các phép cộng, nhân các số nguyên thông thường sau đó rút gọn lại bằng phép lấy Modulo hoặc cũng có thể vừa tính toán, kết hợp với rút gọn tại bất cứ thời điểm nào:
(a+b) mod n = [a mod n + b mod n] mod n (*)
(a.b) mod n = [a mod n b mod n] mod n (**)
Như vậy khi thực hiện các phép toán ta có thể thay các số bằng các số tương
đương theo Modulo n đó hoặc đơn giản hơn có thể thực hiện các phép toán trên các
đại diện của nó: Zn = { 0, 1, 2, 3, …, n-1 }
- Zn với các phép toán theo Modulo n tạo thành vành giao hoán có đơn vị Thực vậy tính đóng của các phép cộng và nhân dựa trên hai công thức (*) và (**) Các tính chất kết hợp, giao hoán và nghịch đảo được suy ra từ các tính chất tương ứng của các số nguyên
- Các chú ý về tính chất rút gọn:
+ Nếu (a+b) ≡ (a+c) mod n, thì b ≡ c mod n
+ Nhưng (ab) ≡ (ac) mod n, thì b ≡ c mod n chỉ khi nếu a là nguyên tố cùng
nhau với n
1.2.3 Tính chia hết của các số nguyên - Thuật toán Euclide
Tập hợp Z là đóng kín đối với các phép cộng, trừ và nhân, nhưng không
đóng kín đối với phép chia Cho hai số nguyên bất kỳ a và b, b 1 Thực hiện phép
chia a cho b ta sẽ được hai số q và r sao cho
a = b.q + r , 0 r b
Trang 10Số q được gọi là số thương của phép chia a cho b, ký hiệu a div b, và số r được gọi là số dư của phép chia a cho b, ký hiệu a mod b
Một số nguyên d được gọi là ước số chung của hai số nguyên a và b nếu da
và db Số nguyên d được gọi là ước số chung lớn nhất của a và b nếu d 0, d là ước số chung của a và b, và mọi ước số chung của a và b đều là ước số của d Ta
ký hiệu ước số chung lớn nhất của a và b là gcd(a,b)
Hai số a và b được gọi là nguyên tố với nhau, nếu chúng không có ước số chung nào khác 1, tức là nếu gcd(a,b) = 1 Một số nguyên n > 1 bất kỳ đều có thể
nguyên dương Nếu không kể thứ tự các thừa số nguyên tố, thì dạng biểu diễn đó là
duy nhất, ta gọi đó là dạng khai triển chính tắc của n
Định lý 1.1 Nếu b 0 và b a thì gcd(a ,b) = b
Nếu a = bq + r thì gcd(a,b) = gcd(b,r)
Một số nguyên m được gọi là bội số chung của a và b nếu am và bm Số m
được gọi là bội số chung bé nhất của a và b , và được ký hiệu là lcm(a ,b), nếu m
0, m là bội số chung của a và b , và mọi bội số chung của a và b đều là bội của m
Với hai số nguyên dương a và b ta có quan hệ lcm(a,b).gcd(a,b) = a.b
Thuật toán sau đây thực hiện tìm USCLN của hai số nguyên bất kỳ:
Thuật toán Euclide tìm ước số chung lớn nhất
INPUT: hai số nguyên không âm a và b , với a b
OUTPUT: ước số chung lớn nhất của a và b
1 Trong khi còn b 0, thực hiện:
1.1 đặt r a modb , a b , b r
2 Cho ra kết quả (a)
Ta biết rằng nếu gcd(a,b) = d, thì phương trình bất định
a.x + b.y = d
có nghiệm nguyên (x,y), và một nghiệm nguyên (x,y) như vậy có thể tìm được bởi
thuật toán Euclide mở rộng như sau:
Thuật toán Euclide mở rộng :
INPUT: hai số nguyên không âm a và b với a b
Trang 11OUTPUT: d = gcd(a,b) và hai số x,y sao cho a.x + b.y = d
1 Nếu b = 0 thì đặt d a , x 1, y 0, và cho ra (d,x,y)
: a a-1 = 1
Như vậy trên GL(p) ta có thể thực hiện các phép toán cộng, trừ, nhân, chia theo Modulo p
1.3.2 Tìm số nghịch đảo
Xét bài toán: nếu GCD(m, b) = 1, tìm nghịch đảo của b theo Modulo m Ta
mở rộng thuật toán Euclide vừa tìm ước chung lớn nhất của m và b, vừa tính nghịch đảo trong trường hợp GCD(m, b) = 1
Thuật toán Euclide mở rộng:
EXTENDED EUCLID(m, b)
1.(A1, A2, A3)=(1, 0, m);
(B1, B2, B3)=(0, 1, b)
Trang 12Xét tập các đa thức Pn có bậc nhỏ hơn hoặc bằng n:
Trên tập các đa thức đó có thể có một số cách khác nhau thực hiện các phép toán cộng và nhân đa thức:
- Có thể thực hiện các phép toán thông thường trên đa thức
- Các phép toán trên đa thức với các hệ số trên Modulo p
- Các phép toán trên đa thức với các hệ số trên Modulo p và sau đó lấy Modulo theo đa thức m(x)
Sau đây ta xét riêng trường hợp khi các phép toán cộng, nhân đa thức được
thực hiện với phép lấy Modulo theo một đa thức nào đó
1.3.4 Phép toán đa thức với Modulo đa thức
Cho đa thức g(x) bậc n và các hệ số của các đa thức xét trong mục này lấy trong trường Galoa GF(p) với p là số nguyên tố Viết đa thức f(x) dưới dạng: f(x) = q(x) g(x) + r(x)
trong đó r(x) là phần dư khi chia f(x) cho g(x) Rõ ràng bậc của r(x) sẽ nhỏ hơn bậc của g(x) Ta viết r(x) = f(x) mod g(x)
Nếu không có phần dư, tức là r(x) = 0, ta nói g(x) là ước của f(x) hay g(x) chia hết f(x) hay f(x) chia hết cho g(x)
Trong trường hợp g(x) không có ước ngoài 1 và chính nó, thì ta nói g(x) là
đa thức nguyên tố hoặc không rút gọn được
Trang 13Việc tìm ước chung lớn nhất của hai đa thức được trình bày trong thuật toán tương tự như Euclide như sau:
Tìm đa thức ước chung lớn nhất GCD(a(x), b(x))
- c(x) = GCD(a(x), b(x)) nếu c(x) là đa thức bậc lớn nhất mà chia hết cả a(x),b(x)
- Có thể điều chỉnh thuật toán Euclid‟s Algorithm để tìm nó:
Phép toán đa thức với Modulo đa thức
Cho g(x) là đa thức nguyên tố bậc n Khi đó tập các đa thức bậc nhỏ hơn bằng n với các phép toán cộng và nhân đa thức theo Modulo của đa thức nguyên
tố g(x) tạo thành trường hữu hạn, gọi là trường Galoa và ký hiệu là GL(pn
)
Trường Galoa GL(2n) gồm 2n phần tử Muốn trường Galoa có số phần tử lớn tuỳ ý, ta chỉ việc tăng và lấy n thích hợp Đặc biệt việc tính toán các phép toán cộng trừ, nhân, chia trên đó rất nhanh và hiệu quả trên các thao tác của các thiết bị
1.4.2 Phân tích ra thừa số nguyên tố
Một trong những bài toán cơ bản của số học là phân tích ra thừa số nguyên
tố số a, tức là viết nó dưới dạng tích của các số nguyên tố Lưu ý rằng phân tích là
bài toán khó hơn rất nhiều so với bài toán nhân các số để nhận được tích
Ta có kết luận, mọi số nguyên dương đều có thể phân tích duy nhất thành tích các lũy thừa của các số nguyên tố:
Trang 14bậc lũy thừa nhỏ nhất trong hai phân tích của hai số đó
1.4.4 Định lý Ferma (Định lý Ferma nhỏ)
ap-1 mod p = 1
trong đó p là số nguyên tố và a là số nguyên bất kỳ khác bội của p: GCD(a,p) = 1
Hay với mọi số nguyên tố p và số nguyên a không là bội của p, ta luôn có ap
= a mod p Công thức trên luôn đúng, nếu p là số nguyên tố, còn a là số nguyên
Muốn tính Ф(n) việc đếm số các số ngƣyên tố cùng nhau với n và nhỏ hơn
n đƣợc loại bỏ vì đây là bài toán tốn nhiều công sức Nói chung có thể tính hàm Ơle của một số dựa trên biểu thức phân tích ra thừa số của số đó
- Dễ dàng thấy, nếu p là số nguyên tố Ф(p) = p-1
- Nếu p và q là hai số nguyên tố khác nhau, thì có thể chứng minh đƣợc rằng: Ф(p.q) = (p-1)(q-1)