2 Tấn công hàm Hash theo kiểu ngày sinh nhật (Birthday Attack)

Một phần của tài liệu Bài tập lớn Tìm hiểu các giải thuật băm SHA0,1,2,3 Các điểm yếu, các dạng tấn công vào SHA Cài đặt thử nghiệm SHA1 (Trang 26 - 30)

CHƯƠNG 3 : CÁC ĐIỂM YẾU VÀ CÁC DẠNG TẤN CÔNG VÀO HÀM BĂM

3.22 Tấn công hàm Hash theo kiểu ngày sinh nhật (Birthday Attack)

3.2.2.1. Vấn đề

Như ta đã biết, có một dạng tấn công mạo hiểm đối với các hệ chữ ký điện tử có dùng hàm băm là kẻ tấn cơng tìm cách tạo ra được những văn bản X và X’ có nội dung khác nhau (một có lợi một có hại cho bên A, người sẽ bị lừa để ký vào) mà có giá trị băm giống nhau. Kẻ thù có thể tìm cách tạo ra một số lượng rất lớn các văn bản có nội dung khơng thay đổi nhưng khác nhau về biểu diễn nhị phân (đơn giản là việc thêm bớt các dấu trắng, dùng nhiều từ đồng nghĩa thay thế nhau...), sau đó sử dụng một chương trình máy tính để tính giá trị băm của các văn bản đó và đem so sánh với nhau để hi vọng tìm ra một cặp văn bản có đụng độ.

Như đã nêu ở trên thì để chắc chắn có thể tìm ra được một đụng độ như vậy, số văn bản cần được tính giá trị băm phải lớn hơn kích thước khơng gian băm. Chẳng hạn như nếu hàm băm có khơng gian băm 64 bit thì số lượng văn bản cần được đem ra nạp vào chương trình thử này phải là ít nhất 264, một con số quá lớn đến mức hàng thế kỉ nữa cũng không thực hiện xong.

Tuy nhiên nếu như kẻ tấn công đem thử với một số lượng văn bản ít hơn nhiều, trong phạm vi có thể tính tốn được, thì xác suất để tìm được đụng độ có đáng kể hay khơng? Có thể nhiều người sẽ nghĩ là xác suất này rất nhỏ, ví việc tìm được đụng độ là rất khó. Tuy nhiên, câu trả lời lại vơ cùng bất ngờ, xác suất này có thể vẫn khá lớn, tức là có nhiều hy vọng tìm được đụng độ dù tập văn bản đem thử không lớn lắm. Bản chất của hiện tượng này có thể được minh họa rõ qua một phát biểu, thường được gọi là Nghịch lý Ngày sinh nhật (Birthday Paradox), chúng ta sẽ cùng đi tìm hiểu nghịch lý này ở phần tiếp theo.

3.2.2.2. Birthday Paradox

Nghịch lý Ngày sinh nhật (Birthday Paradox) được phát biểu như sau: “Trong một nhóm có 23 người bất kỳ, xác suất để có hai người có cùng một ngày sinh nhật là khơng ít hơn ½”.

Một cách tổng quát, giả sử một hàm băm có m giá trị băm khác nhau (tức là kích thước của khơng gian output của hàm băm là m). Nếu chúng ta có k giá trị băm từ k thơng tin được chọn ngẫu nhiên khác nhau, thì xác suất để có ít nhất một đụng độ là:

P(m,k) > 1- Với e là hằng số Ơ-le: e ≈ 2.7

Ước lượng xác suất này phục thuộc vào kích thước của khơng gian băm (m) và số lượng văn bản thông tin được thử chứ không phụ thuộc vào hàm băm đều sử dụng. Tức là kích thước của khơng gian băm xác lập một chặn dưới (lower bound) cho xác suất trên.

Ta xét ví dụ sau: Trong nghịch lý ngày sinh nhật nói trên, thì ta có thể thấy k = 23, m = 365, do đó xác suất tồn tại hai người có cùng ngày sinh nhật là:

P(365,23)>1-

Cơng thức nói trên cho phép xác định số lượng thơng tin (k) cần thiết để có thể tìm được một đụng độ giá trị băm với xác suất đủ lớn, khi hàm băm xác định trước. Ngược lại, nó cũng cho phép tính được kích thước tối thiểu của đầu ra hàm băm để có thể chống lại được hiệu ứng Birthday attack một cách có hiệu quả.

Giả sử kẻ thù có khả năng tính tốn trên tập giá trị băm đến 1020. Ta cần xác định khơng gian băm để xác suất kẻ thù có thể tìm ra được một đụng độ là nhỏ hơn 10-3.

Áp dụng ước lượng xác suất trên, ta thấy: P(m,k) > 1---->

Từ đó, ta có thể ước lượng m hợp lý: = 0.999

= -3.3 m

Như vậy, không gian băm cần đảm bảo lớn hơn 2 x 1039, tức là kích thước giá trị băm sẽ khơng nhỏ hơn

= 231 bit.

Tìm đụng độ trên khơng gian văn bản có kích cỡ 232 là một điều có thể làm được ngay cả với các máy tính PC bình thường. Việc nghiên cứu Birthday Paradox cho ta thấy lượng văn bản cần đưa ra thử có thể là rất nhỏ sao với khơng gian băm (232 so với 264) mà xác suất tìm được đụng độ là khá cao (≥ 50%). Điều này cho thấy một mối hiểm họa cho các hệ thống dùng hàm băm có khơng gian output nhỏ.

Phép tấn cơng này được gọi là “Tấn công ngày sinh nhật” (Birthday attack).

3.2.3. Tấn công hàm hash theo kiểu gặp nhau ở giữa (Meet – In – The – MiddleAttack) Attack)

Là một cuộc tấn cơng mà kẻ tấn cơng bí mật chuyển tiếp và có thể làm thay đổi giao tiếp giữa hai bên mà họ tin rằng họ đang trực tiếp giao tiếp với nhau. Một ví dụ về các cuộc tấn cơng man-in-the-middle là nghe trộm (eavesdropping), trong đó kẻ tấn cơng kết nối độc lập với các nạn nhân và chuyển tiếp thông tin giữa họ để họ tin rằng họ đang nói chuyện trực tiếp với nhau qua kết nối riêng tư, trong khi thực ra toàn bộ cuộc trị chuyện được kiểm sốt bởi kẻ tấn cơng. Người tấn cơng phải có khả năng đánh chặn tất cả các thông tin liên quan đi lại giữa hai nạn nhân và tiêm những thơng tin mới.

Hình 3.2: Mơ hình tấn cơng MITM

Phương pháp tấn cơng meet-in-the-middle áp dụng cho hàm Hash: Có thể được áp dụng khi một hàm có thể được biểu diễn dưới dạng hai chức năng phụ.

Và nếu chức năng phụ thứ hai có thể đảo ngược. Tìm preimage cho một giá trị băm H.

l. Đếm hàm hash1() cho các biến thể của nửa đầu tin nhắn (và lưu trữ chúng trong một bảng):

Tx =hash1(M1x, IV).

2. Đếm hàm đảo ngược hash2() cho các biến thể của nửa sau trong tổng số tin nhắn:

Ty=hash(M2y, H)

3. Tìm kiếm Tx tương đương Ty

3.2.4. Tấn cơng tiền ảnh (Preimage Attack) (adsbygoogle = window.adsbygoogle || []).push({});

Trong một cuộc tấn công tiền ảnh, kẻ tấn cơng cố gắng đốn thơng điệp đầu vào mà từ đó hàm băm tạo ra một đầu ra cụ thể.

Về cơ bản đối với tất cả các đầu ra được chỉ định trước, về mặt tính tốn khơng thể tìm thấy bất kỳ đầu vào nào có giá trị băm cho đầu ra đó; tức là, cho trước y , rất khó tìm được x sao cho h ( x ) = y

Hình 3.3: Mơ hình tấn cơng tiền ảnh

Tấn cơng tiền ảnh giúp người có hàm băm đốn được giá trị đầu vào.

Một phần của tài liệu Bài tập lớn Tìm hiểu các giải thuật băm SHA0,1,2,3 Các điểm yếu, các dạng tấn công vào SHA Cài đặt thử nghiệm SHA1 (Trang 26 - 30)