Đối tƣợng và phạm vi nghiên cứu Đối tƣợng nghiên cứu: Nghiên cứu các giải pháp mã hóa để bảo mật thông tin và những phương pháp, kỹ thuật tạo chữ kí số trên các tài liệu, văn bản điện
Trang 1NGUYỄN THÀNH CHUNG
CHỮ KÝ SỐ VÀ ỨNG DỤNG BẢO MẬT
TRANG THÔNG TIN ĐIỆN TỬ
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái Nguyên - 2013
Trang 2NGUYỄN THÀNH CHUNG
CHỮ KÝ SỐ VÀ ỨNG DỤNG BẢO MẬT
TRANG THÔNG TIN ĐIỆN TỬ
Chuyên ngành : Khoa học máy tính
Mã số : 60.48.01
LUẬN VĂN THẠC SĨ KHOA HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS ĐOÀN VĂN BAN
Thái Nguyên - 2013
Trang 3Tôi cam đoan luận văn này là do bản thân tự nghiên cứu và thực hiện theo sự
hướng dẫn khoa học của PGS.TS Đoàn Văn Ban
Tôi hoàn toàn chịu trách nhiệm về tính pháp lý quá trình nghiên cứu khoa học của luận văn này
Thái Nguyên, ngày tháng 8 năm 2013
Người Cam Đoan
Nguyễn Thành Chung
Trang 4LỜI CẢM ƠN
Trước tiên tôi bầy tỏ lời cảm ơn chân thành đến các Thầy, Cô giáo đã giảng dạy, hướng dẫn và giúp đỡ tôi trong thời gian học tập và nghiên cứu hoàn thành luận văn này
Xin được bầy tỏ lòng biết ơn sâu sắc tới Thầy giáo PGS.TS Đoàn Văn Ban đã tận tình hướng dẫn, giúp đỡ và đóng góp cho tôi nhiều ý kiến quí báu
để hoàn thành luận văn này
Xin chân thành cảm ơn các Thầy, Cô giáo Trường Đại học Công nghệ thông tin & truyền thông Thái Nguyên và Viện Công nghệ thông tin đã giảng dạy, giúp đỡ và tạo điều kiện thuận lợi cho tôi trong thời gian học tập tại Trường
Tôi xin gửi lời cảm ơn đến các bạn đồng nghiệp và các bạn học viên lớp Cao học K10A khóa 2011 – 2013 đã giúp đỡ và tạo điều kiện thuận lợi cho tôi trong quá trình học tập và làm luận văn
Cuối cùng, xin chân thành cảm ơn gia đình và bạn bè đã động viên, quan tâm, giúp đỡ tôi hoàn thành khóa học và luận văn
Trang 5MỞ ĐẦU
1 Lý do chọn đề tài
Trong sự phát triển không ngừng của ngành Công nghệ thông tin kéo theo là rất nhiều ứng dụng của nó vào đời sống của con người, tạo cho chúng ta sự thoái mái trong việc giao tiếp, trao đổi thông tin, tất cả những sự việc đều được cập nhật một cách nhanh chóng trên các phương tiện truyền thông Mọi thông tin của cá nhân, tập thể, doanh nghiệp, hay thậm chí của các bộ, ban ngành các cấp đều có thể được đưa lên mạng Internet Làm thế nào để có thể khẳng định những thông tin đó
là của ai? Để giải quyết vấn đề này không thể sử dụng con dấu hay chữ ký thông thường điều này dẫn đến sự ra đời của chữ ký số
Mặt khác sự bùng nổ phương thức truyền thông tin thông qua Internet và các phương tiện truyền thông khác đã đưa chúng ta đến việc cần phải đối mặt với việc bảo mật những thông tin cá nhân, thông tin riêng tư, các thông tin cá nhân riêng tư
có thể bị thay đổi khi đưa lên Internet
Vấn đề an toàn, an ninh mạng không mới nhưng càng ngày càng trở nên quan trọng cùng với sự phát triển theo chiều rộng và chiều sâu của xã hội thông tin
Ví dụ đơn giản như gần đây rất nhiều trang web, các hệ thống mạng ở Việt nam bị hacker tấn công gây hậu quả đặc biệt nghiêm trọng Việc xây dựng một số thuật toán tối ưu hóa nhằm tăng hiệu quả của chương trình bảo mật thông tin và ứng dụng vào chữ ký số là cơ sở nội dung trong đề tài luận văn này
2 Đối tƣợng và phạm vi nghiên cứu
Đối tƣợng nghiên cứu:
Nghiên cứu các giải pháp mã hóa để bảo mật thông tin và những phương pháp, kỹ thuật tạo chữ kí số trên các tài liệu, văn bản điện tử để xác thực nguồn gốc tài liệu hay văn bản của người gửi
Các hệ mật mã khóa công khai, trong đó hệ mật mã RSA được sử dụng làm đối tượng nghiên cứu chính của đề tài nhằm phát hiện các phép xử lý toán học cần tối ưu Từ các kết quả thu được bước đầu đề tài đưa ra một cách xây dựng thử nghiệm vào chữ ký số áp dụng được các kết quả tối ưu hóa
Trang 6Luận văn sẽ tập trung nghiên cứu và làm rõ hơn về ý tưởng, cơ sở toán học, thuật toán và độ phức tạp của mã hóa nói chung và của mã hóa công khai nói riêng
Phạm vi nghiên cứu:
Đề tài thực hiện tối ưu hóa với một số phép tính toán với số nguyên lớn Ứng dụng thử nghiệm trong một hệ mã nhằm so sánh hiệu năng xử lý của hệ mã trước và sau khi tối ưu
Nghiên cứu các tài liệu về mã hóa, mật mã của các tác giả trong và ngoài nước, các bài báo, thông tin trên Internet,
Nghiên cứu ngôn ngữ lập trình hướng đối tượng Visual basic 6, Visual C#
2008 để viết một ứng dụng nhỏ về chữ ký số
3 Những nội dung chính nghiên cứu chính
Luận văn sẽ được chia thành 3 chương, phần kết quả và hướng phát triển
CHƯƠNG 1: CƠ SỞ TOÁN HỌC CỦA HỆ MẬT MÃ
CHƯƠNG 3: BẢO MẬT TRANG THÔNG TIN ĐIỆN TỬ
3.1 Giới thiệu trang thông tin điện tử
3.2 Bảo mật, an toàn thông tin
3.3 Bảo đảm hệ thống khỏi sự xâm nhập phá hoại từ bên ngoài
3.4 Giao thức bảo mật ứng dụng chữ ký số cho các văn bản pháp quy trên
Trang 73.5 Cài đặt thực nghiệm và đánh giá
e k Thuật toán mã hoá
d k Thuật toán giải mã
gcd Ước chung lớn nhất
lcm Bội chung nhỏ nhất
Sig k Thuật toán ký
Ver k Thuật toán kiểm tra chữ ký
Trang 8CHƯƠNG 1: CƠ SỞ TOÁN HỌC CỦA HỆ MẬT MÃ
Trong chương này tôi xin trình bày một số cơ sở toán học, các khái niệm hệ
mã hóa dữ liệu, phân loại hệ mã hóa các ưu nhược điểm của hệ mã hóa, một số hệ
mã hóa khóa công khai, để xác định tính toàn vẹn an toàn dữ liệu là cơ sở hình thành và xây dựng các thuật toán mã hóa
1.1 Cơ sở toán học
1.1.1 Ướ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ố đó
Một ước chung d > 0 của các số nguyên a1, a2, …, an, trong đó 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 (UCLN) của a1, a2, …, an Ký hiệu d = gcd (a1, a2, …, an) hay d = UCLN(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
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 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 a1, a2, …, an Ký hiệu m = lcm (a1, a2, …, an) hay m = BCNN (a1, a2, …, an)
Ví dụ: Cho a =20, b =25, gcd (20, 25) = 5, lcm (20, 25) = 100
Hai số 20 và 13 là số nguyên tố cùng nhau, vì gcd (20, 13) = 1
Thuật toán Euclide tìm ước 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:
đặt r ← a mod b, a ←b , b ← r
2 Cho ra kết quả (a)
Ví dụ: Tìm gcd (528, 234) bằng thuật toán Euclide
Trang 9Ta 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
OUTPUT: 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)
3 Trong khi còn b > 0, thực hiện:
3.1 q←a div b, r ← a mod b , x ← x
2 , và cho ra kết quả (d, x, y)
Ví dụ: Dùng thuật toán Euclide mở rộng tính gcd (528, 234)
Trang 10Khi kết thúc các vòng lặp (ứng với giá trị b = 0), thực hiện tiếp lệnh 4 ta được kết quả d = 6, x = 4 và y = -9, cặp số (4, -9) thoả mãn: 528*4 + 234*(-9) = 6
1.1.2 Số nguyên tố
Số nguyên tố là số tự nhiên lớn hơn 1 và chỉ có hai ước là 1 và chính nó
Số nguyên tố có vai trò và ý nghĩa to lớn trong số học và lý thuyết mật mã Bài toán kiểm tra tính nguyên tố của một số nguyên dương n và phân tích số n thành
thừa số nguyên tố là các bài toán rất được quan tâm “Phương pháp kiểm tra tính
nguyên tố” Phương pháp „cổ điển‟ và phương pháp „xác suất‟
1.1.3 Quan hệ đồng dư [3,4]
Cho các số nguyên a, b, m (n > 0) Ta nói rằng a và b “đồng dư” với nhau
theo modulo m, nếu chia a và b cho m nhận được cùng một số dư (hoặc a – b chia hết cho m) Ký hiệu: a ≡ b (mod m)
và chỉ khi d = gcd (a,m ) / b, và khi đó nó có đúng d nghiệm theo modulo m
Bây giờ ta xét hệ thống các phương trình đồng dư tuyến tính
m a
x
m a
x
mod
mod
mod
2 2
1 1
Trang 11Định lý: Giả sử n > 1 là số nguyên dương và m1, m2, , mn là n số nguyên lớn hơn 1 đôi một nguyên tố cùng nhau Đặt M = m1*m2* *mn Cho trước các số nguyên a1, a2, , an khi đó tồn tại duy nhất một số nguyên x (0x<M) thoả mãn các phương trình đồng dư sau đây:
m a
x
m a
x
mod
mod
mod
2 2
1 1
Bản chất của bài toán Hàn Tín điểm binh là việc giải hệ phương trình đồng dư bậc nhất:
m a
x
m a
x
mod
mod
mod
2 2
1 1
Hệ phương trình đồng dư nói trên có nghiệm duy nhất theo modun
M = m1*m2* *mk, trong đó m1, m2, , mn đôi một nguyên tố cùng nhau Trong bài toán Hàn Tín n = 3 và m1 = 3, m2 = 5, m3 = 7
Ta xét phương trình đồng dư bậc hai có dạng đơn giản sau:
x 2 ≡ a (mod m)
Trong đó m là một số nguyên dương, a là số nguyên với gcd (a,m) =1, và x là
ẩn số Phương trình đó không phải bao giờ cũng có nghiệm, khi nó có nghiệm thì ta nói a là một thặng dư bậc hai mod m:
Bây giờ ta xét việc giải phương trình đồng dư bậc hai: x2
≡ a (mod m) (2)
trong một trường hợp đặc biệt khi m = p là số nguyên tố có dạng p = 4*n +3, tức p đồng dư với 3 theo mod 4, và a là một số nguyên nguyên tố với p Theo tiêu chuẩn Euler ta biết phương trình (2) có nghiệm khi và chỉ khi a(p-1)/2
≡ 1 (mod p) Khi đó
ta có:
a(p-1)/2 ≡ a (mod p)
a2(n+1) ≡ a (mod p)
Trang 12Do đó x = ±an +1 (mod p) là hai nghiệm của phương trình (2)
1.2 Hệ mã hóa
1.2.1 Khái niệm hệ mã hóa dữ liệu
Mã hoá dữ liệu là mã hóa với mục đích làm cho dữ liệu không thể đọc được bởi bất cứ ai, ngoại trừ những ai được phép đọc Mã hóa sử dụng thuật toán và khóa để biến đổi dữ liệu từ hình thức đơn giản rõ ràng (plain hay cleartext) sang hình thức mật mã vô nghĩa (code hay ciphertext) Chỉ có những ai có thông tin giải
mã thì mới giải mã và đọc được dữ liệu
1.2.2 Phân loại hệ mã hóa [4]
1.2.2.1 Hệ mã hóa khóa đối xứng
Hệ mã hoá khóa đối xứng là Hệ mã hóa mà biết được khóa mã hoá thì có thể
“dễ” tính được khóa giải mã và ngược lại
Trong hệ thống mã hoá đối xứng, trước khi truyền dữ liệu, 2 bên gửi và nhận phải thoả thuận về khoá dùng chung cho quá trình mã hoá và giải mã Sau đó, bên gửi sẽ mã hoá bản rõ (Plaintext) bằng cách sử dụng khoá bí mật này và gửi thông điệp đã mã hoá cho bên nhận Bên nhận sau khi nhận được thông điệp đã mã hoá sẽ
sử dụng chính khoá bí mật mà hai bên thoả thuận để giải mã và lấy lại bản rõ (Plaintext)
Hình 1.1 Quá trình thực hiện cơ chế mã hóa
Mã hoá đối xứng có thể đƣợc phân thành hai loại:
Trang 13Loại thứ nhất tác động trên bản rõ theo từng nhóm bits Từng nhóm bits này được gọi với một cái tên khác là khối (Block) và thuật toán được áp dụng gọi là mã hoá khối (Block Cipher) Theo đó, từng khối dữ liệu trong văn bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài Đối với các thuật toán ngày nay thì kích thước chung của một khối là 64 bits
Loại thứ hai tác động lên bản rõ theo từng bit một Các thuật toán áp dụng được gọi là mã hoá dòng (Stream Cipher) Dữ liệu của văn bản được mã hoá từng bit một Các thuật toán mã hoá dòng này có tốc độ nhanh hơn các thuật toán mã hoá khối và nó thường được áp dụng khi lượng dữ liệu cần mã hoá chưa biết trước
Một số thuật toán nổi tiếng trong mã hoá đối xứng là: DES, Triple DES (3DES), RC4, AES… [1,2]
DES: viết tắt của Data Encryption Standard Với DES, bản rõ (Plaintext) được mã hoá theo từng khối 64 bits và sử dụng một khoá là 64 bits, nhưng thực tế thì chỉ có 56 bits là thực sự được dùng để tạo khoá, 8 bits còn lại dùng để kiểm tra tính chẵn, lẻ DES là một thuật toán được sử dụng rộng rãi nhất trên thế giới Hiện tại DES không còn được đánh giá cao do kích thước của khoá quá nhỏ 56 bits, và dễ dàng bị phá vỡ
Triple DES (3DES): 3DES cải thiện độ mạnh của DES bằng việc sử dụng một quá trình mã hoá và giải mã sử dụng 3 khoá Khối 64-bits của bản rõ đầu tiên
sẽ được mã hoá sử dụng khoá thứ nhất Sau đó, dữ liệu bị mã hóa được giải mã bằng việc sử dụng một khoá thứ hai Cuối cùng, sử dụng khoá thứ ba và kết quả của quá trình mã hoá trên để mã hoá
Trang 14Hệ mã hoá khoá đối xứng “không an toàn” so với hệ mã hoá khoá công khai bởi lý do sau:
Người mã hoá và người giải mã phải có “chung” một khoá Khóa phải được giữ bí mật tuyệt đối, vì biết khoá này “dễ” xác định được khoá kia và ngược lại
Vấn đề thỏa thuận khoá và quản lý khóa chung là khó khăn và phức tạp Người gửi và người nhận phải luôn thống nhất với nhau về khoá Việc thay đổi khoá là rất khó và dễ bị lộ Khóa chung phải được gửi cho nhau trên kênh an toàn
1.2.2.2 Hệ mã hóa khóa công khai
Hệ mã hoá khoá công khai là hệ mã hoá có khoá lập mã và khoá giải mã khác nhau, biết được khoá này “khó” tính được khoá kia
Hệ mã hoá này được gọi là hệ mã hoá khoá công khai vì khoá lập mã được
công khai (gọi là khoá công khai – Public key), Khoá giải mã giữ bí mật (gọi là khoá riêng – Private key) Điều quan trọng đối với hệ thống là không thể tìm ra
khóa bí mật nếu chỉ biết khóa công khai
Hình 1.2 Quá trình thực hiện mã hóa khóa công khai
Quá trình truyền và sử dụng mã hoá khoá công khai được thực hiện như sau:
Bên gửi yêu cầu cung cấp hoặc tự tìm khoá công khai của bên nhận trên một server chịu trách nhiệm quản lý khoá
Sau đó hai bên thống nhất thuật toán dùng để mã hoá dữ liệu, bên gửi sử dụng khoá công khai của bên nhận cùng với thuật toán đã thống nhất để mã hoá thông tin được gửi đi
Khi nhận được thông tin đã mã hoá, bên nhận sử dụng khoá bí mật của mình
Nhận khóa công khai
Nhận khóa riêng
Trang 15Vậy là với sự ra đời của Mã hoá công khai thì khoá được quản lý một cách linh hoạt và hiệu quả hơn Người sử dụng chỉ cần bảo vệ khoá bí mật
Một số hệ mã hóa khóa công khai phổ biến như RSA, Rabin, Elgaml,
Do đó hệ mã hoá khoá công khai có ƣu điểm và nhƣợc điểm sau:
a Ƣu điểm
Đơn giản trong việc lưu chuyển khóa: Chỉ cần đăng ký một khóa công khai
và mọi người sẽ lấy khóa này về để trao đổi thông tin với người đăng ký Vì vậy không cần kênh bí mật để truyền khóa
Mỗi người chỉ cần một cặp khóa công khai – khóa bí mật là có thể trao đổi thông tin với tất cả mọi người Là tiền đề cho sự ra đời của chữ ký điện tử và các phương pháp chứng thực điện tử
b Nhƣợc điểm
Mã hóa và giải mã chậm hơn hệ mã hóa khóa đối xứng
1.2.2.3 Hệ mã hóa khối (Modern Block Ciphers)
Trong mã hóa khối hiện đại, một trong những thuật toán được sử dụng rộng rãi nhằm cung cấp các dịch vụ bảo mật hay xác thực
Tiến trình mã hóa khối truyền thông điệp đến các khối, mỗi khối sẽ thực hiện En/Decrypted sau khi nhận thông điệp Như mã hóa thay thế, nó sử dụng một block rất lớn 64 bit hay hơn
Tiến trình mã hóa dòng truyền thông điệp thành dòng từng bit hay byte ở một thời điểm khi En/Decryting
Hiện có rất nhiều thuật toán mã hóa khối được sử dụng như DES, MD4, MD5, SH1, SH2
a Ƣu điểm
Chỉ cần biết một cặp khối bản rõ và bản mã người ta có thể dễ dàng suy ra được khóa và dùng khóa để giải các khối bản mã khác
Trang 16b Nhƣợc điểm
Khi kích thước khối lớn thì số dòng của bảng khóa cũng lớn và gây trở ngại cho việc lưu trữ cũng như trao đổi khóa giữa người gửi và nhận
1.3 Một số hệ mã hóa khóa công khai
1.3.1 Hệ mã hóa khóa công khai RABIN
+ P = C = Zn, trong đó n là một số nguyên Blum, tính n = p*q;
+ Chọn khóa công khai là n và b (0 b n-1); chọn khóa bí mật là p và q;
+ Chọn p và q là hai số nguyên tố lớn khác nhau có tính chất sau: p 3 (mod 4);
2
b b
Trang 18Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Z p là “khó” giải
Chọn phần tử nguyên thuỷ g Z p * Đặt P = Z p *, C = Z p*Z p*
Chọn khóa bí mật là a Z p * Tính khóa công khai h g a mod p
Định nghĩa tập khóa: = {(p, g, a, h): h g a 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 định nghĩa:
* Lập mã:
Chọn ngẫu nhiên bí mật r Z p-1 , bản mã là y = e k (x, r) = (y 1 , y 2)
Trong đó y 1 = g r mod p và y 2 = x * h r mod p
* Giải mã: dk (y 1 , y 2 ) = y 2 *(y 1 a) -1 mod p
1.3.3 Hệ mã hóa khóa công khai RSA [4]
Hệ mã hóa khóa công khai được đề xuất bởi Ron Rivest, Adi Shamir và Len Adleman (MIT) vào năm 1977
Hệ mã hóa sử dụng phương pháp mã hóa khối với mỗi khối là một số
nguyên < n: Thông thường kích cỡ n là 1024 bit ≈ 309 chữ số thập phân
Sơ đồ
Giả sử khối bản gốc của người gửi là M và khối bản mã của người nhận là C,
quá trình mã hóa và giải mã RSA là: C = M e mod n và M = C d mod n
Cả người gửi và người nhận phải biết giá trị n Người gửi biết giá trị e và chỉ người nhận biết giá trị d Đây là một thuật toán mã hóa khóa công khai với khóa công khai KU = {e,n} và khóa riêng KR = {d,n} Ta có sơ đồ biểu diễn thuật toán như sau:
Trang 19Hình 1.3 Sơ đồ biểu diễn thuật toán mã hóa
1.4 Kết luận chương
Ngày nay vấn đề an toàn thông tin được xem là một trong những quan tâm hàng đầu của xã hội, có ảnh hưởng rất nhiều đến hầu hết các ngành, lĩnh vực, bao trùm toàn bộ các đối tượng tham gia giao dịch điện tử từ cá nhân, doanh nghiệp, tổ chức kinh tế, tổ chức chính trị - xã hội An toàn thông tin có mục đích là phải tổ chức việc xử lý, ghi nhớ và trao đổi thông tin đảm bảo tính bí mật, toàn vẹn, sẵn sàng và đáng tin cậy
Các giải pháp bảo mật an toàn thông tin phổ biến được biết đến hiện nay là che, giấu, bảo đảm toàn vẹn , xác thực thông tin ; kiểm soát lối vào ra của thông tin ; Phát hiện, xử lý các l ỗ hổng và phối hợp các giải pháp Một trong những kỹ thuật phổ biến trong các phương pháp bảo mật an toàn thông tin là “che” thông tin hay còn gọi là mã hoá thông tin Mã hoá thông tin có mục đích ngoại trừ những người được phép thì không ai có thể đọc được dữ liệu Các hệ mã hoá dữ liệu gồm: Hệ mã hóa khóa đối xứng và Hệ mã hóa khóa phi đối xứng Một số hệ mã hoá phi đối xứng (mã hoá khoá công khai) phổ biến đang áp dụng hiện nay là Hệ mã hoá khoá công khai RABIN, ELGAMAL, RSA, Trong đó, thuật toán RSA có đặc tính hấp dẫn:
Trang 20một cặp khoá có thể cùng sử dụng cho cả hai mục đích đó là mã hoá (ví dụ sử dụng khi truyền một khoá đối xứng) và chữ ký số
Trong chương 1 đã trình bày những vấn đề mang tính cơ sở khoa học, nền tảng cho việc sử dụng chữ ký số vào việc bảo mật và xác thực thông tin Khái niệm chữ ký số, cách phân loại, thuật toán chữ ký số một số sơ đồ chữ ký hiện đang được
sử dụng phổ biến sẽ được trình bày trong nội dung của chương 2
Trang 21CHƯƠNG 2: CHỮ KÝ SỐ
Các cơ sở toán học, các hệ mã hóa khóa bí mật, khóa công khai, một số hệ
mã hóa khóa công khai đã trình bày trong chương 1 là nền tảng cho việc sử dụng chữ ký số vào việc bảo mật và xác thực thông tin
Chương 2 trình bày các khái niệm như chữ ký số, chữ ký điện tử, dấu điện
tử, chữ ký sinh trắc học; cách phân loại chữ ký số, quy trình tạo và kiểm tra chữ ký
số, các ưu điểm của chữ ký số và thuật toán chữ ký số cùng một số sơ đồ chữ ký hiện đang được sử dụng phổ biến hiện nay và một số ứng dụng của chữ kí số cũng được giới thiệu trong chương này
2.1 Giới thiệu
Một trong những ứng dụng của kỹ thuật mã hoá khóa công khai là chữ ký số Chữ ký số được phát triển và ứng dụng rộng rãi hiện nay dựa trên một số thuật toán như RSA, DSA, ElGamal, SHA là cơ sở quan trọng để hình thành hạ tầng khóa công khai cho phép người sử dụng của một mạng công cộng không bảo mật như Internet trao đổi dữ liệu và tiền một cách an toàn, thông qua việc sử dụng một cặp khóa công khai và bí mật được cấp phát
Các khái niệm, quá trình thực hiện chữ ký số và thuật toán sử dụng trong chữ
ký số sẽ được giới thiệu chi tiết tại phần tiếp theo
2.1.1 Khái niệm
Chữ ký số là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi người sử
dụng một cặp khóa công khai - bí mật và qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật Khóa công khai thường được phân phối thông qua chứng thực khóa công khai Quá trình sử dụng chữ ký số bao gồm 2 quá trình: tạo chữ ký và kiểm tra chữ ký
Chữ ký số là một dạng chữ ký điện tử (Electronic Signature) là dạng thông tin đi kèm dữ liệu (văn bản, hình ảnh, video, ) nhằm mục đích xác định người chủ của dữ liệu đó
Chữ ký số chỉ là một tập con của chữ ký điện tử, là một dạng chữ ký điện tử dựa trên công nghệ mã hoá Để sử dụng chữ ký số thì người dùng phải có một cặp khoá gồm khoá công khai (public key) và khoá bí mật (private key) Khoá bí mật
Trang 22dùng để tạo chữ ký số, khoá công khai dùng để thẩm định chữ ký số hay xác thực người tạo ra chữ ký số đó
2.1.2 Phân loại chữ ký số
Hai nhóm chính của Electronic Signature (Chữ ký điện tử) đã được phát
triển dựa trên 2 công nghệ cơ bản: Digital Signatures (Chữ ký số) và E-SIGN (Dấu điện tử)
Chữ ký số giúp người nhận thông điệp có thể tin tưởng ở nội dụng văn bản mình nhận được là của người quen biết Người gửi cũng không thể chối bỏ trách nhiệm là chính mình đã gửi văn bản đó đi, văn bản đã được số hóa là một chuỗi bit (vd email, contracts, được gửi thông qua những giao thức mã hóa)
2.1.2.2 E-SIGN (Dấu điện tử)
Dấu điện tử là một dạng chữ ký thông thường không sử dụng hạ tầng khóa công khai PKI ( Public Key Infrastructure) Chủ yếu quản lý dựa vào danh tính và nhận dạng Logs (Log – in)
Dấu điện tử có tính bảo mật không cao nên chỉ hợp cho các hệ thống đóng
2.1.2.3 Biometric Signatures (Chữ ký sinh trắc học)
Đôi khi ta cũng có thể sử dụng những dấu vân tay hoặc hình ảnh tròng đen của mắt như một kiểu chữ ký sinh trắc
Trang 23Để xác nhận dạng chữ ký này đòi hỏi công nghệ cao và tốn kém đồng thời cũng có những lỗ hổng trong bảo mật (sao chép vân tay, )
2.1.3 Cách tạo chữ ký
2.1.3.1 Chữ ký số (digital signature) [5]
Là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi người sử dụng một cặp khóa công khai - bí mật và qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật Khóa công khai thường được phân phối thông qua chứng thực khóa công khai
Quá trình sử dụng chữ ký số bao gồm 2 quy trình: tạo và kiểm tra chữ ký
Quy trình tạo chữ ký số
Dùng giải thuật băm để thay đổi thông điệp cần truyền đi, kết quả ta được một MD (message digest), dùng giải thuật MD5 ta được digest dài 128 bit, dùng giải thuật SHA () ta có chiều dài 160 bit
Sử dụng khóa private key của người để mã hóa message digest thu được ở trên, thông thường ta dùng giải thuật RSA thu được kết quả
Sơ đồ
Hình 2.1 Quy trình tạo chữ ký số
Trang 24Quy trình kiểm tra chữ ký số
Dùng public key của người gửi để giải mã chữ ký số của thông điệp
Dùng giải thuật MD5 hoặc SHA băm thông điệp đính kèm
So sánh kết quả thu được ở trên, nếu thấy trùng nhau ta kết luận thông điệp này không bị thay đổi trong quá trình truyền và thông điệp này là của người gửi
Sơ đồ
Hình 2.2 Quy trình kiểm tra chữ ký số
Chữ ký số (digital signature) là một dạng chữ ký điện tử (là tập con của chữ
ký điện tử) được tạo ra bằng sự biến đổi một thông điệp dữ liệu sử dụng hệ thống mật mã công khai, theo đó người có thông điệp dữ liệu ban đầu và khóa công khai của người ký có thể xác định được
2.1.3.2 Chữ ký điện tử (electronic signature) [13]
Là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, âm thanh,…) nhằm mục đích xác định chủ nhân của dữ liệu đó
Chữ ký điện tử được tạo lập dưới dạng từ, chữ, số, ký hiệu, âm thanh hoặc các hình thức khác bằng phương tiện số, gắn liền hoặc kết hợp một cách logic với thông điệp số, có khả năng xác nhận người ký thông điệp dữ liệu và xác nhận sự chấp thuận của người đó đối với nội dung thông điệp đã ký
Trang 25V là tập các thuật toán kiểm thử
Với mỗi khóa k K, có thuật toán ký Sig k S, Sig k : P A, có thuật
toán kiểm tra chữ ký Ver k V, Ver k : P A đúng, sai, thoả mãn điều kiện
sau: Với mọi x P, y A:
Đúng, nếu y = Sig k (x)
Ver k (x, y) =
Sai, nếu y Sig k (x)
2.1.5 Các ƣu điểm của chữ ký số
Khả năng xác định đƣợc nguồn gốc
Các hệ thống mật mã hóa khóa công khai cho phép mật mã hóa văn bản với khóa bí mật mà chỉ có người chủ của khóa biết Để sử dụng chữ ký số thì văn bản cần phải được mã hóa bằng hàm băm Sau đó dùng khóa bí mật của người chủ khóa
để mã hóa, khi đó ta được chữ ký số Khi cần kiểm tra, bên nhận giải mã để lấy lại chuỗi gốc (được sinh ra qua hàm băm ban đầu) và kiểm tra với hàm băm của văn bản nhận được Nếu 2 giá trị này khớp nhau thì bên nhận có thể tin tưởng rằng văn bản xuất phát từ người sở hữu khóa bí mật
Tất nhiên là chúng ta không thể đảm bảo 100% là văn bản không bị giả mạo
vì hệ thống vẫn có thể bị phá vỡ Vấn đề xác thực đặc biệt quan trọng đối với các giao dịch tài chính
Tính toàn vẹn
Cả hai bên tham gia vào quá trình thông tin đều có thể tin tưởng là văn bản không bị sửa đổi trong khi truyền vì nếu văn bản bị thay đổi thì hàm băm cũng sẽ thay đổi và lập tức bị phát hiện
Trang 26Quá trình mã hóa sẽ ẩn nội dung của gói tin đối với bên thứ 3 nhưng không ngăn cản được việc thay đổi nội dung của nó
Tính không thể phủ nhận
Trong giao dịch, một bên có thể từ chối nhận một văn bản nào đó là do mình gửi Để ngăn ngừa khả năng này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ
ký số với văn bản Khi có tranh chấp, bên nhận sẽ dùng chữ ký này như một chứng
cứ để bên thứ ba giải quyết
Tuy nhiên, khóa bí mật vẫn có thể bị lộ và tính không thể phủ nhận cũng không thể đạt được hoàn toàn không ngăn cản được việc thay đổi nội dung của nó
2.1.6 Quá trình thực hiện chữ ký số khóa công khai
Chữ ký số dựa trên nền tảng mật mã hóa khóa công khai Để có thể trao đổi thông tin trong môi trường này, mỗi người sử dụng có một cặp khóa: một công khai và một bí mật
Khóa công khai được công bố rộng rãi còn khóa bí mật phải được giữ kín và khó có thể tìm được khóa bí mật trong thời gian chấp nhận được
Toàn bộ quá trình gồm 3 thuật toán:
Thuật toán tạo khóa bí mật, khoá công khai Thuật toán tạo chữ ký số bằng khoá bí mật Thuật toán kiểm tra chữ ký số bằng khóa công khai
Trang 27Hình 2.4 Sơ đồ mô tả quá trình nhận các tệp văn bản
2.2 Các ứng dụng của chữ ký số
2.2.1 Ứng dụng trong giao dịch điện tử
Chữ ký số sử dụng trong các giao dịch để mua bán hàng trực tuyến, đầu tư chứng khoán trực tuyến, chuyển tiền ngân hàng, thanh toán trực tuyến
Ngoài ra, Bộ tài chính cũng áp dụng chữ ký số vào kê khai, nộp thuế trực tuyến qua mạng Internet và các thủ tục hải quan điện tử như khai báo hải quan và thông quan trực tuyến mà không phải in các tờ khai, đóng dấu đỏ của công ty và đến cơ quan thuế chờ nộp tờ khai
2.2.2 Ứng dụng trong bỏ phiếu điện tử
Mỗi lá phiếu phải có thông tin định danh Nó có thể là một con số x nào đó
và phải khác nhau Trên mỗi lá phiếu phải có chữ ký trên số định danh x, thì là phiếu mới có giá trị để bầu cử Nếu cử tri chuyển ngay số định danh x cho ban kiểm phiếu ký thì họ đã xác định mối liên hệ giữa cử tri và x
Trang 28Trong bỏ phiếu điện tử để tránh gian lận thông đồng với ban kiểm phiếu với
cử tri Hệ thống dùng “Đa chữ ký mù” để bảo đảm sự nhất trí cao khi cấp quyền bỏ phiếu cho cử tri
2.2.3 Ứng dụng trong ngân hàng
Một số giao dịch trong ngân hàng, chứng khoán hiện nay đang được dùng OTP (One Time Password) Chữ ký số là một loại chữ ký điện tử dựa trên hệ thống mật mã không đối xứng, chưa thông tin định danh người chủ sở hữu chữ ký đó
Các thông tin này có thể lưu trữ băng nhiều hình thức khác nhau dưới dạng file và lưu trữ trên máy tính; trên các thiết bị đặc biệt (USB token) trên thẻ (Smart card) hay trên sim điện thoại (SIM base CA) Tùy nhu cầu mà mỗi khách hàng chọn những hình thức lưu trữ khác nhau, tuy nhiên SIM base CA được đánh giá cao ở tính di động thuận tiện do gắn liền với điện thoại di động
2.2.4 Ứng dụng trong hệ thống tiền điện tử
Một đồng tiền điện tử C có hai thông tin quan trong là số Seri và giá trị của đồng tiền Hệ thống phải bảo đảm các yêu cầu là Ngân hàng phát hành đồng tiền C khó nhận biết đồng tiền này của người mua hàng đã rút ra từ tài khoản của họ Ngân hàng thu nạp đồng tiền C cũng khó biết đồng tiền C đã được nhận từ người bán Mặt khác người bán khó biết C được rút từ tài khoản nào Để thực hiện yêu cầu trên, chúng ta dùng “Chữ ký mù” để ký lên đồng tiền C
Như vậy tiền điện tử C không lưu lại dấu vết của những ai đã tiêu nó Thực
tế đồng tiền C không do một ngân hàng phát hành, nó có thể là đồng tiền chung của nhiều ngân hàng Vì vậy nó phải mang dấu anns của các ngân hàng liên quan Nên
tổ chức ngân hàng sẽ thống nhất một “Đa chữ ký mù” để ký lên đồng tiền C
2.2.5 Ứng dụng trong doanh nghiệp
Đối với doanh nghiệp, chữ ký số có thể được ứng dụng vào trong hầu hết các hoạt động của công ty như đăng nhập thẻ thông minh (smart card), windows security logon, trao đổi các tài liệu nhạy cảm, trao đổi email, truy cập từ xa VPN, việc triển khai một hệ thống PKI đối với các doanh nghiệp nhỏ là rất đơn giản, và lợi ích mà hệ thống đem lại rất lớn so với chi phí đầu tư ban đầu
Trang 292.3 Hàm băm
Ta có thể thấy rằng các sơ đồ chữ ký nói chung chỉ cho phép ký các bức điện nhỏ Thông thường khi sử dụng, chữ ký được sinh ra có độ dài lớn hơn so với văn bản ký, do vậy kích thước văn bản sau khi ký sẽ tăng lên
Một cách đơn giản để giải bài toán này là chia các bức điện dài thành nhiều đoạn, sau đó ký lên các đoạn đó độc lập nhau Điều này cũng tương tự như mã hóa một chuỗi dài bản rõ bằng cách mã hoá mỗi ký tự bản rõ độc lập nhau sử dụng cùng một bản khoá
Biện pháp này có một số vấn đề trong việc tạo ra các chữ ký số Trước hết với một bức điện dài, ta kết thúc bằng một chữ ký rất lớn
2.3.1 Khái niệm
Hàm băm là thuật toán không dùng khóa để mã hóa (ở đây dùng thuật ngữ
“băm” thay cho “mã hóa”), nó có nhiệm vụ băm tài liệu và cho kết quả là một giá trị “băm” có kích thước cố định
Hình 2.5 Minh họa hàm băm Đặc tính quan trọng của hàm băm
Hàm băm h là hàm một chiều (one – way hash ) với các đặc tính sau:
Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất
Nếu dữ liệu trong thông điệp x thay đổi hay bị xóa để thành thông điệp x‟ thì h(x‟) ≠ h(x) Cho dù chỉ có một sự thay đổi nhỏ hay chỉ là xóa đi một bit dữ liệu của thông điệp thì giá trị băm cũng vẫn thay đổi Điều này có nghĩa là: hai thông điệp hoàn toàn khác nhau thì giá trị hàm băm cũng hoàn toàn khác nhau Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm băm Nghĩa là với thông điệp
x thì dễ dàng tính được z = h(x), nhưng lại không thể tính (thực chất là khó) suy ngược lại được x nếu chỉ biết hàm băm h(x)
Văn bản cần
băm
(độ dài cố định)
Băm (Sử dụng hàm băm)
Trang 30Tính chất của hàm băm
Việc đưa hàm băm h vào dùng trong sơ đồ chữ ký số không làm giảm sự an toàn của sơ đồ chữ ký số vì nó là bản tóm lược thông báo – bản đại diện cho thông điệp – được ký chứ không phải là thông điệp gốc Điều cần thiết đối với h là cần thỏa mãn một số tính chất sau để tránh bị giả mạo:
Tính chất 2.1: Hàm băm h không va chạm yếu: h là hàm băm không có tính va
chạm yếu nếu khi cho trước một bức điện x, không thể tiến hành về mặt tính toán để tìm ra một bức điện x‟ ≠ x mà h(x‟) = h(x)
Xét kiểu tấn công như sau: Thông tin cần phải truyền từ A đến B (Hình 2.6a)
Nhưng trên đường truyền, thông tin bị lấy trộm và bị thay đổi (Hình 2.6b)
Người A gửi cho B (x, y) với y = sigK(h(x)) Nhưng trên đường truyền, tin
bị lấy trộm Tên trộm bằng cách nào đó tìm được một bản thông điệp x‟ có h(x‟) = h(x) mà x‟ ≠ x Sau đó, hắn đưa x‟ thay thế x rồi truyền tiếp cho B Người B nhận được và vẫn xác thực thông tin đúng đắn
Người gửi
A
Người nhận
B (x, y)=sigK(h(x))
Hình 2.6a: Đường đi đúng của thông tin
Hình 2.6b: Thông tin bị lấy trộm và bị thay đổi trên đường truyền
Trang 31Tính chất 2.2: Hàm băm h không va chạm mạnh: h là hàm băm không có tính va
chạm mạnh nếu không có khả năng tính toán để tìm ra hai bức thông điệp x và x‟
mà x ≠ x‟ và h(x‟) = h(x)
Xét một kiểu tấn công như sau: Đầu tiên, kẻ giả mạo tìm được hai bức thông điệp x‟ và x (x‟≠ x) mà có h(x‟) = h(x) (ta coi x là hợp lệ, còn x‟ là giả mạo) Tiếp theo kẻ này đưa cho A và thuyết phục A ký vào bản tóm lược h(x) để nhận được y Khi đó (x‟, y) là bức thông điệp giả mạo nhưng hợp lệ
Tính chất 2.3: Hàm băm h là hàm một chiều: h là một chiều nếu khi cho trước một
bản tóm lược thông báo z thì không thể thực hiện về mặt tính toán để tìm ra thông điệp ban đầu x sao cho h(x) = z
Xét một kiểu tấn công như sau: Việc giả mạo chữ ký trên bản tóm lược z thường xảy ra với các sơ đồ chữ ký số Giả sử kẻ giả mạo tính chữ ký trên bản tóm lược z, sau đó tìm được bản thông điệp x‟ được tính ngược từ bản đại diện z = h(x)
Tên trộm thay thế bản thông điệp x hợp lệ bằng bản thông điệp x‟ giả mạo nhưng lại có z = h(x‟) Và ký số trên bản đại diện cho x‟ bằng đúng chữ ký hợp lệ
Và như vậy thì (x‟, y) là bức điện giả mạo nhưng hợp lệ
Ý nghĩa của việc dùng thông điệp và hàm băm
Hàm băm trợ giúp cho các sơ đồ chữ ký nhằm giảm dung lượng của dữ liệu cần thiết để truyền qua mạng (lúc này chỉ còn bao gồm dung lượng của bức thông điệp gốc và 256 bit (sử dụng MD) hay 320 bit (sử dụng SHA) của bức ký số được
ký trên bản đại diện của thông điệp gốc), tương đương với việc giảm thời gian truyền tin qua mạng
Hàm băm thường kết hợp với chữ ký số để tạo một loại chữ ký điện tử vừa
an toàn hơn (không thể cắt/dán) vừa dùng để kiểm tra tính toàn vẹn của thông điệp nên tạo được niềm tin của người dùng
Trang 32Hàm băm an toàn SHA, phức tạp hơn nhiều, cũng dựa trên phương pháp
tương tự, được công bố trong Hồ sơ Liên bang năm 1992 Năm 1993 được chấp nhận làm tiêu chuẩn của Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) Giá trị
băm theo thuật toán này có độ dài cố định là 160 bit
2.3.2.1 Thuật toán hàm băm MD
a Thuật toán hàm băm MD4 [6]
Input: Thông điệp là xâu a có độ dài b bit
Output: Bản băm, đại diện cho thông điệp gốc, độ dài cố định 128 bit
Tóm tắt thuật toán
Bước 1: Khởi tạo các thanh ghi
Có 4 thanh ghi để tính toán nhằm đưa ra các đoạn mã: A, B, C, D Đại diện thông điệp được xây dựng như sự kết nối của các thanh ghi Mỗi thanh ghi có độ dài
32 bit Các thanh ghi này được khởi tạo bằng giá trị dạng hecxa
word A := 67 45 23 01 word B := ef cd ab 89
word C := 98 ba dc fe word D := 10 32 54 76
Bước 2:
+ Tạo “Thông điệp đệm” M cho xâu a
+ Chia mảng M thành các khối 512 bit, đưa từng khối 512 bit vào mảng T[j] + Mỗi lần xử lý một khối 512 bit (16 word ), lặp lại N/16 lần
b Thuật toán hàm băm MD5 [6]
MD5 (Message-Digest algorithm 5) là một hàm băm mật mã được sử dụng
phổ biến, được thiết kể bởi Giáo sư Ronald L Rivest tại trường MIT vào năm 1991
để thay thế cho hàm băm trước đó là MD4 (1990) Là một chuẩn Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật và cũng được dùng phổ biến để kiểm tra tính toàn vẹn của tập tin
Cũng như các hàm băm khác như MD4 và SHS (Secure Hash Standard), MD5 là phương pháp có ưu điểm tốc độ xử lý rất nhanh, thích hợp với các thông điệp dài và cho ra giá trị băm dài 128 bit
Trong MD5, thông điệp ban đầu X sẽ được mở rộng thành dãy bit X có độ
Trang 33X ban đầu, một bit 1, dãy d bit 0 (d được tính sao cho dãy X cuối cùng là bội của 512), dãy 64 bit l biểu diễn chiều dài của thông điệp Đơn vị xử lý trong MD5 là các
từ 32-bit, nên dãy bit X ở trên sẽ được biểu diễn thành dãy các từ X[i] 32-bit sau: X=X[0] X[1] X[2] …X[N−1] , với N là bội của 16
Dưới đây là các ví dụ mô tả các kết quả sau khi thực hiện hàm băm MD5
MD5("xin chao") = 2201c07c37755e663c07335cfd2f44c6
Chỉ cần một thay đổi nhỏ (chẳng hạn viết hoa chữ x thành X) cũng làm thay đổi hoàn toàn kết quả trả về:
MD5("Xin chao") = e05c1d9f05f5b9eb56fe907c36f469d8
Thuật toán cũng cho kết quả đối với chuỗi rỗng:
MD5(" ") = d41d8cd98f00b204e9800998ecf8427e
c Phương pháp MD5 có những ưu điểm sau so với phương pháp MD4
Thay vì có 3 chu kỳ biến đổi như trong MD4, MD5 bổ sung thêm chu kỳ thứ
4 để tăng mức độ an toàn
Trong mỗi thao tác của từng chu kỳ, MD5 sử dụng hằng số “ti” phân biệt,
trong đó MD4 sử dụng hằng số chung cho mọi thao tác trong cùng chu kỳ biến đổi
Hàm G ở chu kỳ 2 của MD4: G(X,Y,Z) = ((XZ) (XY) (YZ)) được thay thế bằng G(X,Y,Z) = (XZ) (Y(Z)) để giảm tính đối xứng
Mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của bước biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền (avalanche)
Các hệ số dịch chuyển xoay vòng trong mỗi chu kỳ được tối ưu hóa nhằm tăng tốc độ hiệu ứng lan truyền Ngoài ra, mỗi chu kỳ sử dụng 4 hệ số dịch chuyển khác nhau
Lý do MD5 được thiết kế thay thế cho MD4 là vì các phân tích chỉ ra rằng phương pháp MD4 có vẻ không an toàn Den Boer và Bosselaers đã chỉ ra các điểm yếu trong MD4 trong một bài báo được đăng vào năm 1991 và một tấn công xung đột đầu tiên được tìm thấy bởi Han Dobbertin vào năm 1996
2.3.2.2 Hàm băm SHS/ SHA
SHS (Secure Hash Standard) là chuẩn gồm tập hợp các thuật toán băm mật
mã an toàn (Secure Hash Algorithm – SHA) như SHA-1, SHA-224, SHA-256,
Trang 34SHA-384, SHA-512 do NIST (viện công nghệ quốc gia Mỹ) và NSA (National
Security Agency/Central Security Service, viết tắt NSA/CSS: Cơ quan an ninh quốc
gia Hoa Kỳ/ Cục an ninh Trung ương xây dựng
Chuẩn hàm băm SHA phức tạp và chậm hơn dòng MD SHA được thiết kế
để chạy trên máy kiến trúc endian lớn hơn là trên máy endian nhỏ SHA tạo ra bản tóm lược thông điệp có kích thước 160 bit, sử dụng 5 thanh ghi 32 bit
INPUT : Thông điệp (văn bản) có độ dài tùy ý
OUTPUT : Bản băm, đại diện cho thông điệp gốc, độ dài cố định 160 bit
Phương pháp SHA-1 (cũng như SHA-0) được xây dựng trên cùng cơ sở với phương pháp MD4 và MD5 Tuy nhiên, phương pháp SHA-1 sử dụng trên hệ thống Big-endian (lưu trữ các byte đầu tiên quan trọng nhất) thay vì Little-endian (lưu trữ các byte đầu tiên ít quan trọng) (endian chính là được đề cập đến trật tự của các địa chỉ cá nhân phụ trong các đại diện của một mục dữ liệu lớn hơn và được lưu trữ trong bộ nhớ bên ngoài (hoặc đôi khi gửi đi trên một kết nối, nối tiếp)) như phương pháp MD4 và MD5 Ngoài ra, hàm băm SHA-1 tạo ra thông điệp rút gọn kết quả có
độ dài 160 bit nên thường được sử dụng
Phương pháp SHA-1 giống với MD5 (cải tiến từ MD4) nhưng thông điệp tóm tắt được tạo ra có độ dài 160 bit Sau là một số so sánh giữa MD5 và SHA-1:
Giống như MD5, SHA-1 cũng thêm chu kỳ thứ 4 để tăng mức độ an toàn cho thuật toán Tuy nhiên, chu kỳ thứ 4 của SHA-1 sử dụng lại hàm f của chu kỳ thứ 2
Trong SHA-1, 20 bước biến đổi trong cùng một chu kỳ sử dụng cùng một hàng số K[t] Trong khi đó, mỗi bước biến đổi trong cùng một chu kỳ của MD5 sử dụng các hằng số khác nhau
So với MD4, hàm G trong MD5 được thay thế thành hàm mới để làm giảm tính đối xứng Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại hàm G của MD4
Cả MD5 và SHA-1, mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền
Trang 35Bảng 2.1: Đặc điểm của các thuật toán băm SHA 2.4 Thuật toán chữ ký số
2.4.1 Thuật toán chữ ký RSA [5,7]
2.4.1.1 Sơ đồ
Bước 1 Tạo cặp khóa (bí mật, công khai) (a, b)
Input: 2 số nguyên tố lớn phân biệt p và q
Output: Cặp (n,b) là khóa công khai
kỳ
Các thao tác
Đụng
độ
Độ
an toàn
?
Kết
quả
Trạng thái Khối
Thông điệp tối đa
Chưa 192/
256
Trang 36Khóa bí mật a là phần tử nghịch đảo của b theo mod (n) tức là
Khi Ki = 2, 5, 20 => a không nguyên => loại
5 Khoá công khai = (n, b) = (33, 3)
Trang 372.4.1.3 Độ an toàn của chữ ký RSA
Bài toán căn bản bảo đảm độ an toàn của Sơ đồ chữ ký RSA
Bài toán tách số nguyên n thành tích của 2 số nguyên tố: n = p*q Vì nếu giải
được bài toán này thì có thể tính được khóa mật a từ khóa công khai b và phần tử công khai n
Người gửi G gửi tài liệu x cùng chữ ký y đến người nhận N, có 2 cách xử lý
Ký trước, Mã hóa sau:
G ký trước vào x bằng chữ ký y = Sig G (x), sau đó mã hoá x và y nhận được
z = e G (x, y) G gửi z cho N Nhận được z, N giải mã z để được x, y Tiếp theo kiểm
tra chữ ký Ver N (x, y) = true ?
Mã hóa trước, Ký sau:
G mã hoá trước x bằng u = e G (x), sau đó ký vào u bằng chữ ký v = Sig G (u) G gửi (u, v) cho N Nhận được (u, v), N giải mã u được x Tiếp theo kiểm tra chữ ký Ver N (u, v) = true ?
Giả sử H lấy trộm được thông tin trên đường truyền từ G đến N
Trong trường hợp ký trước, mã hoá sau H lấy được z Trong trường hợp mã hoá
trước, ký sau H lấy được (u,v)
Để tấn công x trong hai trường hợp, H đều phải giải mã thông tin lấy được
Để tấn công vào chữ ký, thay bằng chữ ký (giả mạo), thì xảy ra điều gì?
Trường hợp ký trước, mã hoá sau để tấn công chữ ký y, H phải giải mã z mới nhận được y
Trường hợp mã hoá trước, ký sau để tấn công chữ ký v, H đã sẵn có v, H chỉ việc thay v bằng v’ H thay chữ ký v trên u, bằng chữ ký của H là v’= SigH(u), gửi (u,v’) đến N Khi nhận được v’, N kiểm thử thấy sai, gửi phản hồi lại G G có thể chứng minh chữ ký đó là giả mạo G gửi chữ ký đúng v cho N, nhưng quá trình
truyền tin sẽ bị chậm lại
Như vậy trong trường hợp mã hoá trước, ký sau thì H có thể giả mạo chữ
ký mà không cần giải mã Vì thế có lời khuyên: Hãy ký trước, sau đó mã hoá cả
chữ ký
Trang 382.4.2 Thuật toán chữ ký DSA/ DSS [1,5,7]
2.4.2.1 Sơ đồ
Bước 1 Tạo cặp khóa (bí mật, công khai) (a, h)
Input: 2 số nguyên tố lớn phân biệt p và q
Output: Cặp (a,h) là khóa công khai và khoá bí mật
Thuật toán
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 q là ước nguyên tố của p -1 Tức là p -1 = t * q hay p = t * q + 1 (Số nguyên
tố p cỡ 512 bit, q cỡ 160 bit)
Chọn g Zp* là căn bậc q của 1 mod p, (g là phần tử sinh của Zp* )
Tính = g t, chọn khóa bí mật a Zp*, tính khóa công khai h a
Bước 1 Tạo cặp khóa (bí mật, công khai) (a, h):
Chọn p = 7649, q = 239 là ước nguyên tố của p - 1, t = 32
Tức là p - 1 = t * q hay p = t * q + 1 = 32*q + 1 =32*239 + 1= 7649 Chọn g =3 Z7649 là phần tử sinh =g t mod p = 3 32mod 7649= 7098 Chọn khóa mật a = 85,
Trang 392.4.2.3 Độ an toàn của chữ ký DSA
a Liên quan tới các tính toán cụ thể trong sơ đồ
Chú ý rằng phải có 0 (mod q) để bảo đảm có -1 mod q trong điều kiện kiểm thử (tương đương UCLN(, p-1) = 1) Vì vậy nếu chọn r mà không được điều kiện trên, thì phải chọn r khác để có 0 (mod q) Tuy nhiên khả năng 0 mod q
là 2-160 , điều đó hầu như không xảy ra Một chú ý là thay vì tính p trước rồi mới tính q, ta sẽ tính q trước rồi tìm p
b Liên quan chung tới DSS (1991)
Độ dài cố định của p là 512 bit Nhiều người muốn p có thể thay đổi lớn hơn
Vì thế NIST sửa đổi là p có độ dài thay đổi, là bội của 64: từ 512 đến 1024 bit
Nếu dùng chữ ký RSA với thành phần kiểm tra chữ ký là nhỏ, thì việc kiểm tra nhanh hơn việc ký Đối với DSS, ngược lại, việc ký nhanh hơn kiểm tra Điều này dẫn đến vấn đề
Một tài liệu chỉ được ký một lần, nhưng nó lại được kiểm tra nhiều lần, nên người ta muốn thuật toán kiểm tra nhanh hơn