Tìm Hiểu Thuật Toán MD5 Và Ứng Dụng Trong Chữ Ký Điện Tử
Trang 1MỤC LỤC
Lời cảm ơn
Lời cam đoan
PHẦN I: GIỚI THIỆU VỀ ĐỀ TÀI 5
1.1.Mục đích 5
1.2 Đối tượng nghiên cứu 5
1.2 Phạm vi nghiện cứu 5
1.4 Ý nghĩa đề tài 5
PHẦN II: NỘI DUNG 6
CHƯƠNG 1 :TỔNG QUAN VỀ MẬT MÃ HÓA 6
2.1.1 Khái niệm về mã hóa 6
2.1.2 Các thuật toán mã hóa 7
2.1.2.1 Mã hóa đối xứng 7
2.1.2.2 Mã hoá bất đối xứng 8
2.1.4 Phương pháp RSA 9
2.1.4.1 Khái niệm hệ mật mã RSA 9
2.1.4.2 Độ an toàn của hệ RSA 11
2.1.4.3 Một số tính chất của hệ RSA 12
2.1.4.4 Một số phương pháp tấn công giải thuật RSA 13
CHƯƠNG 2 CHỮ KÝ ĐIỆN TỬ 15
2.2.1Giới thiệu 15
2.2.2 Khái niệm về chữ ký điện tử 15
2.2.3 Thuật toán chữ ký điện tử 17
2.2.4 Chứng nhận chữ ký điện tử 19
2.2.5 Chuẩn chữ ký điện tử (Digital Signature Standard) 19
2.2.6 Giải pháp ứng dụng chữ ký điện tử 22
2.2.6.1 Quá trình ký và gửi các tệp văn bản 22
2.2.6.2 Quá trình nhận các tệp văn bản 23
2.2.7 Vận dụng vào hệ thống 24
2.2.8 Kết luận 25
CHƯƠNG 3 : TỔNG QUAN VỀ HÀM BĂM VÀ THUẬT TOÁN HÀM BĂM MD5 26
Trang 22.3.2 giới thiệu về hàm băm mật mã 26
2.3.2.1 Tính chất 27
2.3.2.2 Ứng dụng 28
2.3.3 Hàm băm dựa trên mã khối 29
2.3.4 Cấu trúc Merkle-Damgård 29
2.3.5 Birthday attack 30
2.3.6 Hàm băm mật mã 31
2.3.7 Cấu trúc của hàm băm 32
2.3.8 Tính an toàn của hàm băm đối với hiện tượng đụng độ 32
2.3.9 Tính một chiều 33
2.3.10 Sử dụng cho các nguyên thủy mật mã khác 33
2.3.11 Ghép các hàm băm mật mã 34
2.3.12 Thuật toán băm mật mã 34
2.3.13 Phương pháp Secure Hash Standard (SHS) 35
2.3.14 Một số hàm băm nổi tiếng 35
2.3.15 Hàm băm MD5 35
2.3.15.1 Giới thiệu 35
2.3.15.2 Khái niệm 36
2.3.15.3 Ứng dụng 36
2.3.15.4 Thuật giải 36
2.3.16 MD5 (Message Digest) 37
2.3.16.1 Mô tả 37
2.3.16.2 Cách thực hiện 40
2.3.17 Sự khác nhau giữa MD4 và MD5 42
CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN MD5 43
2.4.1 Nhiệm vụ của chương trình 43
2.4.2 Thuật toán MD5 và sơ đồ khối 43
2.4.2.1 Thuật toán 43
2.4.2.2 Sơ đồ khối thuật toán MD5 46
2.4.3 Kết quả chương trình mô phỏng thuật toán băm MD5 49
2.4.3.1 Giao diện chương trình mô phỏng 49
2.4.3.2 Các bước thực hiện chương trình 49
2.4.3.3 Kết quả thực nghiệm 50
PHẦN III: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 53
Trang 3Danh mục tài liệu tham khảo 54
DANH MỤC HÌNH VẼ: Hình 1.1 Mô hình hệ thống mã hóa quy ước 7
Hình 1.2 Nguyên lý của hệ thống mã hoá đối xứng 7
Hình 1.3 Kênh nguyên lý trong hệ thống mã hoá đối xứng 8
Hình 1.4 Nguyên lý cơ bản của mã hoá khoá công khai và thuật toán RSA 9
Hình 1.5 Sơ đồ các bước thực hiện mã hoá theo thuật toán RSA 11
Hình 2.1 Kiểm tra chữ ký điện tử 17
Hình 2.2 Thủ tục ký và kiểm tra chữ ký 19
Hình 2.3 Sơ đồ mô tả quá trình ký và gửi các tệp văn bản 24
Hình 2.4 Sơ đồ mô tả quá trình nhận các tệp văn bản 25
Hình 3.1 Cấu trúc băm Merkle-Damgård 30
Hình 3.2 Sơ đồ vòng lặp chính của MD5 38
Hình 3.3 Sơ đồ 1 vòng lặp của MD5 39
Trang 4LỜI MỞ ĐẦU
Ngày nay, các ứng dụng Công nghệ thông tin đã và đang ngày càng phổ biếnrộng rãi đã ảnh hưởng rất lớn đến diện mạo của đời sống, kinh tế, xã hội Mọi côngviệc hàng ngày của chúng ta đều có thể thực hiện được từ xa với sự hổ trợ của máy
vi tính và mạng internet (từ việc học tập, giao dịch,… đến việc gửi thư) Tất cảthông tin liên quan đến những công việc này đều do máy vi tính quản lý và truyền đitrên hệ thống mạng Đối với những thông tin bình thường thì không có ai chú ý đến,nhưng đối với những thông tin mang tính chất sống còn đối với một số cá nhân (hay
tổ chức) thì vấn đề bảo mật thật sự rất quan trọng, vấn đề khó khăn đặt ra là làm saogiữ được thông tin bí mật và giữ cho đến đúng được địa chỉ cần đến Nhiều tổ chức,
cá nhân đã tìm kiếm và đưa ra nhiều giải pháp bảo mật phương pháp mã hóa khóacông khai được xem là phương pháp có tính an toàn khá cao Như vậy việc đảm bảo
an toàn thông tin, tránh mọi nguy cơ bị thay đổi, sao chép hoặc mất mát dữ liệutrong các ứng dụng trên mạng luôn là vấn đề bức xúc, được nhiều người quan tâm.Trong bài báo cáo này, em trình bày những vấn đề liên quan về mã hóa thông tin,thuật toán băm MD5, thuật toán mã hóa RSA và chữ ký điện tử Từ đó, ứng dụngthuật toán MD5 và RSA để phân tích quá trình hoạt động của chữ ký điện tử Trên
cở sở đó, em xin được đề ra giải pháp ứng dụng chữ ký điện tử trên cơ sở kết hợpgiữa thuật toán băm MD5 và thuật toán mã hóa RSA trong quá trình gửi và nhận cácvăn bản
Trang 5PHẦN I GIỚI THIỆU ĐỀ TÀI
1.1 MỤC ĐÍCH
Tìm hiểu chung về kỹ thuật nhận thực (chữ ký điện tử)
Chữ ký điện tử không được sử dụng nhằm bảo mật thông tin mà nhằm bảo vệthông tin không bị người khác cố tình thay đổi để tạo ra thông tin sai lệch Nói cáchkhác, chữ ký điện tử giúp xác định được người đã tạo ra hay chịu trách nhiệm đốivới một thông điệp
Tìm hiểu hàm băm, đi sâu vào thuật toán MD5
Hàm băm (Hash Function): Cho đầu vào là một thông báo có kích thước thayđổi, đầu ra là một mã băm có kích thước cố định
Giải thuật băm MD5 (Message Digest 5): được sử dụng để kiểm tra tính toànvẹn của khối dữ liệu lớn Thuật toán nhận đầu vào là một đoạn tin có chiều dài bất
kỳ, băm nó thành các khối 512 bit và tạo đầu ra là một đoạn tin 128 bit
Xây dựng chương trình mô phỏng hàm băm MD5
Đưa ra kết quả chương trình mô phỏng và các kết quả thu được đúng với cáctài liệu tiêu chuẩn về thuật toán MD5
- các phương pháp mật mã hóa
- Chữ ký điện tử và ứng dụng
- Thuật toán RSA
- Các thuật toán hàm băm
về giao dịch điện tử và chính phủ điện tử
Nghiên cứu về chữ ký điện tử và tìm hiểu những lĩnh vực ứng dụng của nó có
Trang 6PHẦN II NỘI DUNG CHƯƠNG 1 TỔNG QUAN VỀ MẬT MÃ HÓA
2.1.1 KHÁI NIỆM VỀ MÃ HÓA
Mã hoá là một tiến trình biến đổi thông tin, sử dụng các thuật toán nhằm mụcđích không cho người khác có thể nắm bắt được nếu thiếu một vốn thông số nhấtđịnh (key) để dịch ngược
Đi kèm với mã hoá là giải mã
Có rất nhiều loại thuật toán mã hoá cho dữ liệu máy tính, chúng được gọi têntheo thuật toán và có thể so sánh trực tiếp với nhau, ví dụ mã hoá 128-bit, Triple-DES, 2048-bit RSA
Trong cùng một loại, dĩ nhiên một phép mã hoá 2048-bit RSA sẽ mạnh mẽ hơnphép mã hoá 1024-bit RSA.Nhưng như vậy không có nghĩa là một phép mã hoá với
độ dài dãy bit lớn được xem là an toàn Thử liên tưởng đến ngôi biệt thự của bạn,với chiếc cổng được khoá bằng ổ khoá 4 chân, mỗi chân như vậy có thể nằm trong
10 vị trí, ổ khoá chỉ mở được khi 4 chân được sắp theo mã khoá của chủ nhà, và đểvượt qua, 1 tên trộm cần phải dùng tối đa 10.000 phép thử (brute-force attack).Nhưng nếu tăng ổ khoá lên 10 chân, sẽ tạo nên 10 triệu khe cắm khoá hợp lệ, thìkhông ai đủ sự thông minh (hay sự ngu dốt) để mở chiếc khoá bằng cách tấn côngthuật toán này Họ có thể phá cửa sổ, hay thậm chí là phá chiếc cổng, giả danh chínhquyền, thợ nước… để đột nhập vào căn nhà của bạn Một ổ khoá tốt không thểchống lại những kiểu tấn công như thế được
Điều đó cho thấy một thuật toán mã hoá cực mạnh sẽ chỉ hữu ít nếu được sửdụng ở đúng những nơi cần thiết, không phải lúc nào cũng là tối ưu Cái cần bảo vệ
ở trên chính là ngôi nhà của bạn chứ không phải là đặt một hàng rào bẫy và hi vọng
kẻ trộm sẽ dính vào cái bẫy đó
Với sự phát triển mạnh mẽ của mình, hầu hết các kênh thông tin đều lấyInternet làm nền tảng để phát triển Điều tất yếu sẽ nảy sinh là vấn đề An toàn thôngtin, một ngày nào đó, bạn bỗng nhận ra rằng, thông tin của bạn đang bị theo dõi
Để vừa đảm bảo thông tin luôn kết nối, vừa đảm bảo yếu tố bảo mật của thôngtin thì phương pháp tốt nhất là mã hoá thông tin
Ngày nay việc mã hoá đã trở nên phổ cập, các quốc gia hay là các công ty lớnđều có chính sách phát triển công cụ mã hoá riêng biệt để bảo vệ cho chính thông tincủa họ
Trang 7Trên thế giới hiện có rất nhiều các loại thuật toán, trong khuôn khổ bài báo cáo,chúng ta chỉ tìm hiểu về các thuật toán được ứng dụng phổ biển trong Internet.
Hình
1.1 Mô
hình hệ thống mã hóa quy ước
Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc Cácthuộc tính được yêu cầu là:
Bí mật: Chỉ có người nhận đã xác thực có thể lấy ra được nội dung của thôngtin chứa đựng trong dạng đã mật mã hóa của nó Nói khác đi, nó không thể cho phépthu lượm được bất kỳ thông tin đáng kể nào về nội dung của thông điệp
Nguyên vẹn: Người nhận cần có khả năng xác định được thông tin có bị thayđổi trong quá trình truyền thông hay không
Xác thực: Người nhận cần có khả năng xác định người gửi và kiểm tra xemngười gửi đó có thực sự gửi thông tin đi hay không
2.1.2 CÁC THUẬT TOÁN MÃ HÓA
Hình 1.2: Nguyên lý của hệ thống mã hoá đối xứng.
Nguyên lý cơ bản của hệ thống mã hoá khoá đối xứng được chỉ ra trong (hình1.2) Có thể thấy rằng bản chất của mã hoá đối xứng là cả phía thu và phía phát đều
Trang 8sử dụng cùng một khoá bí mật (SK), và thuật toán ở cả hai phía cũng đều giốngnhau Mã hoá đối xứng như trên dựa vào việc phân phối khoá một cách bảo mậtgiữa cả hai phía Nhưng thực tế là khoá chung đó lại phân phối tới tất cả mọi người
trong mạng, và vấn đề “kênh bảo mật” đã làm đau đầu những nhà quản trị mạng.
Điều nguy hiểm nhất là bất cứ ai chiếm được khoá trong quá trình phân phối cũng
có toàn quyền truy nhập tới dữ liệu do khoá đó bảo vệ Do đó, quá trình phân phối
khoá phải trên “kênh bảo mật”, bất kể là kênh logic hay kênh vật lý (hình 1.4)
Hình 1.3: Kênh nguyên lý trong hệ thống mã hoá đối xứng.
toán đối xứng, giá trị của khoá ở mỗi phía là khác nhau
Trong hệ thống RSA, dữ liệu được mã hoá bằng khoá bí mật (KXu) và chỉ cóthể giải mã được bằng khoá công khai của cặp khoá đó Cặp khoá này được tạo racùng nhau và do đó có liên quan trực tiếp với nhau Mặc dù có quan hệ với nhaunhưng nếu biết hay truy nhập được khoá công khai thì cũng không thể tính toánđược giá trị của khoá bí mật Do đó, công khai khoá mã cũng không làm ảnh hưởngtới tính bảo mật của hệ thống, nó cũng chỉ như một địa chỉ thư tín còn khoá bí mậtvẫn luôn được giữ kín Bản chất của mã hoá khoá công khai RSA là bất cứ bản tinmật mã nào đều có thể được nhận thực nếu như nó được mã hoá bằng khoá bí mậtcòn giải mã bằng khoá công khai Từ đó, phía thu còn xác định được cả nguồn gốccủa bản tin Bất cứ người nào giữ khoá công khai đều có thể nghe trộm bản tin mật
Trang 9mã bằng cách tính toán với kho bí mật, không chỉ đảm bảo tính tin cậy của bản tin
(trong một nhóm) mà còn được nhận thực, hay còn gọi là không thể từ chối, ví dụ
như người gửi không thể từ chối rằng chính họ là tác giả của bản tin đó Nó hoàntoàn trái ngược với hoạt động của khoá đối xứng, trong đó bản tin mật mã được đảmbảo tính toàn vẹn giữa phía mã hoá và giải mã, nhưng bất kỳ ai có được khoá chungđều có thể phát bản tin và từ chối rằng chính mình đã phát nó, còn phía thu thìkhông thể biết được đâu là tác giả của bản tin đó Thuật toán đối xứng yêu cầu khảnăng tính toán lớn hơn và do đó, tốc độ quá trình mã hoá chậm hơn so với mã hoáđối xứng Đó cũng là trở ngại chính trong các hệ thống cho phép tỷ lệ lỗi lớn nhưtrong truyền thông thoại Do đó, mã hoá khoá công khai không phù hợp với các bảntin có chiều dài thông thường, tuy nhiên khi kết hợp cả hai chế độ với nhau lại cóthể đảm bảo tính nhận thực, tin cậy và toàn vẹn của bản tin Nói chung, các ứngdụng sử dụng thuật toán bất đối xứng là:
Sử dụng một giá trị “băm” nhỏ làm chữ ký điện tử
Mã hoá các khoá bí mật được sử dụng trong thuật toán đối xứng
Thỏa thuận khóa mã bí mật giữa các phía trong truyền thông
Bản tin gốcBản tin gốc Bản tin đã
Mã hóa ASYMASYM
2.1.3.1 Khái niệm hệ mật mã RSA
Khái niệm hệ mật mã RSA đã được ra đời năm 1976 bởi các tác giả R.Rivets,A.Shamir, và L.Adleman Hệ mã hoá này dựa trên cơ sở của hai bài toán
+ Bài toán Logarithm rời rạc (Discrete logarith)
+ Bài toán phân tích thành thừa số
Trang 10Trong hệ mã hoá RSA các bản rõ, các bản mã và các khoá (public key vàprivate key) là thuộc tập số nguyên ZN = {1, , N-1}.Trong đó tập ZN với N=p×q
là các số nguyên tố khác nhau cùng với phép cộng và phép nhân Modulo N tạo ramodulo số học N
Khoá mã hoá EKB là cặp số nguyên (N,KB) và khoá giải mã D kb là cặp sốnguyên (N,kB), các số là rất lớn, số N có thể lên tới hàng trăm chữ số
Các phương pháp mã hoá và giải mã là rất dễ dàng
Công việc mã hoá là sự biến đổi bản rõ P(Plaintext) thành bản mã C (Ciphertext)dựa trên cặp khoá công khai KB và bản rõ P theo công thức sau đây :
C = EKB(P) = EB(P) = PKB(mod N) (1.1)
Công việc giải mã là sự biến đổi ngược lại bản mã C thành bản rõ P dựa trêncặp khoá bí mật kB , modulo N theo công thức sau :
KB.kB≡ 1 (mod γ(N)) (1.5)
trong đó γ(N) = LCM(p-1,q-1)
LCM (Lest Common Multiple) là bội số chung nhỏ nhất
Nói một cách khác, đầu tiên người nhận B lựa chọn một khoá công khai KB
một cách ngẫu nhiên Khi đó khoá bí mật kB được tính ra bằng công thức
(1.5) Điều này hoàn toàn tính được vì khi B biết được cặp số nguyên tố (p,q) thì sẽtính được γ(N)
Trang 11Bản mã C kB
Bản rõ gốc P
Hình 1.5 Sơ đồ các bước thực hiện mã hoá theo thuật toán RSA
2.1.3.2 Độ an toàn của hệ RSA
Một nhận định chung là tất cả các cuộc tấn công giải mã đều mang mụcđích không tốt Trong phần độ an toàn của hệ mã hoá RSA sẽ đề cập đến một vàiphương thức tấn công điển hình của kẻ địch nhằm giải mã trong thuật toán này
Chúng ta xét đến trường hợp khi kẻ địch nào đó biết được modulo N, khoácông khai KB và bản tin mã hoá C, khi đó kẻ địch sẽ tìm ra bản tin gốc (Plaintext)như thế nào Để làm được điều đó kẻ địch thường tấn vào hệ thống mật mã bằng haiphương thức sau đây:
Phương thức thứ nhất :
Trước tiên dựa vào phân tích thừa số modulo N Tiếp theo sau chúng sẽ tìm cáchtính toán ra hai số nguyên tố p và q, và có khả năng thành công khi đó sẽ tính đượcλ(N) và khoá bí mật k B Ta thấy N cần phải là tích của hai số nguyên tố, vì nếu N
là tích của hai số nguyên tố thì thuật toán phân tích thừa số đơn giản cần tối đa Nbước, bởi vì có một số nguyên tố nhỏ hơn N
Mặt khác, nếu N là tích của n số nguyên tố, thì thuật toán phân tích thừa số đơn giảncần tối đa N1/n bước
Một thuật toán phân tích thừa số có thể thành phức tạp hơn, cho phép phântích một số N ra thành thừa số trong O( P )bước, trong đó p là số chia nhỏ nhất của
N, việc chọn hai số nguyên tố là cho thuật toán tăng hiệu quả
Phương thức thứ hai :
Chọn p và q
C=P KB (mod N)
P=C KB (mod N) Chọn khóa K B
Chọn khóa K B
Tính γ(N)
Tính N=p*q
Trang 12Phương thức tấn công thứ hai vào hệ mã hoá RSA là có thể khởi đầu bằng cáchgiải quyết trường hợp thích hợp của bài toán logarit rời rạc Trường hợp này kẻđịch đã có trong tay bản mã C và khoá công khai KB tức là có cặp (KB,C)
Cả hai phương thức tấn công đều cần một số bước cơ bản, đó là :
O(exp √ lnNln(lnN)), trong đó N là số modulo
Các khoá cho hệ mã hoá RSA có thể được tạo ra mà không phải tính toánquá nhiều
Một lần nữa, ta lại nói đến các phương pháp kiểm tra số nguyên tố Mỗi sốnguyên tố lớn có thể được phát sinh bằng cách đầu tiên tạo ra một số ngẫu nhiênlớn, sau đó kiểm tra các số kế tiếp cho tới khi tìm được một số nguyên tố.Mộtphương pháp đơn giản thực hiện một phép tính trên một con số ngấu nhiên, với xácsuất 1/2 sẽ chứng minh rằng số được kiểm tra không phải nguyên tố Bước cuốicùng là tính p dựa vào thuật toán Euclid
Như phần trên đã trình bày trong hệ mã hoá công khai thì khoá giải mã (privatekey) kB và các thừa số p,q là được giữ bí mật và sự thành công của phương pháp làtuỳ thuộc vào kẻ địch có khả năng tìm ra được giá trị của kB hay không nếu chotrước N và KB Rất khó có thể tìm ra được kB từ KB cần biết về p và q, như vậycần phân tích N ra thành thừa số để tính p và q Nhưng việc phân tích ra thừa số làmột việc làm tốn rất nhiều thời gian, với kỹ thuật hiện đại ngày nay thì cần tới hàngtriệu năm để phân tích một số có 200 chữ số ra thừa số
Độ an toàn của thuật toán RSA dựa trên cơ sở những khó khăn của việc xácđịnh các thừa số nguyên tố của một số lớn Bảng dưới đây cho biết các thời gian dựđoán, giả sử rằng mỗi phép toán thực hiện trong một micro giây
Trang 13Số các chữ số trong số được phân
2.1.4 MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG GIẢI THUẬT RSA
Tính chất an toàn của phương pháp RSA dựa trên cơ sở chi phí cho việc giải
mã bất hợp lệ thông tin đã được mã hóa sẽ quá lớn nên xem như không thể thựchiện được
Vì khóa là công cộng nên việc tấn công bẻ khóa phương pháp RSA thườngdựa vào khóa công cộng để xác định được khóa riêng tương ứng Điều quan trọng làdựa vào n để tính p, q của n, từ đó tính được d
Sự che dấu thông tin trong hệ thống RSA
Hệ thống RSA có đặc điểm là thông tin không phải luôn được che dấu Giả sử ngườigởi có e = 17, n = 35 Nếu anh ta muốn gởi bất cứ dữ liệu nào thuộc tập sau:
{1, 6, 7, 8, 13, 14, 15, 20, 21, 22, 27, 28, 29, 34}
thì kết quả của việc mã hóa lại chính là dữ liệu ban đầu Nghĩa là, M = Me mod n.Còn khi p = 109, q = 97, e = 865 thì hệ thống hoàn toàn không có sự che dấuthông tin, bởi vì: ∀M, M = M865 mod (109*97),
Trang 14Với mỗi giá trị n, có ít nhất 9 trường hợp kết quả mã hóa chính là dữ liệu nguồn banđầu Thật vậy, M = Me mod n (1.8)
hay: M = Me mod p và M = Me modq (1.9)
Với mỗi e, có ít nhất ba giải pháp thuộc tập {0, 1, -1} Để xác định chính xác sốthông điệp không được che dấu (không bị thay đổi sau khi mã hóa) ta sử dụng địnhlý sau: “Nếu các thông điệp được mã hóa trong hệ thống RSA được xác định bởi sốmodulus n = p.q (p,q là số nguyên tố) và khóa công cộng e thì có:
m = [1+gcd(e-1, p-1)][1+gcd(e-1), q-1] thông điệp không bị che dấu
Mấu chốt để có thể giải mã được thông tin là có được giá trị p và q tạo nên giá trị n.Khi có được hai giá trị này, ta có thể dễ dàng tính ra được
φ(n) =(p – 1)(q – 1) và giá trị a = b–1
mod φ(n) theo thuật toán Euclide mở rộng Nếu số nguyên n có thể được phân tích
ra thừa số nguyên tố, tức là giá trị p và q có thể được xác định thì xem như tính antoàn của phương pháp RSA không còn được bảo đảm nữa Như vậy, tính an toàncủa phương pháp RSA dựa trên cơ sở các máy tính tại thời điểm hiện tại chưa đủkhả năng giải quyết việc phân tích các số nguyên rất lớn ra thừa số nguyên tố Tuynhiên, với sự phát triển ngày càng nhanh chóng của máy tính cũng như những bướcđột phá trong lĩnh vực toán học, phương pháp RSA sẽ gạp phải những khó khăntrong việc bảo mật thông tin Năm 1994, Peter Shor, một nhà khoa học tại phòng thínghiệm AT&T, đã đưa ra một thuật toáncó thể phân tích một cách hiệu quả các sốnguyên rất lớn trên máy tính lượng tử Mặc dù máy tính lượng tử hiện chưa thể chếtạo được nhưng rõ ràng phương pháp RSA sẽ gặp phải nhiều thách thức lớn trongtương lai
Trang 15CHƯƠNG 2 CHỮ KÝ ĐIỆN TỬ
2.2.1 GIỚI THIỆU
Chữ ký điện tử không được sử dụng nhằm bảo mật thông tin mà nhằm bảo vệthông tin không bị người khác cố tình thay đổi để tạo ra thông tin sai lệch Nói cáchkhác, chữ ký điện tử giúp xác định được người đã tạo ra hay chịu trách nhiệm đốivới một thông điệp
2.2.2 KHÁI NIỆM VỀ CHỮ KÝ ĐIỆN TỬ
Kể từ khi con người phát minh ra chữ viết, các chữ ký thường luôn được sửdụng hàng ngày, chẳng hạn như ký một biên nhận trên một bức thư nhận tiền từngân hàng ký hợp đồng hay một văn bản bất kỳ nào đó Chữ ký viết taythông thường trên tài liệu thường được dùng để xác định người ký nó
Sơ đồ chữ ký điện tử là một phương pháp ký một văn bản hay lưu bức điệndưới dạng điện tử Chẳng hạn một bức điện có chữ ký được lưu hành trên mạngmáy tính Chữ ký điện tử từ khi ra đơì đã có nhiều ứng dụng rộng rãi trong cácgiao dịch thương mại, từ việc xác minh chữ ký cho đến các thẻ tín dụng, các sơ đồđịnh danh và các sơ đồ chia se bí mật Sau đây, chúng ta sẽ tìm hiểu một số sơ
đồ chữ ký quan trọng Song trước hết, chúng ta sẽ thảo luận một vài điểm khác biệt
cơ bản giữa chữ ký thông thường và chữ ký điện tử
Đầu tiên là vấn đề ký một tài liệu Với chữ ký thông thường nó là một phầnvật lý của tài liệu Tuy nhiên, một chữ ký điện tử không gán theo kiểu vật lý vào bứcđiện nên thuật toán được dung là phải “không nhìn thấy” theo cách nào đó trên bứcđiện
Thứ hai là vấn đề kiểm tra Chữ ký thông thường được kiểm tra bằng cách sosánh nó với chữ ký xác thực khác Ví dụ, ai đó ký một tấm sec để mua hàng, ngườibán sẽ so sánh chữ ký trên mảnh giáy đó với chữ ký nằm mặt sau thẻ tín dụng đểkiểm tra Mặt khác, chữ ký số có thể kiểm tra bằng một thuật toán kiểm tra một cáchcông khai Như vậy, bất kỳ ai cũng có thể kiểm tra được chữ ký điện tử Việc sửdụng một sơ đồ ký an toàn có thể ngăn chặn được khả năng giả mạo
Sự khác biệt cơ bản giữa chữ ký điện tử và chữ ký thông thường là chỗ : mộtbản copy tài liệu có chữ ký được đồng nhất với bản gốc Nói cách khác, tài liệu cóchữ ký trên giấy thường có thể khác biệt với bản gốc điều này để ngăn chặn một bứcđiện được ký khỏi bị dừng lại Ví dụ, nếu B ký một bức điện xác minh cho A rút100$ từ tài khoản của mình, anh ta chỉ muốn A có khả năng làm điều đó một lần.Vì
Trang 16thế, bẩn thân bức điện phải chứa thông tin để khỏi bị dừng lại, chẳng hạn như dùngdịch vụ gán nhãn thời gian (Time Stamping Service).
Một sơ đồ chữ ký điện tử thường chứa hai thành phần :thuật toán ký sig() vàthuật toán xác minh ver() B có thể ký một buwccs điện x dùng thuật toán ký antoàn(bí mật).kết quả chữ ký y= sig(x)nhận được có thể kiểm tra bằng thuật toán xácminh công khai ver(y) Khi cho trước cặp (x,y),thuật toán xác minh cho giá trị Truehay False tùy thuộc vào chữ ký được xác thực như thế nào
Vậy thế nào là chữ ký điện tử ? Chúng ta có một số định nghã như sau :
Là một định danh điện tử được tạo ra bởi máy tính được các tổ chức sử dụngnhằm đạt được tính hiệu quả và có hiệu lực như chữ ký tay
Là một cơ chế xác thực hóa cho phép người tạo ra thông điệp đính kèm một
mã số vào thông điệp giống như là việc ký một chữ ký lên một văn bản bình thường.Các chữ ký điện tử được sinh ra và sử dụng bởi các hệ chữ ký(sơ đồ) điện tử,dưới đây là một định nghĩa một hệ chữ ký điện tử
Định nghĩa :
Một sơ đồ chữ ký điện tử là bộ 5 (P, A, K,S, V) thỏa mãn các điều kiện dưới đây.1) P là tập hữu hạn các bức điện (thông điêp, bản rõ) có thể
2) A là tập hữu hạn các chữ ký có thể
3) K là tập không gian khoá (tập hữu hạn các khóa có thể)
4) Với mỗi khoá K € k tồn tại một thuật toán ḱý sigk € s và một thuật toánxác minh verk € V Mỗi sigk: p → A và verk: P x A → {TRUE, FALSE} là nhữnghàm sao cho mỗi bức điện x € p và mỗi chữ ký y € A thoả mãn phương trình dướiđây:
đủ thời gian, C luôn có thể giả mạo chữ ký của B Như vậy mục đích của chúng
ta là tìm các sơ đồ chữ ký điện tử an toàn về mặt tính toán
Trang 17Chú ý rằng ai đó có thể giả mạo chữ ký của B trên một bức điện “ngẫunhiên” x bằng cách tính x = ek(y) với y nào đó, khi đó y = sigk(x) Một biện phápxung quanh vấn đề khó khăn này là yêu cầu các bức điện chứa đủ phần dư đểchữ ký giả mạo kiểu này không phù hợp với toàn bộ nội dung của bức điện x trừmột xác suất rất nhỏ Có thể dùng các hàm Băm (hash function) như MD4, MD5trong việc tính kết nối các sơ đồ chữ ký điện tử sẽ loại trừ phương pháp giả mạonày (sẽ trình bày trong các phần sau của tài liệu).
2.2.3 THUẬT TOÁN CHỮ KÝ ĐIỆN TỬ
Thuật toán chữ ký điện tử sử dụng khoá công khai để ký lên tài liệu phía phátbản tin sử dụng hàm băm trong phần dữ liệu gốc của bản tin cùng với ngày giờ tạobản tin đó để tạo thành bản tin hoàn chỉnh Khi sử dụng chữ ký theo thuật toán RSA,hàm băm tạo ra một giá trị băm rồi được mã hoá bằng khoá bí mật của tác giả để tạothành một chữ ký số duy nhất để đính kèm với bản tin
Phía thu kiểm tra tính nhận thực và toàn vẹn của bản tin bằng cách chạy thuậttoán kiểm tra với các đầu vào là bản tin nhận được, chữ ký điện tử cùng với khoácông khai Đầu ra thuật toán chỉ ra rằng bản tin là hợp lệ nếu vẫn giữ nguyên gốchay không hợp lệ nếu bản tin đã bị sửa đổi
Hình 2.1: Kiểm tra chữ ký điện tử.
Chữ ký điện tử được sử dụng để kiểm tra một bản tin có thực sự đến từ ngườigửi được mong đợi hay không, hình thành dựa trên quan điểm rằng chỉ người tạo rachữ ký mới có khoá riêng và nó có thể được kiểm tra bằng cách sử dụng khoá côngcộng tương ứng Chữ ký điện tử được tạo bằng cách tính toán tóm tắt bản tin (MD:Message Degest) của một tài liệu, sau đó kết hợp với các thông tin về người ký, temthời gian và một vài các thông tin cần thiết khác Mỗi MD là một hàm lấy số liệuđầu vào có kích cỡ tuỳ ý (bản tin) và tạo thành đầu ra có kích cỡ cố định gọi là bảntóm tắt Tập hợp thông tin này sau đó được mật mã hoá sử dụng khoá bí mật của
Trang 18người gửi có sử dụng một thuật toán không đối xứng thích hợp Kết quả sau khi mật
mã hoá khối thông tin là chữ ký điện tử
MD được tính toán là một giá trị bit nhằm để mô tả tình trạng hiện thời củatài liệu Nếu tài liệu thay đổi, MD cũng sẽ thay đổi Bằng cách hợp nhất MD vàochữ ký điện tử, khi chữ kýđiện tử đã được tạo thành nó cho phép người nhận tài liệu
có thể dễ dàng phát hiện ra tài liệu có bị biến đổi hay không
Mục đích sử dụng của chữ ký điện tử cũng tương tự như chữ ký thôngthường, bao gồm:
Nhận thực: Nếu người nhận thành công trong việc giải mã thông tin với một
khóa công cộng xác định thì người đó có thể chắc chắn rằng bản tin đó đã được kýbởi chính người sử dụng khoá bí mật tương ứng Một vấn đề nữa là phải kiểm traxem khoá công cộng này có thực sự là của người gửi đích thực hay không Vấn đềnày có thể được giải quyết bằng cách sử dụng các chứng nhận chữ ký điện tử
Tính toàn vẹn: Nếu một bản tin đã được ký mà thay đổi trong quá trình
truyền dẫn, người nhận sẽ không thể giải mã được với khoá công cộng Đây là mộtcách dễ dàng để phát hiện ra những thay đổi cố ý hoặc vô ý trong thông tin đượcphát
Tính không thể phủ nhận: Trong các phiên giao dịch điện tử, một yêu cầu
rất quan trọng đối với mỗi bên tham gia là phải đảm bảo rằng bên còn lại không thể
từ chối việc phải thực thi một số hành động nào đó Chữ ký điện tử cũng rất thíchhợp với yêu cầu này do một tài liệu điện tử chỉ có thể được ký bởi chính người sởhữu khoá bí mật
Thủ tục ký và kiểm tra: Các bước cần thiết để ký và kiểm tra một mẫu
thông tin được mô tả ở (hình 2.1) Các thành phần cần thiết của một hệ thống nhưvậy là các thuật toán khoá công cộng và thuật toán Hash mà sẽ được lựa chọn mộtcách cẩn thận theo yêu cầu Số liệu gốc trước tiên sẽ được làm mới lại bằng cách sửdụng hàm một chiều Hash, sau đó được mật mã hoá bằng khoá bí mật của ngườigửi Mục đích của thủ tục này là giảm thời gian mật mã hoá do các thuật toán khôngđối xứng thực thi chậm hơn nhiều các thuật toán đối xứng Cả số liệu gốc lẫn chữ kýđều được gửi qua kênh thông tin không an toàn đến người nhận
Trang 19Tµi liÖu gèc
Tµi liÖu gèc
Tµi liÖu gèc
từ người gửi mong đợi Chú ý rằng người nhận phải lấy chứng nhận số của ngườigửi từ một server chứng nhận, đây chính là bước kiểm tra giá trị chứng nhận
Các khóa công cộng đã được mô tả trong phần trước và được sử dụng trongnối mạng số liệu để kiểm tra các chữ ký điện tử, bản thân chúng không mang bất cứthông tin nào về các thực thể cung cấp các chữ ký Công nghệ nối mạng số liệu thừanhận vấn đề này và tiếp nhận các chứng nhận an ninh để ràng buộc khóa công cộng
và nhận dạng thực thể phát hành khóa Chứng nhận chữ ký điện tử đảm bảo rằng
một khoá công cộng là sở hữu của thực thể mà nó thể hiện Để thực hiện được điềunày, thì chính chứng nhận này cũng phải được kiểm tra để đảm bảo rằng nó đại diệncho đối tượng cần mong muốn (đối tượng này có thể là một cá nhân hoặc một tổ
Trang 20được gọi là thẩm quyền chứng nhận (CA - Certificate Authority) gồm có VeriSign,Entrust, và Certicom Các thẩm quyền này được phép cung cấp các dịch vụ này chocác thực thể được nhận dạng hợp lệ khi chúng yêu cầu Để thực hiện chức năng củamình, một CA phải được tin tưởng bởi các thực thể dựa trên các dịch vụ của nó.Người dùng có thể mua chứng nhận số từ CA và sử dụng chứng nhận này để nhậnthực và để lưu hành khoá riêng của họ Một chứng nhận số điển hình chứa những
thông tin sau:
Tên của người đang nắm giữ chứng nhận chữ ký điện tử, cũng như thôngtin khác mà có thể nhận dạng duy nhất người này, thông tin phụ thêm có thể là URLcủa một Web Server đang sử dụng chứng nhận hay một địa chỉ email
Khoá công cộng của người đang nắm giữ chứng nhận chữ ký điện tử
Tên của CA lưu hành chứng nhận này
Thời hạn sử dụng của chứng nhận(thường là ngày bắt đầu và ngày hết hạn)
Một chữ ký số của CA để có thể nhận ra chứng nhậnchữ ký điện tử đềphòng trường hợp phiên truyền dẫn bị phá rối
Tất cả các chứng nhận được ký bằng một khóa riêng của CA Người sử dụngchứng nhận có thể xem kiểm tra thông tin của chứng nhận có hợp lệ không bằngcách giải mật mã chữ ký bằng một khoá kiểm tra công cộng nhận được từ chứngnhận phát đi từ thẩm quyền mức phân cấp cao hơn và kiểm tra xem nó có phù hợpvới MD (Message Digest) của nội dung nhận được trong chứng nhận hay không.Chữ ký thường là một MD được mật mã hóa
Dạng chính của chứng nhận số là X.509, một tiêu chuẩn công nghiệp chonhận thực Những chứng nhận này là rất thông dụng trong các ứng dụng Internet.Trong lĩnh vực vô tuyến có loại chứng nhận số khác gọi là chứng nhận WTLSServer WAP (WAP Server WTLS Certificate), các chứng nhận này thường được gọingắn gọn là chứng nhận WTLS, đây là phiên bản đơn giản hơn của X.509 được tạo
ra do chứng nhận X.509 quá lớn đối với các ứng dụng vô tuyến Các chứng nhậnWTLS chủ yếu được sử dụng trong các ứng dụng WAP nơi mà các trình duyệtmuốn nhận thực nhận dạng của một Server WAP và mật mã hoá thông tin bằng cách
sử dụng giao thức an ninh lớp truyền tải vô tuyến (WTLS - Wireless TransportLayer Security)
2.2.5 CHUẨN CHỮ KÝ ĐIỆN TỬ (Digital Signature Standard)
Chuẩn chữ ký điện tử (DSS) được sửa đổi từ hệ chữ ký ElGammal Nó đượccông bố tại hội nghị Tiêu chuẩn xử lý thông tin Liên Bang (FIPS) vào 19/05/1994
Trang 21và trở thành chuẩn vào 01/12/1994 DSS sử dụng một khoá công khai để kiểm tratính toàn vẹn của dữ liệu nhận được và đồng nhất với dữ liệu của người gửi DSScũng có thể sử dụng bởi người thứ ba để xác định tính xác thực của chữ ký và dữliệu trong nó Đầu tiên chúng ta hãy tìm hiểu động cơ của sự thay đổi này, sau đó sẽtìm hiểu thuật toán của DSS.Trong rất nhiều trường hợp, một bức điện có thể được
mã hoá và giải mã một lần, vì vậy nó đáp ứng cho việc sử dụng của bất kỳ hệthống bảo mật nào được biết là antoàn lúc bức điện được mã hoá Nói cách khác,một bức điện được ký đảm nhiệm chức năng như một văn bản hợp pháp, chẳnghạn như các bản hợp đồng, vì vậy nó cũng giống như việc cần thiết để xác minhchữ ký sau rất nhiều năm bức điện được ký Điều này rất quan trọng cho việcphòng ngừa về độ an toàn của chữ ký được đưa ra bởi một hệ thống bảo mật Vì
hệ chữ ký ElGammal không đảm nhận được điều này, việc thực hiện này cần mộtgiá trị lớn modulo p Tất nhiên p nên có ít nhất 512-bit, và nhiều người cho rằng
độ dài của p nên là 1024-bit nhằm chống lại việc giả mạo trong tương lai.Tuy nhiên,ngay cả một thuật toán modulo 512-bit dùng để ký cũng phải thực hiện việc tínhtoán đến 1024-bit Cho ứng dụng tiềm năng này, có rất nhiều card thông minhđược đưa ra, nhằm thực hiện một chữ ký ngắn hơn như mong muốn DSS đã sửađổi hệ chữ ký ElGammal cho phù hợp theo cách này một cách khéo léo, để mỗi160-bit bức điện được ký sử dụng một chữ ký 320-bit, nhưng việc tính toán đượcthực hiện với 512-bit modulo p Cách này được thực hiện nhờ việc chia nhỏ Z*
pthành các trương có kích thước 2160 Việc thay đổi này sẽ làm thay đổi giá trị δ
Cho p là một số nguyên tố 512-bit trong trường logarit rời rạc Zp, q là một sốnguyên tố 160-bit và q chia hết (p-1) Cho α € Zp ; P = Zp , A = Zq*Zq, và định
Trang 22trong đó giá trị p, q, α và β là công khai, còn a là bí mật.
Với K = (p, α, a, β) và chọn một số ngẫu nhiên k (1 ≤ k ≤ q-1), định nghĩa:
Sigk(x, k) = (y, δ)Chú ý rằng, với DSS thì δ ≠ 0 (mod q) vì giá trị: δ -1 mod q cần cho việcxác minh chữ ký (điều này cũng tương tự như việc yêu cầu UCLN(,δ p-1) = Khi
B tính một giá trị δ ≡ 0 (mod q) trong thuật toán ký, anh ta nên bỏ nó đi và chọnmột số ngẫu nhiên k mới
Ví dụ: Chúng ta chọn q = 101 và p = 78*q + 1 = 7879 và g = 3 là mộtnguyên tố trong Z7879 Vì vậy, ta có thể tính: α = 378 mod 7879 = 170
(17045456727 mod 7879) mod 101 = 2518 mod 101 = 94
Kể từ khi DSS được đề xuất vào năm 1991, đã có nhiều phê bình đưa ra.Chẳng hạn như kích cỡ của moduloe p bị cố định 512-bit, điều mà nhiều ngườikhông muốn Vì vậy, NIST đã thay đổi chuẩn này để có thể thay đổi kíchthước moduloe (chia bởi 64) thành một dãy từ 512 đến 1024-bit
Ngoài ra, một sự phê bình khác về DSS là chữ ký được tạo ra nhanh hơn
so với việc xác minh nó Trái ngược với hệ chữ ký RSA thì việc xác minh côngkhai là rất nhanh chóng (mà ta biết trong thương mại điện tử việc xác minh là rấtquan trọng và đòi hỏi thời gian thực hiện phải nhanh chóng)
2.2.6 GIẢI PHÁP ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ
Phần này, em xin được đề xuất giải pháp ứng dụng chữ ký điện tử trong hệthống quản lý Quá trình gửi và nhận các tệp văn bản phục vụ quản lý dựa vàothuật toán băm MD5 và thuật toán mã hóa RSA
2.2.6.1 Quá trình ký và gửi các tệp văn bản
Trang 23- Từ file cần gửi ban đầu, chương trình sẽ sử dụng hàm băm MD5 để mã hóa thành chuỗi ký tự dài 128 bit, hash value (gọi là bản tóm lược)
- Chương trình sử dụng thuật toán RSA để mã hóa khóa riêng (private key) củangười gửi và bản tóm lược hash value thành một dạng khác (giá trị băm ở dạngmật mã) gọi là chữ ký điện tử
- Kết hợp file ban đầu với chữ ký điện tử thành một thông điệp đã ký và gửi đicho người nhận
Hình 2.3 Sơ đồ mô tả quá trình ký và gửi các tệp văn bản
2.2.6.2 Quá trình nhận các tệp văn bản
Sau khi người nhận đăng nhập vào hệ thống và thực hiện việc nhận các tệp vănbản Hệ thống sẽ tách thông điệp đã ký thành ra file và chữ ký điện tử Đến giaiđoạn này sẽ có 2 quá trình kiểm tra :
Kiểm tra file có đúng người gửi hay không?
- Sử dụng thuật toán RSA để giải mã chữ ký điện tử bằng khóa công khai(username) của người gửi
- Nếu giải mã không được thì file nhận được không đúng người gửi
- Nếu giải mã thành công thì file nhận được đúng người gửi và có được Bản tómlược 1
Kiểm tra file có bị thay đổi hay không?
Trang 24- Kiểm tra Bản tóm lược 1 và Bản tóm lược 2 có giống nhau hay không? Nếugiống nhau thì file nhận được là vẹn toàn (không bị thay đổi hay tác động), ngượclại là file đã bị thay đổi
Hình 2.4 Sơ đồ mô tả quá trình nhận các tệp văn bản
2.2.7 VẬN DỤNG VÀO HỆ THỐNG
Để vận dụng giải pháp này trong hệ thống gửi và nhận tệp văn bản chúng tacần tìm hiểu thêm trong các tài liệu tham khảo, từ đó có thể lựa chọn, sử dụngcác thuật toán, ngôn ngữ để xây dựng chương trình Trong khuôn khổ một bài báo,chúng tôi giới thiệu tổng quan một số bước để xây dựng các hàm và thuật toánchính như sau:
- Do sử dụng hàm băm MD5 để mã hóa văn bản gốc thành 32 kí tự nên kích thuớccủa khóa có độ đài phải đủ lớn và trong thuật toán RSA có cả hàm mũ nên ta cầnxây dựng các hàm xử lý số có kích thước lớn với các phép toán cơ bản: cộng, trừ,nhân, chia, modulo…
- Xây dựng thuật toán phát sinh số nguyên tố;
- Xây dựng thuật toán chọn e, thuật toán chọn d;
- Sử dụng khóa riêng (n, d) để tính toán chữ ký S = Md
Trang 25- Sử dụng khóa công khai của người gửi (n, e) để tính toán lại M = S mod n;
- Xây dựng các hàm gửi và nhận file
2.2.8 KẾT LUẬN
Chữ ký điện tử là nền tảng để bảo đảm an ninh trong lĩnh vực thương mạiđiện tử, các phần mềm quản lý có kiến trúc kiểu Client/Server Chúng tôi đã nêuđược quy trình ứng dụng chữ ký điện tử trên cơ sở kết hợp giữa thuật toán bămMD5 và thuật toán mã hóa RSA Từ đó, chúng tôi đã đề ra giải pháp ứng dụngchữ ký điện tử trong phần mềm quản lý cụ thể là quá trình gửi và nhận các tệp vănbản
Từ giải pháp này, ta có thể xây dựng và cài đặt các hàm sử dụng tính năngcủa chữ ký điện tử trong quá trình gửi và nhận các tệp văn bản ứng dụng cho các
hệ thống quản lý nhằm đảm bảo tính bảo mật của hệ thống
Trang 26CHƯƠNG 3 : TỔNG QUAN VỀ HÀM BĂM VÀ THUẬT TOÁN
HÀM BĂM MD5
2.3.1 ĐẶT VẤN ĐỀ
Trên thực tế, các thông điệp sử dụng chữ ký điện tử có độ dài bất kỳ, thậmchí lên đến vài Megabyte Trong khi đó, thuật toán chữ ký điện tử được trình bàytrên đây lại áp dụng trên các thông điệp có độ dài cố định và thường tương đối ngắn,chẳng hạn như phương pháp DSS sử dụng chữ ký 320 bit trên thông điệp 160 bit
Để giải quyết vấn đề này, chúng ta có thể chia nhỏ thông điệp cần ký thành các đoạnnhỏ có độ dài thích hợp và ký trên từng mảnh thông điệp này Tuy nhiên, giải phápnày lại có nhiều khuyết điểm và không thích hợp áp dụng trong thực tế:
Nếu văn bản cần được ký quá dài thì số lượng chữ ký được tạo ra sẽ rấtnhiều và kết quả nhận được là một thông điệp có kích thước rất lớn Chẳng hạn nhưkhi sử dụng phương pháp DSS thì thông điệp sau khi được ký sẽ có độ dài gấp đôivăn bản nguyên thủy ban đầu
Hầu hết các phương pháp chữ ký điện tử có độ an toàn cao đều đòi hỏi chiphí tính toán cao và do đó, tốc độ xử lý rất chậm Việc áp dụng thuật toán tạo chữ kýđiện tử nhiều lần trên một văn bản sẽ thực hiện rất lâu
Từng đoạn văn bản sau khi được ký có thể dễ dàng bị thay đổi thứ tự hay bỏbớt đi mà không làm mất đi tính hợp lệ của văn bản Việc chia nhỏ văn bản sẽ khôngthể bảo đảm được tính toàn vẹn của thông tin ban đầu cần được ký
2.3.2 GIỚI THIỆU VỀ HÀM BĂM MẬT MÃ
Hàm băm mật mã là một thủ tục tất định có đầu vào là khối dữ liệu bất kỳ
và trả về một xâu bit có độ dài cố định, gọi là giá trị băm (mật mã), mà bất kỳ sựthay đổi vô tình hay các ý trên dữ liệu sẽ thay đổi giá trị băm Dữ liệu đem mã hóathường được gọi là thông điệp (message), và giá trị băm đôi khi còn được gọi là tómlược thông điệp (message digest) hay giá trị tóm lược (digest)
Hàm băm mật mã lý tưởng có 4 tính chất chính sau:
• dễ dàng tính giá trị băm với bất kỳ thông điệp cho trước nào,
• không thể tìm được một thông điệp từ một giá trị băm cho trước,
• không thể sửa được một thông điệp mà không làm thay đổi giá trị băm của nó,
• không thể tìm ra 2 thông điệp khác nhau mà có cùng giá trị băm
Hàm băm mật mã có rất nhiều ứng dụng trong an toàn thông tin, nhất là cho
Trang 27chữ ký điện tử (Digital Signatures), mã xác thực thông điệp (MACs – MessageAuthentication Codes), và một số dạng xác thực khác Chúng cũng có thể sử dụngnhư các hàm băm thông thường, để đánh chỉ số dữ liệu trong bảng băm: như điểmchỉ, để nhận diện dữ liệu lặp hay xác định tệp dữ liệu duy nhất: hay nhưchecksums để nhận biết sự thay đổi dữ liệu Thật vậy, trong lĩnh vực an toàn thôngtin, giá trị băm mật mã đôi khi được gọi điểm chỉ (số), checksums, hay giá trị băm,
dù rằng tất cả các thuật ngữ này chỉ đại diện về mặt chức năng nhưng các tính
Kháng tiền ảnh (Preimage resistance): cho trước một giá trị băm h, khó tìm
ra thông điệp m thỏa mã h = hash(m) Khái niệm như là hàm một chiều (one wayfunction) Các hàm thiếu tính chất này sẽ bị tổn thương bởi các tấn công tiền ảnh(preimage attacks)
Kháng tiền ảnh thứ 2 (Second preimage resistance): cho trước một đầu vàom1, khó có thể tìm ra đầu vào m2 khác (không bằng m1) thỏa mãn hash(m1) =hash(m2) Tính chất này đôi khi như là kháng va chạm yếu (weak collisionresistance) Các hàm thiếu tính chất này sẽ bị tổn thương bởi các tấn công tiền ảnhthứ 2 (second preimage attacks)
Kháng va chạm (Collision resistance): khó có thể tìm ra 2 thông điệp m1 vàm2 thỏa mãn hash(m1) = hash(m2) Một cặp như vậy được gọi là một va chạmbăm (mật mã), và tính chất này đôi khi như là kháng va chạm mạnh (strongcollision resistance) Tính chất này yêu cầu rằng một giá trị băm tối thiểu cũngmạnh hơn yêu cầu kháng tiền ảnh, hơn nữa các va chạm có thể tìm được bởi tấncông ngày sinh (birthday attack)
Các tính chất trên nói lên rằng đối phương ác ý không thể thay hoặc sửa dữliệu đầu vào mà không làm thay đổi giá trị tóm lược của nó Do đó, nếu 2 xâu cócùng một giá trị tóm lược, thì người ta tin tưởng rằng chúng là giống nhau
Một hàm có các tiêu chí này vẫn có thể có các tính chất không mong muốn