Tóm Tắt
Hash là gì?
Về cơ bản hashing là 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. Hashing được thực hiện thông qua hàm băm (hash function).
Bạn đang đọc: Hash Function Là Gì – Định Nghĩa Cryptographic
Một cách tổng quát hàm băm là bất kể hàm nào hoàn toàn có thể được sử dụng để ánh xạ tài liệu có size tùy ý thành những giá trị kích cỡ cố định và thắt chặt. 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 thuần là “ hash ” .Ví dụ, khi bạn tải về một video trên YouTube có dung tích 50 MB và triển khai hashing trên nó bằng thuật toán băm SHA-256, thì đầu ra bạn thu được sẽ là một giá trị băm có độ dài 256 bit. Tương tự, nếu bạn lấy một tin nhắn văn bản có dung tích 5 KB, để hashing bằng SHA-256 thì giá trị băm đầu ra bạn thu được vẫn sẽ là 256 bit .Như bạn hoàn toàn có thể thấy, trong trường hợp SHA-256, mặc dầu nguồn vào của bạn lớn hay nhỏ như thế nào đi chăng nữa, thì đầu ra bạn nhận được sẽ luôn có độ dài 256 bit cố định và thắt chặt. Điều này trở nên quan trọng khi bạn giải quyết và xử lý một lượng lớn tài liệu và thanh toán giao dịch. Khi đó, thay vì bạn phải giải quyết và xử lý hàng loạt lượng tài liệu nguồn vào ( hoàn toàn có thể có kích cỡ rất lớn ), bạn chỉ cần giải quyết và xử lý và theo dõi một lượng tài liệu rất nhỏ là những giá trị băm .Trong blockchain, những thanh toán giao dịch có độ dài khác nhau sẽ được băm trải qua một thuật toán băm nhất định và tổng thể đều cho đầu ra có độ dài cố định và thắt chặt bất kể độ dài của thanh toán giao dịch nguồn vào là bao nhiêu. Chẳng hạn, Bitcoin sử dụng thuật toán SHA-256 để băm những thanh toán giao dịch cho hiệu quả đầu ra có độ dài cố định và thắt chặt là 256 bit ( 32 byte ) mặc dầu thanh toán giao dịch chỉ là một từ hoặc thanh toán giao dịch phức tạp với lượng tài liệu khổng lồ. Điều làm cho việc theo dõi những thanh toán giao dịch trở nên thuận tiện hơn khi truy xuất và theo dõi lại những giá trị băm. Kích thước của hàm băm sẽ phụ thuộc vào vào hàm băm được sử dụng .Kỹ thuật hashing thường được sử dụng và có ứng dụng thoáng rộng nhất trong việc bảo vệ tính toàn vẹn cho tài liệu trong blockchain là những hàm băm mật mã ( cryptographic hash function ) ví dụ điển hình như SHA-1. SHA-2. SHA-3, SHA-256 … Sỡ dĩ như vậy là do những hàm băm mật mã có một số ít đặc thù quan trọng tương thích cho việc bảo vệ bảo đảm an toàn tài liệu .
Hàm băm mật mã
Hàm băm mật mã là những hàm băm tương thích để sử dụng trong mật mã. Cũng giống như những hàm băm thường thì, nó là một thuật toán toán học ánh xạ tài liệu có size tùy ý thành một chuỗi bit có kích cỡ cố định và thắt chặt ( gọi là “ giá trị băm ”, “ mã băm ” hoặc “ thông điệp băm ” ). Ngoài ra nó còn bảo vệ đặc thù là một hàm một chiều, nghĩa là, một hàm mà trên thực tiễn không hề có ngược. Nếu bạn có một giá trị băm đầu ra, bạn sẽ không hề suy ngược lại được giá trị nguồn vào là gì để hoàn toàn có thể băm ra một thông điệp băm như vậy, hoặc tối thiểu là rất khó suy luận được ra, trừ khi bạn vét cạn hết hàng loạt những năng lực hoàn toàn có thể của thông điệp nguồn vào. Đây là đặc thù 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ã văn minh .Các hàm băm mật mã có nhiều ứng dụng trong bảo đảm an toàn thông tin. Nó được sử dụng nhiều trong chữ ký số, mã xác nhận thông điệp ( MAC ) và những hình thức xác nhận khác. Ngoài ra, chúng cũng hoàn toàn có thể được sử dụng như những hàm băm thường thì, để lập chỉ mục dữ liệu trong bảng băm, lấy đặc trưng của tài liệu, phát hiện tài liệu trùng lặp hoặc làm tổng kiểm tra để phát hiện lỗi những tài liệu ngẫu nhiên .
Tính chất của hàm băm mật mã
Hàm băm mật mã về cơ bản cần bảo vệ những đặc thù sau :Tính tất định, nghĩa là cùng một thông điệp đầu vào luôn tạo ra cùng một hàm băm.Tính hiệu quả. Có khả năng tính toán nhanh chóng giá trị băm của bất kỳ thông điệp nào.Tính nhạy cảm. Đảm bảo rằng bất kỳ một thay đổi nào, dù là nhỏ nhất trên dữ liệu đều sẽ gây ra sự thay đổi cực lớn trên giá trị băm và tạo ra giá trị băm hoàn toàn khác, và không hề có liên hệ gì với giá trị băm cũ (hiệu ứng tuyết lở).Tính tất định, nghĩa là cùng một thông điệp nguồn vào luôn tạo ra cùng một hàm băm. Tính hiệu suất cao. Có năng lực đo lường và thống kê nhanh gọn giá trị băm của bất kể thông điệp nào. Tính nhạy cảm. Đảm bảo rằng bất kể một đổi khác nào, dù là nhỏ nhất trên tài liệu đều sẽ gây ra sự đổi khác cực lớn trên giá trị băm và tạo ra giá trị băm trọn vẹn khác, và không hề có liên hệ gì với giá trị băm cũ ( hiệu ứng tuyết lở ) .Như bạn thấy, mặc dầu bạn chỉ biến hóa duy nhất một vần âm tiên phong của nguồn vào thì đầu ra đã gần như đổi khác trọn vẹn. Đây là một đặc thù quan trọng của hàm băm chính do nó dẫn đến một trong những đặc thù lớn nhất của blockchain, đó là tính không bao giờ thay đổi. Nghĩa là bạn không hề tạo ra một đổi khác nào trên blockchain mà không tạo ra một sự đổi khác lớn trên đầu ra. Bạn không hề sửa 10 $ thàng 100 $ trong thanh toán giao dịch và ngược lại …Ngoài ra, với mục tiêu bảo vệ bảo đảm an toàn cho tài liệu, những hàm băm mật mã phải có năng lực chịu được toàn bộ những loại tiến công mã hóa đã biết. Trong triết lý mật mã, mức độ bảo đảm an toàn của hàm băm mật mã đã được xác lập bằng những thuộc tính sau :Tính kháng tiền ảnh thứ nhất. Tính chất yêu cầu rằng với một giá trị băm h bất kỳ, sẽ khó tìm thấy bất kỳ thông điệp m nào sao cho h = hash (m). Khái niệm này có liên quan đến tính chất một chiều của hàm băm.Tính kháng tiền ảnh thứ hai. Với đầu vào m1, sẽ khó tìm được đầu vào m2 khác sao cho hash(m1) = hash (m2).Tính kháng va chạm. Rất khó để tìm thấy hai thông điệp khác nhau m1 và m2 sao cho hash (m1) = hash (m2). Một giá trị như vậy được gọi là va chạm của hàm băm mật mã.Tính kháng tiền ảnh thứ nhất. Tính chất nhu yếu rằng với một giá trị băm h bất kể, sẽ khó tìm thấy bất kể thông điệp m nào sao cho h = hash ( m ). Khái niệm này có tương quan đến đặc thù một chiều của hàm băm. Tính kháng tiền ảnh thứ hai. Với nguồn vào m1, sẽ khó tìm được đầu vào mét vuông khác sao cho hash ( m1 ) = hash ( mét vuông ). Tính kháng va chạm. Rất khó để tìm thấy hai thông điệp khác nhau m1 và mét vuông sao cho hash ( m1 ) = hash ( mét vuông ). Một giá trị như vậy được gọi là va chạm của hàm băm mật mã .Ký hiệu D là miền xác lập và R là miền giá trị của hàm băm h ( x ). Do hàm băm biến hóa tài liệu từ độ dài bất kể về độ dài cố định và thắt chặt do đó, số lượng thành phần của D thường lớn hơn rất nhiều so với số lượng thành phần trong R. Vì vậy hàm băm h ( x ) không là đơn ánh, tức là luôn sống sót một cặp đầu vào khác nhau có cùng giá trị mã băm. Tức là với mỗi đầu vào cho trước thường sống sót một ( hoặc nhiều ) đầu vào khác sao cho mã băm của nó trùng với mã băm của chuỗi đầu vào đã cho. Tính chất này dựa trên ngịch lý ngày sinh nhật :Nếu bạn gặp bất kể người lạ ngẫu nhiên nào trên đường phố, năng lực cả hai bạn có cùng ngày sinh là rất thấp. Trên trong thực tiễn, giả sử rằng tổng thể những ngày trong năm đều có năng lực sinh nhật như nhau, năng lực có một người khác cùng có ngày sinh như bạn là 1/365 tức là chỉ xê dịch 0,27 %. Rất thấp !Tuy nhiên, nếu bạn tập hợp 20-30 người trong một phòng, tỷ suất hai người có cùng một ngày sinh nhật tăng lên gấp bội. Trên trong thực tiễn, có thời cơ để 2 người bất kể san sẻ cùng một ngày sinh nhật trong trường hợp này là 50-50 !Tại sao điều này xảy ra ? Đó là do tại một quy tắc đơn thuần trong Phần Trăm. Giả sử bạn có N năng lực khác nhau xảy ra, thì bạn cần căn bậc hai của N đối tượng người tiêu dùng ngẫu nhiên để chúng có 50 % năng lực xảy ra va chạm .Vì vậy, vận dụng triết lý này cho ngày sinh nhật, bạn có 365 năng lực ngày sinh nhật khác nhau, thế cho nên bạn chỉ cần 265 ” > √ 365, tức là ~ 23 người, những người được chọn ngẫu nhiên thì 50 % thời cơ hai người sẽ có chung ngày sinh nhật .Với trường hợp hashing ở đây, giả sử bạn có hàm băm với kích cỡ đầu ra là 128 bit, tức là có toàn diện và tổng thể USD 2 ^ { 128 } $ năng lực khác nhau. thì với nghịch lý sinh nhật, bạn có 50 % thời cơ phá vỡ năng lực kháng va chạm của hàm băm với √ ( 2 ^ 128 ) = 2 ^ 64 lần thử .Do đó, bạn hoàn toàn có thể thấy rằng, việc phá vỡ đặc thù kháng va chạm của hàm băm sẽ thuận tiện hơn rất nhiều so với việc phá vỡ đặc thù kháng tiền ảnh. Không có hàm băm nào là không va chạm, tuy nhiên, nếu ta chọn được hàm h ( x ) thích hợp phân phối đặc thù trên với chiều dài mã băm đủ lớn thì việc thống kê giám sát để tìm ra chuỗi đầu vào bị va chạm này là rất khó .Tính kháng va chạm bao hàm cả tính kháng tiền ảnh thứ hai, nhưng không gồm có đặc thù kháng tiền ảnh thứ nhất. Trên trong thực tiễn, hàm băm chỉ có năng lực kháng tiền ảnh thứ hai được coi là không bảo đảm an toàn và do đó không được khuyến nghị cho những ứng dụng thực tiễn .Các đặc thù trên bảo vệ rằng kẻ tiến công không hề thay thế sửa chữa hoặc sửa đổi tài liệu nguồn vào mà không làm đổi khác giá trị băm. Do đó, nếu hai chuỗi đầu vào có cùng một giá trị băm, ta hoàn toàn có thể rất tự tin rằng chúng là giống hệt nhau. Tính kháng tiền ảnh thứ hai ngăn ngừa kẻ tiến công tạo ra được một tài liệu khác có cùng giá trị băm như tài liệu gốc. Tính kháng va chạm ngăn ngừa kẻ tiến công tạo ra hai tài liệu khác nhau mà có cùng một giá trị băm .Một hàm băm thỏa mãn nhu cầu những tiêu chuẩn trên hoàn toàn có thể vẫn có những đặc thù không mong ước. Ví dụ, những hàm băm phổ cập lúc bấy giờ hoàn toàn có thể dễ bị những tiến công lan rộng ra độ dài ( length-extension ) : Cho trước h ( m ) và len ( m ) nhưng không cho trước m, bằng cách chọn m ’ thích hợp, một kẻ tiến công hoàn toàn có thể tính h ( m | | m ’ ), trong đó | | ký hiệu phép nối xâu ( concatenation ). Tính chất này hoàn toàn có thể được dùng để phá những chiêu thức xác thực đơn giản dựa vào hashing. Để khắc phục điều này, HMAC đã được thiết kế xây dựng và đã xử lý được yếu tố này .Các thuật toán tính tổng kiểm tra, ví dụ điển hình như CRC32 và những thuật toán tính mã kiểm tra dự trữ theo chu kỳ luân hồi khác, được phong cách thiết kế để cung ứng những nhu yếu yếu hơn nhiều và thường không tương thích với những ứng dụng như những hàm băm mật mã. Ví dụ : CRC được sử dụng xác định tính toàn vẹn của thông điệp trong tiêu chuẩn mã hóa WEP, nhưng hoàn toàn có thể bị thuận tiện tiến công bằng những tiến công có độ phức tạp tuyến tính .
Những dạng Hash cơ bản
Có nhiều thuật toán băm mật mã ; ở đây tất cả chúng ta nhắc đến 1 số ít thuật toán được sử dụng tiếp tục .
Hàm băm MD5
MD5 được Ronald Rivest phong cách thiết kế vào năm 1991 để sửa chữa 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 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 bảo đảm an toàn trước sức mạnh thống kê giám sát của những mạng lưới hệ thống thống kê giám sát thế hệ mới. Với sức mạnh tính toàn và sự tăng trưởng của công nghệ tiên tiến thám mã thời hạn gần đây, tất cả chúng ta hoàn toàn có thể giám sát những 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 tương thích với hầu hết những trường hợp sử dụng trong trong thực tiễn .
SHA-1
SHA-1 được tăng trưởng như một phần của dự án Bất Động Sản Capstone của nhà nước Hoa Kỳ. Phiên bản tiên phong, 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 sửa chữa 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 cỡ 160 bit ( 20 byte ). Các va chạm chống lại thuật toán SHA-1 rất đầy đủ hoàn toàn có thể được tạo ra bằng cách sử dụng tiến công phá vỡ. Do đó, hàm băm này cho đến nay được coi là không đủ bảo đảm 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 tăng trưởng tại Leuven, Bỉ, bởi ba nhà mật mã học Hans Dobbertin, Antoon Bosselaers và Bart Preneel của nhóm điều tra và nghiên cứu COSIC thuộc ĐH Katholieke Universiteit Leuven. RIPEMD lần tiên phong được công bố vào năm 1996 dựa trên những nguyên tắc phong cách 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ựa như như SHA-1 nhưng ít được phổ cập hơn. Và cho đến nay RIPEMD-160 chưa bị phá vỡ .
Bcrypt
bcrypt là một hàm băm mật khẩu được thiết kế bởi Niels Provos và David Mazières, dựa trên mật mã Blowfish, và được trình bày tại USENIX vào năm 1999. Bên cạnh việc kết hợp một giá trị ngẫu nghiên salt để bảo vệ chống lại các tấn công rainbow attack, bcrypt còn là một hàm có khả năng thích ứng: theo thời gian, số lần lặp có thể được tăng lên để làm cho nó chậm hơn, do đó nó vẫn có khả năng chống lại các cuộc tấn công vét cạn ngay cả khi tăng sức mạnh tính toán có lớn đến mức nào đi chăng nữa.
Whirlpool
Whirlpool là một hàm băm mật mã được phong cách thiết kế bởi Vincent Rijmen và Paulo S. L. M. Barreto. Nó được diễn đạt tiên phong vào năm 2000. 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 tài liệu .
SHA-2
SHA-2 là một tập hợp những hàm băm mật mã được phong cách thiết kế bởi Cơ quan bảo mật an ninh vương quốc Hoa Kỳ ( NSA ), được xuất bản lần tiên phong vào năm 2001. Chúng được thiết kế xây dựng bằng cấu trúc Merkle – Damgård, tính năng nén một chiều của nó được thiết kế xây dựng bằng cấu trúc Davies – Meyer từ một hệ mật mã khối chuyên được dùng .Xem thêm : Nguyên Nhân Ngứa Họng – Cã ¡ Ch NhẠN BiẠ¿ T Vã Phã²Ng Trã ¡ NhSHA-2 về thực ra gồm có 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 những 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ổng thể những biến thể của SHA-512. SHA-512 bảo đảm an toàn hơn SHA-256 và thường nhanh hơn SHA-256 trên những máy 64 bit như AMD64 .Do có nhiều phiên bản thuật toán khác nhau do đó size đầu ra của họ SHA-2 cũng khác nhau tùy theo thuật toán. Phần lan rộng ra 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ì size đầu ra là 224 bit ( 28 byte ), SHA-256 tạo ra 32 byte, SHA-384 tạo ra 48 byte và ở đầu cuối là SHA – 512 tạo ra 64 byte. Và tất cả chúng ta hoàn toàn 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 năm ngoái. Đây có lẽ rằng là tiêu chuẩn hàm băm mới nhất cho đến lúc bấy giờ. 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 hoàn toàn có thể được sử dụng để thiết kế xây dựng những nguyên thủy mã hóa khác như những hệ mật mã dòng. SHA-3 cũng có những kích cỡ đầu ra tương tự như như SHA-2 gồm có : 224, 256, 384 và 512 bit .
BLAKE2
Một phiên bản nâng cấp cải tiến của BLAKE có tên BLAKE2 đã được công bố vào ngày 21 tháng 12 năm 2012. BLAKE được tăng trưởng bởi Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O ’ Hearn và Christian Winnerlein với tiềm năng sửa chữa thay thế những thuật toán băm phổ cập như MD5 và SHA-1. Khi chạy trên những kiến trúc 64 bit x64 và ARM, BLAKE2b cho vận tốc nhanh hơn SHA-3, SHA-2, SHA-1 và MD5. Mặc dù BLAKE và BLAKE2 chưa được tiêu chuẩn hóa như SHA-3, nhưng nó đã được sử dụng trong nhiều giao thức gồm có hàm băm mật khẩu Argon2 do hiệu suất cao cao mà nó mang lại cho những dòng CPU tân tiến. Do BLAKE cũng là ứng viên cho tiêu chuẩn SHA-3, thế cho nên, BLAKE và BLAKE2 đều có những kích cỡ đầu ra giống như SHA-3 và hoàn toàn có thể tùy chọn khi sử dụng trong thực tiễn .
Ứng dụng của Hash
Hashing nói chung và hàm băm mật mã nói riêng có rất nhiều ứng dụng khác nhau trong trong thực tiễn. Dưới đây là 1 số ít ứng dụng thông dụng nhất của nó :
Hashing trong định danh tệp hoặc dữ liệu
Giá trị băm cũng hoàn toàn có thể được sử dụng như một phương tiện đi lại để định danh tập tin một cách đáng an toàn và đáng tin cậy. Một số mạng lưới hệ thống quản trị mã nguồn, như Git, Mercurial hay Monotone, sử dụng giá trị sha1sum của nội dung tệp, cây thư mục, thông tin thư mục gốc, v.v. để định danh chúng .Giá trị băm cũng được sử dụng để xác lập những tệp trên những mạng san sẻ tệp ngang hàng nhằm mục đích phân phối khá đầy đủ thông tin để xác định nguồn gốc của tệp, xác định nội dung tệp tải xuống. Giá trị ứng dụng của chúng còn được lan rộng ra ra khi vận dụng những cấu trúc tài liệu bổ trợ như list băm hoặc cây băm ( Merkle Tree ) .Tuy nhiên, so với những hàm băm tiêu chuẩn, những hàm băm mật mã có xu thế phức tạp và yên cầu nhiều tài nguyên đo lường và thống kê hơn nhiều. Do đó, chúng có khuynh hướng được sử dụng trong những trường hợp khi người dùng cần tự bảo vệ tính bảo đảm an toàn cho thông điệp trước những năng lực bị sửa đổi, hay trá hình như những ứng dụng ở dưới đây :
Hashing trong xác minh tính toàn vẹn của thông điệp hoặc tập tin
Một ứng dụng quan trọng nhất của hashing là xác định tính toàn vẹn của thông điệp. Chúng ta khá quen thuộc với những ứng dụng này. Khi tải về một ứng dụng hoặc tệp tin nào đó trên 1 số ít website, ta được phân phối kèm theo những mã băm MD5 hoặc SHA1. Khi đó sau khi tải về tập tin, tất cả chúng ta hoàn toàn có thể tính và so sánh giá trị băm của tệp tải về với giá trị băm được phân phối trên web, nếu có sự sai khác tức là tệp tin tất cả chúng ta tải về đã bị sửa đổi .
Hashing trong tạo và xác nhận chữ ký
Hầu như tổng thể những lược đồ chữ ký số đều nhu yếu đo lường và thống kê bản tóm lược của thông điệp bằng những hàm băm mật mã. Điều này được cho phép việc đo lường và thống kê và tạo chữ ký được thực thi trên một khối tài liệu có size tương đối nhỏ và cố định và thắt chặt thay vì trên hàng loạt 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 những lược đồ chữ ký số bảo đảm an toàn và hiệu suất cao .
Hashing trong xác minh mật khẩu
Việc xác định mật khẩu thường dựa vào những 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õ hoàn toàn có thể dẫn đến những lỗ hổng bảo mật thông tin nghiêm trọng khi tệp mật khẩu bị xâm phạm. Do đó, để làm giảm rủi ro tiềm ẩn này, tất cả chúng ta thường chỉ tàng trữ giá trị băm của mỗi mật khẩu. Để xác nhận 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 tàng trữ tương ứng. Mật khẩu khởi đầu không hề được đo lường và thống kê lại từ giá trị băm được tàng trữ trong cơ sở tài liệu .Các hàm băm mật mã tiêu chuẩn được phong cách thiết kế để được giám sát nhanh gọn và do đó, hoàn toàn có thể thử dò đoán mật khẩu với vận tốc cực cao. Các đơn vị chức năng giải quyết và xử lý đồ họa ( GPU ) thường thì hoàn toàn có thể thử đoán hàng tỷ mật khẩu hoàn toàn có thể mỗi giây. Do đó, để tăng tính án toàn, những hàm băm mật khẩu thực thi việc lan rộng ra khóa – ví dụ điển hình như PBKDF2, scrypt hoặc Argon2 – thường sử dụng những lệnh gọi lặp lại của hàm băm mật mã để tăng thời hạn ( và trong 1 số ít trường hợp bộ nhớ máy tính ) thiết yếu để triển khai những cuộc tiến công vét cạn lên giá trị băm của mật khẩu được tàng trữ. Việc hashing mật khẩu nhu yếu sử dụng một giá trị muối ( salt ) ngẫu nhiên, hoàn toàn có thể được tàng trữ với hàm băm mật khẩu. Giá trị salt làm ngẫu nhiên hóa đầu ra của hàm băm mật khẩu, khiến đối thủ cạnh tranh không hề tàng trữ những bảng mật khẩu và những giá trị băm được đo lường và thống kê trước .Đầu ra của hàm băm mật khẩu cũng hoàn toàn có thể được sử dụng làm những khóa mật mã. Do đó, những hàm băm mật khẩu còn được gọi là những Hàm dẫn xuất khóa dựa trên mật khẩu ( PBKDF ) .
Hashing và Bằng chứng công việc (Proof of Work)
Bằng chứng việc làm ( Proof of Work ) là một giải pháp kinh tế tài chính để ngăn ngừa những cuộc tiến công khước từ dịch vụ và những hành vi lạm dụng dịch vụ khác như spam bằng cách nhu yếu người dùng dịch vụ triển khai một số ít việc làm nhất định, thường yên cầu nhiều thời hạn giải quyết và xử lý. Bằng chứng việc làm cần bảo vệ tính bất đối xứng tức là : việc làm phải có độ khó vừa phải ( nhưng khả thi ) về phía người dùng nhưng dễ kiểm chứng so với nhà sản xuất dịch vụ .Hệ thống Proof of Work tiên phong được yêu cầu là Hashcash. Hashcash sử dụng quy trình hashing như một phần để chứng tỏ rằng việc làm đã được thực thi nhằm mục đích được cho phép gửi email đi, tránh những email spam. Công việc trung bình mà người dùng cần thực thi để tìm thư hợp lệ cấp số nhân với số bit 0 thiết yếu trong giá trị băm, trong khi người nhận hoàn toàn có thể xác định tính hợp lệ của email chỉ bằng cách triển khai một phép tính băm duy nhất. Trong Hashcash, người gửi được nhu yếu tạo một tiêu đề có giá trị băm SHA-1 160 bit trong đó có 20 bit tiên phong là bit 0. Khi đó, người gửi trung bình sẽ phải thử khoảng chừng lần để tìm ra tiêu đề hợp lệ trước khi gửi đi .Hệ thống này được thừa kế trong Bitcoin, nền tảng blockchain tiên phong. Việc tính những giá trị băm giúp mở khóa phần thưởng khai thác trong Bitcoin. Các thành viên trong mạng được nhu yếu tìm một giá trị sao cho sự phối hợp của nó với thông điệp gốc ( tập hợp những thanh toán giao dịch ) có giá trị băm khởi đầu bằng một số ít bit không ( xác lập bởi độ khó của việc khai thác và được kiểm soát và điều chỉnh tiếp tục bằng ứng dụng ) .
Hashing trong blockchain
Một số hàm băm mật mã đang được sử dụng thoáng rộng như đã kể ở trên :SHA 256 hiện đang được sử dụng bởi Bitcoin.Keccak-256 hiện đang được Ethereum sử dụng.SHA 256 hiện đang được sử dụng bởi Bitcoin. Keccak-256 hiện đang được Ethereum sử dụng .Các hàm băm này không những được sử dụng để tạo ra vật chứng việc làm ( Proof of Work ) mà còn để làm định danh cho những khối, hoặc tích hợp với mật mã khóa công khai minh bạch để tạo ra định danh cho người dùng trên mạng .
Ứng dụng hashing trong xây dựng các thành phần nguyên thuỷ mật mã khác
Các hàm băm cũng hoàn toàn có thể được sử dụng để kiến thiết xây dựng những thành phần nguyên thuỷ mật mã khác .Đầu tiên, hàm băm hoàn toàn có thể được sử dụng để thiết kế xây dựng những mã xác nhận thông điệp ( MAC ) ( còn được gọi là hàm băm có khóa ) như HMAC .Hàm băm cũng hoàn toàn có thể được sử dụng để thiết kế xây dựng những hệ mật mã khối. Các cấu trúc Luby-Rackoff được thiết kế xây dựng sử dụng những hàm băm và dựa trên độ bảo đảm an toàn của hàm băm .Trình tạo số giả ngẫu nhiên ( PRNG ) cũng hoàn toàn có thể được thiết kế xây dựng dựa trên những hàm băm. Điều này được thực thi bằng cách tích hợp một mầm ngẫu nhiên ( bí hiểm ) với một bộ đếm và triển khai băm nó .Một số hàm băm, ví dụ điển hình như Skein, Keccak và RadioGatún tạo ra một luồng dài tùy ý và hoàn toàn có thể được sử dụng trong những hệ mật mã dòng .
Ý nghĩa của Hash trong Blockchain
Xương sống của một loại tiền điện tử là blockchain của nó, là một sổ cái toàn thế giới được hình thành bằng cách link những khối tài liệu thanh toán giao dịch riêng không liên quan gì đến nhau với nhau. Blockchain chỉ chứa những thanh toán giao dịch được xác nhận, giúp ngăn ngừa những thanh toán giao dịch gian lận và tiêu tốn gấp đôi tiền tệ. Quá trình xác nhận dựa trên tài liệu được mã hóa bằng cách sử dụng băm thuật toán. Giá trị được mã hóa hiệu quả là một chuỗi những số và vần âm không giống với tài liệu gốc và được gọi là hàm băm. Khai thác tiền điện tử tương quan đến việc làm việc với hàm băm này .
Băm yêu cầu xử lý dữ liệu từ một khối thông qua hàm toán học, dẫn đến kết quả đầu ra có độ dài cố định. Sử dụng đầu ra có độ dài cố định sẽ tăng tính bảo mật, vì bất kỳ ai đang cố gắng giải mã hàm băm không thể cho biết đầu vào dài hay ngắn chỉ bằng cách nhìn vào độ dài của đầu ra. Hàm được sử dụng để tạo hàm băm có tính xác định, nghĩa là nó sẽ tạo ra cùng một kết quả mỗi lần sử dụng cùng một đầu vào; có thể tạo ra một đầu vào băm hiệu quả; làm cho việc xác định đầu vào khó khăn (dẫn đến khai thác); và thực hiện các thay đổi nhỏ đối với kết quả đầu vào trong hàm băm rất khác nhau.
Việc giải quyết và xử lý những hàm băm thiết yếu để mã hóa những khối mới yên cầu sức mạnh giải quyết và xử lý đáng kể của máy tính, hoàn toàn có thể tốn kém. Để lôi kéo những cá thể và công ty, được gọi là người khai thác, góp vốn đầu tư vào công nghệ tiên tiến thiết yếu, những mạng tiền điện tử thưởng cho họ cả token tiền điện tử mới và phí thanh toán giao dịch. Công cụ khai thác chỉ được bù nếu chúng là người tiên phong tạo ra hàm băm phân phối những nhu yếu được đặt ra trong hàm băm đích .Giải quyết hàm băm về cơ bản là xử lý một yếu tố toán học phức tạp và khởi đầu với tài liệu có sẵn trong tiêu đề khối. Mỗi tiêu đề khối chứa 1 số ít phiên bản, dấu thời hạn, hàm băm được sử dụng trong khối trước đó, hàm băm của Merkle Root, nonce và băm đích. Công cụ khai thác tập trung chuyên sâu vào nonce, một chuỗi số. Số này được gắn vào nội dung được băm của khối trước đó, sau đó chính nó được băm. Nếu hàm băm mới này nhỏ hơn hoặc bằng hàm băm tiềm năng, thì nó được đồng ý làm giải pháp, người khai thác được trao phần thưởng và khối được thêm vào blockchain .Việc giải hàm băm nhu yếu người khai thác xác lập chuỗi nào sẽ sử dụng làm chuỗi không, chính nó nhu yếu một số lượng đáng kể thử và sai. Điều này là do nonce là một chuỗi ngẫu nhiên. Rất khó có năng lực một người khai thác sẽ thành công xuất sắc với lần tiên phong đúng mực trong lần thử tiên phong, có nghĩa là người khai thác hoàn toàn có thể kiểm tra một số lượng lớn những tùy chọn nonce trước khi thực thi đúng. Độ khó càng lớn – thước đo mức độ khó để tạo ra một hàm băm phân phối nhu yếu của hàm băm tiềm năng – càng mất nhiều thời hạn để tạo ra một giải pháp .
Source: https://final-blade.com
Category: Tiền Điện Tử – Tiền Ảo