Mục lục1.Một số khái niệm:31.1 Đại diện thông điệp:31.2 Các phương pháp tấn công đại diện thông điệp:32. Các bài toán và giải pháp:43. Hàm băm (hash function)43.1.Đặc trưng:43.2. Phân loại:53.3. Hàm băm và tính toàn vẹn của dữ liệu63.4. Hàm băm mật mã93.4.1 Giới thiệu93.4.2 Các khái niệm và định nghĩa :103.4.3Cấu trúc cơ bản của thuật toán băm:113.4.4 Giải thuật MD4123.4.5 Giải thuật MD5123.4.6 Giải thuật SHA – 1:143.5.Mật mã học và mật mã khóa công khai163.5.1 Một số thuật ngữ và khái niệm164. Chương trình Demo:17 1.Một số khái niệm: 1.1 Đại diện thông điệp:Là đại diện của một thông điệp, được tạo ra nhờ hàm băm. Thông điệp đầu vào có dung lương, kích thước tùy tùy ý, các đại điện thông điệp thu được có kích thước cố định: 128 bit với MD, 160 bit với SHA1.Với mỗi thông điệp đầu vào thì chỉ tính được một đại diện duy nhất, khó suy ngược lại nội dung thông điệp từ đại diện của nó. Hai thông điệp khác nhau sẽ có hai đại diện thông điệp khác nhau.1.2 Các phương pháp tấn công đại diện thông điệp:Cho một đại diện thông điệp, tìm được một thông điệp(chưa biết) khớp với đại diện đã cho.Tìm các “ xung đột băm” để hai thông điệp khác nhau có cùng đại diện thông điệp.Nếu có thể thực hiện một trong hai việc trên, một người có thể tấn công bằng cách dùng các cách trên để thay một thông điệp không được xác nhận (unauthorized message) vào chỗ của một thông điệp được xác nhận hoặc có thể tìm hiểu được điều gì đó hữu ích về một thông điệp nếu biết đại diện của nó.Tìm các biện pháp cần thiết để chống đối lại các hành động phá hoại như sau:●Để lộ bí mật: giữ bí mật nội dung mẩu tin, chỉ cho người có quyền biết.●Thám mã đường truyền: không cho theo dõi hoặc làm trì hoãn việc truyền tin.●Giả mạo: lấy danh nghĩa người khác để gửi tin. ●Sửa đổi nội dung: thay đổi, cắt xén, thêm bớt thông tin. ●Thay đổi trình tự các gói tin nhỏ của mẩu tin truyền. ●Sửa đổi thời gian: làm trì hoãn mẩu tin.
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-CHUYÊN ĐỀ:
KHẢ NĂNG “TẤNCÔNG ĐẠI DIỆN THÔNG ĐIỆP”
GV: PGS.TS Trịnh Nhật Tiến Học viên: Kiều Minh Nguyệt Khóa: K19-HTTT
Trang 2Mục lục
1 Một số khái niệm: 3
1.1 Đại diện thông điệp: 3
1.2 Các phương pháp tấn công đại diện thông điệp: 3
2 Các bài toán và giải pháp: 4
3 Hàm băm (hash function) 4
3.1.Đặc trưng: 4
3.2 Phân loại: 5
3.3 Hàm băm và tính toàn vẹn của dữ liệu 6
3.4 Hàm băm mật mã 9
3.4.1 Giới thiệu 9
3.4.2 Các khái niệm và định nghĩa : 10
3.4.3 Cấu trúc cơ bản của thuật toán băm: 11
3.4.4 Giải thuật MD4 12
3.4.5 Giải thuật MD5 12
3.4.6 Giải thuật SHA – 1: 14
3.5.Mật mã học và mật mã khóa công khai 16
3.5.1 Một số thuật ngữ và khái niệm 16
4 Chương trình Demo: 17
Trang 31 Một số khái niệm:
1.1 Đại diện thông điệp:
- Là đại diện của một thông điệp, được tạo ra nhờ hàm băm Thông điệp đầu vào có dung lương, kích thước tùy tùy ý, các đại điện thông điệp thu được có kích thước
cố định: 128 bit với MD, 160 bit với SHA-1
- Với mỗi thông điệp đầu vào thì chỉ tính được một đại diện duy nhất, khó suy ngược lại nội dung thông điệp từ đại diện của nó Hai thông điệp khác nhau sẽ có hai đại diện thông điệp khác nhau
1.2 Các phương pháp tấn công đại diện thông điệp:
- Cho một đại diện thông điệp, tìm được một thông điệp(chưa biết) khớp với đại diện đã cho
- Tìm các “ xung đột băm” để hai thông điệp khác nhau có cùng đại diện thông điệp
Nếu có thể thực hiện một trong hai việc trên, một người có thể tấn công bằng cách dùng các cách trên để thay một thông điệp không được xác nhận (unauthorized message) vào chỗ của một thông điệp được xác nhận hoặc có thể tìm hiểu được điều
gì đó hữu ích về một thông điệp nếu biết đại diện của nó
Tìm các biện pháp cần thiết để chống đối lại các hành động phá hoại như sau:
●Để lộ bí mật: giữ bí mật nội dung mẩu tin, chỉ cho người có quyền biết.
●Thám mã đường truyền: không cho theo dõi hoặc làm trì hoãn việc truyền
tin
●Giả mạo: lấy danh nghĩa người khác để gửi tin
●Sửa đổi nội dung: thay đổi, cắt xén, thêm bớt thông tin
●Thay đổi trình tự các gói tin nhỏ của mẩu tin truyền.
●Sửa đổi thời gian: làm trì hoãn mẩu tin.
●Từ chối gốc: không cho phép người gửi từ chối trách nhiệm của tác giả mẩu
tin
Trang 4●Từ chối đích: không cho phép người nhận phủ định sự tồn tại và đến đích của
mẩu tin đã gửi
2 Các bài toán và giải pháp:
●Bảo vệ tính toàn vẹn của mẩu tin: bảo vệ mẩu tin không bị thay đổi hoặc
có các biện pháp phát hiện nếu mẩu tin bị thay đổi trên đường truyền
●Kiểm chứng danh tính, nguồn gốc: xem xét mẩu tin có đúng do người xưng
tên gửi không hay một kẻ mạo danh nào khác gửi
●Không chối từ bản gốc: trong trường hợp cần thiết, bản thân mẩu tin chứa
các thông tin chứng tỏ chỉ có người xưng danh gửi, không một ai
khác có thể làm điều đó => Người gửi không thể từ chối hành động gửi, thời gian gửi và nội dung của mẩu tin
Để giải quyết được các bài toán trên, ta dùng hàm băm để tạo đại diện thông điệp
3 Hàm băm (hash function)
●Hàm băm là các thuật toán không sử dụng khóa để mã hóa, nó có nhiệm vụ
băm thông điệp được đưa vào theo một thuật toán h một chiều nào đó, rồi đưa
ra một bản băm – văn bản đại diện – có kích thước cố định Do đó người nhận không biết được nội dung hay độ dài ban đầu của thông điệp đã được băm bằng hàm băm
●Giá trị của hàm băm là duy nhất, và khó suy ngược lại được nội dung
thông điệp từ giá trị băm này
3.1.Đặc trưng:
●Hàm băm h là hàm một chiều (one-way hash) với các đặc tính:
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 để thành thông điệp x’ thì h(x’) ≠ h(x)
=> Hai thông điệp hoàn toàn khác nhau thì giá trị hàm băm cũng 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 => Với
thông điệp x thì dễ dàng tính được z = h(x), nhưng lại không thể (thực chất là
Trang 5khó) suy ngược lại được x nếu chỉ biết giá trị hàm băm h
Vai trò hàm băm trong mật mã hiện đại:
- Được dùng để xác thực tính nguyên vẹn dữ liệu
- Được dùng trong quá trình tạo chữ kí số trong giao dịch điện tử Các hàm băm lấy một thông báo đầu vào và tạo một đầu ra được xem như là:
o Mã băm (hash code),
o Kết quả băm (hash result),
o Hoặc giá trị băm (hash value)
- Vai trò cơ bản của các hàm băm mật mã là một giá trị băm coi như ảnh đại diện thu gọn, đôi khi gọi là một dấu vết (imprint), vân tay số (digital fingerprint), hoặc tóm lược thông báo (message digest) của một xâu đầu vào,
và có thể được dùng như là một định danh duy nhất với xâu đó
- Các hàm băm thường được dùng cho toàn vẹn dữ liệu kết hợp với các lược
đồ chữ kí số
- Một lớp các hàm băm riêng được gọi là mã xác thực thông báo (MAC) cho phép xác thực thông báo bằng các kĩ thuật mã đối xứng
3.2 Phân loại:
Trang 63.3 Hàm băm và tính toàn vẹn của dữ liệu
Việc sử dụng các hệ mật mã và các sơ đồ chữ ký số, thường là mã hóa và ký
số trên từng bit của thông tin, sẽ tỷ lệ với thời gian để mã hóa và dung lượng
của thông tin ●Thêm vào đó có thể xảy ra trường hợp: Với nhiều bức thông điệp đầu vào khác nhau, sử dụng hệ mật mã, sơ đồ ký số giống nhau (có thể khác nhau) thì cho ra kết quả bản mã, bản ký số giống nhau (ánh xạ N-1: nhiều – một) Điều này sẽ dẫn đến một số rắc rối về sau cho việc xác thực thông tin
Với các sơ đồ ký số, chỉ cho phép ký các bức thông điệp (thông tin) có kích thước nhỏ và sau khi ký, bản ký số có kích thước gấp đôi bản thông điệp gốc
Ví dụ: với sơ đồ chữ ký chuẩn DSS chỉ ký trên các bức thông điệp có kích thước 160 bit, bản ký số sẽ có kích thước 320 bit
Trong khi đó trên thực tế, ta cần phải ký các thông điệp có kích thước lớn hơn nhiều, chẳng hạn vài chục MB Hơn nữa, dữ liệu truyền qua mạng không chỉ là bản thông điệp gốc, mà còn bao gồm cả bản ký số (có dung lượng gấp đôi dung lượng bản thông điệp gốc), để đáp ứng việc xác thực sau khi thông tin
Trang 7đến người nhận.
Một cách đơn giản để giải bài toán (với thông điệp có kích thước vài chục MB) này là chia thông điệp thành nhiều đoạn 160 bit, sau đó ký lên các đoạn đó độc lập nhau Nhưng biện pháp này có một số vấn đề trong việc tạo ra các chữ
ký số:
●Thứ nhất: với một thông điệp có kích thước a, thì sau khi ký kích thước của chữ ký sẽ là 2a (trong trường hợp sử dụng DSS).
●Thứ hai: với các chữ ký “an toàn” thì tốc độ chậm vì chúng dùng nhiều phép
tính số học phức tạp như số mũ modulo
●Thứ ba: vấn đề nghiêm trọng hơn đó là kết quả sau khi ký, nội dung của
thông điệp có thể bị xáo trộn các đoạn với nhau, hoặc một số đoạn trong chúng
có thể bị mất mát, trong khi người nhận cần phải xác minh lại thông điệp Ta cần phải bảo vệ tính toàn vẹn của thông điệp
Giải pháp cho các vấn đề vướng mắc đến chữ ký số là dùng “hàm băm” để
trợ giúp cho việc ký số
- Các thuật toán băm với đầu vào là các bức thông điệp có dung lượng, kích thước tùy ý (vài KB đến vài chục MB …) – các bức thông điệp có thể là dạng văn bản, hình ảnh, âm thanh, file ứng dụng v.v… - và với các thuật toán băm: MD2, MD4, MD5, SHA cho các bản băm đầu ra có kích thước cố định: 128 bit với dòng MD, 160 bit với SHA1
- Như vậy, bức thông điệp kích thước tùy ý sau khi băm sẽ được thu gọn
thành những bản băm – được gọi là các “văn bản đại diện” – có kích thước
cố định (128 bit hoặc 160 bit)
- Với mỗi thông điệp đầu vào chỉ có thể tính ra được một văn bản đại diện – giá trị băm tương ứng – duy nhất
- Hai thông điệp khác nhau chắc chắn có hai văn bản đại diện khác nhau Khi
đã có văn bản đại diện duy nhất cho bức thông điệp, áp dụng các sơ đồ chữ
ký số ký trên văn bản đại diện đó
Giả sử A muốn gửi cho B thông điệp x A thực hiện các bước sau:
1 A băm thông điệp x, thu được bản đại diện z = h(x) – có kích thước cố
định 128 bit hoặc 160 bit
Trang 82 A ký số trên bản đại diện z, bằng khóa bí mật của mình, thu được bản ký số y
= sig(z)
3 A gửi (x, y) cho B.
Khi B nhận được (x, y) B thực hiện các bước sau:
1 B kiểm tra chữ ký số để xác minh xem thông điệp mà mình nhận được có phải được gửi từ A hay không bằng cách giải mã chữ ký số y, bằng khóa công khai của A, được z
2 B dùng một thuật toán băm – tương ứng với thuật toán băm mà A dùng – để băm thông điệp x đi kèm, nhận được h(x)
3 B so sánh 2 giá trị băm z và h(x), nếu giống nhau thì chắc chắn rằng thông điệp x – mà A muốn gửi cho B – còn nguyên vẹn, bên cạnh đó cũng xác thực được người gửi thông tin là ai
Trang 93.4 Hàm băm mật mã
3.4.1 Giới thiệu
Trong ngành mật mã học, một hàm băm mật mã học (cryptographic hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn như chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông điệp (message integrity) Một hàm băm nhận đầu vào là một xâu ký tự dài (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi được gọi là tóm tắt thông điệp (message digest) hoặc chữ ký số (digital fingerprint)[11]
Các hàm băm nhận một chuỗi bit có chiều dài tùy ý ( hữu hạn) làm dữ liệu đầu vào và tạo ra một chuỗi bit có chiều dài cố định bằng n bit, gọi là mã băm
Sự thay đổi nhỏ của chuỗi đầu vào cũng làm thay đổi giá trị băm Ký hiệu D là miền xác định, R là miền giá trị của hàm băm h(x)
h(x) : D R
Ta có số lượng phần tử của tập D lớn hơn giá trị của tập R hàm băm h(x) không phải là đơn ánh Luôn tồn tại cặp đầu vào khác nhau có cùng giá trị băm
Giả sử hạn chế hàm h(x) trên miền xác định chỉ bao gồm các chuỗi bit có chiều dài t ( t>n) Nếu h(x) là ngẫu nhiên với tất cả các giá trị đầu ra của nó có xác suất bằng nhau thì có khoảng 2(t-n) đầu ánh xạ vào mỗi giá trị đầu ra Xác suất để hai giá trị( có chiều dài bằng nhau) đầu vào ánh xạ vào cùng một giá trị
là 2-n(không phụ thuộc vào t) Nếu n lơn thì 2-n sẽ rất nhỏ Như vậy mặc dù biết trước giá trị băm nhưng để tìm một đầu vào có cùng giá trị băm với giá trị băm đã biết là rất khó nếu chọn được h(x) thích hợp và n đủ lớn
Trong lĩnh vực mã hóa thông tin, mã băm được xem như đặc trưng thu gọn của một chuỗi bit tùy ý và dùng để nhận ra chuỗi bit đó Hàm băm chính là công cụ
để tạo ra chữ ký số và đảm bảo an toàn dữ liệu
3.4.2 Các khái niệm và định nghĩa :
Hàm băm là một giải thụât nhằm sinh ra các giá trị băm tương ứng với mỗi khối
dữ liệu Giá trị băm đóng vai trò gần như một khóa để phân biệt các khối dữ liệu [11]
Trang 10Hinh 1.3 : Ảnh minh họa làm việc của một hàm băm
Phân loại :
- Hàm băm một chiều : (one – way hash functions) : Là hàm băm mang chất :
với mọi mã băm biết trước, không thể tính toán để tìm được chuỗi bit ban đầu vào có mã băm bằng với mã băm đã cho [8]
- Hàm băm kháng xung đột : (collision resistant hash funtions) là hàm băm
mang tính chất : không thể tính toán để tìm ra hai chuỗi bit có cùng giá trị băm
Một số tính chất cơ bản của hàm băm :
(i) Có thể áp dụng với thông báo đầu vào có độ dài bất kỳ
(ii) Tạo ra giá trị băm y = h(x) có độ dài cố định
(iii) h(x) dễ dàng tính được với bất kỳ x nào
(iv) Tính một chiều : Với mọi đầu ra y cho trước không thể tìm được x’ sao cho h(x’) bằng giá trị y cho trước
(v) Tính chống xung đột yếu : Với mọi dữ liệu đầu vào x1 cho trước không thể tìm được bất kỳ giá trị x2 nào (x2 khác x1) mà h(x2) = h(x1)
(vi) Tính chống xung đột mạnh : Không thể tính toán đẻ tìm được hai dữ liệu đầu vào x1 và x2 phân biệt sao cho chúng có cùng giá trị băm (h(x1) = h(x2))
Như vậy dựa theo các tính chất trên ta thấy hàm băm một chiều thỏa mãn tính chất (iv) và tính chất (v), còn hàm băm kháng xung đột thỏa mãn tính chất (iv)
và (vi)
3.4.3 Cấu trúc cơ bản của thuật toán băm:
Khối dữ liệu đầu vào x có chiều dài hữu hạn tùy ý sẽ được phân thành các khối con liên tiếp có chiều dài cố định r, giả sử được đánh số là x1,x2, ,xm
Trang 11Tuy nhiên do chiều dài của khối dữ liệu ban đầu x là tùy ý, do đó cần phải thêm vào dữ liệu ban đầu một số bit phụ sao cho tổng số bit của khối dữ liệu x’ sau khi thêm vào sẽ là bội số của r Ngoài ra khối bit thêm vào thường chứa một khối bit (có chiều dài cố định trước, thường là 64 bit) xác định chiều dài thực sự của khối bt dữ liệu khi chưa thêm các bit phụ [1]
Tiếp theo, lần lượt cắt các khối con r bit từ khối mở rộng x’ Mỗi khối con r bit
xi lần lượt bước qua một hàm nén f của hàm băm h(x) Tại bước thứ i, hàm nén f nhận dữ liệu đàu vào là xi và kết quả trung gian của bước trước đó (bước i – 1)
để tạo đầu ra là kết quả trung gian bước thứ i, được ký hiệu là Hi Kết quả trung gian tại mỗi bước Hi là một chuỗi bit có độ dài cố định bằng n > 0
Kết quả ký hiệu IV là giá trị ban đầu (cho H0 ), thì quá trình lặp xử lý dãy các khối con x1,x2, ,xm được mô tả :
H0 = IV
Hi = f(Hi-1,xi) (i = 1,2, ,m)
h(x) = g(Hm)
Các biến Hi là các biến dây chuyền
Hàm g(x) lấy biến dây chuyền cuối cùng để tạo ra mã băm cuối cùng cần tìm Trong hầu hết các thuật toán g(x) thường được chọn là ánh xạ đồng nhất tức là g(Hm) = Hm
Khâu then chốt trong xây dựng hàm băm là thiết kế hàm nén f
Giá trị của hàm băm mật mã của một thông điệp được gọi là Message Digest (MD)
Một số hàm băm mật mã thông dụng : MD4,MD5 và SHA-1
3.4.4 Giải thuật MD4
MD4 (Message-Digest thuật toán 4) là một thông điệp tiêu hóa thuật toán (thứ
tư trong loạt a) được thiết kế bởi Giáo sư Ronald Rivest của MIT vào năm 1990
Nó thực hiện một hàm băm mật mã để sử dụng trong kiểm tra tính toàn vẹn thông điệp Chiều dài của giá trị băm là 128 bit
Thuật toán MD4 nhận dữ liệu đầu vào là một chuỗi bit x có chiều dài b >= 0 tùy ý và sinh ra mã băm của x có chiều dài cố định 128 bit Trước tiên chuỗi bit
x được định dạng lại bằng cách thêm r > 0 bit phụ thuộc vào x sao cho chiều dài của chuỗi bit mới là b’ = b + r là bội số của 512
Sau đó chia chuỗi bit mới này thành m khối, mỗi khối có độ dài đúng bằng 512 bit Mỗi khối bit này lại chia thành 16 từ, mỗi từ có 32 bit
Thuật toán MD4 tuần tự xử lý dãy m khối trong m lượt tính toán Dữ liệu đầu
Trang 12vào tại lượt tính toán thứ k (1 <= k <= m) là khối thứ k trong dãy và mã băm nhận được sau (k-1) lượt tính toán trước đó ( mã băm đầu vào ứng với k = 1 đã được khởi tạo từ trước )
Tại lượt tính toán thứ k này, khối dữ liệu đầu vào 512 bit liên tiếp đi qua 3 vòng tính toán, trong mỗi vòng gồm có 16 bước, mỗi bước thực hiện tính toán với dữ liệu là một từ trong dãy và các kết quả nhận được sau bước trước Kết quả sau khi qua 3 vòng tính toán trên sẽ được kết hợp với mã băm trước đó để sinh ra mã băm mới (cho lượt tính toán thứ k) Sau khi đã xử lý hết m khối, mã băm nhận được sau cùng là kết quả ta cần tìm
3.4.5 Giải thuật MD5
MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm là 128bit Từng được xem là một chuẩn trên Internet, MD5 đã được sữ dụng rông rải trong các chương trình an ninh mạng, và cũng thường được dùng
để kiểm tra tính nguyên vẹn của tập tin [14]
MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2)
MD5 có 2 ứng dụng quan trọng:
- MD5 được sử dụng rộng rải trong thế giới phần mềm để đảm bảo rằng tập tin tải về không bị hỏng Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5
- MD5 được dùng để mã hóa mật khẩu Mục đích của việc mã hóa này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu Có nghĩa là việc giải mã là không thể hoặc phải mất một khoãng thời gian vô tận
Thuật giải
MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước cố định 128 bits Thông điệp đưa vào sẻ được cắt thành các khối 512 bits Thông điệp được đưa vào bộ đệm để chiều dài của nó sẻ chia hết cho 512 Bộ đệm hoạt động như sau:
Trước tiên nó sẻ chèn bit 1 vào cuối thông điệp
Tiếp đó là hàng loạt bit 0 cho tới khi chiều dài của nó nhỏ hơn bội số của 512 một khoảng 64 bit Phần còn lại sẻ được lấp đầy bởi một số nguyên 64 bit biểu diển chiều dài ban đầu của thông điệp