Hàm băm mật mã

Hàm băm cực kỳ hữu ích và xuất hiện trong hầu hết các ứng dụng bảo mật thông tin.

Hàm băm là một hàm toán học chuyển đổi một giá trị số đầu vào thành một giá trị số nén khác. Đầu vào cho hàm băm có độ dài tùy ý nhưng đầu ra luôn có độ dài cố định.

Các giá trị được trả về bởi một hàm băm được gọi là message digest hoặc đơn giản hash values. Hình sau minh họa hàm băm -

Đặc điểm của hàm băm

Các tính năng điển hình của hàm băm là:

  • Fixed Length Output (Hash Value)

    • Hàm băm bao gồm dữ liệu có độ dài tùy ý thành độ dài cố định. Quá trình này thường được gọi làhashing the data.

    • Nói chung, hàm băm nhỏ hơn nhiều so với dữ liệu đầu vào, do đó, các hàm băm đôi khi được gọi là compression functions.

    • Vì hàm băm là một đại diện nhỏ hơn của dữ liệu lớn hơn, nó cũng được gọi là digest.

    • Hàm băm với đầu ra n bit được gọi là n-bit hash function. Các hàm băm phổ biến tạo ra các giá trị từ 160 đến 512 bit.

  • Efficiency of Operation

    • Nói chung đối với bất kỳ hàm băm nào h với đầu vào x, tính toán h (x) là một phép toán nhanh.

    • Các hàm băm tính toán nhanh hơn nhiều so với mã hóa đối xứng.

Thuộc tính của hàm băm

Để trở thành một công cụ mật mã hiệu quả, hàm băm mong muốn có các thuộc tính sau:

  • Pre-Image Resistance

    • Thuộc tính này có nghĩa là nó sẽ khó về mặt tính toán để đảo ngược một hàm băm.

    • Nói cách khác, nếu một hàm băm h tạo ra giá trị băm z, thì sẽ là một quá trình khó khăn để tìm bất kỳ giá trị đầu vào x nào có giá trị băm thành z.

    • Thuộc tính này bảo vệ chống lại kẻ tấn công chỉ có giá trị băm và đang cố gắng tìm đầu vào.

  • Second Pre-Image Resistance

    • Thuộc tính này có nghĩa là được cung cấp một đầu vào và hàm băm của nó, sẽ khó tìm thấy một đầu vào khác với cùng một hàm băm.

    • Nói cách khác, nếu một hàm băm h cho đầu vào x tạo ra giá trị băm h (x), thì rất khó để tìm bất kỳ giá trị đầu vào y nào khác sao cho h (y) = h (x).

    • Thuộc tính này của hàm băm bảo vệ chống lại kẻ tấn công có giá trị đầu vào và giá trị băm của nó và muốn thay thế giá trị khác làm giá trị hợp pháp thay cho giá trị đầu vào ban đầu.

  • Collision Resistance

    • Thuộc tính này có nghĩa là khó có thể tìm thấy hai đầu vào khác nhau có độ dài bất kỳ dẫn đến cùng một hàm băm. Thuộc tính này còn được gọi là hàm băm không va chạm.

    • Nói cách khác, đối với một hàm băm h, rất khó để tìm thấy bất kỳ hai đầu vào khác nhau x và y sao cho h (x) = h (y).

    • Vì hàm băm là hàm nén với độ dài băm cố định, không thể để hàm băm không có xung đột. Tính chất không va chạm này chỉ xác nhận rằng những va chạm này sẽ khó tìm thấy.

    • Thuộc tính này khiến kẻ tấn công rất khó tìm thấy hai giá trị đầu vào có cùng một hàm băm.

    • Ngoài ra, nếu một hàm băm có khả năng chống va chạm then it is second pre-image resistant.

Thiết kế thuật toán băm

Trọng tâm của hàm băm là một hàm toán học hoạt động trên hai khối dữ liệu có kích thước cố định để tạo mã băm. Hàm băm này tạo thành một phần của thuật toán băm.

Kích thước của mỗi khối dữ liệu khác nhau tùy thuộc vào thuật toán. Thông thường, kích thước khối là từ 128 bit đến 512 bit. Hình minh họa sau đây minh họa hàm băm:

Thuật toán băm liên quan đến các vòng của hàm băm ở trên giống như một mật mã khối. Mỗi vòng lấy một đầu vào có kích thước cố định, thường là sự kết hợp của khối thông báo gần đây nhất và đầu ra của vòng cuối cùng.

Quá trình này được lặp lại trong nhiều vòng theo yêu cầu để băm toàn bộ thông báo. Sơ đồ thuật toán băm được mô tả trong hình minh họa sau:

Kể từ đó, giá trị băm của khối thông báo đầu tiên trở thành đầu vào cho hoạt động băm thứ hai, đầu ra của nó sẽ thay đổi kết quả của hoạt động thứ ba, v.v. Hiệu ứng này, được gọi làavalanche ảnh hưởng của băm.

Hiệu ứng tuyết lở dẫn đến các giá trị băm khác nhau đáng kể cho hai thông báo khác nhau dù chỉ một bit dữ liệu.

Hiểu đúng sự khác biệt giữa hàm băm và thuật toán. Hàm băm tạo mã băm bằng cách hoạt động trên hai khối dữ liệu nhị phân có độ dài cố định.

Thuật toán băm là một quá trình sử dụng hàm băm, chỉ định cách thông báo sẽ được chia nhỏ và kết quả từ các khối thông báo trước đó được liên kết với nhau như thế nào.

Các hàm băm phổ biến

Hãy cùng chúng tôi xem sơ qua một số hàm băm phổ biến -

Thông báo Thông báo (MD)

MD5 là hàm băm phổ biến nhất và được sử dụng rộng rãi trong một số năm.

  • Họ MD bao gồm các hàm băm MD2, MD4, MD5 và MD6. Nó đã được chấp nhận là Chuẩn Internet RFC 1321. Nó là một hàm băm 128 bit.

  • Các thông báo MD5 đã được sử dụng rộng rãi trong thế giới phần mềm để đảm bảo tính toàn vẹn của tệp được truyền. Ví dụ: máy chủ tệp thường cung cấp tổng kiểm tra MD5 được tính toán trước cho các tệp, để người dùng có thể so sánh tổng kiểm tra của tệp đã tải xuống với nó.

  • Năm 2004, các vụ va chạm đã được tìm thấy trong MD5. Một cuộc tấn công phân tích được báo cáo là thành công chỉ trong một giờ bằng cách sử dụng cụm máy tính. Cuộc tấn công va chạm này đã dẫn đến MD5 bị xâm phạm và do đó nó không còn được khuyến khích sử dụng.

Chức năng băm an toàn (SHA)

Họ SHA bao gồm bốn thuật toán SHA; SHA-0, SHA-1, SHA-2 và SHA-3. Mặc dù cùng một họ nhưng có cấu trúc khác nhau.

  • Phiên bản gốc là SHA-0, một hàm băm 160 bit, được xuất bản bởi Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) vào năm 1993. Nó có một số điểm yếu và không trở nên phổ biến. Sau đó vào năm 1995, SHA-1 được thiết kế để sửa chữa những điểm yếu được cho là của SHA-0.

  • SHA-1 được sử dụng rộng rãi nhất trong các hàm băm SHA hiện có. Nó được sử dụng trong một số ứng dụng và giao thức được sử dụng rộng rãi bao gồm bảo mật Lớp cổng bảo mật (SSL).

  • Năm 2005, một phương pháp đã được tìm thấy để phát hiện ra các vụ va chạm đối với SHA-1 trong khung thời gian thực tế, khiến khả năng sử dụng lâu dài của SHA-1 bị nghi ngờ.

  • Họ SHA-2 có thêm bốn biến thể SHA, SHA-224, SHA-256, SHA-384 và SHA-512 tùy thuộc vào số lượng bit trong giá trị băm của chúng. Chưa có cuộc tấn công thành công nào được báo cáo về hàm băm SHA-2.

  • Mặc dù SHA-2 là một hàm băm mạnh. Mặc dù khác biệt đáng kể nhưng thiết kế cơ bản của nó vẫn theo thiết kế của SHA-1. Do đó, NIST đã kêu gọi thiết kế hàm băm cạnh tranh mới.

  • Vào tháng 10 năm 2012, NIST đã chọn thuật toán Keccak làm tiêu chuẩn SHA-3 mới. Keccak mang lại nhiều lợi ích, chẳng hạn như hiệu suất hiệu quả và khả năng chống lại các cuộc tấn công tốt.

RIPEMD

RIPEMD là từ viết tắt của RACE Integrity Primaries Assessment Message Digest. Tập hợp các hàm băm này được thiết kế bởi cộng đồng nghiên cứu mở và thường được biết đến như một họ các hàm băm châu Âu.

  • Bộ này bao gồm RIPEMD, RIPEMD-128 và RIPEMD-160. Cũng tồn tại các phiên bản 256 và 320 bit của thuật toán này.

  • RIPEMD gốc (128 bit) dựa trên các nguyên tắc thiết kế được sử dụng trong MD4 và được phát hiện là cung cấp khả năng bảo mật đáng ngờ. Phiên bản RIPEMD 128-bit ra đời như một bản sửa lỗi thay thế nhanh chóng để khắc phục các lỗ hổng trên RIPEMD gốc.

  • RIPEMD-160 là phiên bản cải tiến và là phiên bản được sử dụng rộng rãi nhất trong gia đình. Phiên bản 256 và 320 bit giảm nguy cơ va chạm ngẫu nhiên, nhưng không có mức độ bảo mật cao hơn so với RIPEMD-128 và RIPEMD-160 tương ứng.

Xoáy nước

Đây là một hàm băm 512-bit.

  • Nó có nguồn gốc từ phiên bản sửa đổi của Tiêu chuẩn mã hóa nâng cao (AES). Một trong những nhà thiết kế là Vincent Rijmen, người đồng sáng tạo ra AES.

  • Ba phiên bản của Whirlpool đã được phát hành; cụ thể là WHIRLPOOL-0, WHIRLPOOL-T và WHIRLPOOL.

Các ứng dụng của hàm băm

Có hai ứng dụng trực tiếp của hàm băm dựa trên các thuộc tính mật mã của nó.

Lưu trữ mật khẩu

Hàm băm cung cấp khả năng bảo vệ cho việc lưu trữ mật khẩu.

  • Thay vì lưu trữ mật khẩu rõ ràng, hầu hết tất cả các quy trình đăng nhập đều lưu trữ các giá trị băm của mật khẩu trong tệp.

  • Tệp Mật khẩu bao gồm một bảng các cặp có dạng (id người dùng, h (P)).

  • Quá trình đăng nhập được mô tả trong hình minh họa sau:

  • Kẻ xâm nhập chỉ có thể xem các mã băm của mật khẩu, ngay cả khi anh ta đã truy cập mật khẩu. Anh ta không thể đăng nhập bằng cách sử dụng hàm băm cũng như không thể lấy mật khẩu từ giá trị hàm băm vì hàm băm sở hữu thuộc tính kháng trước hình ảnh.

Kiểm tra tính toàn vẹn của dữ liệu

Kiểm tra tính toàn vẹn của dữ liệu là một ứng dụng phổ biến nhất của các hàm băm. Nó được sử dụng để tạo tổng kiểm tra trên các tệp dữ liệu. Ứng dụng này cung cấp sự đảm bảo cho người dùng về tính đúng đắn của dữ liệu.

Quá trình này được mô tả trong hình minh họa sau:

Kiểm tra tính toàn vẹn giúp người dùng phát hiện bất kỳ thay đổi nào được thực hiện đối với tệp gốc. Tuy nhiên, nó không cung cấp bất kỳ sự đảm bảo nào về tính nguyên bản. Kẻ tấn công, thay vì sửa đổi dữ liệu tệp, có thể thay đổi toàn bộ tệp và tính toán tất cả các băm mới cùng nhau và gửi đến người nhận. Ứng dụng kiểm tra tính toàn vẹn này chỉ hữu ích nếu người dùng chắc chắn về tính nguyên gốc của tệp.