Các Hash funtion đang được sử dụng

Các Hash funtion đang được sử dụng

Rate this post

SHA-2

Nó thuộc họ hàm băm SHA, nhưng bản thân nó là một họ hàm băm chức năng. Nó có nhiều biến thể SHA như SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 và SHA-512/256. SHA-256 và SHA-512 là các hàm băm nguyên thủy và các biến thể khác có nguồn gốc từ chúng.

Họ SHA-2 của hàm băm được sử dụng rộng rãi trong các ứng dụng như SSL, SSH, TSL, PGP, MIME, v.v. SHA-224 là phiên bản rút gọn của SHA-256 với tên viết tắt khác giá trị hoặc véc tơ khởi tạo (IV). 

Các bài viết liên quan:

Lưu ý rằng các biến thể SHA với các phép cắt ngắn được áp dụng có thể tạo ra các đầu ra băm có cùng độ dài bit, do đó các vectơ khởi tạo khác nhau được áp dụng trong các biến thể SHA khác nhau để được có thể phân biệt chúng đúng cách. Bây giờ quay trở lại SHA-224 tính toán, nó là một quá trình hai bước.

Đầu tiên, giá trị SHA-256 được tính với IV khác so với IV mặc định được sử dụng trong SHA-256. Thứ hai, giá trị băm 256-bit kết quả được cắt ngắn thành 224-bit; thường là 224 bit từ bên trái được giữ lại, nhưng tất cả sự lựa chọn là của bạn.

SHA-384 là một phiên bản rút gọn của SHA-512, giống như SHA-224 là một phiên bản rút gọn của SHA-256. Tương tự, cả 512/224 và SHA-512/256 là các phiên bản rút gọn của SHA-512. Bạn có thắc mắc tại sao lại có khái niệm này không của “cắt ngắn” tồn tại? Lưu ý rằng việc cắt ngắn không chỉ giới hạn ở những chúng tôi vừa đề cập và cũng có thể có nhiều biến thể khác. Các lý do chính cho việc cắt ngắn có thể như sau:

  • Một số ứng dụng yêu cầu thông báo tin nhắn với độ dài nhất định khác với độ dài mặc định.
  • Bất kể biến thể SHA-2 mà chúng tôi đang sử dụng, chúng tôi có thể chọn mức cắt bớt tùy thuộc vào mức độ bảo mật nào tài sản mà chúng tôi muốn duy trì. Ví dụ: Đang xem xét tình trạng sức mạnh tính toán ngày nay, khi va chạm sức đề kháng là cần thiết, chúng ta nên giữ ít nhất 160 bit và khi chỉ cần kháng trước hình ảnh, chúng ta nên giữ ít nhất 80 bit. Tài sản bảo đảm chẳng hạn như khả năng chống va chạm giảm khi cắt bớt, nhưng nó nên được chọn sao cho nó sẽ về mặt tính toán không khả thi để tìm thấy một va chạm.
  • Việc cắt ngắn cũng giúp duy trì sự lạc hậu khả năng tương thích với các ứng dụng cũ hơn. Ví dụ: SHA- 224 cung cấp bảo mật 112 bit có thể khớp với khóa độ dài của triple-DES (3DES). Nói về hiệu quả, SHA-256 dựa trên một từ 32 bit và SHA- 512 dựa trên một từ 64 bit. Vì vậy, trên kiến ​​trúc 64-bit, SHA-512 và tất cả
  • Các biến thể bị cắt ngắn của nó có thể được tính toán nhanh hơn với mức độ bảo mật tốt hơn so với SHA-1 hoặc các biến thể SHA-256 khác.

Bảng  2-3 là một biểu diễn dạng bảng được lấy từ bài báo NIST

Các Hash funtion đang được sử dụng

Bảng 2-3. Hàm băm SHA-1 & SHA-2 trong một Nutshell

Theo nguyên tắc chung, không nên cắt ngắn khi không cần thiết.

Một số hàm băm nhất định cho phép cắt ngắn và một số thì không, và nó cũng phụ thuộc vào cách bạn đang sử dụng nó và trong bối cảnh nào

SHA-256 và SHA-512

Như đã đề cập, SHA-256 thuộc họ băm SHA-2 và đây là hàm được sử dụng trong Bitcoin! Như tên cho thấy, nó tạo ra một giá trị băm 256-bit, do đó có tên. Vì vậy, nó có thể cung cấp 2 128 bit an ninh theo nghịch lý sinh nhật.

Nhớ lại rằng các hàm băm nhận đầu vào có độ dài tùy ý và tạo ra đầu ra có kích thước cố định. Đầu vào độ dài tùy ý không được cung cấp cho chức năng nén và được chia thành các khối có chiều dài cố định trước khi nó được đưa vào đến chức năng nén. 

Điều này có nghĩa là một phương pháp xây dựng là cần thiết có thể lặp lại thông qua chức năng nén bằng cách xây dựng các khối đầu vào có kích thước cố định từ dữ liệu đầu vào có độ dài tùy ý và tạo ra đầu ra có độ dài cố định. Có nhiều loại phương pháp thi công khác nhau chẳng hạn như xây dựng Merkle-Damgård, xây dựng cây và bọt biển sự thi công. Nó được chứng minh rằng nếu chức năng nén cơ bản làchống va chạm, sau đó là hàm băm tổng thể với bất kỳ cấu trúc nào phương pháp cũng phải có khả năng chống va chạm.

Phương pháp xây dựng mà SHA-256 sử dụng là Merkle-Damgård xây dựng, vì vậy hãy để chúng tôi xem nó hoạt động như thế nào trong Hình 2-9

Các Hash funtion đang được sử dụng

Hình 2-9. Cấu trúc Merkle-Damgård cho SHA-256

Tham khảo sơ đồ, các bước sau (được trình bày ở cấp độ cao) được thực hiện theo thứ tự được chỉ định để tính giá trị băm cuối cùng:

  • Như bạn có thể thấy trong sơ đồ, thông báo đầu tiên là được chia thành các khối 512-bit. Khi tin nhắn không bội số chính xác của 512 bit (thường là như vậy), khối cuối cùng bị thiếu bit, do đó nó được đệm vào làm cho nó 512 bit.
  • Các khối 512-bit được chia thành 16 khối Các từ 32 bit (16 × 32 = 512).
  • Mỗi khối trải qua 64 vòng của chức năng vòng trong đó mỗi từ 32 bit đi qua một chuỗi các hoạt động. Các hàm tròn là sự kết hợp của một số hàm phổ biến như XOR, AND, OR, NOT, Chuyển sang trái / phải khôn ngoan, v.v. và chúng tôi sẽ không tham gia những chi tiết trong cuốn sách này.

Tương tự như SHA-256, các bước và hoạt động khá giống nhau trong SHA-512, như SHA-512 cũng sử dụng cấu trúc Merkle-Damgård. Sự khác biệt là có 80 vòng chức năng vòng trong SHA-512 và độ dài từ là 64 bit. Kích thước khối trong SHA-512 là 1024 bit, được chia tiếp thành 16 khối từ 64 bit Thông báo đầu ra thông báo có độ dài 512 bit, tức là tám khối từ 64 bit. 

Trong khi SHA- 512 đã đạt được động lực và bắt đầu được sử dụng trong nhiều ứng dụng, một số người đã chuyển sang sử dụng thuật toán SHA-3 để sẵn sàng cho tương lai. SHA-3 là chỉ là  một cách tiếp cận khác để băm và không phải là sự thay thế thực sự cho SHA-256 hoặc SHA-512, mặc dù nó cho phép điều chỉnh. Chúng ta sẽ tìm hiểu thêm một số chi tiết về SHA-3 trong các phần sau.

RIPEMD

Băm thông báo đánh giá tính toàn vẹn nguyên thủy của RACE (RIPEMD) hàm là một biến thể của hàm băm MD4 với thiết kế gần như giống nhau những cân nhắc. Vì nó được sử dụng trong Bitcoin, chúng ta sẽ có một cuộc thảo luận ngắn trên đó.

RIPEMD ban đầu là 128 bit, sau đó RIPEMD-160 là đã phát triển. Có các phiên bản 128-, 256- và 320-bit của thuật toán này, được gọi là RIPEMD-128, RIPEMD-256 và RIPEMD-320 tương ứng nhưng chúng tôi sẽ giới hạn cuộc thảo luận của chúng tôi ở mức phổ biến nhất và được sử dụng rộng rãi RIPEMD-160.

RIPEMD-160 là một hàm băm mật mã có khả năng nén chức năng dựa trên cấu trúc Merkle – Damgård. Đầu vào là được chia thành các khối 512 bit và đệm được áp dụng khi các bit đầu vào không phải bội số của 512. Đầu ra giá trị băm 160 bit thường được biểu diễn dưới dạng số thập lục phân gồm 40 chữ số.

Chức năng nén được tạo thành từ 80 giai đoạn, được tạo thành từ hai các đường thẳng song song gồm năm vòng, mỗi vòng 16 bước (5 × 16 = 80). Nén hàm hoạt động trên mười sáu từ 32 bit (khối 512 bit). Lưu ý rằng Bitcoin sử dụng cả hai hàm băm sha-256 và nineMD-160 cùng nhau để tạo địa chỉ. nineMD-160 được sử dụng để rút ngắn hơn nữa giá trị băm đầu ra của sha- 256 đến 160 bit.

SHA-3

Vào năm 2015, thuật toán Keccak (phát âm là “ket-chak”) là được NIST tiêu chuẩn hóa với tên gọi SHA-3. Lưu ý rằng mục đích không phải thực sự để thay thế tiêu chuẩn SHA-2, nhưng để bổ sung và cùng tồn tại với nó, mặc dù người ta có thể chọn SHA-3 thay vì SHA-2 trong một số tình huống Vì cả SHA-1 và SHA-2 đều dựa trên Merkle-Damgård xây dựng, một cách tiếp cận khác đối với hàm băm là mong muốn. Vì thế, không sử dụng xây dựng Merkle-Damgård là một trong những tiêu chí được đặt ra bởi NIST. Điều này là do thiết kế mới không bị hạn chế của xây dựng Merkle-Damgård như đa cộng tuyến. Keccak, trở thành SHA-3, đã sử dụng một phương pháp xây dựng khác được gọi là xây dựng bằng bọt biển.

Để làm cho nó tương thích ngược, yêu cầu SHA- 3 sẽ có thể tạo ra các đầu ra có độ dài thay đổi như 224, 256, 384, và 512 bit và cả các đầu ra có độ dài tùy ý khác. Bằng cách này SHA-3 đã trở thành một họ các hàm băm mật mã như SHA3-224, SHA3-256, SHA3-384, SHA3 -512 và hai chức năng đầu ra có thể mở rộng

(XOFs), được gọi là SHAKE128 và SHAKE256. Ngoài ra, SHA-3 phải có tham số có thể điều chỉnh (dung lượng) để cho phép cân bằng giữa bảo mật và màn biểu diễn. Vì SHAKE128 và SHAKE256 là XOF, đầu ra của chúng có thể được mở rộng đến bất kỳ độ dài mong muốn nào, do đó có tên. Sơ đồ sau (Hình  2-10 ) cho thấy cách SHA-3 (Keccak thuật toán) được thiết kế ở mức cao.

Các Hash funtion đang được sử dụng

Hình 2-10. Cấu tạo bọt biển cho SHA-3

Một loạt các bước diễn ra đối với SHA-3 như sau:

Như bạn có thể thấy trong Hình 2-10, tin nhắn là đầu tiên được chia thành các khối ( x i ) có kích thước r bit. Nếu dữ liệu đầu vào là không phải là bội số của r bit, khi đó cần có phần đệm. nếu bạn đang tự hỏi về điều này r , đừng lo lắng, chúng tôi sẽ đến nó trong một thời gian ngắn. Bây giờ, chúng ta hãy tập trung vào cách phần đệm này xảy ra. Đối với một khối tin nhắn x i không phải là một bội số của r và có một số thông báo m trong đó, phần đệm xảy ra như được hiển thị như sau:

x i = m || P 1 {0} * 1

“P” là một chuỗi bit xác định trước, theo sau là 1 {0} * 1, có nghĩa là một số 1 đứng đầu và cuối cùng và một số số không (cũng có thể không có bit 0) có thể làm cho x i a bội số của r . Bàn 2-4 cho thấy các giá trị khác nhau của P

Các Hash funtion đang được sử dụng

Bảng 2-4. Đệm trong các biến thể SHA-3

• Như bạn có thể thấy trong Hình 2-10, rộng rãi có hai giai đoạn xây dựng bọt biển SHA-3: giai đoạn đầu tiên là giai đoạn “Hấp thụ” cho đầu vào và giai đoạn thứ hai là giai đoạn “Ép” cho đầu ra. Trong sự hấp thụ giai đoạn, các khối thông báo ( x i ) trải qua nhiều hoạt động của thuật toán và trong Bóp pha, đầu ra của độ dài có thể định cấu hình được tính toán. Lưu ý rằng đối với cả hai giai đoạn này, chức năng giống nhau được gọi là “Kecaak-f” được sử dụng.

• Để tính toán SHA3-224, SHA3-256, SHA3- 384, SHA3 -512, thay thế hiệu quả cho SHA-2, chỉ các bit đầu tiên của khối đầu ra đầu tiên y 0 làđược sử dụng với mức độ cắt bớt bắt buộc.

• SHA-3 được thiết kế để có thể điều chỉnh được để bảo mật kích thước cường độ, đầu vào và đầu ra với sự trợ giúp của điều chỉnh thông số.

• Như bạn có thể thấy trong biểu đồ, “b” đại diện cho chiều rộng của trạng thái và yêu cầu rằng r + c = b. Ngoài ra, “b” phụ thuộc trên số mũ “ℓ” sao cho b = 25 × 2 

  • Vì “ℓ” có thể nhận các giá trị từ 0 đến 6 nên “b” có thể có chiều rộng {25, 50, 100, 200, 400, 800 và 1600}. Nó là không nên sử dụng hai giá trị nhỏ nhất của “b” trong thực hành vì họ chỉ ở đó để phân tích và thực hiện phân tích mật mã trên thuật toán.

• Trong phương trình r + c = b, “r” mà chúng ta thấy là chúng tôi đã sử dụng để xử lý trước tin nhắn và chia thànhkhối có độ dài “r.” Đây được gọi là “tốc độ bit”. Ngoài ra, tham số “c” được gọi là công suất vừa phải thỏa mãnđiều kiện r + c = b ∈ {25, 50, 100, 200, 400, 800, 1600} và được tính toán. Cách này “r” và “c” được sử dụng làm điều chỉnh các tham số để đánh đổi giữa bảo mật và hiệu suất.

• Đối với SHA-3, giá trị số mũ ℓ được cố định là “6”, vì vậy giá trị của b là 1600 bit. Đối với điều này cho trước b = 1600, hai cho phép các giá trị tốc độ bit: 

r = 1344 và r = 1088. Điều này dẫn đến hai giá trị khác biệt của “c.” Vì vậy, đối với 

r = 1344, c = 256 và đối với r = 1088, c = 512

• Bây giờ chúng ta hãy xem xét động cơ cốt lõi của thuật toán này, tức là Keccak- f, còn được gọi là “Keccak- f Hoán vị.” Có “n” vòng trong mỗi Keccak- f , trong đó “n” là được tính là: n = 12 + 2ℓ. Vì giá trị của ℓ là 6 nên SHA-3, sẽ có 24 vòng trong mỗi Keccak-f. Mỗi vòng lấy đầu vào bit “b” (r + c) và tạo ra cùng số bit “b” như đầu ra.

• Trong mỗi vòng, đầu vào “b” được gọi là một trạng thái. Trạng thái này mảng “b” có thể được biểu diễn dưới dạng ba chiều (3-D) mảng b = (5 x 5 × w), trong đó kích thước từ w = 2  . Vì thế, w = 64 bit, nghĩa là 5 × 5 = 25 từ 64 bit mỗi. Nhớ lại rằng ℓ = 6 đối với SHA-3, do đó b = 5 × 5 x 64 = 1600. Mảng 3-D có thể được hiển thị như trong Hình  2-11.

Các Hash funtion đang được sử dụng

Hình 2-11. Biểu diễn mảng trạng thái SHA-3

Mỗi vòng bao gồm một chuỗi năm bước và

mảng trạng thái được thao tác trong mỗi bước đó như thể hiện trong Hình  2-12.

Các Hash funtion đang được sử dụng

Hình 2-12. Năm bước trong mỗi vòng SHA-3

• Không đi sâu vào từng chi tiết trong năm

các bước, hãy để chúng tôi nhanh chóng tìm hiểu những gì họ làm ở cấp độ cao:

• Bước Theta (θ): Nó thực hiện thao tác XOR để cung cấp sự khuếch tán nhỏ.

• Bước Rho (ρ): Nó thực hiện quay theo chiều bit của từng 25 từ.

• Bước Pi (π): Nó thực hiện hoán vị của mỗi 25 từ.

• Bước Chi (χ): Trong bước này, các bit được thay thế bằng kết hợp chúng với hai bit tiếp theo của chúng trong hàng của họ.

• Bước Iota (ι): Nó XOR một hằng số làm tròn thành một từ của trạng thái để phá vỡ đối xứng.• Vòng cuối cùng của Keccak- f tạo ra đầu ra y 0 , là đủ cho chế độ thay thế SHA-2, tức là, đầu ra với 224, 256, 384 và 512 bit. Lưu ý rằng các bit có ý nghĩa nhỏ nhất của y 0 được sử dụng cho độ dài mong muốn đầu ra. Trong trường hợp đầu ra có độ dài thay đổi, cùng với y 0 , các bit đầu ra khác của y 1 , y 2 , y 3 … cũng có thể được sử dụng. Khi nói đến việc triển khai SHA-3 trong đời thực, người ta thấy rằng hiệu suất của nó tốt trong phần mềm (mặc dù không tốt bằng SHA-2) và xuất sắc về phần cứng (tốt hơn SHA-2).

Leave a Reply