Kiến thức

Giới thiệu về một số hàm băm và ứng dụng trong một số sản phẩm mật mã dân sự – Bkav Corporation – nacis.gov.vn – Cổng thông tin điện tử Ban Cơ yếu Chính phủ

Hàm băm mật mã được sử dụng phổ biến trong các sản phẩm mật mã, ứng dụng an toàn thông tin cho các mục đích khác nhau, hàm băm được ứng dụng rất nhiều với những mục đích khác nhau và có tầm ảnh hướng tương đối lớn. Bài viết này trình bày tóm tắt một số khái niệm về hàm băm, giới thiệu một số hàm băm thông dụng và ứng dụng của nó trong các sản phẩm mật mã dân sự.

1. Giới thiệu chung về hàm băm

Hàm băm là hàm thực hiện quá trình biến một dữ liệu đầu vào có độ dài bất kỳ thành một chuỗi đầu ra đặc trưng có độ dài cố định. Các giá trị được trả về bởi hàm băm được gọi là giá trị băm, mã băm, thông điệp băm, hoặc đơn giản là “hash”. Điều này trở nên quan trọng khi bạn xử lý một lượng lớn dữ liệu và giao dịch. Khi đó, thay vì bạn phải xử lý toàn bộ lượng dữ liệu đầu vào (có thể có kích thước rất lớn), bạn chỉ cần xử lý và theo dõi một lượng dữ liệu rất nhỏ là các giá trị băm.

Tính chất cơ bản của hàm băm mật mã là tính một chiều. Nghĩa là, một hàm mà trên thực tế không thể có ngược. Nếu bạn có một giá trị băm đầu ra, bạn sẽ không thể suy ngược lại được giá trị đầu vào là gì để có thể băm ra một thông điệp băm như vậy, hoặc ít nhất là rất khó suy luận được ra, trừ khi bạn vét cạn hết toàn bộ các khả năng có thể của thông điệp đầu vào. Đây là tính chất vô cùng quan trọng của hàm băm mật mã biến nó thành một công cụ cơ bản của mật mã hiện đại.

2. Một số hàm băm phổ biến

Tính đến hiện nay đã có rất nhiều hàm băm mật mã được công bố trên thế giới; bài viết đề cập đến một số thuật toán hàm băm thông dụng, thường được sử dụng trong các sản phẩm mật mã dân sự.

Hàm băm MD5

MD5 được Ronald Rivest thiết kế vào năm 1991 để thay thế hàm băm MD4 trước đó và được đưa thành tiêu chuẩn vào năm 1992 trong RFC 1321. MD5 tạo ra một bản tóm tắt có kích thước 128 bit (16 byte). Tuy nhiên, đến đầu những năm 2000 thì hàm băm MD5 trở lên không an toàn trước sức mạnh tính toán của các hệ thống tính toán thế hệ mới. Với sức mạnh tính toàn và sự phát triển của công nghệ thám mã thời gian gần đây, chúng ta có thể tính toán các va chạm trong MD5 với độ phức tạp 221 phép toán chỉ trong vòng vài giây khiến thuật toán không phù hợp với hầu hết các trường hợp sử dụng trong thực tế.

Chuyên gia chia sẻ  Đòn bẩy tài chính (Financial Leverage - FL) và công thức DFL

SHA-1

SHA-1 được phát triển như một phần của dự án Capstone của Chính phủ Hoa Kỳ. Phiên bản đầu tiên, thường được gọi là SHA-0 được xuất bản năm 1993 với tiêu đề Secure Hash Standard, FIPS PUB 180, bởi NIST (Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ). Nó đã bị NSA rút lại ngay sau khi xuất bản và được thay thế bởi phiên bản sửa đổi, được xuất bản năm 1995 trong FIPS PUB 180-1 và thường được đặt tên là SHA-1. SHA-1 tạo ra bản tóm tắt có kích thước 160 bit (20 byte). Các va chạm chống lại thuật toán SHA-1 đầy đủ có thể được tạo ra bằng cách sử dụng tấn công phá vỡ. Do đó, hàm băm này cho đến nay được coi là không đủ an toàn.

RIPEMD-160

RIPEMD (viết tắt của RACE Integrity Primitives Evaluation Message Digest) là họ hàm băm được phát triển tại Leuven, Bỉ, bởi ba nhà mật mã học Hans Dobbertin, Antoon Bosselaers và Bart Preneel của nhóm nghiên cứu COSIC thuộc đại học Katholieke Universiteit Leuven. RIPEMD lần đầu tiên được công bố vào năm 1996 dựa trên các nguyên tắc thiết kế được sử dụng trong MD4. RIPEMD-160 tạo ra một bản tóm tắt gồm 160 bit (20 byte). RIPEMD có hiệu năng tương tự như SHA-1 nhưng ít được phổ biến hơn. Và cho đến nay RIPEMD-160 chưa bị phá vỡ.

Whirlpool

Whirlpool là một hàm băm mật mã được thiết kế bởi Vincent Rijmen và Paulo S. L. M. Barreto. Nó được mô tả đầu tiên vào năm 2000. Whirlpool là một trong hai hàm băm đã được phê duyệt trong dự án NESSIE – một dự án của Liên minh Châu Âu nhằm xác định tiêu chuẩn an toàn của mật mã nguyên thủy. Whirlpool cũng đã được công bố trong tiêu chuẩn quốc tế ISO / IEC 10118-3. Whirlpool dựa trên phiên bản sửa đổi đáng kể của Tiêu chuẩn mã hóa nâng cao (AES). Whirlpool tạo ra một bản tóm tắt có độ dài 512 bit (64 byte) của dữ liệu.

SHA-2

SHA-2 là một tập hợp các hàm băm mật mã được thiết kế bởi Cơ quan an ninh quốc gia Hoa Kỳ (NSA), được xuất bản lần đầu tiên vào năm 2001. Chúng được xây dựng bằng cấu trúc Merkle-Damgård, chức năng nén một chiều của nó được xây dựng bằng cấu trúc Davies-Meyer từ một hệ mật mã khối chuyên dụng.

Chuyên gia chia sẻ  Smart Contract là gì? Những điều cần biết về Smart Contract

SHA-2 về thực chất bao gồm hai thuật toán băm: SHA-256 và SHA-512. SHA-224 là một biến thể của SHA-256 với các giá trị khởi tạo và đầu ra bị cắt bỏ khác nhau. SHA-384 và SHA-512/224 và SHA-512/256 ít được biết đến là tất cả các biến thể của SHA-512. SHA-512 an toàn hơn SHA-256 và thường nhanh hơn SHA-256 trên các máy 64 bit như AMD64.

Do có nhiều phiên bản thuật toán khác nhau do đó kích thước đầu ra của họ SHA-2 cũng khác nhau tùy theo thuật toán. Phần mở rộng của tên phía sau tiền tố “SHA” chính là độ dài của thông điệp băm đầu ra. Ví dụ với SHA-224 thì kích thước đầu ra là 224 bit (28 byte), SHA-256 tạo ra 32 byte, SHA-384 tạo ra 48 byte và cuối cùng là SHA- 512 tạo ra 64 byte. Và chúng ta có thể đã biết rằng Bitcoin sử dụng hàm băm SHA-256 là một phiên bản trong họ SHA-2 này.

SHA-3

SHA-3 được NIST phát hành vào ngày 5 tháng 8 năm 2015. Đây có lẽ là tiêu chuẩn hàm băm mới nhất cho đến hiện nay. SHA-3 là một tập con của họ nguyên thủy mật mã rộng hơn là Keccak. Thuật toán Keccak được đưa ra bởi Guido Bertoni, Joan Daemen, Michael Peeters và Gilles Van Assche. Keccak dựa trên cấu trúc bọt biển (sponge). Cấu trúc này cũng có thể được sử dụng để xây dựng các nguyên thủy mã hóa khác như các hệ mật mã dòng. SHA-3 cũng có các kích cỡ đầu ra tương tự như SHA-2 bao gồm: 224, 256, 384 và 512 bit.

Một số hàm băm mật mã (wikipedia)

3. Một số ứng dụng của hàm băm mật mã trong các sản phẩm mật mã dân sự

Các hàm băm mật mã có nhiều ứng dụng trong an toàn thông tin. Nó được sử dụng nhiều trong chữ ký số, mã xác thực thông điệp (MAC) và các hình thức xác thực khác. Ngoài ra, chúng cũng có thể được sử dụng như các hàm băm thông thường, để lập chỉ mục dữ liệu trong bảng băm, lấy đặc trưng của dữ liệu, phát hiện dữ liệu trùng lặp hoặc làm tổng kiểm tra để phát hiện lỗi các dữ liệu ngẫu nhiên

Đảm bảo tính toàn vẹn và xác thực

Đảm bảo tính toàn vẹn là đảm bảo thông tin, dữ liệu nhận được được chính xác giống như khi nó được gửi (tức là không bị sửa đổi, chèn, xóa hay phát lại). Đặc biệt, khi hai bên thực hiện truyền thông trên một kênh truyền thông không an toàn, đòi hỏi một phương pháp để hai bên truyền thông có thể xác thực lẫn nhau..

Chuyên gia chia sẻ  Hooked Protocol (HOOK) là gì? Thông tin chi tiết về dự án và HOOK coin

Xác thực và toàn vẹn thông báo có thể được thực hiện bằng nhiều cách trong đó có cả việc sử dụng mật mã khóa đối xứng nhưng đơn giản nhất là sử dụng hàm MAC và hàm băm.

Nâng cao hiệu quả chữ ký số

Hầu như tất cả các lược đồ chữ ký số đều yêu cầu tính toán bản tóm lược của thông điệp bằng các hàm băm mật mã. Điều này cho phép việc tính toán và tạo chữ ký được thực hiện trên một khối dữ liệu có kích thước tương đối nhỏ và cố định thay vì trên toàn bộ văn bản dài. Tính chất toàn vẹn thông điệp của hàm băm mật mã được sử dụng để tạo các lược đồ chữ ký số an toàn và hiệu quả.

Xác minh mật khẩu

Việc xác minh mật khẩu thường dựa vào các hàm băm mật mã. Mật khẩu người dùng nếu được dưới dạng bản rõ có thể dẫn đến những lỗ hổng bảo mật nghiêm trọng khi tệp mật khẩu bị xâm phạm. Do đó, để làm giảm nguy cơ này, chúng ta thường chỉ lưu trữ giá trị băm của mỗi mật khẩu. Để xác thực người dùng, mật khẩu do người dùng nhập vào được băm và so sánh với giá trị băm được lưu trữ tương ứng. Mật khẩu ban đầu không thể được tính toán lại từ giá trị băm được lưu trữ trong cơ sở dữ liệu.

4. Kết luận

Có thể khẳng định rằng các hàm băm là một phần không thể thiếu trong các ứng dụng, sản phẩm mật mã. Tuy nhiên, với những tiến bộ của khoa học công nghệ tính an toàn (tồn tại va chạm) của nhiều hàm băm đã bị phá vỡ (MD5, SHA-1…). Các tổ chức về mật mã khác nhau trên thế giới cũng đã đưa ra các khuyến nghị về việc chọn thuật toán hàm băm an toàn.

ECRYPT-CSA Recommendations (2018)

Vì vậy, khi sử dụng các sản phẩm mật mã dân sự, tùy thuộc vào yêu cầu bảo mật, an toàn người sử dụng cần lựa chọn những hàm băm phù hợp tránh tạo các lỗ hổng mất an toàn an ninh.

ThS. Nguyễn Thanh Sơn – Cục QLMMDS và KĐSPMM

Đánh giá bài viết post

Phạm Văn Sỹ

Tôi là Phạm Văn Sỹ chuyên gia uy tín trong lĩnh vực kinh tế và kinh doanh là sinh viên của trường Đại học Ngoại Thương. Với kiến thức sâu rộng sau 12 năm ở bên ngoài thương trường thị trường tôi mong muốn chia sẻ các kiến thức chuyên sâu hữu ích dành cho mọi người.

Related Articles

Back to top button