Mã hash là gì

     

Hash (hàm băm) là giữa những phần đặc trưng nhất của thứ công nghệ giúp giữ an toàn cho mạng lưới Bitcoin. Tuy thế Hash là gì cùng nó hoạt động như cố gắng nào? Hãy cùng mày mò nhé.

Bạn đang xem: Mã hash là gì

Bạn vẫn xem: Mã hash là gìBạn sẽ xem: Mã hash là gì

Hash là gì?

Về cơ bản hashing là quy trình biến một dữ liệu đầu vào có độ dài ngẫu nhiên thành một chuỗi đầu ra đặc thù có độ dài thay định. Hashing được thực hiện thông qua hàm băm (hash function).

Một cách bao quát hàm băm là ngẫu nhiên hàm nào rất có thể được thực hiện để ánh xạ tài liệu có form size tùy ý thành những giá trị kích thước cố định. Các giá trị được trả về bởi hàm băm được gọi là quý giá băm, mã băm, thông điệp băm, hoặc dễ dàng là “hash”.

Ví dụ, khi bạn download một clip trên YouTube có dung lượng 50 MB và tiến hành hashing bên trên nó bởi thuật toán băm SHA-256, thì đầu ra output bạn chiếm được sẽ là một giá trị băm có độ lâu năm 256 bit. Tương tự, nếu như bạn lấy một lời nhắn văn bản có dung tích 5 KB, nhằm hashing bằng SHA-256 thì quý giá băm cổng output bạn chiếm được vẫn sẽ là 256 bit.

Như chúng ta cũng có thể thấy, trong trường phù hợp SHA-256, mặc dầu đầu vào của khách hàng lớn hay nhỏ dại như núm nào đi chăng nữa, thì đầu ra bạn nhận ra sẽ luôn có độ lâu năm 256 bit núm định. Điều này trở nên đặc biệt khi các bạn xử lý một lượng lớn dữ liệu và giao dịch. Khi đó, rứa vì các bạn phải xử lý toàn cục lượng tài liệu đầu vào (có thể có kích cỡ rất lớn), bạn chỉ cần xử lý và theo dõi một lượng dữ liệu rất nhỏ dại là những giá trị băm.

Trong blockchain, các giao dịch có độ dài khác biệt sẽ được băm thông qua 1 thuật toán băm nhất định và tất cả đều cho áp sạc ra có độ dài thắt chặt và cố định bất kể độ dài của thanh toán giao dịch đầu vào là bao nhiêu. Chẳng hạn, Bitcoin sử dụng thuật toán SHA-256 để băm những giao dịch cho tác dụng đầu ra gồm độ dài cố định và thắt chặt là 256 bit (32 byte) mang lại dù giao dịch chỉ là 1 trong những từ hoặc giao dịch phức tạp với lượng tài liệu khổng lồ. Điều tạo nên việc theo dõi các giao dịch trở nên tiện lợi hơn lúc truy xuất và theo dõi lại những giá trị băm. Form size của hàm băm sẽ dựa vào vào hàm băm được sử dụng.

Kỹ thuật hashing hay được thực hiện và tất cả ứng dụng rộng thoải mái nhất vào việc bảo đảm tính trọn vẹn cho dữ liệu trong blockchain là các hàm băm mật mã (cryptographic hash function) chẳng hạn 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 vài tính chất quan trọng cân xứng cho việc đảm bảo bình an dữ liệu.

Hàm băm mật mã

Hàm băm mật mã là các hàm băm tương xứng để áp dụng trong mật mã. Cũng tương tự các hàm băm thông thường, nó là 1 trong 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 thước thắt chặt và cố định (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 đảm an toàn tính chất là 1 hàm một chiều, nghĩa là, một hàm nhưng mà trên thực tiễn không thể gồm ngược. Nếu như bạn có một cực hiếm băm đầu ra, bạn sẽ không thể suy ngược lại được giá chỉ 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 nhất là tương đối khó suy luận được ra, trừ khi bạn vét cạn hết toàn bộ các khả năng rất có thể của thông điệp đầu vào. Đây là đặc thù vô cùng quan trọng của hàm băm mật mã phát triển thành nó thành một phép tắc cơ bạn dạng của mật mã hiện tại đại.


*

Các hàm băm mật mã có khá nhiều ứng dụng trong bình an thông tin. Nó được áp dụng nhiều trong chữ cam kết số, mã đúng đắn thông điệp (MAC) và các hình thức xác thực khác. Quanh đó ra, bọn chúng cũng hoàn toàn có thể được áp dụng như những hàm băm thông thường, để lập chỉ mục tài liệu trong bảng băm, lấy đặc thù của dữ liệu, phạt hiện dữ liệu trùng lặp hoặc có tác dụng tổng đánh giá để phát hiện lỗi những dữ 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 dạng cần đảm bảo an toàn các đặc điểm sau:

Tính vớ đị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ó tác dụng tính toán nhanh lẹ giá trị băm của bất kỳ thông điệp nào.Tính tinh tế cảm. Đảm nói rằng bất kỳ một thay đổi nào, dù là nhỏ tuổi nhất trên dữ liệu đều sẽ gây nên sự chuyển đổi cực lớn trên quý giá băm và tạo thành 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ở).


*

Như chúng ta thấy, mặc dù bạn chỉ biến đổi duy độc nhất vô nhị một chữ cái thứ nhất của nguồn vào thì cổng đầu ra đã ngay gần như chuyển đổi hoàn toàn. Đây là một tính chất đặc trưng của hàm băm bởi vì nó dẫn đến trong số những tính chất lớn nhất của blockchain, sẽ là tính bất biến. Nghĩa là các bạn không thể tạo thành một chuyển đổi nào bên trên blockchain nhưng không tạo thành một sự chuyển đổi lớn bên trên đầu ra. Các bạn không thể sửa 10 $ thàng 100$ trong giao dịch thanh toán và ngược lại…

Ngoài ra, với mục tiêu đảm bảo bình yên cho dữ liệu, các hàm băm mật mã phải có chức năng chịu được tất cả các loại tấn công mã hóa đã biết. Trong triết lý mật mã, mức độ bình an của hàm băm mật mã đang được khẳng định bằng các thuộc tính sau:

Tính phòng tiền hình ảnh thứ nhất. Tính chất yêu mong rằng với một quý hiếm băm h bất kỳ, sẽ khó khăn 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 đặc điểm 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 kiếm được đầu vào mét vuông khác sao cho hash(m1) = hash (m2).Tính chống va chạm. Rất nặng nề để kiếm tìm thấy nhị thông điệp khác nhau m1 và m2 làm thế nào để cho hash (m1) = hash (m2). Một giá trị vì thế được điện thoại tư vấn là va chạm của hàm băm mật mã.


*

Ký hiệu D là miền xác định và R là miền giá trị của hàm băm h(x). Do hàm băm biến đổi dữ liệu từ bỏ độ dài ngẫu nhiên về độ dài thắt chặt và cố định do đó, số lượng phần tử của D hay lớn hơn rất nhiều so với số lượng phần tử vào R. Vì vậy hàm băm h(x) không là đơn ánh, tức là luôn tồn tại 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 nguồn vào cho trước thường tồn tại một (hoặc nhiều) nguồn vào khác thế nào cho mã băm của nó trùng với mã băm của chuỗi đầu vào đã cho. đặc thù này dựa vào ngịch lý ngày sinh nhật:

Nếu các bạn gặp ngẫu nhiên người lạ bỗng dưng nào trê tuyến phố phố, kĩ năng cả hai bạn trẻ có cùng trong ngày sinh là vô cùng thấp. Bên trên thực tế, mang sử rằng toàn bộ các ngày trong những năm đều có chức năng sinh nhật như nhau, kĩ năng có một fan khác cùng tất cả ngày sinh như bạn là 1/365 có nghĩa là chỉ xấp xỉ 0,27%. Khôn xiết thấp!

Tuy nhiên, nếu như khách hàng tập đúng theo 20-30 người trong một phòng, xác suất hai người dân có cùng một ngày sinh nhật tạo thêm gấp bội. Trên thực tế, có thời cơ để 2 người bất kỳ chia sẻ và một ngày sinh nhật trong trường vừa lòng này là 50-50 !


*

Tại sao vấn đề đó xảy ra? Đó là cũng chính vì một quy tắc dễ dàng trong xác suất. đưa sử bạn có N năng lực khác nhau xảy ra, thì bạn phải căn bậc hai của N đối tượng ngẫu nhiên để chúng có một nửa khả năng xảy ra va chạm.

Vì vậy, áp dụng lý thuyết này cho ngày sinh nhật, các bạn có 365 kỹ năng ngày sinh nhật không giống nhau, bởi vì vậy bạn chỉ cần 265">√365, có nghĩa là ~ 23 người, những người được chọn thiên nhiên thì một nửa cơ hội nhì người sẽ sở hữu chung ngày sinh nhật.

Với trường đúng theo hashing làm việc đây, trả sử các bạn có hàm băm với form size đầu ra là 128 bit, tức là có toàn diện và tổng thể $2 ^ 128$ kỹ năng khác nhau. Thì cùng với nghịch lý sinh nhật, chúng ta có 50% cơ hội phá vỡ khả năng kháng va đụng của hàm băm với √(2^128) = 2^64 lần thử.

Do đó, chúng ta có thể thấy rằng, vấn đề phá vỡ đặc thù kháng va chạm của hàm băm sẽ tiện lợi hơn không ít so với câu hỏi phá vỡ đặc điểm kháng tiền ảnh. Không có hàm băm làm sao là không va chạm, mặc dù nhiên, nếu ta chọn được hàm h(x) thích hợp thỏa mãn nhu cầu tính chất trên với chiều dài mã băm đủ lớn thì việc tính toán để tìm ra chuỗi đầu vào bị va va này là rất khó .

Tính kháng va chạm bao hàm cả tính phòng tiền hình ảnh thứ hai, tuy vậy không bao gồm tính chất kháng tiền ảnh thứ nhất. Bên trên thực tế, hàm băm chỉ có công dụng kháng tiền ảnh thứ nhì được xem như là không an ninh và cho nên vì thế không được đề xuất cho các ứng dụng thực tế.

Xem thêm: Centella Asiatica Là Gì - Centella Asiatica Extract Là Chất Gì


*

Một hàm băm thỏa mãn các tiêu chuẩn trên có thể vẫn bao gồm các đặc thù không ao ước muốn. Ví dụ, các hàm băm phổ biến hiện thời có thể dễ dẫn đến các tấn công mở rộng lớn độ lâu năm (length-extension): mang đến trước h(m) cùng len(m) nhưng không cho trước m, bằng cách chọn m’ ưa thích hợp, một kẻ tấn công có thể tính h (m || m’), trong các số đó || cam kết hiệu phép nối xâu (concatenation). Tính chất này có thể được dùng để phá các phương pháp xác thực dễ dàng và đơn giản dựa vào hashing. Để khắc phục và hạn chế điều này, HMAC đang được thành lập và đã xử lý được sự việc này.

Các thuật toán tính tổng kiểm tra, chẳng hạn như CRC32 và các thuật toán tính mã kiểm tra dự phòng theo chu kỳ luân hồi khác, được thiết kế theo phong cách để đáp ứng các yêu cầu yếu hơn các và hay không cân xứng với các ứng dụng như những hàm băm mật mã. Ví dụ: CRC được áp dụng xác minh tính toàn diện của thông điệp vào tiêu chuẩn chỉnh mã hóa WEP, nhưng có thể bị dễ dãi tấn vô tư các tấn công có độ phức tạp tuyến tính.

Những dạng Hash cơ bản

Có các thuật toán băm mật mã; nghỉ ngơi đây bọn họ nhắc đến một trong những thuật toán được sử dụng thường xuyên.

Hàm băm MD5

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

SHA-1

SHA-1 được trở nên tân tiến như một trong những phần của dự án công trình Capstone của chính phủ nước nhà Hoa Kỳ. Phiên bạn dạng đầu tiên, hay được điện thoại tư vấn là SHA-0 được xuất bản năm 1993 với tiêu đề Secure Hash Standard, FIPS PUB 180, vì NIST (Viện Tiêu chuẩn và technology Quốc gia Hoa Kỳ). Nó đã bị NSA rút lại ngay sau khoản thời gian xuất bản và được sửa chữa thay thế bởi phiên bạn dạng sửa đổi, được xuất bản năm 1995 trong FIPS PUB 180-1 cùng thường được đặt tên là SHA-1. SHA-1 tạo thành ra bạn dạng tóm tắt có form size 160 bit (20 byte). Các va chạm cản lại thuật toán SHA-1 đầy đủ có thể được tạo ra ra bằng phương pháp sử dụng tiến công phá vỡ. Vì chưng đó, hàm băm này cho tới thời điểm bây giờ được xem như là không đầy đủ an toàn.

RIPEMD-160

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

Bcrypt

bcrypt là 1 trong những hàm băm mật khẩu có phong cách thiết kế bởi Niels Provos và David Mazières, dựa vào mật mã Blowfish, cùng được trình bày tại USENIX vào thời điểm năm 1999. ở bên cạnh việc kết hợp một quý hiếm ngẫu nghiên salt để bảo đảm an toàn chống lại các tiến công rainbow attack, bcrypt còn là một hàm có khả năng thích ứng: theo thời gian, tần số lặp rất có thể được tăng lên để gia công cho nó lờ đờ hơn, vì vậy nó vẫn có công dụng chống lại các cuộc tiến công vét cạn trong cả khi tăng sức mạnh thống kê giám sát có lớn tới mức nào đi chăng nữa.

Whirlpool

Whirlpool là một trong những hàm băm mật mã có phong cách thiết kế bởi Vincent Rijmen với Paulo S. L. M. Barreto. Nó được tế bào tả thứ nhất vào năm 2000. Whirlpool dựa vào phiên phiên bản sửa đổi đáng kể của Tiêu chuẩn mã hóa nâng cấp (AES). Whirlpool tạo thành một bản tóm tắt gồm độ nhiều năm 512 bit (64 byte) của dữ liệu.

SHA-2

SHA-2 về thực chất bao hàm hai thuật toán băm: SHA-256 với SHA-512. SHA-224 là 1 trong biến thể của SHA-256 với những giá trị khởi tạo và áp sạc ra bị cắt vứt khác nhau. SHA-384 và SHA-512/224 cùng SHA-512/256 ít được biết đến là tất cả các vươn lên là thể của SHA-512. SHA-512 bình an hơn SHA-256 với thường cấp tốc hơn SHA-256 trên những máy 64 bit như AMD64.

Do có không ít phiên phiên bản thuật toán không giống nhau do đó form size đầu ra của mình SHA-2 cũng khác nhau tùy theo thuật toán. Phần không ngừng mở rộng của tên phía sau tiền tố “SHA” đó là độ lâu năm của thông điệp băm đầu ra. Lấy ví dụ với SHA-224 thì kích cỡ đầu ra là 224 bit (28 byte), SHA-256 tạo thành 32 byte, SHA-384 tạo ra 48 byte và sau cùng là SHA- 512 tạo nên 64 byte. Và bạn có thể đã hiểu được Bitcoin thực hiện hàm băm SHA-256 là 1 phiên bạn dạng trong họ SHA-2 này.

SHA-3

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

BLAKE2

Một phiên bạn dạng cải tiến của BLAKE có tên BLAKE2 đã được ra mắt vào ngày 21 tháng 12 năm 2012. BLAKE được trở nên tân tiến bởi Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn và Christian Winnerlein với kim chỉ nam thay thế các thuật toán băm thịnh hành như MD5 cùng SHA-1. Lúc chạy trên các kiến ​​trúc 64 bit x64 và ARM, BLAKE2b cho tốc độ nhanh rộng SHA-3, SHA-2, SHA-1 và MD5. Mặc dù BLAKE và BLAKE2 không được tiêu chuẩn chỉnh hóa như SHA-3, dẫu vậy nó đã được sử dụng trong vô số giao thức bao gồm hàm băm mật khẩu Argon2 do hiệu quả cao mà lại nó mang lại cho các dòng CPU hiện nay đại. Do BLAKE cũng là ứng cử viên cho tiêu chuẩn chỉnh SHA-3, bởi vậy, BLAKE và BLAKE2 đều phải có các form size đầu ra giống hệt như SHA-3 và có thể tùy lựa chọn khi sử dụng trong thực tế.

Ứng dụng của Hash

Hashing nói thông thường và hàm băm mật mã nói riêng có không ít ứng dụng khác nhau trong thực tế. Dưới đấy là một số ứng dụng thông dụng nhất của nó:

Hashing vào định danh tệp hoặc dữ liệu

Giá trị băm cũng rất có thể được thực hiện như một phương tiện để định danh tập tin một giải pháp đáng tin cậy. Một vài hệ thống làm chủ mã nguồn, như Git, Mercurial tốt Monotone, áp dụng giá trị sha1sum của câu chữ tệp, cây thư mục, tin tức thư mục gốc, v.v. để định danh chúng.

Giá trị băm cũng được sử dụng để xác định các tệp trên những mạng chia sẻ tệp ngang hàng nhằm hỗ trợ đầy đủ thông tin để định vị xuất phát của tệp, xác minh nội dung tệp download xuống. Giá trị ứng dụng của chúng còn được không ngừng mở rộng ra khi vận dụng các kết cấu dữ liệu bổ sung như danh sách băm hoặc cây băm (Merkle Tree).

Xem thêm: Đêm Đi Qua Nghe Tim Buốt Giá, Tìm Lại Giấc Mơ (Nguyễn Hồng Thuận)

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 hướng phức hợp và yên cầu nhiều tài nguyên thống kê giám sát hơn nhiều. Vì chưng đó, bọn chúng có xu hướng được sử dụng trong các trường phù hợp khi người dùng cần tự bảo đảm an toàn tính an ninh cho thông điệp trước các kỹ năng bị sửa đổi, hay hàng nhái như các ứng dụng ở dưới đây:

Hashing vào xác minh tính toàn vẹn của thông điệp hoặc tập tin

Hashing trong tạo nên và xác thực chữ ký

Hầu như tất cả các lược vật dụng chữ ký số đều yêu cầu tính toán phiên 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ó thể chấp nhận được việc đo lường và chế tạo ra chữ ký được thực hiện trên một khối tài liệu có kích cỡ tương đối nhỏ và cố định thay vì trên cục bộ văn bạn dạng 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 vật chữ ký kết số an ninh và hiệu quả.