Chức năng băm mật mã là gì?

Mục lục:

Chức năng băm mật mã là gì?
Chức năng băm mật mã là gì?
Anonim

Hàm băm mật mã (CHF) là một thuật toán có thể chạy trên dữ liệu như một tệp riêng lẻ hoặc một mật khẩu để tạo ra một giá trị được gọi là tổng kiểm tra.

Công dụng chính của CHF là xác minh tính xác thực của một phần dữ liệu. Hai tệp chỉ có thể được coi là giống hệt nhau nếu tổng kiểm tra được tạo từ mỗi tệp, sử dụng cùng một hàm băm mật mã, giống hệt nhau.

Một số hàm băm mật mã thường được sử dụng bao gồm MD5 và SHA-1, mặc dù nhiều hàm khác cũng tồn tại. Chúng thường được gọi là "hàm băm", nhưng điều đó không đúng về mặt kỹ thuật. Hàm băm là một thuật ngữ chung bao gồm các CHF cùng với các loại thuật toán khác như kiểm tra dư thừa theo chu kỳ.

Hàm băm mật mã: Một Trường hợp Sử dụng

Giả sử bạn tải xuống phiên bản mới nhất của trình duyệt Firefox. Vì một số lý do, bạn cần tải xuống từ một trang web không phải của Mozilla. Bởi vì nó không được lưu trữ trên một trang web mà bạn đã học được để tin tưởng, bạn muốn đảm bảo rằng tệp cài đặt bạn vừa tải xuống giống hệt như tệp Mozilla cung cấp.

Sử dụng máy tính tổng kiểm tra, bạn tính toán tổng kiểm tra bằng cách sử dụng một hàm băm mật mã cụ thể, chẳng hạn như SHA-2, sau đó so sánh với hàm được xuất bản trên trang của Mozilla. Nếu chúng bằng nhau, bạn có thể chắc chắn một cách hợp lý rằng bản tải xuống bạn có là bản mà Mozilla dự định bạn sẽ có.

Image
Image

Chức năng băm mật mã có thể đảo ngược được không?

Các hàm băm mật mã được thiết kế để ngăn khả năng đảo ngược tổng kiểm tra mà chúng tạo ra trở lại văn bản gốc. Tuy nhiên, mặc dù chúng hầu như không thể đảo ngược, nhưng chúng không được đảm bảo 100% để bảo vệ dữ liệu.

Tin tặc có thể sử dụng bảng cầu vồng để tìm ra văn bản thuần túy của một tổng kiểm tra. Bảng cầu vồng là từ điển liệt kê hàng nghìn, hàng triệu hoặc thậm chí hàng tỷ tổng kiểm tra cùng với giá trị văn bản thuần túy tương ứng của chúng.

Mặc dù điều này không đảo ngược về mặt kỹ thuật của thuật toán băm mật mã, nhưng nó cũng có thể xảy ra, vì nó quá đơn giản để thực hiện. Trên thực tế, vì không có bảng cầu vồng nào có thể liệt kê mọi tổng kiểm tra có thể tồn tại, chúng thường chỉ hữu ích cho các cụm từ đơn giản như mật khẩu yếu.

Đây là phiên bản đơn giản của bảng cầu vồng để hiển thị cách hoạt động của bảng khi sử dụng hàm băm mật mã SHA-1:

Ví dụ về Bảng Cầu vồng
Văn bản rõ SHA-1 Checksum
12345 8cb2237d0679ca88db6464eac60da96345513964
password1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

Một hacker phải biết thuật toán băm mật mã nào đã được sử dụng để tạo tổng kiểm tra để tìm ra các giá trị.

Để tăng cường bảo vệ, một số trang web lưu trữ mật khẩu người dùng thực hiện các chức năng bổ sung trên thuật toán băm mật mã sau khi giá trị được tạo nhưng trước khi giá trị được lưu trữ. Quá trình này tạo ra một giá trị mới mà chỉ máy chủ web mới hiểu và giá trị đó không khớp với tổng kiểm ban đầu.

Ví dụ: sau khi nhập mật khẩu và tổng kiểm tra được tạo, nó có thể được tách thành nhiều phần và sắp xếp lại trước khi được lưu trữ trong cơ sở dữ liệu mật khẩu hoặc một số ký tự nhất định có thể được hoán đổi với những ký tự khác. Khi cố gắng xác thực vào lần tiếp theo người dùng đăng nhập, máy chủ sẽ đảo ngược chức năng bổ sung này và tổng kiểm tra ban đầu được tạo lại để xác minh rằng mật khẩu của người dùng là hợp lệ.

Thực hiện các bước này sẽ hạn chế tính hữu dụng của một cuộc tấn công trong đó tất cả các tổng kiểm tra bị đánh cắp. Ý tưởng là thực hiện một chức năng chưa biết, vì vậy nếu hacker biết thuật toán băm mật mã nhưng không phải thuật toán tùy chỉnh, thì việc biết tổng kiểm tra mật khẩu là vô ích.

Mật khẩu và Hàm băm mật mã

Cơ sở dữ liệu lưu mật khẩu người dùng theo cách tương tự như bảng cầu vồng. Khi mật khẩu của bạn được nhập, tổng kiểm tra được tạo và so sánh với tổng kiểm tra trong hồ sơ với tên người dùng của bạn. Sau đó, bạn được cấp quyền truy cập nếu cả hai giống nhau.

Cho rằng CHF tạo ra tổng tổng kiểm tra không thể đảo ngược, bạn có an toàn để tạo mật khẩu của mình đơn giản như 12345, thay vì 12 @ 34 không $ 5, đơn giản vì bản thân tổng kiểm tra không thể hiểu được? Không, và đây là lý do.

Cả hai mật khẩu này đều không thể giải mã chỉ bằng cách nhìn vào tổng kiểm tra:

MD5 cho 12345:827ccb0eea8a706c4c34a16891f84e7b

MD5 với giá 12 @ 34 $ 5:a4d3cc004f487b18b2ccd4853053818b

Thoạt nhìn, bạn có thể nghĩ rằng sử dụng một trong hai mật khẩu này là tốt. Điều này đúng nếu kẻ tấn công cố gắng tìm ra mật khẩu của bạn bằng cách đoán tổng kiểm tra MD5, điều này không ai làm, nhưng không đúng nếu thực hiện một cuộc tấn công vũ phu hoặc tấn công từ điển, đây là một chiến thuật phổ biến.

Một cuộc tấn công vũ phu xảy ra khi nhiều cú đâm ngẫu nhiên được thực hiện khi đoán mật khẩu. Trong trường hợp này, sẽ dễ dàng đoán ra 12345, nhưng khá khó để tìm ra một cách ngẫu nhiên cái còn lại. Tấn công từ điển tương tự ở chỗ kẻ tấn công có thể thử mọi từ, số hoặc cụm từ từ danh sách các mật khẩu phổ biến (và không phổ biến) và 12345là một trong những mật khẩu phổ biến. mật khẩu.

Mặc dù các hàm băm mật mã tạo ra tổng kiểm tra khó đoán, bạn vẫn nên sử dụng mật khẩu phức tạp cho tất cả các tài khoản người dùng trực tuyến và cục bộ của mình.

Thông tin thêm về các Hàm băm mật mã

Có vẻ như các hàm băm mật mã có liên quan đến mã hóa, nhưng cả hai hoạt động theo những cách khác nhau.

Mã hóa là một quá trình hai chiều trong đó một thứ gì đó được mã hóa để trở nên không thể đọc được và sau đó được giải mã để sử dụng lại bình thường. Bạn có thể mã hóa các tệp bạn đã lưu trữ để bất kỳ ai truy cập vào chúng đều không thể sử dụng được hoặc bạn có thể sử dụng mã hóa truyền tệp để mã hóa các tệp đang di chuyển qua mạng, như những tệp bạn tải lên hoặc tải xuống trực tuyến.

Các hàm băm mật mã hoạt động khác nhau, trong đó các tổng kiểm tra không có nghĩa là bị đảo ngược với một mật khẩu băm đặc biệt. Mục đích duy nhất của CHF là để so sánh hai phần dữ liệu, chẳng hạn như khi tải xuống tệp, lưu trữ mật khẩu và lấy dữ liệu từ cơ sở dữ liệu.

Hàm băm mật mã có thể tạo ra cùng một tổng kiểm tra cho các phần dữ liệu khác nhau. Khi điều này xảy ra, nó được gọi là xung đột, đây là một vấn đề lớn khi xem xét toàn bộ điểm của hàm là tạo tổng kiểm tra duy nhất cho mọi dữ liệu đầu vào.

Có thể xảy ra va chạm là do mỗi CHF tạo ra một giá trị có độ dài cố định bất kể dữ liệu đầu vào. Ví dụ: hàm băm mật mã MD5 tạo 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 và e10adc3949ba59abbe56e057f20f883e cho ba khối dữ liệu hoàn toàn khác nhau.

Tổng kiểm tra đầu tiên là từ 12345. Thứ hai được tạo từ hơn 700 chữ cái và số, và thứ ba là từ 123456. Tất cả ba đầu vào có độ dài khác nhau, nhưng kết quả luôn chỉ dài 32 ký tự, vì tổng kiểm tra MD5 đã được sử dụng.

Không có giới hạn về số lượng tổng kiểm tra có thể được tạo bởi vì mỗi thay đổi nhỏ trong đầu vào được cho là tạo ra một tổng kiểm tra hoàn toàn khác. Vì có giới hạn về số tổng kiểm tra mà một CHF có thể tạo ra, nên luôn có khả năng bạn gặp phải va chạm.

Đây là lý do tại sao các hàm băm mật mã khác đã được tạo ra. Trong khi MD5 tạo ra giá trị 32 ký tự, SHA-1 tạo ra 40 ký tự và SHA-2 (512) tạo ra 128. Số lượng ký tự mà tổng kiểm tra có càng nhiều thì khả năng xảy ra va chạm càng ít.

Đề xuất: