0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Tấn Công Hàm Băm: Khám Phá Các Kỹ Thuật Tấn Công Xung Đột Băm

Đăng vào 3 tuần trước

• 4 phút đọc

I. Tấn Công Hàm Băm

Trong lĩnh vực an toàn thông tin, việc sử dụng thuật toán băm cực kỳ quan trọng, đặc biệt là trong việc bảo mật thông tin. Một thuật toán băm tốt sẽ đảm bảo rằng không thể thu hồi lại thông điệp gốc từ hash đã được tạo ra. Tuy nhiên, vấn đề nảy sinh khi chúng ta xem xét việc tấn công hàm băm không phải là việc cố gắng tìm ra thuật toán băm ngược, mà là tìm ra thông điệp tương ứng với một kết quả băm cụ thể.

1. Tấn Công Vét Cạn (Brute Force Attack)

Phương pháp vét cạn là một trong những cách tiếp cận đơn giản nhất để tìm ra thông điệp tương ứng với một hash. Mặc dù phương pháp này yêu cầu một khối lượng tính toán khổng lồ, vì nó cần kiểm tra mọi khả năng của chuỗi đầu vào. Đối với một mật khẩu dài n ký tự, cấu tạo từ các chữ cái và số, số lượng chuỗi có thể tạo ra sẽ là:

(26 + 26 + 10)^n = 62^n

Dưới đây là ví dụ về cách sử dụng Python để crack hash MD5:

python Copy
import hashlib
import itertools

def md5_hash(input_string):
    md5 = hashlib.md5()
    md5.update(input_string.encode())
    return md5.hexdigest()

def crack_md5_hash(target_hash, charset, max_length):
    for length in range(1, max_length + 1):
        for candidate in itertools.product(charset, repeat=length):
            candidate_password = ''.join(candidate)
            candidate_hash = md5_hash(candidate_password)
            if candidate_hash == target_hash:
                return candidate_password
    return None

# Ví dụ: Crack một hash MD5 cụ thể
# Đây là hash MD5 của mật khẩu "123456"
target_md5_hash = "e10adc3949ba59abbe56e057f20f883e"
character_set = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
max_password_length = 6

cracked_password = crack_md5_hash(target_md5_hash, character_set, max_password_length)

if cracked_password:
    print(f"Cracked password: {cracked_password}")
else:
    print("Password not cracked.")

Mặc dù phương pháp vét cạn rất đơn giản, nhưng nó không thực tế cho các mật khẩu phức tạp và dài.

2. Tấn Công Vét Cạn Theo Từ Điển (Dictionary Attack)

Phương pháp này giảm bớt việc tính toán bằng cách sử dụng một không gian lưu trữ để lưu trữ các mật khẩu đã được băm và kết quả của chúng. Thay vì tấn công từng mật khẩu một cách ngẫu nhiên, tấn công từ điển chỉ tập trung vào những mật khẩu phổ biến hoặc dễ đoán. Phương pháp này yêu cầu một đợt vét cạn ban đầu để tạo ra từ điển, nhưng sau đó có thể tra cứu một cách nhanh chóng.

3. Bảng Cầu Vồng (Rainbow Table)

Phương pháp bảng cầu vồng kết hợp giữa tấn công vét cạn và tấn công từ điển để cân bằng giữa thời gian tính toán và không gian lưu trữ. Phương pháp này lưu trữ các cặp giá trị băm và mật khẩu dựa trên sự kết hợp của các hàm băm và hàm đảo ngược để xác định các thông điệp gốc một cách nhanh chóng mà không cần phải lưu trữ toàn bộ thông điệp.

II. Tấn Công Xung Đột Băm

1. Khái Niệm Về Xung Đột Băm

Xung đột băm xảy ra khi hai hoặc nhiều đầu vào khác nhau tạo ra cùng một giá trị băm. Dù các thuật toán băm hiện tại cố gắng giảm thiểu xác suất xảy ra xung đột, nhưng điều này không thể tránh khỏi hoàn toàn vì số lượng đầu vào vô hạn so với không gian đầu ra có giới hạn.

2. Xung Đột Băm MD5

MD5 là thuật toán băm phổ biến, nhưng đã được chứng minh là không an toàn khi các nhà nghiên cứu tìm ra cách để tạo ra xung đột một cách dễ dàng. Năm 2005, Xiaoyun Wang và Hongbo Yu đã phát triển phương pháp cho phép việc tìm ra các cặp thông điệp tương ứng với cùng một hash chỉ bằng cách kiểm tra một số lượng lớn đầu vào mac thái. Họ phát hiện rằng có thể tìm ra xung đột trong MD5 một cách hiệu quả, điều này đã dẫn đến việc MD5 bị coi là không an toàn cho các ứng dụng yêu cầu bảo mật cao.

Một ví dụ cụ thể về hai chuỗi với cùng một giá trị hash MD5 là:

Copy
4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa200a8284bf36e8e4b55b35f427593d849676da0d1555d8360fb5f07fea2
4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa202a8284bf36e8e4b55b35f427593d849676da0d1d55d8360fb5f07fea2

Bạn đọc có thể tham gia vào các thử thách CTF về chủ đề Xung Đột Băm tại cryptohack.org để hiểu thêm về xung đột MD5.

Tài Liệu Tham Khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào