Hàm băm mật mã. Hàm băm: nó là gì, tại sao cần thiết và nó là gì?

Câu hỏi:

1. Khái niệm hàm băm.

2. Sử dụng thuật toán mã hóa khối để hình thành hàm băm.

3. Ôn lại các thuật toán tạo hàm băm.

1. Khái niệm hàm băm

Hàm băm(hàm băm) là một hàm toán học hoặc hàm khác, đối với một chuỗi có độ dài tùy ý, tính toán một số giá trị nguyên hoặc một số chuỗi khác có độ dài cố định. Về mặt toán học nó có thể được viết như thế này:

h = H(M) ,

Ở đâu M – tin nhắn gốc, đôi khi được gọi là nguyên mẫu , MỘT h – kết quả, được gọi là giá trị băm (và cả Mã Băm hoặc tóm lược thông điệp(từ tiếng Anh tóm lược thông điệp)).

Ý nghĩa của hàm băm là xác định đặc điểm đặc trưng của tiền ảnh - giá trị của hàm băm. Giá trị này thường có kích thước cố định, chẳng hạn như 64 hoặc 128 bit. Mã băm có thể được phân tích sâu hơn để giải quyết mọi vấn đề. Ví dụ: băm có thể được sử dụng để so sánh dữ liệu: nếu hai mảng dữ liệu có mã băm khác nhau thì đảm bảo các mảng đó sẽ khác nhau; nếu chúng giống nhau thì các mảng rất có thể giống nhau. Nhìn chung, không có sự tương ứng 1-1 giữa dữ liệu nguồn và mã băm do số lượng giá trị hàm băm luôn ít hơn số lượng tùy chọn dữ liệu đầu vào. Do đó, có nhiều thông báo đầu vào có cùng mã băm (những trường hợp như vậy được gọi là Sự va chạm ). Xác suất va chạm đóng vai trò quan trọng trong việc đánh giá chất lượng của hàm băm.

Hàm băm được sử dụng rộng rãi trong mật mã hiện đại.

Hàm băm đơn giản nhất có thể được xây dựng bằng cách sử dụng phép tính tổng modulo-2 như sau: lấy chuỗi đầu vào, cộng tất cả các byte modulo 2 và trả về byte kết quả làm giá trị băm. Độ dài của giá trị hàm băm trong trường hợp này sẽ là 8 bit, bất kể kích thước của thông báo đầu vào.

Ví dụ: giả sử tin nhắn gốc, được dịch sang dạng kỹ thuật số, như sau (ở dạng thập lục phân):

2 B1 4 A9 5 FE4

Hãy chuyển tin nhắn sang dạng nhị phân, viết từng byte bên dưới byte kia và cộng các bit vào mỗi cột theo modulo 2:

0010 1011

0001 0100

1010 1001

0101 1111

1110 0100

——————-

0010 1101

Kết quả: 0010 1101 hoặc 2 D và sẽ là giá trị hàm băm.

Tuy nhiên, hàm băm như vậy không thể được sử dụng cho mục đích mã hóa, chẳng hạn như tạo chữ ký điện tử, vì khá dễ dàng thay đổi nội dung của thông báo đã ký mà không thay đổi giá trị tổng kiểm tra.

Do đó, hàm băm được coi là không phù hợp cho các ứng dụng mật mã. Trong mật mã, hàm băm được coi là tốt nếu khó tạo ra hai tiền ảnh có cùng giá trị băm và cũng như nếu đầu ra của hàm không có sự phụ thuộc rõ ràng vào đầu vào.

Chúng ta hãy xây dựng các yêu cầu cơ bản cho hàm băm mật mã:

· hàm băm phải áp dụng được cho thông điệp có kích thước bất kỳ;

· Việc tính toán giá trị hàm phải được thực hiện đủ nhanh;

· Với một giá trị hàm băm đã biết, sẽ rất khó (gần như không thể) tìm được nguyên mẫu phù hợp M ;

· với một tin nhắn đã biết M chắc khó tìm được bài khác M' có cùng giá trị băm như tin nhắn gốc;

· Rất khó để tìm thấy bất kỳ cặp thông điệp phân biệt ngẫu nhiên nào có cùng giá trị băm.

Tạo một hàm băm thỏa mãn tất cả các yêu cầu trên không phải là một nhiệm vụ dễ dàng. Cũng cần phải nhớ rằng đầu vào hàm nhận dữ liệu có kích thước tùy ý và kết quả băm không được giống nhau đối với dữ liệu có kích thước khác nhau.

Hiện nay, trong thực tế, hàm băm là hàm xử lý từng khối thông báo đầu vào và tính giá trị băm CHÀO cho mỗi khối tôi thông báo đầu vào dựa trên sự phụ thuộc của biểu mẫu

h i = H(M i ,h i-1),

Ở đâu h tôi-1 – kết quả thu được khi tính hàm băm cho khối dữ liệu đầu vào trước đó.

Kết quả là đầu ra của hàm băm là h n là một chức năng của tất cả N khối thông báo đầu vào.

2. Sử dụng thuật toán mã hóa khối để tạo hàm băm.

Thuật toán mã hóa đối xứng khối có thể được sử dụng làm hàm băm. Nếu thuật toán khối được sử dụng có mật mã mạnh thì hàm băm dựa trên nó sẽ được bảo mật.

Cách đơn giản nhất để sử dụng thuật toán khối để lấy mã băm là mã hóa tin nhắn ở chế độ CBC ( Cipher Block Chaining – Chế độ xâu chuỗi khối văn bản mã hóa). Trong trường hợp này, thông báo được biểu diễn dưới dạng một chuỗi các khối, độ dài của khối này bằng với độ dài của khối thuật toán mã hóa. Nếu cần, khối cuối cùng được đệm ở bên phải bằng các số 0 để tạo khối có độ dài cần thiết. Giá trị băm sẽ là khối văn bản được mã hóa cuối cùng. Với điều kiện sử dụng thuật toán mã hóa khối đáng tin cậy, giá trị băm thu được sẽ có các thuộc tính sau:

· Hầu như không thể tính được giá trị băm cho một mảng thông tin mở nhất định nếu không biết khóa mã hóa;

· Hầu như không thể chọn dữ liệu mở cho một giá trị băm nhất định mà không biết khóa mã hóa.

Giá trị băm được tạo ra thường được gọi là chèn giả hoặc người xác thực và được sử dụng để kiểm tra tính toàn vẹn của tin nhắn. Do đó, phần chèn bắt chước là sự kết hợp điều khiển phụ thuộc vào dữ liệu mở và thông tin khóa bí mật. Mục đích của việc sử dụng tính năng chèn bắt chước là để phát hiện tất cả các thay đổi vô tình hoặc cố ý trong mảng thông tin. Giá trị mà hàm băm thu được khi xử lý thông báo đầu vào sẽ được thêm vào thông báo tại thời điểm thông báo được biết là chính xác. Người nhận xác minh tính toàn vẹn của tin nhắn bằng cách tính toán tin nhắn bắt chước của tin nhắn đã nhận và so sánh nó với mã băm nhận được, mã này phải được truyền đi một cách an toàn. Một trong những phương pháp bảo mật như vậy có thể là mã hóa phần chèn bắt chước bằng khóa riêng của người gửi, tức là. tạo chữ ký. Cũng có thể mã hóa mã băm kết quả bằng thuật toán mã hóa đối xứng nếu người gửi và người nhận có khóa mã hóa đối xứng chung.

Quy trình cụ thể để lấy và sử dụng các hạt dao giả được mô tả trong tiêu chuẩn nội địa GOST 28147-89. Tiêu chuẩn đề xuất sử dụng 32 bit thấp hơn của khối thu được ở đầu ra của toàn bộ hoạt động mã hóa tin nhắn ở chế độ xâu chuỗi khối mật mã để kiểm soát tính toàn vẹn của tin nhắn được truyền đi. Theo cách tương tự, bất kỳ thuật toán mã hóa đối xứng khối nào cũng có thể được sử dụng để tạo một phần chèn giả.

Một cách khác có thể sử dụng mật mã khối để tạo mã băm như sau. Tin nhắn gốc được xử lý tuần tự theo khối. Khối cuối cùng được đệm bằng số 0 nếu cần thiết; đôi khi độ dài tin nhắn ở dạng số nhị phân được thêm vào khối cuối cùng. Ở mỗi giai đoạn, chúng tôi mã hóa giá trị băm thu được ở giai đoạn trước, sử dụng khối thông báo hiện tại làm khóa. Giá trị mã hóa cuối cùng nhận được sẽ là kết quả băm cuối cùng.

Vì vậy, nếu sơ đồ mã hóa tin nhắn thông thường M sử dụng mật mã khối f trên chìa khóa ĐẾN chúng tôi đã ghi lại như E=f(M,K) , thì sơ đồ lấy mã băm h sử dụng thuật toán được mô tả ở trên có thể được biểu diễn dưới dạng

CHÀO = f ( CHÀO -1 , M )

Là mã băm ban đầu h 0 lấy một số hằng số. Mã hóa được thực hiện ở chế độ thay thế đơn giản. Khi sử dụng phương pháp này, kích thước khối giống với độ dài khóa và kích thước của giá trị băm sẽ là độ dài khối.

Cũng có thể sử dụng một cách khác để sử dụng mật mã khối ở chế độ thay thế đơn giản: các thành phần thông báo được mã hóa bằng các giá trị băm thu được ở bước trước:

CHÀO = f ( M , CHÀO -1 ,)

Trên thực tế, có một số sơ đồ khả thi khác để sử dụng mật mã khối để tạo hàm băm. Cho phép tôi – khối tin nhắn gốc, CHÀO – bật giá trị hàm băm Tôi -Ở giai đoạn đó, f – thuật toán mã hóa khối được sử dụng trong chế độ thay thế đơn giản; – phép cộng modulo 2. Sau đó, ví dụ, có thể có sơ đồ tạo hàm băm sau:

Trong tất cả các sơ đồ này, độ dài của giá trị băm được tạo bằng độ dài của khối mã hóa. Tất cả những điều này, cũng như một số sơ đồ khác để sử dụng thuật toán mã hóa khối để tính giá trị băm, đều có thể được sử dụng trong thực tế.

Nhược điểm chính của hàm băm được thiết kế dựa trên thuật toán khối là tốc độ hoạt động tương đối thấp. Độ mạnh mật mã cần thiết có thể đạt được với ít thao tác hơn trên dữ liệu đầu vào. Có các thuật toán băm nhanh hơn (phổ biến nhất trong số đó là MD5, SHA-1, SHA-2 và GOST R 34.11-94).

3. Xem xét các thuật toán tạo hàm băm.

Hiện nay, nhiều thuật toán đặc biệt khác nhau để tính hàm băm đã được đề xuất và được sử dụng trong thực tế. Các thuật toán nổi tiếng nhất là MD5, SHA-1, SHA-2 và các phiên bản khác của SHA, cũng như thuật toán nội địa được nêu trong GOST R 34.11-94.

Thuật toán MD5 xuất hiện vào đầu những năm 90 của thế kỷ XX là kết quả của việc cải tiến thuật toán tạo hàm băm MD4. Các ký tự trong tên “MD” là viết tắt của Message Digest – bản tóm tắt của tin nhắn. Tác giả của thuật toán MD4 và MD5 là R. Rivest. Sử dụng MD5 cho một thông báo tùy ý sẽ tạo ra giá trị băm 128 bit. Dữ liệu đầu vào được xử lý theo khối 512 bit. Thuật toán sử dụng các phép toán logic cơ bản (đảo ngược, kết hợp, phép cộng modulo 2, dịch chuyển tuần hoàn, v.v.), cũng như phép cộng số học thông thường. Sự lặp lại phức tạp của các hàm cơ bản này của thuật toán đảm bảo rằng kết quả sau khi xử lý được trộn đều. Vì vậy, khó có khả năng hai tin nhắn được chọn ngẫu nhiên sẽ có cùng mã băm. Thuật toán MD5 có đặc tính sau: mỗi bit của giá trị băm thu được là một hàm của từng bit đầu vào. MD5 được coi là hàm băm mạnh nhất cho giá trị băm 128 bit.

Thuật toán SHA(Thuật toán băm an toàn) được phát triển bởi Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) và được xuất bản dưới dạng tiêu chuẩn thông tin liên bang Hoa Kỳ vào năm 1993. SHA-1, giống như MD5, dựa trên thuật toán MD4. SHA-1 tạo ra giá trị băm 160 bit bằng cách xử lý tin nhắn gốc trong khối 512 bit. Thuật toán SHA-1 cũng sử dụng các phép toán logic và số học đơn giản. Sự khác biệt quan trọng nhất giữa SHA-1 và MD5 là mã băm SHA-1 dài hơn mã băm MD5 32 bit. Giả sử rằng cả hai thuật toán đều có độ khó như nhau khi phân tích mật mã thì SHA-1 là thuật toán mạnh hơn. Sử dụng tấn công vũ phu (tấn công vũ phu), việc tạo một tin nhắn tùy ý có mã băm nhất định sẽ khó hơn và việc tạo hai tin nhắn có cùng mã băm cũng khó hơn.

Năm 2001, Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ đã áp dụng ba hàm băm có độ dài mã băm dài hơn SHA-1 làm tiêu chuẩn. Các hàm băm này thường được gọi là SHA-2 hoặc SHA-256, SHA-384 và SHA-512 (tên chỉ độ dài của mã băm do thuật toán tạo ra). Các thuật toán này không chỉ khác nhau về độ dài của mã băm được tạo mà còn ở các hàm bên trong được sử dụng và độ dài của khối được xử lý (SHA-256 có độ dài khối là 512, trong khi SHA-384 và SHA-512 có một khối). dài 1024 bit). Những cải tiến dần dần đối với thuật toán SHA dẫn đến tăng cường sức mạnh mật mã của nó. Bất chấp sự khác biệt giữa các thuật toán đang được xem xét, chúng đều là những phát triển tiếp theo của SHA-1 và MD4 và có cấu trúc tương tự nhau.

Nga đã áp dụng GOST R34.11-94, đây là tiêu chuẩn nội địa cho hàm băm. Cấu trúc của nó khá khác với cấu trúc của thuật toán SHA-1,2 hoặc MD5, dựa trên thuật toán MD4. Độ dài của mã băm được tạo bởi thuật toán GOST R 34.11-94 là 256 bit. Thuật toán xử lý tuần tự tin nhắn gốc theo khối 256 bit từ phải sang trái. Tham số thuật toán là vectơ bắt đầu băm - một giá trị cố định tùy ý cũng dài 256 bit. Thuật toán GOST R 34.11-94 sử dụng các phép toán hoán vị, dịch chuyển, cộng số học, cộng modulo 2. Là một hàm phụ trợ, GOST 34.11-94 sử dụng thuật toán theo GOST 28147-89 ở chế độ thay thế đơn giản.

4. Yêu cầu đối với hàm băm

Hàm băm là hàm một chiều được thiết kế để thu được bản tóm tắt hoặc "dấu vân tay" của tệp, tin nhắn hoặc một số khối dữ liệu.

Mã băm được tạo bởi hàm N :

h = H(M)

Ở đâu M là một thông điệp có độ dài tùy ý và h là mã băm có độ dài cố định.

Chúng ta hãy xem các yêu cầu mà hàm băm phải đáp ứng để được sử dụng làm trình xác thực thư. Hãy xem một ví dụ rất đơn giản về hàm băm. Sau đó chúng ta sẽ phân tích một số cách tiếp cận để xây dựng hàm băm.

Hàm băm N , được sử dụng để xác thực tin nhắn, phải có các thuộc tính sau:

1. Hàm băm N phải được áp dụng cho khối dữ liệu có độ dài bất kỳ.

2. Hàm băm N tạo ra một đầu ra có độ dài cố định.

3. N (M) tương đối dễ dàng (trong thời gian đa thức) để tính toán bất kỳ giá trị nào M .

4. Đối với bất kỳ giá trị mã băm nào h về mặt tính toán không thể tìm thấy M như vậy mà H (M) = h .

5. Với bất kỳ điều kiện nào X về mặt tính toán là không thể tìm thấy điều đó

H (y) = H(x).

6. Về mặt tính toán không thể tìm được một cặp tùy ý ( X , y ) như vậy mà H(y) = H(x) .

Ba thuộc tính đầu tiên yêu cầu hàm băm tạo ra mã băm cho bất kỳ thông báo nào.

Thuộc tính thứ tư xác định yêu cầu hàm băm phải có tính một phía: có thể dễ dàng tạo mã băm từ một thông báo nhất định nhưng không thể xây dựng lại thông báo từ một mã băm nhất định. Thuộc tính này rất quan trọng nếu xác thực băm liên quan đến giá trị bí mật. Bản thân giá trị bí mật có thể không được gửi đi, tuy nhiên, nếu hàm băm không phải là một chiều, kẻ tấn công có thể dễ dàng tiết lộ giá trị bí mật như sau. Khi đường truyền bị chặn, kẻ tấn công sẽ nhận được một tin nhắn M và mã băm C = H (SAB || M) . Nếu kẻ tấn công có thể đảo ngược hàm băm thì hắn có thể lấy được SAB || M=H-1(C) . Vì kẻ tấn công bây giờ đã biết và M SAB || M , lấy S.A.B. khá đơn giản.

Thuộc tính thứ năm đảm bảo rằng không thể tìm thấy tin nhắn khác có giá trị băm khớp với giá trị băm của tin nhắn này. Điều này ngăn chặn việc giả mạo trình xác thực khi sử dụng mã băm được mã hóa. Trong trường hợp này, kẻ tấn công có thể đọc tin nhắn và do đó tạo ra mã băm của nó. Nhưng vì kẻ tấn công không có khóa bí mật nên hắn không có cách nào thay đổi tin nhắn mà người nhận không phát hiện ra. Nếu thuộc tính này không được thỏa mãn, kẻ tấn công có cơ hội thực hiện chuỗi hành động sau: chặn tin nhắn và mã băm được mã hóa của nó, tính mã băm của tin nhắn, tạo một tin nhắn thay thế có cùng mã băm, thay thế bản gốc tin nhắn với một tin nhắn giả mạo. Vì giá trị băm của các tin nhắn này giống nhau nên người nhận sẽ không phát hiện ra hành vi giả mạo.

Hàm băm thỏa mãn năm thuộc tính đầu tiên được gọi là hàm băm đơn giản hoặc hàm băm yếu. Ngoài ra, nếu tính chất thứ sáu được thỏa mãn thì hàm như vậy được gọi là hàm băm mạnh. Thuộc tính thứ sáu bảo vệ chống lại một lớp tấn công được gọi là tấn công sinh nhật.

5. Hàm băm đơn giản

Tất cả các hàm băm được thực hiện như sau. Giá trị đầu vào (tin nhắn, tệp, v.v.) được coi là một chuỗi N -khối bit. Giá trị đầu vào được xử lý tuần tự theo từng khối và tôi -bit giá trị mã băm.

Một trong những ví dụ đơn giản nhất về hàm băm là XOR từng khối theo bit:

C tôi - Tôi bit thứ của mã băm, 1 <= i <= n .

k - con số N -khối đầu vào bit.

b ij Tôi bit thứ trong j -khối thứ.

Toàn bộ tin nhắn sau đó được mã hóa, bao gồm cả mã băm, ở chế độ CBC để tạo các khối mã hóa Y1, Y2, ..., YN+1. Theo định nghĩa SHS ta có:

Nhưng XN+1 là mã băm:

Vì các số hạng trong đẳng thức trước đó có thể được đánh giá theo bất kỳ thứ tự nào, do đó mã băm sẽ không bị thay đổi nếu các khối mã hóa được sắp xếp lại.

Tiêu chuẩn ban đầu do NIST đề xuất sử dụng XOR đơn giản, áp dụng cho các khối tin nhắn 64 bit, sau đó toàn bộ tin nhắn được mã hóa bằng chế độ CBC.

"Nghịch lý sinh nhật"

Trước khi xem xét các hàm băm phức tạp hơn, cần phân tích một cuộc tấn công cụ thể vào các hàm băm đơn giản.

Cái gọi là "nghịch lý sinh nhật" như sau. Giả sử số lượng giá trị đầu ra của hàm băm N bằng N . Con số nên là bao nhiêu? k sao cho với một giá trị cụ thể X và giá trị Y1, ,Yk xác suất để có ít nhất một Yi thì đẳng thức

H(X) = H(Y)

sẽ lớn hơn 0,5.

Cho một Y xác suất đó H(X) = H(Y) , bằng nhau 1/n .

Theo đó, xác suất mà , bằng nhau 1 – 1/n .

Nếu bạn tạo k các giá trị, thì xác suất sẽ không có kết quả trùng khớp nào cho bất kỳ giá trị nào trong số chúng bằng tích của các xác suất tương ứng với một giá trị, tức là. (1 – 1/n)k .

Do đó, xác suất có ít nhất một trận đấu là

1 - (1 - 1/n)k

Vì vậy, chúng tôi phát hiện ra rằng đối với tôi -bit hash code là đủ để chọn 2m-1 tin nhắn sao cho xác suất trùng mã băm lớn hơn 0,5.

Bây giờ hãy xem xét vấn đề sau: chúng ta hãy ký hiệu P(n,k) xác suất để trong tập hợp k các phần tử, mỗi phần tử có thể đảm nhận N giá trị thì có ít nhất hai giá trị giống nhau. Nó phải bằng bao nhiêu? k , ĐẾN P(n,k) sẽ nhiều hơn 0,5 ?

Số cách khác nhau để chọn các phần tử sao cho không có phần tử trùng lặp là bằng

n(n-1) ... (n-k+1)=n!/(n-k)!

Tổng số cách có thể để chọn phần tử là n k

Xác suất không có số trùng lặp bằng n!/(n-k)!n k

Xác suất có sự trùng lặp tương ứng bằng

1 - n!/(n-k)!nk P(n, k) = 1 - n! / ((n-k)! x nk) = 1 - (n x (n-1) x ... x (n-k-1)) / nk = 1 - [ (n-1)/n x (n-2)/n x ... x (n-k+1)/n] = 1 - [(1- 1/n) x (1 - 2/n) x ... x (1 - (k-1)/n)]

Nếu mã băm có độ dài tôi chút, tức là chấp nhận 2m thì các giá trị

Kết quả này gọi là “nghịch lý ngày sinh” vì theo lý giải trên, để xác suất hai người có cùng ngày sinh lớn hơn 0,5 thì nhóm đó phải chỉ có 23 người. Kết quả này có vẻ đáng ngạc nhiên, có lẽ bởi vì đối với bất kỳ cá nhân nào trong một nhóm, xác suất ngày sinh của họ trùng với sinh nhật của một người khác trong nhóm là khá nhỏ.

Hãy quay lại xem xét các thuộc tính của hàm băm. Giả sử rằng mã băm 64 bit được sử dụng. Chúng ta có thể coi đây là độ dài đủ và do đó an toàn cho mã băm. Ví dụ: nếu mã băm được mã hóa VỚI được truyền đi với tin nhắn không được mã hóa tương ứng M , thì kẻ thù sẽ cần tìm M' như vậy mà

N(M”) = N(M) ,

nhằm thay thế tin nhắn và đánh lừa người nhận. Trung bình, kẻ tấn công phải tìm kiếm trong 263 tin nhắn để tìm ra tin nhắn có mã băm bằng tin nhắn bị chặn.

Tuy nhiên, có thể xảy ra nhiều kiểu tấn công khác nhau dựa trên nghịch lý ngày sinh. Chiến lược sau đây có thể thực hiện được:

1. Kẻ thù tạo ra 2m/2 tùy chọn tin nhắn, mỗi tùy chọn có một số ý nghĩa cụ thể. Kẻ thù chuẩn bị cùng một số lượng tin nhắn, mỗi tin nhắn đều là giả mạo và nhằm mục đích thay thế tin nhắn thật.

2. Hai bộ thông báo được so sánh để tìm ra cặp thông báo có cùng mã băm. Xác suất thành công theo “nghịch lý sinh nhật” lớn hơn 0,5. Nếu không tìm thấy cặp trùng khớp thì các tin nhắn gốc và giả mạo bổ sung sẽ được tạo cho đến khi tìm thấy cặp.

3. Kẻ tấn công cung cấp cho người gửi phiên bản gốc của tin nhắn để lấy chữ ký. Chữ ký này sau đó có thể được gắn vào phiên bản giả mạo để truyền tới người nhận. Vì cả hai tùy chọn đều có cùng mã băm nên chữ ký giống nhau sẽ được tạo. Kẻ thù sẽ tự tin thành công ngay cả khi không biết khóa mã hóa.

Do đó, nếu sử dụng mã băm 64 bit thì độ phức tạp tính toán cần thiết là ở mức 232.

Cuối cùng, lưu ý rằng độ dài của mã băm phải đủ lớn. Độ dài 64 bit hiện không được coi là an toàn. Tốt nhất là độ dài ở mức 100 bit.

Sử dụng chuỗi khối được mã hóa

Có nhiều hàm băm khác nhau dựa trên việc tạo một chuỗi các khối được mã hóa nhưng không sử dụng khóa bí mật. Một hàm băm như vậy đã được Rabin đề xuất. Tin nhắn M được chia thành các khối có chiều dài cố định M1, M2, . . . , MN và sử dụng thuật toán mã hóa đối xứng như DES để tính mã băm G theo cách sau:

H 0 - giá trị ban đầu N tôi = Ế Mi G = H N

Điều này tương tự như sử dụng mã hóa CBC, nhưng trong trường hợp này không có khóa bí mật. Giống như bất kỳ hàm băm đơn giản nào, thuật toán này dễ bị "tấn công sinh nhật" và nếu thuật toán mã hóa là DES và chỉ tạo mã băm 64 bit thì hệ thống được coi là khá dễ bị tấn công.

Các cuộc tấn công kiểu sinh nhật khác có thể được thực hiện, ngay cả khi kẻ thù chỉ có quyền truy cập vào một tin nhắn và mã băm được mã hóa tương ứng của nó và không thể lấy được nhiều cặp tin nhắn và mã băm được mã hóa. Có thể xảy ra trường hợp sau: giả sử rằng kẻ tấn công đã chặn tin nhắn bằng trình xác thực dưới dạng mã băm được mã hóa và biết rằng mã băm không được mã hóa có độ dài tôi chút ít Tiếp theo, kẻ thù phải thực hiện các hành động sau:

· Sử dụng thuật toán mô tả ở trên, tính toán mã băm không được mã hóa G .

· Tạo tin nhắn giả theo mẫu Q1, Q2, . . . , QN-2 .

· Tính toán N i = E Qi 1 <= i <= N-2 .

· Tạo nên 2m/2 khối ngẫu nhiên X và với mỗi khối như vậy X tính toán BÁN TẠI . Tạo thêm 2m/2 khối ngẫu nhiên Y và cho mỗi khối Y tính toán DY [G] , Ở đâu D – chức năng giải mã tương ứng E . Dựa vào nghịch lý sinh nhật, rất có thể dãy này sẽ chứa các khối X Y như vậy mà E X = D Y [Y] .

· Tạo tin nhắn Q1, Q2, . . . , QN-2, X, Y . Tin nhắn này có mã băm G và do đó có thể được sử dụng cùng với trình xác thực được mã hóa.

Hình thức tấn công này được gọi là tấn công "gặp ở giữa". Nhiều nghiên cứu khác nhau đề xuất các phương pháp tinh tế hơn để tăng cường cách tiếp cận dựa trên blockchain. Ví dụ, Davis và Price đã mô tả như sau:

Một lựa chọn khác là có thể:

Tuy nhiên, cả hai chương trình này đều có lỗ hổng trước các cuộc tấn công khác nhau. Tổng quát hơn, có thể chỉ ra rằng một số dạng "tấn công sinh nhật" thành công với bất kỳ thuật toán băm nào liên quan đến việc sử dụng chuỗi khối được mã hóa mà không sử dụng khóa bí mật.

Nghiên cứu sâu hơn nhằm mục đích tìm ra các phương pháp khác để tạo ra các hàm băm.

hàm băm MD5

Hãy xem xét thuật toán phân loại thông điệp MD5 (RFC 1321) do Ron Rivest của MIT phát triển.

Logic thực thi MD5

Thuật toán nhận một thông báo có độ dài tùy ý làm đầu vào và tạo ra một bản tóm tắt thông báo 128 bit làm đầu ra. Thuật toán bao gồm các bước sau:

Cơm. 8.1. Logic thực thi MD5

Bước 1: Thêm các bit còn thiếu

Thông báo được đệm để độ dài của nó trở thành 448 modulo 512(). Điều này có nghĩa là độ dài của tin nhắn được nối thêm nhỏ hơn 64 bit so với bội số của 512. Việc nối thêm luôn được thực hiện, ngay cả khi tin nhắn có độ dài chính xác. Ví dụ: nếu một tin nhắn dài 448 bit, nó sẽ được đệm thêm 512 bit để tạo thành 960 bit. Do đó, số bit được thêm vào nằm trong khoảng từ 1 đến 512.

Phép cộng bao gồm một số theo sau là số số 0 cần thiết.

Bước 2: Thêm chiều dài

Biểu diễn 64-bit về độ dài của tin nhắn gốc (trước khi nối thêm) theo bit sẽ được thêm vào kết quả của bước đầu tiên. Nếu độ dài ban đầu lớn hơn 2 64 thì chỉ sử dụng 64 bit cuối cùng. Do đó, trường chứa độ dài của thông điệp gốc modulo 2 64.

Hai bước đầu tiên tạo ra một thông báo có độ dài là bội số của 512 bit. Thông báo mở rộng này được biểu diễn dưới dạng một chuỗi các khối 512 bit Y 0 , Y 1 , . . ., Y L-1, với tổng chiều dài của tin nhắn mở rộng là L * 512 bit. Do đó, độ dài của tin nhắn mở rộng nhận được là bội số của 16 từ 32 bit.

Cơm. 8.2. Cấu trúc tin nhắn mở rộng

Bước 3: Khởi tạo bộ đệm MD

Bộ đệm 128 bit được sử dụng để lưu trữ kết quả trung gian và kết quả cuối cùng của hàm băm. Bộ đệm có thể được biểu diễn dưới dạng bốn thanh ghi 32 bit (A, B, C, D). Các thanh ghi này được khởi tạo với các số thập lục phân sau:

A = 01234567 B = 89ABCDEF C = FEDCBA98 D = 76543210

Bước 4: Xử lý chuỗi khối 512 bit (16 từ)

Cơ sở của thuật toán là một mô-đun bao gồm bốn quá trình xử lý theo chu kỳ, được ký hiệu là HMD5. Bốn vòng lặp có cấu trúc tương tự nhau, nhưng mỗi vòng lặp sử dụng một hàm logic cơ bản khác nhau, ký hiệu lần lượt là f F , f G , f H và f I .

Cơm. 8.3. Xử lý khối 512 bit tiếp theo

Mỗi vòng lặp lấy đầu vào là khối 512 bit hiện tại Y q hiện đang được xử lý và giá trị 128 bit của bộ đệm ABCD, là giá trị phân loại trung gian và sửa đổi nội dung của bộ đệm này. Mỗi vòng lặp cũng sử dụng một phần tư bảng 64 phần tử T, được xây dựng từ hàm sin. Phần tử thứ i của T, ký hiệu là T[i], có giá trị bằng phần nguyên của 2 32 * abs (sin(i)), i tính bằng radian. Vì abs(sin(i)) là một số từ 0 đến 1 nên mỗi phần tử của T là một số nguyên có thể được biểu diễn bằng 32 bit. Bảng này cung cấp một tập hợp các giá trị 32 bit "ngẫu nhiên" sẽ loại bỏ mọi tính quy luật trong dữ liệu đầu vào.

Để thu được MD q+1, đầu ra của bốn vòng lặp được thêm modulo 2 32 vào MD q . Việc bổ sung được thực hiện độc lập cho từng từ trong số bốn từ trong bộ đệm.

F là một trong các hàm cơ bản f F , f G , f H , f I .

Một mảng các từ 32 bit X chứa giá trị của khối đầu vào 512 bit hiện tại đang được xử lý. Mỗi vòng lặp được thực hiện 16 lần và vì mỗi khối thông báo đầu vào được xử lý trong bốn vòng nên mỗi khối thông báo đầu vào được xử lý theo sơ đồ hiển thị trong Hình 2. 4, 64 lần. Nếu chúng ta coi khối đầu vào 512 bit là 16 từ 32 bit thì mỗi từ đầu vào 32 bit được sử dụng bốn lần, một lần trong mỗi chu kỳ và mỗi phần tử của bảng T, bao gồm 64 từ 32 bit, là chỉ được sử dụng một lần. Sau mỗi bước của vòng lặp, bốn từ A, B, C và D được quay sang trái. Ở mỗi bước, chỉ một trong bốn từ của bộ đệm ABCD được thay đổi. Do đó, mỗi từ của bộ đệm được sửa đổi 16 lần và sau đó là lần thứ 17 ở cuối để tạo ra đầu ra cuối cùng của khối đó.

tiêu.

2. Tốc độ: phần mềm thực hiện thuật toán phải đủ nhanh. Đặc biệt, thuật toán phải đủ nhanh trên kiến ​​trúc 32 bit. Do đó, thuật toán dựa trên một tập hợp các phép toán cơ bản đơn giản trên các từ 32 bit.

3. Đơn giản và gọn nhẹ: thuật toán phải đơn giản để mô tả và lập trình đơn giản, không cần các chương trình lớn hoặc bảng thay thế. Những đặc điểm này không chỉ có những lợi thế rõ ràng về phần mềm mà còn đáng mong đợi từ quan điểm bảo mật, vì tốt hơn là nên có một thuật toán đơn giản để phân tích các điểm yếu có thể xảy ra.

4. Kiến trúc Little-endian được mong muốn: Một số kiến ​​trúc bộ xử lý (chẳng hạn như dòng Intel 80xxx) lưu trữ các byte bên trái của một từ ở vị trí địa chỉ byte-endian nhỏ. Những người khác (chẳng hạn như SUN Sparcstation) lưu trữ các byte bên phải của từ ở vị trí địa chỉ byte thấp (hằng số bổ sung MD4 lớn trong vòng lặp đầu tiên không được sử dụng. Hằng số bổ sung tương tự được sử dụng cho từng bước trong vòng lặp thứ hai Một hằng số bổ sung khác được sử dụng cho mỗi bước trong vòng lặp thứ ba. Mã băm là một hàm của từng bit đầu vào. Sự lặp lại phức tạp của các hàm cơ bản f F , f G , f H và f I đảm bảo rằng kết quả được trộn lẫn; nghĩa là, khó có khả năng hai thông báo được chọn ngẫu nhiên, ngay cả khi chúng có các mẫu giống nhau rõ ràng có cùng một bản tóm tắt tạo ra cùng một giá trị đầu ra, nghĩa là việc thực hiện MD5 trên một khối 512 bit sẽ dẫn đến cùng một đầu ra cho hai giá trị đầu vào khác nhau trong bộ đệm ABCD, không tồn tại trên MD5.

Hoặc Hàm băm là hàm, biến dữ liệu đầu vào có kích thước bất kỳ (thường là lớn) thành dữ liệu có kích thước cố định. Băm(Thỉnh thoảng G Yeshuvanya, tiếng Anh Băm)- chuyển đổi mảng dữ liệu đầu vào có độ dài tùy ý thành chuỗi bit đầu ra có độ dài cố định. Những phép biến đổi như vậy còn được gọi là hàm băm hoặc hàm tích chập, và kết quả của chúng được gọi là hàm băm, Mã Băm tổng băm, hoặc tóm lược thông điệp(Tiếng Anh) Tóm lược thông điệp).

Hàm băm được sử dụng đặc biệt trong cấu trúc dữ liệu - bảng băm và được sử dụng rộng rãi trong các phần mềm để truy xuất dữ liệu nhanh chóng. Hàm băm được sử dụng để tối ưu hóa các bảng và cơ sở dữ liệu bằng cách đảm bảo rằng các bản ghi giống hệt nhau có cùng giá trị băm. Cách tiếp cận này để tìm các bản sao có hiệu quả trong các tệp lớn. Một ví dụ về điều này là việc tìm ra các vùng tương tự trong chuỗi DNA. Hàm băm mật mã giúp dễ dàng xác minh rằng một số đầu vào khớp với một giá trị băm nhất định, nhưng nếu đầu vào không xác định thì rất khó để tái tạo lại giá trị đầu vào (hoặc một giá trị thay thế tương đương) khi biết giá trị băm được lưu trữ. Điều này được sử dụng để đảm bảo tính toàn vẹn của dữ liệu được truyền và là khối xây dựng cho HMAC cung cấp xác thực tin nhắn.

Hàm băm có liên quan đến (và thường bị nhầm lẫn với) tổng, kiểm tra chữ số, dấu vân tay, hàm ngẫu nhiên, mã sửa lỗi và mật mã. Mặc dù các khái niệm này trùng lặp ở một mức độ nào đó, nhưng mỗi khái niệm đều có phạm vi và yêu cầu riêng, đồng thời được thiết kế và tối ưu hóa khác nhau.

Câu chuyện

Donald Knuth ghi nhận ý tưởng băm có hệ thống đầu tiên là của nhân viên IBM Hans Peter Luhn, người đã đề xuất hàm băm vào tháng 1 năm 1953.

Năm 1956, Arnold Duma, trong tác phẩm Máy tính và Tự động hóa, là người đầu tiên đưa ra khái niệm băm như hầu hết các lập trình viên ngày nay đều biết. Duma coi việc băm là một giải pháp cho “Vấn đề từ điển” và cũng đề xuất sử dụng phần còn lại của phép chia cho số nguyên tố làm địa chỉ băm.

Công trình quan trọng đầu tiên liên quan đến việc tìm kiếm các tập tin lớn là bài viết của Wesley Peterson trên tạp chí Tạp chí Nghiên cứu và Phát triển của IBM 1957, trong đó ông định nghĩa địa chỉ mở và cũng chỉ ra sự suy giảm hiệu suất của địa chỉ từ xa. Sáu năm sau, tác phẩm của Werner Buchholz được xuất bản, trong đó phần lớn khám phá các hàm băm. Trong vài năm tiếp theo, hàm băm được sử dụng rộng rãi nhưng không có công trình quan trọng nào được công bố.

Năm 1967, băm theo nghĩa hiện đại đã được đề cập trong cuốn sách Nguyên tắc của hệ thống máy tính kỹ thuật số của Herbert Hellerman. Năm 1968, Robert Morris xuất bản trên Truyền thông của ACM tổng quan tuyệt vời về băm. Công trình này được coi là ấn phẩm đưa khái niệm băm vào lưu thông khoa học và cuối cùng củng cố thuật ngữ “băm” giữa các chuyên gia.

Vào đầu những năm 1990, thuật ngữ tương đương với thuật ngữ "băm", nhờ công trình của Andrei Ershov, là từ "sắp xếp" (tiếng Nga), và đối với các vụ va chạm, thuật ngữ "xung đột" (tiếng Nga) đã được sử dụng (Ershov đã sử dụng "sắp xếp" từ năm 1956, cũng như trong ấn bản tiếng Nga của cuốn sách "Thuật toán và cấu trúc dữ liệu" (1989) của Niklaus Wirth, thuật ngữ này được sử dụng. Tuy nhiên, không có lựa chọn nào trong số này bắt nguồn từ gốc rễ, và trong tài liệu, thuật ngữ " băm" chủ yếu được sử dụng.

Sự miêu tả

Băm được sử dụng để xây dựng các mảng kết hợp, tìm kiếm các bản sao trong một chuỗi tập dữ liệu, xây dựng mã định danh duy nhất cho tập dữ liệu, tổng kiểm tra để xác định các lỗi vô tình hoặc cố ý trong quá trình lưu trữ hoặc truyền tải, để lưu trữ mật khẩu trong hệ thống bảo mật (trong trường hợp này là quyền truy cập vào vùng bộ nhớ " bộ nhớ, nơi chứa mật khẩu, không cho phép bạn tự khôi phục mật khẩu), khi tạo chữ ký điện tử (trong thực tế, thường không phải bản thân tin nhắn được ký mà là hình ảnh băm của nó).

Nhìn chung, không có sự tương ứng 1-1 giữa dữ liệu nguồn và mã băm do số lượng giá trị hàm băm nhỏ hơn số lượng giá trị biến thể của mảng đầu vào. Có nhiều mảng có nội dung khác nhau nhưng chúng đưa ra cùng một mã băm - gọi là xung đột. Xác suất va chạm đóng vai trò quan trọng trong việc đánh giá chất lượng của hàm băm.

Có nhiều thuật toán băm với các thuộc tính khác nhau (dung lượng bit, độ phức tạp tính toán, cường độ mật mã, v.v.). Việc lựa chọn hàm băm này hay hàm băm khác được xác định bởi tính chất cụ thể của vấn đề đang được giải quyết. Các ví dụ đơn giản nhất về hàm băm là tổng kiểm tra hoặc CRC.

Các loại hàm băm

Một hàm băm tốt phải thỏa mãn hai thuộc tính:

  • được tính toán nhanh chóng;
  • Giảm thiểu số lần va chạm

Giả sử, để xác định, số lượng khóa và hàm băm không có nhiều hơn các giá trị khác nhau:

Một ví dụ về hàm băm “xấu” là hàm c, khớp với một số tự nhiên có mười chữ số với ba chữ số được chọn từ giữa ô vuông có hai mươi chữ số của số đó. Có vẻ như các giá trị mã băm phải được phân bổ đều giữa “000” và “999”, nhưng đối với dữ liệu thực, phương pháp này chỉ phù hợp nếu các khóa không có số lượng lớn số 0 ở bên trái hoặc bên phải.

Tuy nhiên, có một số phương pháp đơn giản và đáng tin cậy khác làm cơ sở cho nhiều hàm băm.

Hàm băm dựa trên phép chia

Phương pháp đầu tiên là chúng tôi sử dụng phần còn lại của phép chia làm hàm băm làm số lượng tất cả các hàm băm có thể có:

Đồng thời, rõ ràng là với một cặp, chế độ tiết kiệm được ghép nối, với một cặp. Và lẻ - khi lẻ, điều này có thể dẫn đến sự thay đổi đáng kể về dữ liệu trong tệp. Ngoài ra, bạn không nên sử dụng hệ thống số của máy tính làm cơ sở, vì hàm băm sẽ chỉ phụ thuộc vào một vài chữ số của số nằm ở bên phải, điều này sẽ dẫn đến một số lượng lớn xung đột. Trong thực tế, họ thường chọn cách đơn giản - trong hầu hết các trường hợp, lựa chọn này khá thỏa đáng.

Cần phải nói thêm điều gì đó về phương pháp băm, phương pháp này dựa trên việc chia cho log modulo hai. Trong phương pháp này, nó cũng phải là lũy thừa của hai và khóa nhị phân () có dạng đa thức. Trong trường hợp này, mã băm được lấy làm giá trị của các hệ số của đa thức thu được dưới dạng phần dư của phép chia cho đa thức bậc được chọn trước:

Nếu được chọn đúng, phương pháp này đảm bảo không có xung đột giữa các phím gần như giống hệt nhau.

Sơ đồ băm nhân

Phương pháp thứ hai là chọn một số hằng số nguyên nguyên tố cùng nhau, trong đó là số giá trị có thể có ở dạng một từ máy (trong máy tính IBM PC). Sau đó, chúng ta có thể lấy hàm băm có dạng:

Trong trường hợp này, trên máy tính có hệ thống số nhị phân, nó là lũy thừa của hai và bao gồm các bit quan trọng nhất của nửa bên phải của sản phẩm.

Trong số các ưu điểm của hai phương pháp này, điều đáng chú ý là chúng tận dụng lợi thế của thực tế là các khóa thực là không ngẫu nhiên. Ví dụ: nếu các khóa biểu thị một cấp số cộng (giả sử chuỗi tên “name1”, “name2”, “name3”). Phương pháp nhân sẽ ánh xạ một cấp số cộng thành một cấp số cộng gần đúng của các giá trị băm khác nhau, giảm số lần va chạm so với tình huống ngẫu nhiên.

Một trong những biến thể của phương pháp này là băm Fibonacci, dựa trên các đặc tính của tỷ lệ vàng. Giá trị được chọn ở đây là giá trị gần nhất với số nguyên nguyên tố cùng nhau

Băm chuỗi có độ dài thay đổi

Các phương pháp trên cũng được áp dụng khi chúng ta cần xem xét các khóa gồm nhiều từ hoặc các khóa có độ dài thay đổi. Ví dụ: bạn có thể kết hợp các từ thành một bằng cách sử dụng phép cộng modulo hoặc phép cộng modulo 2. Một trong những thuật toán hoạt động theo nguyên tắc này là hàm băm Pearson.

Băm Pearson là một thuật toán được đề xuất bởi Peter Pearson. Peter Pearson)đối với các bộ xử lý có thanh ghi 8 bit, nhiệm vụ của nó là tính nhanh mã băm cho một chuỗi có độ dài tùy ý. Hàm nhận đầu vào là một từ bao gồm các ký tự, mỗi ký tự có kích thước 1 byte và trả về một giá trị trong phạm vi từ 0 đến 255. Giá trị mã băm phụ thuộc vào từng ký tự của từ đầu vào.

Thuật toán có thể được mô tả bằng mã giả sau, lấy một chuỗi làm đầu vào và sử dụng bảng hoán vị

h:=0 Cho mỗi c TRONG W vòng chỉ mục:=h xor ch:=T Kết thúc vòng lặp Trở lại h

Trong số các ưu điểm của thuật toán cần lưu ý:

  • dễ tính toán;
  • không có dữ liệu đầu vào nào có xác suất va chạm cao nhất;
  • khả năng sửa đổi thành hàm băm lý tưởng.

Là một cách thay thế cho các khóa băm bao gồm các ký hiệu (), người ta có thể đề xuất các phép tính

Sử dụng hàm băm

Hàm băm được sử dụng rộng rãi trong mật mã cũng như trong nhiều cấu trúc dữ liệu - bảng băm, bộ lọc Bloom và cây Descartes.

Hàm băm mật mã

Trong số nhiều hàm băm hiện có, người ta thường phân biệt các hàm băm mạnh về mặt mật mã được sử dụng trong mật mã vì các yêu cầu bổ sung được áp đặt cho chúng. Để hàm băm được coi là mạnh về mặt mật mã, nó phải đáp ứng ba yêu cầu cơ bản, là cơ sở cho hầu hết việc sử dụng hàm băm trong mật mã:

  • Không thể đảo ngược: cho một giá trị băm nhất định tôi Về mặt tính toán, không thể tìm thấy khối dữ liệu nào.
  • Sự bền vững va chạm loại một: cho một tin nhắn nhất định M về mặt tính toán thì không thể tìm được cái khác tin nhắn N, vì cái gì.
  • Sự bền vững ĐẾN Sự va chạm loại thứ hai: Về mặt tính toán, không thể tìm thấy các cặp thông báo có cùng hàm băm.

Các yêu cầu này phụ thuộc lẫn nhau:

  • Hàm nghịch đảo không ổn định đối với va chạm loại một và loại hai.
  • Là hàm không ổn định với va chạm loại một, không ổn định với va chạm loại hai; điều ngược lại là không đúng sự thật.

Cần lưu ý rằng sự tồn tại của các hàm băm không thể đảo ngược chưa được chứng minh, do đó việc tính toán bất kỳ hình ảnh nghịch đảo nào của một giá trị băm nhất định về mặt lý thuyết là không thể. Thông thường việc tìm giá trị nghịch đảo chỉ là một nhiệm vụ khó khăn về mặt tính toán.

Cuộc tấn công sinh nhật cho phép bạn tìm xung đột cho hàm băm với độ dài của các giá trị N số bit trung bình trên mỗi lần tính toán hàm băm. Đó là lý do tại sao N - Hàm băm bit được coi là mật mã nếu độ phức tạp tính toán của việc tìm xung đột đối với nó gần bằng.

Đối với các hàm băm mật mã, điều quan trọng là với một thay đổi nhỏ nhất trong đối số, giá trị của hàm sẽ thay đổi rất nhiều (hiệu ứng tuyết lở). Đặc biệt, giá trị băm không được làm rò rỉ thông tin, ngay cả về các bit riêng lẻ của đối số. Yêu cầu này là chìa khóa cho sức mạnh mật mã của thuật toán băm băm mật khẩu của người dùng để lấy khóa.

Băm thường được sử dụng trong các thuật toán chữ ký số, trong đó không phải bản thân thông điệp được mã hóa mà là hàm băm của nó, giúp giảm thời gian tính toán và cũng tăng cường độ mật mã. Ngoài ra, trong hầu hết các trường hợp, thay vì mật khẩu, giá trị mã băm của chúng được lưu trữ.

Băm hình học

Băm hình học Băm hình học) là một phương pháp được sử dụng rộng rãi trong đồ họa máy tính và hình học tính toán để giải các bài toán trên mặt phẳng hoặc trong không gian ba chiều, chẳng hạn như tìm các cặp gần nhất trong một tập hợp điểm hoặc tìm các hình ảnh giống hệt nhau. Hàm băm trong phương pháp này thường lấy đầu vào là một không gian số liệu và chia nó, tạo ra một lưới các ô. Bảng trong trường hợp này là một mảng có hai hoặc nhiều chỉ mục và được gọi là tệp lưới. Tệp lưới). Băm hình học cũng được sử dụng trong viễn thông khi xử lý tín hiệu đa chiều.

Tăng tốc độ truy xuất dữ liệu

Bảng băm là cấu trúc dữ liệu cho phép bạn lưu trữ các cặp biểu mẫu (khóa, mã băm) và hỗ trợ các thao tác tìm kiếm, chèn và xóa các phần tử. Mục đích của bảng băm là để tăng tốc độ tìm kiếm, ví dụ, trong trường hợp các bản ghi trong trường văn bản trong cơ sở dữ liệu, mã băm của chúng có thể được tính toán và dữ liệu có thể được đặt trong một phần tương ứng với mã băm này. Sau đó, khi tìm kiếm dữ liệu, trước tiên bạn cần tính hàm băm của văn bản và bạn sẽ biết ngay mình cần tìm kiếm dữ liệu đó ở phần nào, tức là bạn sẽ không cần tìm kiếm trong toàn bộ cơ sở dữ liệu mà chỉ trong một trong các phần của nó (điều này giúp tăng tốc đáng kể việc tìm kiếm).

Một cách tương tự phổ biến của việc băm trong trường hợp này có thể là việc sắp xếp các từ trong từ điển theo thứ tự bảng chữ cái. Chữ cái đầu tiên của một từ là mã băm của nó và khi tìm kiếm, chúng ta không xem qua toàn bộ từ điển mà chỉ xem qua chữ cái mong muốn.

Và như thế.). Việc lựa chọn hàm băm này hay hàm băm khác được xác định bởi tính chất cụ thể của vấn đề đang được giải quyết. Các ví dụ đơn giản nhất về hàm băm là tổng kiểm tra hoặc CRC.

Nói chung, không có sự tương ứng một-một giữa dữ liệu nguồn và mã băm. Do đó, có nhiều bộ dữ liệu đưa ra cùng một mã băm - gọi là xung đột. Xác suất va chạm đóng vai trò quan trọng trong việc đánh giá “chất lượng” của hàm băm.

Tổng kiểm tra

Không phức tạp, cực kỳ nhanh chóng và dễ dàng thực hiện trong các thuật toán phần cứng được sử dụng để bảo vệ chống lại những biến dạng không chủ ý, bao gồm cả lỗi phần cứng.

Tốc độ tính toán nhanh hơn hàng chục, hàng trăm lần so với các hàm băm mật mã và việc triển khai phần cứng đơn giản hơn nhiều.

Cái giá phải trả cho tốc độ cao như vậy là thiếu sức mạnh mật mã - một cơ hội dễ dàng để điều chỉnh tin nhắn đến một lượng đã biết trước. Ngoài ra, tổng kiểm tra (điển hình: 32 bit) thường có chiều rộng thấp hơn so với băm mật mã (điển hình: 128, 160 và 256 bit), nghĩa là có thể xảy ra xung đột không chủ ý.

Trường hợp đơn giản nhất của thuật toán như vậy là chia thông điệp thành các từ 32 hoặc 16 bit và tính tổng chúng, ví dụ như được sử dụng trong TCP/IP.

Theo quy định, thuật toán như vậy là cần thiết để theo dõi các lỗi phần cứng điển hình, chẳng hạn như một số bit lỗi liên tiếp trong một độ dài nhất định. Cái gọi là họ thuật toán "mã dự phòng theo chu kỳ" đáp ứng các yêu cầu này. Ví dụ, chúng bao gồm CRC32, được sử dụng trong thiết bị ZIP.

Hàm băm mật mã

Trong số nhiều hàm băm hiện có, người ta thường phân biệt các hàm băm mạnh về mặt mật mã được sử dụng trong mật mã. Hàm băm chống mật mã trước hết phải có chống va chạm hai loại:

Sử dụng hàm băm

Hàm băm cũng được sử dụng trong một số cấu trúc dữ liệu - bảng băm và cây Descartes. Các yêu cầu đối với hàm băm trong trường hợp này là khác nhau:

  • khả năng trộn dữ liệu tốt
  • thuật toán tính toán nhanh

Đối chiếu dữ liệu

Nhìn chung, ứng dụng này có thể được mô tả là kiểm tra một số thông tin có giống với bản gốc mà không cần sử dụng bản gốc hay không. Để đối chiếu, giá trị băm của thông tin đang được xác minh sẽ được sử dụng. Có hai lĩnh vực chính của ứng dụng này:

Kiểm tra lỗi

Ví dụ: tổng kiểm tra có thể được truyền qua kênh liên lạc cùng với văn bản chính. Ở đầu nhận, tổng kiểm tra có thể được tính toán lại và so sánh với giá trị được truyền đi. Nếu phát hiện thấy sự khác biệt, điều này có nghĩa là đã xảy ra hiện tượng méo trong quá trình truyền và có thể yêu cầu lặp lại.

Một phương pháp băm tương tự trong gia đình trong trường hợp này có thể là kỹ thuật khi khi di chuyển, số lượng hành lý được lưu trong bộ nhớ. Sau đó, để kiểm tra, bạn không cần phải nhớ về từng chiếc vali mà chỉ cần đếm chúng thôi. Một trận đấu sẽ có nghĩa là không có chiếc vali nào bị thất lạc. Tức là số lượng hành lý chính là mã băm của nó.

Kiểm tra cụm mật khẩu

Trong hầu hết các trường hợp, cụm mật khẩu không được lưu trữ trên mục tiêu mà chỉ lưu trữ giá trị băm của chúng. Không nên lưu trữ cụm mật khẩu, vì trong trường hợp truy cập trái phép vào tệp có cụm từ, kẻ tấn công sẽ tìm ra tất cả các cụm mật khẩu và có thể sử dụng chúng ngay lập tức và khi lưu trữ giá trị băm, hắn sẽ chỉ học các giá trị băm ​​không thể đảo ngược thành dữ liệu gốc, trong trường hợp này là cụm mật khẩu. Trong quá trình xác thực, giá trị băm của cụm mật khẩu đã nhập sẽ được tính toán và so sánh với giá trị đã lưu.

Một ví dụ trong trường hợp này là GNU/Linux và Microsoft Windows XP. Họ chỉ lưu trữ giá trị băm của cụm mật khẩu từ tài khoản người dùng.

Tăng tốc độ truy xuất dữ liệu

Ví dụ: khi các trường văn bản được ghi vào cơ sở dữ liệu, mã băm của chúng có thể được tính toán và dữ liệu có thể được đặt trong phần tương ứng với mã băm đó. Sau đó, khi tìm kiếm dữ liệu, trước tiên bạn cần tính mã băm của văn bản và bạn sẽ biết ngay mình cần tìm kiếm dữ liệu đó ở phần nào, tức là bạn sẽ không cần tìm kiếm trong toàn bộ cơ sở dữ liệu mà chỉ cần tìm kiếm trong toàn bộ cơ sở dữ liệu. trong một phần của nó (điều này tăng tốc đáng kể việc tìm kiếm).

Một cách tương tự phổ biến của việc băm trong trường hợp này có thể là đặt các từ trong từ điển theo thứ tự bảng chữ cái. Chữ cái đầu tiên của một từ là mã băm của nó và khi tìm kiếm, chúng ta không xem qua toàn bộ từ điển mà chỉ xem qua chữ cái mong muốn.

Danh sách các thuật toán

  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • RIPEMD-160
  • RIPEMD-320
  • Snefru
  • Hổ (xoáy nước
  • Tổng kiểm tra Internet IP (RFC 1071)

Liên kết

Quỹ Wikimedia. 2010.

  • Heshan Moheyan
  • Mã Băm

Xem “Hàm băm” là gì trong các từ điển khác:

    Hàm băm- một hàm thực hiện băm một mảng dữ liệu bằng cách ánh xạ các giá trị từ một tập hợp giá trị (rất) lớn thành một tập hợp giá trị nhỏ hơn (đáng kể). Trong tiếng Anh: Hàm băm Xem thêm: Thuật toán mật mã Tài chính... ... Từ điển tài chính

    hàm băm mật mã- Hàm chuyển đổi văn bản có độ dài tùy ý thành văn bản có độ dài cố định (trong hầu hết các trường hợp nhỏ hơn). Ứng dụng chính của hàm băm là trong sơ đồ chữ ký số. Vì hàm băm được tính toán nhanh hơn chữ ký số nên thay vì... ...

    Hàm băm một chiều- hàm băm, là hàm không thể đảo ngược về mặt tính toán. Tiếng Anh: Hàm băm một chiều Xem thêm: Thuật toán mật mã Từ điển tài chính Finam... Từ điển tài chính

    TIGER - hàm băm- Hàm băm TIGER được phát triển bởi Ros Anderson và Eli Beham vào năm 1996. Hàm băm TIGER là hàm băm nhanh mới được thiết kế để hoạt động rất nhanh trên các máy tính hiện đại, đặc biệt là máy tính 64-bit. HỔ... ... Wikipedia

    hàm băm một chiều- Đối với hàm một chiều, về mặt tính toán không thể tìm được hai đối số khác nhau mà giá trị của nó giống nhau. [] Chủ đề bảo mật thông tin EN hàm băm một chiều ... Hướng dẫn dịch thuật kỹ thuật

    Tiger (hàm băm)- Hàm băm Tiger được phát triển bởi Ros Anderson và Eli Beham vào năm 1995. Tiger được thiết kế để chạy đặc biệt nhanh trên máy tính 64-bit. Tiger không có hạn chế về bằng sáng chế, có thể được sử dụng tự do với... ... Wikipedia

    hàm băm- hàm băm 1. Hàm điều khiển quá trình nhập dữ liệu vào bảng băm, xác định (địa chỉ của các ô trống. 2. Hàm biểu thị việc ánh xạ một đoạn của tin nhắn đang mở thành một chuỗi được mã hóa có độ dài cố định. TRONG ... ... Hướng dẫn dịch thuật kỹ thuật

    Bảng băm- Trong lập trình, bảng băm là cấu trúc dữ liệu thực hiện giao diện mảng kết hợp, cụ thể là nó cho phép lưu trữ các cặp (khóa, giá trị) và thực hiện ba thao tác: thao tác thêm cặp mới, thao tác tìm kiếm và xóa hoạt động... Wikipedia

    Mã Băm- Băm (đôi khi là băm, băm tiếng Anh) chuyển đổi một mảng dữ liệu đầu vào có độ dài tùy ý thành chuỗi bit đầu ra có độ dài cố định. Những phép biến đổi như vậy còn được gọi là hàm băm hoặc hàm tích chập, và kết quả của chúng... ... Wikipedia

    Xung đột hàm băm- Hàm băm H va chạm là hai khối dữ liệu đầu vào x và y khác nhau sao cho H(x) = H(y). Xung đột tồn tại đối với hầu hết các hàm băm, nhưng đối với các hàm băm “tốt” thì tần suất xuất hiện của chúng gần với mức tối thiểu theo lý thuyết. Trong... ... Wikipedia

Ngày 12 tháng 5 năm 2010 lúc 01:28

Thuật toán băm

  • Bảo mật thông tin

Theo tôi tin, nhiều người biết rằng từ năm 2007, Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) đã tổ chức một cuộc thi phát triển thuật toán băm để thay thế SHA-1 và họ thuật toán SHA-2. Tuy nhiên, vì lý do nào đó chủ đề này đã bị bỏ quên trên trang web. Đây thực sự là điều đã đưa tôi đến với bạn. Tôi mang đến cho bạn sự chú ý một loạt bài viết dành cho thuật toán băm. Trong loạt bài này, chúng ta sẽ cùng nhau nghiên cứu những kiến ​​​​thức cơ bản về hàm băm, xem xét các thuật toán băm nổi tiếng nhất, hòa mình vào bầu không khí của cuộc thi SHA-3 và xem xét các thuật toán tuyên bố giành chiến thắng và chúng tôi chắc chắn sẽ kiểm tra chúng. Ngoài ra, nếu có thể, các tiêu chuẩn băm của Nga sẽ được xem xét.

Về tôi

Sinh viên Khoa An toàn thông tin.

Giới thiệu về băm

Ngày nay, hầu như không có ứng dụng mật mã nào hoàn thiện nếu không sử dụng hàm băm.
Hàm băm là các hàm được thiết kế để “nén” một thông báo hoặc tập hợp dữ liệu tùy ý, thường được viết bằng bảng chữ cái nhị phân, thành một số mẫu bit có độ dài cố định gọi là tích chập. Hàm băm có nhiều ứng dụng khi tiến hành các thí nghiệm thống kê, kiểm tra các thiết bị logic và xây dựng các thuật toán để tìm kiếm nhanh và kiểm tra tính toàn vẹn của các bản ghi trong cơ sở dữ liệu. Yêu cầu chính đối với hàm băm là phân bố đồng đều các giá trị của chúng khi các giá trị đối số được chọn ngẫu nhiên.
Hàm băm mật mã là bất kỳ hàm băm nào ổn định về mặt mật mã, nghĩa là nó đáp ứng một số yêu cầu cụ thể cho các ứng dụng mật mã. Trong mật mã, hàm băm được sử dụng để giải quyết các vấn đề sau:
- xây dựng hệ thống giám sát tính toàn vẹn dữ liệu trong quá trình truyền hoặc lưu trữ chúng,
- xác thực nguồn dữ liệu.

Bất kỳ hàm nào cũng được gọi là hàm băm h:X -> Y, dễ tính toán và sao cho đối với bất kỳ tin nhắn nào M nghĩa h(M) = H (tích chập) có độ dài bit cố định. X- tập hợp tất cả các tin nhắn, Y- một tập hợp các vectơ nhị phân có độ dài cố định.

Theo quy định, hàm băm được xây dựng trên cơ sở cái gọi là hàm nén một bước y = f(x 1 , x 2) hai biến, trong đó x 1, x 2y- vectơ nhị phân có chiều dài tôi, NN tương ứng, và N là độ dài của tích chập và tôi- độ dài khối tin nhắn.
Để có được giá trị h(M) tin nhắn đầu tiên được chia thành các khối có độ dài tôi(đồng thời, nếu độ dài tin nhắn không phải là bội số tôi sau đó khối cuối cùng được bổ sung theo một cách đặc biệt nào đó cho đến khi nó hoàn thành), và sau đó đến các khối kết quả M 1, M 2,.., M Náp dụng quy trình tuần tự sau đây để tính tích chập:

H o = v,
H i = f(M i ,H i-1), i = 1,.., N,
h(M) = HN

Đây v- một số hằng số, thường được gọi là vectơ khởi tạo. Cô ấy ra ngoài
vì nhiều lý do khác nhau và có thể là hằng số bí mật hoặc một tập hợp dữ liệu ngẫu nhiên (ví dụ: mẫu ngày và giờ).
Với cách tiếp cận này, các thuộc tính của hàm băm hoàn toàn được xác định bởi các thuộc tính của hàm nén một bước.

Có hai loại hàm băm mật mã quan trọng - có khóa và không có khóa. Các hàm băm chính được gọi là mã xác thực tin nhắn. Chúng giúp đảm bảo cả tính chính xác của nguồn dữ liệu và tính toàn vẹn của dữ liệu trong các hệ thống có người dùng tin cậy lẫn nhau mà không cần có phương tiện bổ sung.
Hàm băm không cần khóa được gọi là mã phát hiện lỗi. Chúng giúp đảm bảo tính toàn vẹn của dữ liệu bằng các phương tiện bổ sung (ví dụ: mã hóa). Các hàm băm này có thể được sử dụng trong các hệ thống có cả người dùng tin cậy và không tin tưởng.

Về đặc tính và yêu cầu thống kê

Như tôi đã nói, yêu cầu chính đối với hàm băm là sự phân bố đồng đều các giá trị của chúng khi các giá trị đối số được chọn ngẫu nhiên. Đối với các hàm băm mật mã, điều quan trọng nữa là với một thay đổi nhỏ nhất trong đối số, giá trị của hàm sẽ thay đổi rất nhiều. Điều này được gọi là hiệu ứng tuyết lở.

Các hàm băm chính có các yêu cầu sau:
- không thể chế tạo được,
- không thể sửa đổi.

Yêu cầu đầu tiên có nghĩa là rất khó tìm được thông báo có giá trị thu gọn chính xác. Thứ hai là độ phức tạp cao của việc lựa chọn, đối với một thông báo nhất định có giá trị tích chập đã biết, một thông báo khác có giá trị tích chập chính xác.

Các yêu cầu đối với các chức năng không cần chìa khóa là:
- tính đơn hướng,
- khả năng chống va chạm,
- khả năng chống lại việc tìm kiếm tiền ảnh thứ hai.

Tính đơn hướng đề cập đến độ khó cao trong việc tìm kiếm thông báo dựa trên giá trị tích chập nhất định. Cần lưu ý rằng hiện tại không có hàm băm nào được sử dụng với tính chất một chiều đã được chứng minh.
Khả năng chống va chạm đề cập đến khó khăn trong việc tìm kiếm một cặp thông báo có cùng giá trị tích chập. Thông thường, việc các nhà giải mã tìm ra cách xây dựng các xung đột là tín hiệu đầu tiên cho thấy thuật toán đang trở nên lỗi thời và nó cần được thay thế nhanh chóng.
Khả năng chống lại việc tìm kiếm tiền ảnh thứ hai đề cập đến khó khăn trong việc tìm kiếm thông báo thứ hai có cùng giá trị tích chập cho một thông báo nhất định có giá trị tích chập đã biết.

Đây là phần lý thuyết, sẽ hữu ích cho chúng ta trong tương lai...

Về các thuật toán băm phổ biến

Thuật toán CRC16/32- tổng kiểm tra (không phải chuyển đổi mật mã).

Thuật toán MD2/4/5/6. Chúng là sự sáng tạo của Ron Rivest, một trong những tác giả của thuật toán RSA.
Thuật toán MD5 đã từng rất phổ biến, nhưng những điều kiện tiên quyết đầu tiên để hack đã xuất hiện vào cuối những năm 1990 và hiện nay mức độ phổ biến của nó đang giảm nhanh chóng.
Thuật toán MD6 là một thuật toán rất thú vị xét theo quan điểm thiết kế. Nó đã được đề cử cho cuộc thi SHA-3, nhưng thật không may, các tác giả đã không có thời gian để đưa nó lên tiêu chuẩn và thuật toán này không có trong danh sách các ứng cử viên lọt vào vòng hai.

Thuật toán thước kẻ SHA Các thuật toán được sử dụng rộng rãi hiện nay. Có sự chuyển đổi tích cực từ tiêu chuẩn phiên bản SHA-1 sang SHA-2. SHA-2 là tên gọi chung của các thuật toán SHA224, SHA256, SHA384 và SHA512. SHA224 và SHA384 về cơ bản tương tự như SHA256 và SHA512, chỉ sau khi tính toán tích chập, một số thông tin trong đó sẽ bị loại bỏ. Chúng chỉ nên được sử dụng để đảm bảo khả năng tương thích với thiết bị của các mẫu cũ hơn.

Tiêu chuẩn Nga - ĐIỂM 34.11-94.

Trong bài viết tiếp theo

Đánh giá các thuật toán MD (MD4, MD5, MD6).

Văn học

A. P. Alferov, Nguyên tắc cơ bản của mật mã.

Bruce Schneier, Mật mã ứng dụng.

Và như thế.). Việc lựa chọn hàm băm này hay hàm băm khác được xác định bởi tính chất cụ thể của vấn đề đang được giải quyết. Các ví dụ đơn giản nhất về hàm băm là tổng kiểm tra hoặc CRC.

Nói chung, không có sự tương ứng một-một giữa dữ liệu nguồn và mã băm. Do đó, có nhiều bộ dữ liệu đưa ra cùng một mã băm - gọi là xung đột. Xác suất va chạm đóng vai trò quan trọng trong việc đánh giá “chất lượng” của hàm băm.

Tổng kiểm tra

Không phức tạp, cực kỳ nhanh chóng và dễ dàng thực hiện trong các thuật toán phần cứng được sử dụng để bảo vệ chống lại những biến dạng không chủ ý, bao gồm cả lỗi phần cứng.

Tốc độ tính toán nhanh hơn hàng chục, hàng trăm lần so với các hàm băm mật mã và việc triển khai phần cứng đơn giản hơn nhiều.

Cái giá phải trả cho tốc độ cao như vậy là thiếu sức mạnh mật mã - một cơ hội dễ dàng để điều chỉnh tin nhắn đến một lượng đã biết trước. Ngoài ra, tổng kiểm tra (điển hình: 32 bit) thường có chiều rộng thấp hơn so với băm mật mã (điển hình: 128, 160 và 256 bit), nghĩa là có thể xảy ra xung đột không chủ ý.

Trường hợp đơn giản nhất của thuật toán như vậy là chia thông điệp thành các từ 32 hoặc 16 bit và tính tổng chúng, ví dụ như được sử dụng trong TCP/IP.

Theo quy định, thuật toán như vậy là cần thiết để theo dõi các lỗi phần cứng điển hình, chẳng hạn như một số bit lỗi liên tiếp trong một độ dài nhất định. Cái gọi là họ thuật toán "mã dự phòng theo chu kỳ" đáp ứng các yêu cầu này. Ví dụ, chúng bao gồm CRC32, được sử dụng trong thiết bị ZIP.

Hàm băm mật mã

Trong số nhiều hàm băm hiện có, người ta thường phân biệt các hàm băm mạnh về mặt mật mã được sử dụng trong mật mã. Hàm băm chống mật mã trước hết phải có chống va chạm hai loại:

Sử dụng hàm băm

Hàm băm cũng được sử dụng trong một số cấu trúc dữ liệu - bảng băm và cây Descartes. Các yêu cầu đối với hàm băm trong trường hợp này là khác nhau:

  • khả năng trộn dữ liệu tốt
  • thuật toán tính toán nhanh

Đối chiếu dữ liệu

Nhìn chung, ứng dụng này có thể được mô tả là kiểm tra một số thông tin có giống với bản gốc mà không cần sử dụng bản gốc hay không. Để đối chiếu, giá trị băm của thông tin đang được xác minh sẽ được sử dụng. Có hai lĩnh vực chính của ứng dụng này:

Kiểm tra lỗi

Ví dụ: tổng kiểm tra có thể được truyền qua kênh liên lạc cùng với văn bản chính. Ở đầu nhận, tổng kiểm tra có thể được tính toán lại và so sánh với giá trị được truyền đi. Nếu phát hiện thấy sự khác biệt, điều này có nghĩa là đã xảy ra hiện tượng méo trong quá trình truyền và có thể yêu cầu lặp lại.

Một phương pháp băm tương tự trong gia đình trong trường hợp này có thể là kỹ thuật khi khi di chuyển, số lượng hành lý được lưu trong bộ nhớ. Sau đó, để kiểm tra, bạn không cần phải nhớ về từng chiếc vali mà chỉ cần đếm chúng thôi. Một trận đấu sẽ có nghĩa là không có chiếc vali nào bị thất lạc. Tức là số lượng hành lý chính là mã băm của nó.

Kiểm tra cụm mật khẩu

Trong hầu hết các trường hợp, cụm mật khẩu không được lưu trữ trên mục tiêu mà chỉ lưu trữ giá trị băm của chúng. Không nên lưu trữ cụm mật khẩu, vì trong trường hợp truy cập trái phép vào tệp có cụm từ, kẻ tấn công sẽ tìm ra tất cả các cụm mật khẩu và có thể sử dụng chúng ngay lập tức và khi lưu trữ giá trị băm, hắn sẽ chỉ học các giá trị băm ​​không thể đảo ngược thành dữ liệu gốc, trong trường hợp này là cụm mật khẩu. Trong quá trình xác thực, giá trị băm của cụm mật khẩu đã nhập sẽ được tính toán và so sánh với giá trị đã lưu.

Một ví dụ trong trường hợp này là GNU/Linux và Microsoft Windows XP. Họ chỉ lưu trữ giá trị băm của cụm mật khẩu từ tài khoản người dùng.

Tăng tốc độ truy xuất dữ liệu

Ví dụ: khi các trường văn bản được ghi vào cơ sở dữ liệu, mã băm của chúng có thể được tính toán và dữ liệu có thể được đặt trong phần tương ứng với mã băm đó. Sau đó, khi tìm kiếm dữ liệu, trước tiên bạn cần tính mã băm của văn bản và bạn sẽ biết ngay mình cần tìm kiếm dữ liệu đó ở phần nào, tức là bạn sẽ không cần tìm kiếm trong toàn bộ cơ sở dữ liệu mà chỉ cần tìm kiếm trong toàn bộ cơ sở dữ liệu. trong một phần của nó (điều này tăng tốc đáng kể việc tìm kiếm).

Một cách tương tự phổ biến của việc băm trong trường hợp này có thể là đặt các từ trong từ điển theo thứ tự bảng chữ cái. Chữ cái đầu tiên của một từ là mã băm của nó và khi tìm kiếm, chúng ta không xem qua toàn bộ từ điển mà chỉ xem qua chữ cái mong muốn.

Danh sách các thuật toán

  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • RIPEMD-160
  • RIPEMD-320
  • Snefru
  • Hổ (xoáy nước
  • Tổng kiểm tra Internet IP (RFC 1071)

Liên kết

Quỹ Wikimedia. 2010.

Xem "Mã băm" là gì trong các từ điển khác:

    Mã Băm- kết quả của sự kết hợp số học với tất cả các byte của mã chương trình hoặc tập dữ liệu. Kết quả của thuật toán băm chỉ bao gồm một số byte và thuật toán được thiết kế theo cách mà bất kỳ sửa đổi nào về mã chương trình hoặc dữ liệu có... ... Thuật ngữ chính thức

    Mã Băm- kết quả của sự kết hợp số học với tất cả các byte của mã chương trình hoặc tập dữ liệu. Kết quả của thuật toán băm chỉ bao gồm một số byte và thuật toán được thiết kế theo cách mà bất kỳ sửa đổi nào về mã chương trình hoặc dữ liệu có... ...

    mã xác thực tin nhắn sử dụng hàm băm- (ITU T N.235.3, ITU T N.235.1). Chuyên đề: viễn thông, khái niệm cơ bản EN mã xác thực thông điệp bămHMAC... Hướng dẫn dịch thuật kỹ thuật

    Trong lập trình, bảng băm là cấu trúc dữ liệu thực hiện giao diện mảng kết hợp, cụ thể là nó cho phép bạn lưu trữ các cặp (khóa, giá trị) và thực hiện ba thao tác: thao tác thêm cặp mới, thao tác tìm kiếm và thao tác xóa ... Wikipedia

    MAC (mã xác thực tin nhắn) là một phương tiện cung cấp khả năng bảo vệ bắt chước trong các giao thức xác thực tin nhắn với những người tham gia tin tưởng lẫn nhau, một bộ ký tự đặc biệt được thêm vào ... ... Wikipedia

    Băm (đôi khi là băm) là sự chuyển đổi một mảng dữ liệu đầu vào có độ dài tùy ý thành chuỗi bit đầu ra có độ dài cố định. Những phép biến đổi như vậy còn được gọi là hàm băm hoặc hàm tích chập, và kết quả của chúng... ... Wikipedia

    Bài viết này là về mã. Để biết phương pháp động não, hãy xem thẻ CRC. Kiểm tra dự phòng theo chu kỳ (CRC) là một thuật toán tính tổng kiểm tra được thiết kế để kiểm tra tính toàn vẹn của... ... Wikipedia

    - (viết tắt của mã xác thực tin nhắn dựa trên hàm băm, mã băm xác thực tin nhắn). Có cách để xác minh tính toàn vẹn của thông tin được truyền hoặc lưu trữ trong môi trường không đáng tin cậy là một phần không thể thiếu và cần thiết của thế giới... ... Wikipedia

    MI 2891-2004: Khuyến nghị. GSOEI. Yêu cầu chung đối với phần mềm của dụng cụ đo- Thuật ngữ MI 2891 2004: Khuyến nghị. GSOEI. Yêu cầu chung đối với phần mềm của thiết bị đo: Thông tin dữ liệu đo được thể hiện dưới dạng phù hợp cho việc truyền tải, giải thích hoặc xử lý. Định nghĩa của thuật ngữ từ.... Sách tham khảo từ điển thuật ngữ quy chuẩn và tài liệu kỹ thuật