đề tài làm chi tiết, rõ ràng
Trang 1BÁO CÁO ĐỒ ÁN: MÔN HỌC BẢO MẬT
THÔNG TIN
ĐỀ TÀI: CHỮ KÝ SỐ
Trang 2
Nhóm DSII [BDHT] Page 1
BÁO CÁO ĐỒ ÁN MÔN HỌC BẢO MẬT THÔNG TIN
(ĐỀ TÀI CHỮ KÝ SỐ)
1 406170001 Huỳnh Văn Bách bach.huynhvan@gmail.com 01698815297
2 406170006 Lê Kiều Lệ Diễm lekieulediem@gmail.com 0983728190
3 406170015 Nguyễn Thị Tuyết Hải nguyenthituyethai@gmail.com 0938170788
I Tổng quan về chữ ký số
II Các thuật toán tạo chữ ký số và so sánh
III Lý thuyết về cách tấn công chữ ký số
IV Giới thiệu về Rainbow Crack Tool
V Demo dùng Rainbow Crack Tool để tấn công chữ ký số
VI Ứng dụng chữ ký số trong thực tế tại Việt Nam
1 Sự cần thiết của chữ ký số
Cơ chế xác thực thông tin bảo vệ hai bên trao đổi thông điệp khỏi bên thứ ba Tuy nhiên
cơ chế này không bảo vệ được một bên khi bên kia cố ý vi phạm, ví dụ như:
- A có thể làm giả một thông điệp và tuyên bố rằng thông điệp này do B gửi A chỉ
cần tạo một thông điệp và thêm vào mã xác thực sử dụng khóa mà A và B chia sẻ
Trang 3số tương tự như chữ ký tay, phải có các tính chất sau:
Phải xác nhận tác giả và ngày giờ, thời gian ký
Phải xác nhận nội dung tại thời điểm ký
Phải được xác minh bởi bên thứ 3 để giải quyết tranh chấp
Dựa trên nền tảng các tính chất trên, chúng ta có thể hình thành các yêu cầu cho chữ ký
số như sau:
Chữ ký số là một khuôn mẫu các bit phụ thuộc vào thông điệp được ký
Chữ ký số phải sử dụng những thông tin độc lập với người gửi để ngăn chặn giả mạo và từ chối hành vi
Phải tương đối dễ dàng để tạo ra chữ ký số
Phải tương đối dễ dàng để nhận ra và xác minh chữ ký số
Không thể giả mạo được một chữ ký số, tức là tạo một thông điệp mới cho một chữ ký đã tồn tại hoặc tạo một chữ ký giả cho một thông điệp cho trước
Có thể sao chép được chữ ký số để lưu trữ
2 Khái niệm chữ ký số
Chữ ký số là một cơ chế xác thực cho phép người tạo thông điệp có thể thêm vào 1 đoạn
mã có vai trò như là một chữ ký Chữ ký số được tạo ra bằng cách lấy mã băm của thông điệp và mã hóa bằng khóa riêng
- Chữ kí số trong máy tính được biểu diễn bằng 1 chuỗi bit
- Chữ kí số được tính tóan dựa trên các qui luật và các thông số cho phép sự đồng nhất của chữ kí và tòan vẹn của dữ liệu được xác nhận
- Chữ kí số được phát sinh cả cho dữ liệu lưu trữ và truyền đi
- Chữ kí số được tạo ra bằng khóa riêng ( private key) và xác nhận chữ kí bằng khóa chung tương ứng (public key)
3 Kỹ thuật tạo chữ ký số
Trang 4Nhóm DSII [BDHT] Page 3
i) Ký trực tiếp:
Chữ ký số trực tiếp chỉ liên quan tới các bên tham gia (nguồn, đích) Giả định rằng bên đích biết khóa chung của nguồn Một chữ ký số có thể được tạo ra bằng cách mã hóa toàn
bộ thông điệp bằng khóa riêng của người gửi:
hoặc mã hóa mã băm của thông điệp bằng khóa riêng của người gửi
Tính bí mật có thể có được bằng cách mã hóa toàn bộ thông điệp cộng chữ ký bằng khóa chung của người nhận (public-key encryption) hoặc khóa bí mật được chia sẻ (Symmetric encryption)
Trang 5Nhóm DSII [BDHT] Page 4
Trong trường hợp tranh chấp, một bên thứ ba cần phải xem được thông điệp và chữ ký của nó Nếu chữ ký được tính toán theo một thông điệp đã được mã hóa thì bên thứ ba cần đến khóa giải mã để đọc được thông điệp gốc
Tất cả dạng ký trực tiếp được nêu trên có một điểm yếu chung: Tính hợp pháp của dạng
ký này đều phụ thuộc vào sự bảo mật khóa riêng của người gửi Nếu người gửi muốn phủ nhận hành vi gửi thông điệp của mình, người gửi có thể tuyên bố rằng khóa riêng của mình bị mất hay bị đánh cắp và có ai đó đã giả mạo chữ ký của mình Có thể sử dụng các
cơ chế điều khiển quản lý liên quan tới bảo mật khóa riêng để ngăn chặn hoặc ít nhất là giảm đi nguy cơ này, nhưng mối đe dọa vẫn còn ít nhất là một mức độ nào đó
Một mối nguy hiểm khác là khóa riêng có thể bị đánh cắp thực sự từ X vào thời điểm T Đối thủ có thể gửi một thông điệp ký bằng chữ ký của X và thời gian trước hoặc bằng T ii) Ký qua trọng tài
Vấn đề của ký trực tiếp có thể giải quyết bằng cách sử dụng một trọng tài
Có nhiều dạng ký qua trọng tài khác nhau Mỗi thông điệp gửi từ bên X tới bên nhận Y đi qua một trọng tài A, A kiểm tra chữ ký và thông điệp gửi tới Y kèm theo xác nhận thông điệp đã được kiểm tra bởi trọng tài Sự hiện diện của A giải quyết vấn đề thông điệp có thể bị phủ nhận bởi X
Trọng tài đóng một vai trò cốt yếu trong dạng này, và tất cả các bên phải có sự tin tưởng tuyệt đối vào cơ chế làm việc của trọng tài
Giả định rằng người gửi X và trọng tài A chia sẻ khóa bí mật Kxa, Y và trọng tài A chia sẻ khóa bí mật Kay X tạo ra một thông điệp M và tính toán mã băm của nó là H(M) Sau đó
X chuyển thông điệp và chữ ký tới A Chữ ký bao gồm một định danh IDX của X cộng với mã băm, tất cả được mã hóa dùng khóa Kxa A giải mã chữ ký và kiểm tra mã băm để xác thực thông điệp Sau đó A chuyển thông điệp tới Y, mã hóa bằng Kay Thông điệp bao gồm định danh IDX, thông điệp gốc từ X, chữ ký và nhãn thời gian Y có thể giải mã
Trang 6Nhóm DSII [BDHT] Page 5
để khôi phục thông điệp và chữ ký Nhãn thời gian chỉ ra rằng thông điệp đúng thời điểm
và không phải là phát lại
(1) X A: M||E(Kxa, [IDX||H(M)])
(2) A Y: E(Kay, [IDX||M||E(Kxa, [IDX||H(M)])||T])
(a) Mã hóa thông thường, trọng tài có thể thấy được nội dung thông điệp
(1) X A: IDX||E(Kxy, M)||E(Kxa, [IDX||H(E(Kxy, M))])
(2) A Y: E(Kay,[IDX||E(Kxy, M)])||E(Kxa, [IDX||H(E(Kxy, M))||T])
(b) Mã hóa thông thường, trọng tài không thấy được nội dung thông điệp
(1) X A: IDX||E(PRx, [IDX||E(PUy, E(PRx, M))])
(2) A Y: E(PRa, [IDX||E(PUy, E(PRx, M))||T])
(c) Mã hóa bất đối xứng, trọng tài không thấy được nội dung thông điệp
Trang 7Nhóm DSII [BDHT] Page 6
Thuật toán ElGamal hiện nay trên thực tế hiếm khi được sử dụng Phiên bản của ElGamal
do NSA phát triển, được biết đến và sử dụng rộng rãi hơn hiện nay là DSA DSA cho phép độ dài của chữ ký ngắn hơn ElGamal
Các bước tạo, ký và xác minh thực hiện như sau:
i) Tạo các tham số
Bên người ký hoặc một bên thứ 3 đáng tin cậy nào đó chọn một số nguyên tố lớn p
Chọn g là một số ngẫu nhiên thuộc nhóm Z *
p (g là một primitive root modulo p)
ii) Tạo khóa
Chọn một khóa bí mật k với 1 ≤ k ≤ p
Tính toán giá trị v = g k
(mod p)
Công bố khóa công khai là (p,g,v)
iii) Ký lên một thông điệp D, với D là 1 số nguyên thỏa 1<D<p
Chọn một số nguyên e thỏa 1<e<p và gcd(e, p-1) =1
≡ v (mod p) rồi giả mạo chữ ký của bên ký Tuy nhiên đây không phải
là cách duy nhất để giả mạo chữ ký ElGamal Hacker có thể làm như sau: Cho biết giá trị
v và g D , cần tìm một số nguyên x và y thỏa mãn v x
x y ≡ g D (mod p)
Thấy rằng x xuất hiện ở cả cơ số và số mũ, có thể viết lại biểu thức trên thành
log g (v)x + y log g (x) ≡ D (mod p − 1)
Nếu Hacker có thể giải quyết bài toán logarit thì có thể chọn một giá trị x bất kỳ, tính
toán log g (v) và log g (x) rồi giải phương trình trên tìm y
Trang 8Nhóm DSII [BDHT] Page 7
Chữ ký ElGamal có chiều dài vào khoảng 2log2(p) bits Để bảo đảm an toàn khi hacker tấn công vào bài toán logarit ngược, số nguyên tố p thường được chọn vào khoảng 1000
và 2000 bits, vậy chữ ký nằm trong khoảng 2000 và 4000 bits
2 DSA (Digital Signature Algorithm)
Các thao tác tạo khóa, ký và xác minh thực hiện như sau:
i) Tạo khóa
Chọn một số ngẫu nhiên p đủ lớn sao cho 2L-1
<p<2L và 512 ≤ L≤ 1024 với L là bội số của 64
Chọn số đủ lớn q dài 160 bits sao cho p≡1(mod q)
Tính số nguyên g = h(p-1)/q
mod p, trong đó 1<h<p-1 và thỏa h(p-1)/q mod p>1
Chọn khóa bí mật của user là một số nguyên x thỏa 0<x<q
Tính khóa công khai của user là một số nguyên y sao cho y = gx
mod p
Tạo số bí mật ứng k với từng message: k là một số nguyên thỏa 0<k<q
ii) Thao tác ký lên thông điệp M
Tính giá trị r = (gk
mod p) mod q
Tính s = [k-1(H(M) + x.r] mod q
Chữ ký trên thông điệp M là cặp (r,s)
iii) Thao tác xác minh chữ ký
Để xác minh thông điệp M’ với chữ ký (r’,s’)
Trang 9Nhóm DSII [BDHT] Page 8
So sánh ElGamal và DSA: DSA là hệ thống được phát triển từ ElGamal nên các phép tính toán gần tương tự như nhau, tuy nhiên khi tính toán giá trị r của chữ ký:
Đối với ElGamal, giá trị r tính bằng: r = g e
(mod p) nên r nằm trong khoảng từ 1 đến p-1
Đối với DSA, giá trị r = (g k
mod p) mod q nên r nằm trong khoảng 1 đến q-1
(e và k đều là những số ngẫu nhiên ứng với các message khác nhau)
Từ 2 công thức trên thấy rằng độ dài chữ ký của DSA là nhỏ hơn ElGamal
Một điểm ưu việt của DSA là có thể tăng tốc độ tính toán chữ ký Ngoài giá trị hàm băm H(M) của thông điệp được sử dụng để tính giá trị s thì tất cả các tham số còn lại đều có thể tính trước và lưu trữ để sử dụng lúc cần (ví dụ như khi chọn được giá trị k ngẫu nhiên phù hợp thì có thể lấy các giá trị k-1, r… đã tính trước) Điều này làm cho tốc độ tính toán chữ ký được tăng lên
DSA được sử dụng trong chuẩn chữ ký số DSS (Digital Signature Standard)
3 RSA
Thuật toán RSA được phát minh bởi Rivest, Shamir và Adelman Việc sử dụng thuật toán này để tạo khóa, xác minh khóa được chỉ rõ trong chuẩn American National Standard (ANS) X9.31 và Public Key Cryptography Standard (PKCS) #1
Trang 10 Không giống như DSA, RSA không thể sử dụng bởi nhiều hơn một người Nếu 2
người muốn dung RSA thì phải cùng tính khóa chung, khóa riêng và không được công khai
Độ bảo mật của RSA phụ thuộc vào chiều dài của phép modulo và tính bảo mật
của hàm băm
Thuật tóan RSA không dùng các thông số miền (domain parameters), chỉ có DSA
và ECDSA dùng , thông số miền được chính nó hay các tồn tại khác phát sinh
4 ECDSA(Elliptic Curve Digital Signature Algorithm)
EDSA được đề xuất đầu tiên vào năm 1992 bởi Scott Vanstone, và được chấp nhận bởi ISO 1998, ANSI 1999, IEEE 2000
3 r = x1 (mod n), trong đó (x1, y1) = kQ Nếu r = 0 quay lại bước 2
4 s = k-1(e + dr) (mod n) Nếu s = 0 quay lại bước 2
Trang 11Nhóm DSII [BDHT] Page 10
3 w = s-1 (mod n)
4 u1 = ew (mod n)
5 u2 = rw (mod n)
6 (x1, y1) = u1*G + u2*Q
7 Chữ ký hợp lệ nếu r = x1(mod n), ngược lại là không đúng
Đánh giá độ an toàn và ứng dụng:
Chiều dài khóa công khai của ECDSA nhỏ hơn DSA nên thuận tiện trong truyền thông Các phép toán trong thuật toán ECDSA cũng thực hiện nhanh hơn RSA, DSA Chính vì những lợi ích về chiều dài chữ ký, băng thông, tính toán nên ECDSA là sự lựa chọn hấp dẫn hơn cho XML, smart card, máy gia tốc phần cứng, các ứng dụng kinh tế
5 GGH
GGH là viết tắt của Goldreich – Goldwasser – Halevi, một lược đồ ký số được đề xuất năm 1995 và công bố năm 1997, dựa trên việc giải quyết bài toán vecto gần nhất (closest vector problem – CPV) trong 1 lưới (lattice) Người ký mô tả sự biết đến vecto cơ sở tốt (good basis) của lưới bằng cách dùng nó để giải quyết CPV trên 1 điểm đại diện cho 1 thông điệp, người xác minh sử dụng một vecto cơ sở xấu (bad basis) cho cùng 1 lưới để xác minh chữ ký dưới hình thức xem xét chữ ký có phải thực sự là một điểm trên lattice
và đủ gần với điểm thông điệp (message point) hay không
6 NTRU(n-th degree truncated polynomial ring)
Tại CRYPTO ’96, một hệ thống mã hóa bất đối xứng mới có hiệu quả cao được giới thiệu, đó là NTRU Bên dưới NTRU là một bài toán khó về tìm kiếm một vecto ngắn trong một lưới cố định Giao thức xác thực và lược đồ ký số dựa trên thuật toán mã hóa bất đối xứng NTRU được gọi là NSS (NTRU Signature Scheme) NTRUSign được chuẩn hóa bởi IEEE P1363
Chọn các tham số NTRU: (N, q, d) trong đó N là số nguyên tố; q, p là 2 số nguyên
tố cùng nhau và q luôn lớn hơn d
i) Tạo khóa:
Chọn đa thức f, g Є T (d +1,d)
Tìm F, G thỏa: f * G – g * F = q
Tính h = f-1 * g (mod q)
Trang 12) phép toán Các phép toán này cũng dễ dàng thực hiện bởi phần cứng và phần mềm
Bị tấn công malleableschemes Tức là tạo ra một cặp thông điệp – chữ ký chưa bao giờ được tiến hành bởi người ký hợp pháp Chúng ta có thể tìm thấy một chữ
ký thứ 2 của cùng một thông điệp Trong trường hợp này người ta không thể phân biệt được chữ ký thứ 2 được tạo ra từ người biết khóa bí mật hay từ một kẻ giả mạo, và để tìm ra đâu là thông điệp của người ký hợp pháp thì người đó không còn cách nào khác là phải đưa ra khóa bí mật của mình Dù vậy, kẻ tấn công vẫn không thể thay đổi được nội dung của thông điệp
Có nhiều phương pháp tấn công chữ ký số khác nhau, ở đây do giới hạn về thời gian nên nhóm chỉ nghiên cứu tấn công vào chữ ký số trực tiếp không thông qua trọng tài
Tấn công chữ ký nhằm 2 mục tiêu:
Giả mạo chữ ký (forgery attack):
Trang 13Một cách tấn công khác là nhằm vào điểm yếu của các hàm băm (hash function) Hàm băm có chức năng biến đổi khối thông tin gốc độ dài bất kỳ thành khối thông tin có độ dài cố định gọi là mã băm Các tính chất một chiều, không tìm được đụng độ yếu và đụng
độ mạnh của nhiều hàm băm hiện nay đã bị phá vỡ bởi phân tích toán học, các công cụ và máy tính
2 dạng tấn công hàm băm thông dụng là Preimage attack và Collision attack Trong tấn công dạng Preimage, một người tấn công sẽ cố gắng tìm ra một thông điệp M nào đó mà
từ đó sinh ra một mã băm H(M) cho trước Trong collision attack, người tấn công sẽ cố gắng tìm kiếm 2 thông điệp có cùng mã băm
Các hàm băm tìm thất đụng độ đã được công bố là SHA-0, MD4, MD5, HAVAL-128, và hàm băm gần đây nhất bị phá vỡ là SHA-1
i) Tính chất đụng độ của hàm băm MD5
Chứng minh khả năng tấn công MD5 bằng tool:
-Ta có kết quả từ hàm băm Md5 như sau:
Nếu Md5(x) =Md5(y) thì Md5( x+q)= Md5( y+q)
Trang 14, 0x31 , 0x56 , 0x34 , 0x8f , 0x5b , 0xae , 0x6d , 0xac , 0xd4 , 0x36 , 0xc9 , 0x19 , 0xc6 , 0xdd , 0x53 , 0xe2 , /**/0xb4 , 0x87 , 0xda , 0x03 , 0xfd , 0x02 , 0x39 , 0x63 , 0x06 , 0xd2 , 0x48 , 0xcd , 0xa0 , 0xe9 , 0x9f , 0x33 , 0x42 , 0x0f , 0x57 , 0x7e , 0xe8 , 0xce , 0x54 , 0xb6 , 0x70 , 0x80 , /**/0xa8 , 0x0d , 0x1e , 0xc6 , 0x98 , 0x21 , 0xbc , 0xb6 , 0xa8 , 0x83 , 0x93 , 0x96 , 0xf9 , 0x65 ,/**/ 0x2b , 0x6f , 0xf7 , 0x2a , 0x70}
staticbyte[] vec2 =
{
0xd1 , 0x31, 0xdd , 0x02 , 0xc5 , 0xe6 , 0xee , 0xc4 , 0x69 , 0x3d , 0x9a , 0x06 , 0x98 , 0xaf , 0xf9 , 0x5c, 0x2f , 0xca , 0xb5 , /**/0x07 , 0x12 , 0x46 , 0x7e , 0xab , 0x40 , 0x04 , 0x58 , 0x3e , 0xb8 , 0xfb , 0x7f , 0x89 , 0x55 , 0xad , 0x34 , 0x06 , 0x09 , 0xf4 , 0xb3 , 0x02 , 0x83 , 0xe4 , 0x88 , 0x83 , 0x25 ,/**/ 0xf1 , 0x41 , 0x5a , 0x08 , 0x51 , 0x25 , 0xe8 , 0xf7 , 0xcd , 0xc9 , 0x9f, 0xd9 , 0x1d , 0xbd , /**/0x72 , 0x80 , 0x37 , 0x3c , 0x5b, 0xd8 , 0x82 , 0x3e , 0x31 , 0x56 , 0x34 , 0x8f , 0x5b , 0xae , 0x6d , 0xac , 0xd4 , 0x36
, 0xc9 , 0x19 , 0xc6 , 0xdd , 0x53 , 0xe2 , /**/0x34 , 0x87 , 0xda , 0x03 , 0xfd , 0x02 , 0x39 , 0x63 , 0x06 , 0xd2 , 0x48 , 0xcd , 0xa0, 0xe9 , 0x9f , 0x33 , 0x42 , 0x0f , 0x57 , 0x7e , 0xe8 , 0xce , 0x54 , 0xb6 , 0x70 , 0x80 , /**/ 0x28 , 0x0d , 0x1e, 0xc6 , 0x98 ,
Trang 15Nhóm DSII [BDHT] Page 14
0x21 , 0xbc , 0xb6 , 0xa8 , 0x83 , 0x93 , 0x96 , 0xf9 , 0x65 , /* flag byte*/0xab , 0x6f , 0xf7 , 0x2a , 0x70 }
- Mỗi vecto có kích thước 128 bye
chương trình tấn công sau theo format nhi phân , với đuôi file mở rộng là bin , tạo
ra 2 file goodexe và evilexe từ 2 vecto trên, rối từ đó sinh ra 2 file good.bin và evil.bin, 2 file này có cùng giá trị Md5 như hình ảnh sau:
-Khi thêm lương dữ liệu trong goodexe.exe vào evilexe.exe thì giá trị hàm băm thay đổi nhưng hash(good.bin)=hash(evil.bin)
- Ngược lại khi thêm lượng dữ liệu trong evilexe.exe vào file good thì giá trị hàm băm cũng thay đổi nhưng hash(good.bin)=hash(evil.bin)