Hash (hàm băm) là gì và cách thức vận hành như thế nào?

Bài viết Hash (hàm băm) là gì và cách thức vận hành như thế nào? thuộc chủ đề về Câu Hỏi- Giải Đáp đang được rất nhiều bạn lưu tâm đúng không nào !! Hôm nay, Hãy cùng sotaythongthai.vn tìm hiểu Hash (hàm băm) là gì và cách thức vận hành như thế nào? trong bài viết hôm nay nha !

Các bạn đang xem bài : “Hash (hàm băm) là gì và cách thức vận hành như thế nào?”


Hash (hàm băm) là một trong số những phần quan trọng nhất của thứ công nghệ giúp giữ an toàn cho mạng lưới Bitcoin. Nhưng Hash là gì và nó vận hành như thế nào? Hãy cùng tìm hiểu nha.

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 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 xem: ham bam la gi

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

Ví dụ, khi bạn download một video trên YouTube có dung lượng 50 MB và thực hiện 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 tổng 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 lượng 5 KB, để hashing bằng SHA-256 thì tổng giá trị băm đầu ra bạn thu được vẫn sẽ là 256 bit.

Như bạn khả năng thấy, trong trường hợp SHA-256, cho dù đầu 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. Điều này trở nên quan trọng khi bạn xử lý một lượng lớn dữ liệu và giao dịch. Khi đó, thay vì bạn phải xử lý toàn bộ lượng dữ liệu đầu vào (khả năng có kích thước rất lớn), bạn chỉ cần xử lý và theo dõi một lượng dữ liệu rất nhỏ là các tổng giá trị băm.

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

Kỹ thuật hashing thường được dùng và có ứng dụng rộng rãi nhất trong việc đảm bảo tính toà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 các hàm băm mật mã có một vài tính chất quan trọng phù hợp cho việc đảm bảo an toàn dữ liệu.

Hàm băm mật mã

Hàm băm mật mã là các hàm băm phù hợp để dùng trong mật mã. Cũng giống như các hàm băm thông thường, nó là một thuật toán toán học ánh xạ dữ liệu có kích thước tùy ý thành một chuỗi bit có kích thước cố định (gọi là “tổng giá trị băm”, “mã băm” hoặc “thông điệp băm”). mặt khác nó còn đảm bảo tính chất là một hàm một chiều, nghĩa là, một hàm mà trên thực tế không thể có ngược. Nếu bạn có một tổng giá trị băm đầu ra, bạn sẽ không thể suy ngược lại được tổng giá trị đầu vào là gì để khả năng băm ra một thông điệp băm như vậy, hoặc ít nhất là rất khó suy luận được ra, trừ khi bạn vét cạn hết toàn bộ các khả năng khả năng của thông điệp đầu vào. Đây là tính chất vô cùng quan trọng của hàm băm mật mã biến nó thành một công cụ cơ bản của mật mã hiện đại.

Hàm băm mật mã

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

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 đảm bảo các tính chất 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 kết quả. khả năng tính toán nhanh chóng tổ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 ngay nào, dù là nhỏ nhất trên dữ liệu đều sẽ gây ra ra sự thay đổi ngay cực lớn trên tổng giá trị băm và tạo ra tổng giá trị băm hoàn toàn khác, và không hề có LH gì với tổng giá trị băm cũ (hiệu ứng tuyết lở).

Tính chất của hàm băm mật mã

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

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

  • Tính kháng tiền ảnh thứ nhất. Tính chất bắt buộc rằng với một tổng 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 tổng giá trị như vậy được gọi là va chạm của hàm băm mật mã.

Tính chất 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ừ độ dài bất kỳ về độ dài cố định vì thế, số lượng phần tử của D thường lớn hơn rất nhiều so với số lượng phần tử trong 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 đầu vào cho trước thường tồn tại 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ố, khả năng cả hai bạn có cùng ngày sinh là rất thấp. Trên thực tế, giả sử rằng tất cả các ngày trong năm đều khả năng sinh nhật như nhau, khả năng có một người khác cùng có ngày sinh như bạn là 1/365 tức là chỉ xấp xỉ 0,27%. Rất thấp!

mặc khác, nếu bạn tập hợp 20-30 người trong một phòng, tỷ lệ hai người có cùng một ngày sinh nhật tăng lên gấp bội. Trên thực tế, có cơ hội để 2 người bất kỳ chia sẻ cùng một ngày sinh nhật trong trường hợp này là 50-50 !

Tính chất của hàm băm mật mã

Tại sao điều này xảy ra? Đó là bởi vì một quy tắc đơn giản trong xác suất. Giả sử bạn có N khả năng khác nhau xảy ra, thì bạn cần căn bậc hai của N đối tượng ngẫu nhiên để chúng có 50% khả năng xảy ra va chạm.

vì thế, áp dụng lý thuyết này cho ngày sinh nhật, bạn có 365 khả năng ngày sinh nhật khác nhau, vì thế bạn chỉ cần √365, tức là ~ 23 người, những người được chọn ngẫu nhiên thì 50% cơ hội 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 thước đầu ra là 128 bit, tức là có tổng thể $2 ^ 128$ khả năng khác nhau. thì với nghịch lý sinh nhật, bạn có 50% cơ hội phá vỡ khả năng kháng va chạm của hàm băm với √(2^128) = 2^64 lần thử.

Tham khảo thêm: Tìm hiểu convention là gì | Sen Tây Hồ

vì thế, bạn khả năng thấy rằng, việc phá vỡ tính chất kháng va chạm của hàm băm sẽ đơn giản hơn rất nhiều so với việc phá vỡ tính chất kháng tiền ảnh. Không có hàm băm nào là không va chạm, mặc khác, nếu ta chọn được hàm h(x) thích hợp đáp ứng 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 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 bao gồm tính chất kháng tiền ảnh thứ nhất. Trên thực tế, hàm băm chỉ khả năng kháng tiền ảnh thứ hai được coi là không an toàn và vì thế không được khuyến nghị cho các ứng dụng thực tế.

Tính chất của hàm băm mật mã

Các tính chất trên đảm bảo rằng kẻ tấn công không thể thay thế hoặc sửa đổi dữ liệu đầu vào mà không làm thay đổi ngay tổng giá trị băm. vì thế, nếu hai chuỗi đầu vào có cùng một tổng giá trị băm, ta khả năng 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 chặn kẻ tấn công tạo ra được một tài liệu khác có cùng tổng giá trị băm như tài liệu gốc. Tính kháng va chạm ngăn chặn kẻ tấn công tạo ra hai tài liệu khác nhau mà có cùng một tổng giá trị băm.

Một hàm băm thỏa mãn các tiêu chí trên khả năng vẫn có các tính chất không mong muốn. Ví dụ, các hàm băm thường nhật hiện nay khả năng dễ bị các tấn công mở rộng độ 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ẻ tấn công khả năng tính h (m || m’), trong đó || ký hiệu phép nối xâu (concatenation). Tính chất này khả năng được dùng để phá các phương pháp xác thực đơn giản dựa vào hashing. Để khắc phục điều này, HMAC đã được xây dựng và đã giải quyết được vấn đề 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ỳ khác, được thiết kế để đáp ứng các bắt buộc yếu hơn nhiều và thường không phù hợp với các ứng dụng như các hàm băm mật mã. Ví dụ: CRC được dùng xác minh tính toàn vẹn của thông điệp trong tiêu chuẩn mã hóa WEP, nhưng khả năng bị đơn giản tấn công bằng các tấ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 chúng ta nhắc đến một vài thuật toán được dùng nhiều.

hash ham bam la gi va cach thuc hoat dong nhu the nao

Hàm băm MD5

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

SHA-1

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

RIPEMD-160

RIPEMD (viết tắt của RACE Integrity Primitives Evaluation Message Digest) là họ hàm băm được phát triển tại Leuven, Bỉ, bởi ba nhà mật mã học Hans Dobbertin, Antoon Bosselaers và Bart Preneel của nhóm thống kê COSIC thuộc ĐH Katholieke Universiteit Leuven. RIPEMD lần đầu tiên được công bố vào năm 1996 dựa trên các nguyên tắc thiết kế được dùng trong MD4. RIPEMD-160 tạo ra một bản tóm tắt gồm 160 bit (20 byte). RIPEMD có hiệu năng tương tự như SHA-1 nhưng ít được thường nhật 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 tổng 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 khả năng thích ứng: theo thời gian, số lần lặp khả năng được tăng lên để làm cho nó chậm hơn, vì thế nó vẫn 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 thiết kế bởi Vincent Rijmen và Paulo S. L. M. Barreto. Nó được mô tả đầu tiên vào năm 2000. Whirlpool dựa trên phiên bản sửa đổi một cách đáng kể của Tiêu chuẩn mã hóa nâng cao (AES). Whirlpool tạo ra một bản tóm tắt có độ dài 512 bit (64 byte) của dữ liệu.

SHA-2

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

SHA-2 về thực chất bao gồm hai thuật toán băm: SHA-256 và SHA-512. SHA-224 là một biến thể của SHA-256 với các tổ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ất cả các biến thể của SHA-512. SHA-512 an toàn hơn SHA-256 và thường nhanh hơn SHA-256 trên các máy 64 bit như AMD64.

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

SHA-3

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

BLAKE2

Một phiên bản 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 phát triển bởi Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn và Christian Winnerlein với mục tiêu thay thế các thuật toán băm thường nhật như MD5 và SHA-1. Khi chạy trên các kiến ​​trúc 64 bit x64 và ARM, BLAKE2b cho 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 dùng trong nhiều giao thức bao gồm hàm băm mật khẩu Argon2 do kết quả cao mà nó đem lại cho các dòng CPU hiện đại. Do BLAKE cũng là ứng cử viên cho tiêu chuẩn SHA-3, vì thế, BLAKE và BLAKE2 đều có các kích thước đầu ra giống như SHA-3 và khả năng tùy chọn khi dùng trong thực tế.

Ứ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 thực tế. Dưới đây là một vài ứng dụng thường nhật nhất của nó:

Hashing trong định danh tệp hoặc dữ liệu

tổng giá trị băm cũng khả năng được dùng như một phương tiện để định danh tập tin một cách đáng tin cậy. một vài hệ thống quản lý mã nguồn, như Git, Mercurial hay Monotone, dùng tổ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.

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

mặc khác, so với các hàm băm tiêu chuẩn, các hàm băm mật mã có chiều hướng phức tạp và đòi hỏi nhiều tài nguyên tính toán hơn nhiều. vì thế, chúng có chiều hướng được dùng trong các trường hợp khi người dùng cần tự bảo vệ tính an toàn cho thông điệp trước các khả năng bị sửa đổi, hay giả mạo như các ứ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 minh tính toàn vẹn của thông điệp.Chúng ta khá quen thuộc với các ứng dụng này. Khi download một phần mềm hoặc tệp tin nào đó trên một vài trang web, ta được cung cấp kèm theo các mã băm MD5 hoặc SHA1. Khi đó sau khi tải về tập tin, chúng ta khả năng tính và so sánh tổng giá trị băm của tệp tải về với tổng giá trị băm được cung cấp trên web, nếu có sự sai khác tức là tệp tin chúng ta tải về đã bị sửa đổi.

Hashing trong tạo và xác nhận chữ ký

Xem thêm: Xe nâng tiếng anh là gì? Tên những loại xe nâng trong Tiếng Anh

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

Ứng dụng của Hash

Hashing trong xác minh mật khẩu

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

Ứng dụng của Hash

Các hàm băm mật mã tiêu chuẩn được thiết kế để được tính toán nhanh chóng và vì thế, khả năng thử dò đoán mật khẩu với tốc độ cực cao. Các đơn vị xử lý đồ họa (GPU) thông thường khả năng thử đoán hàng tỷ mật khẩu khả năng mỗi giây. vì thế, để tăng tính án toàn, các hàm băm mật khẩu thực hiện việc mở rộng khóa – chẳng hạn như PBKDF2, scrypt hoặc Argon2 – thường dùng các lệnh gọi lặp lại của hàm băm mật mã để tăng thời gian (và trong một vài trường hợp bộ nhớ máy tính) rất cần thiết để thực hiện các cuộc tấn công vét cạn lên tổng giá trị băm của mật khẩu được lưu trữ. Việc hashing mật khẩu bắt buộc dùng một tổng giá trị muối (salt) ngẫu nhiên, khả năng được lưu trữ với hàm băm mật khẩu. tổng 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ủ không thể lưu trữ các bảng mật khẩu và các tổng giá trị băm được tính toán trước.

Đầu ra của hàm băm mật khẩu cũng khả năng được dùng làm các khóa mật mã. vì thế, các hàm băm mật khẩu còn được gọi là các 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 công việc (Proof of Work) là một biện pháp kinh tế để ngăn chặn các cuộc tấn công từ chối dịch vụ và các hành vi lạm dụng dịch vụ khác như spam bằng cách bắt buộc người dùng dịch vụ thực hiện một vài công việc nhất định, thường đòi hỏi nhiều thời gian xử lý. Bằng chứng công việc cần đảm bảo tính bất đối xứng tức là: công việc 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 đối với nhà cung cấp dịch vụ.

Hệ thống Proof of Work đầu tiên được đề xuất là Hashcash. Hashcash dùng quy trình hashing như một phần để chứng minh rằng công việc đã được thực hiện nhằm cho phép gửi email đi, tránh các email spam. Công việc trung bình mà người dùng cần thực hiện để tìm thư hợp lệ cấp số nhân với số bit 0 rất cần thiết trong tổng giá trị băm, trong khi người nhận khả năng xác minh tính hợp lệ của email chỉ bằng cách thực hiện một phép tính băm duy nhất. Trong Hashcash, người gửi được bắt buộc tạo một tiêu đề có tổng giá trị băm SHA-1 160 bit trong đó có 20 bit đầu tiên là bit 0. Khi đó, người gửi trung bình sẽ phải thử khoảng lần để tìm ra tiêu đề hợp lệ trước khi gửi đi.

Ứng dụng của Hash

Hệ thống này được thừa kế trong Bitcoin, nền tảng blockchain đầu tiên. Việc tính các tổ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 bắt buộc tìm một tổng giá trị sao cho sự kết hợp của nó với thông điệp gốc (tập hợp các giao dịch) có tổng giá trị băm bắt đầu bằng một vài bit không (xác định bởi độ khó của việc khai thác và được điều chỉnh nhiều bằng phần mềm).

Hashing trong blockchain

một vài hàm băm mật mã đang được dùng rộng rãi như đã kể ở trên:

  • SHA 256 hiện đang được dùng bởi Bitcoin.
  • Keccak-256 hiện đang được Ethereum dùng.

Ứng dụng của Hash

Các hàm băm này không những được dùng để tạo ra bằng chứng công việc (Proof of Work) mà còn để làm định danh cho các khối, hoặc kết hợp với mật mã khóa công khai để 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 khả năng được dùng để xây dựng các thành phần nguyên thuỷ mật mã khác.

Đầu tiên, hàm băm khả năng được dùng để xây dựng các mã xác thực 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 khả năng được dùng để xây dựng các hệ mật mã khối. Các cấu trúc Luby-Rackoff được xây dựng dùng các hàm băm và dựa trên độ an toàn của hàm băm.

Trình tạo số giả ngẫu nhiên (PRNG) cũng khả năng được xây dựng dựa trên các hàm băm. Điều này được thực hiện bằng cách kết hợp một mầm ngẫu nhiên (bí mật) với một bộ đếm và tiến hành băm nó.

một vài hàm băm, chẳng hạn như Skein, Keccak và RadioGatún tạo ra một luồng dài tùy ý và khả năng được dùng trong các 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 cầu được hình thành bằng cách kết nối các khối dữ liệu giao dịch riêng lẻ với nhau. Blockchain chỉ chứa các giao dịch được xác thực, giúp ngăn chặn các giao dịch gian lận và chi tiêu gấp đôi tiền tệ. quy trình xác nhận dựa trên dữ liệu được mã hóa bằng cách dùng băm thuật toán. tổng giá trị được mã hóa kết quả là một chuỗi các số và chữ cái không giống với dữ liệu gốc và được gọi là hàm băm. Khai thác tiền điện tử liên quan đến việc làm việc với hàm băm này.

Băm bắt buộc xử lý dữ liệu từ một khối thông qua hàm toán học, kéo theo kết quả đầu ra có độ dài cố định. 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 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 dùng cùng một đầu vào; khả năng tạo ra một đầu vào băm kết quả; làm cho việc xác định đầu vào điều kiện (kéo theo khai thác); và thực hiện các thay đổi ngay nhỏ đối với kết quả đầu vào trong hàm băm rất khác nhau.

Việc xử lý các hàm băm rất cần thiết để mã hóa các khối mới đòi hỏi sức mạnh xử lý một cách đáng kể của máy tính, khả năng tốn kém. Để lôi kéo các cá nhân và công ty, được gọi là người khai thác, đầu tư vào công nghệ rất cần thiết, các mạng tiền điện tử thưởng cho họ cả token tiền điện tử mới và phí giao dịch. Công cụ khai thác chỉ được bù nếu chúng là người đầu tiên tạo ra hàm băm đáp ứng các bắt buộc được đặt ra trong hàm băm đích.

Giải quyết hàm băm về cơ bản là giải quyết một vấn đề toán học phức tạp và bắt đầu với dữ liệu có sẵn trong tiêu đề khối. Mỗi tiêu đề khối chứa một vài phiên bản, dấu thời gian, hàm băm được 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 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 mục tiêu, thì nó được chấp nhận 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 bắt buộc người khai thác xác định chuỗi nào sẽ dùng làm chuỗi không, chính nó bắt buộc một vài lượng một cách đáng kể thử và sai. Điều này là do nonce là một chuỗi ngẫu nhiên. Rất khó khả năng một người khai thác sẽ thành công với lần đầu tiên chính xác trong lần thử đầu tiên, có nghĩa là người khai thác khả năng kiểm tra một vài lượng lớn các tùy chọn nonce trước khi thực hiện đúng. Độ khó càng lớn – thước đo mức độ khó để tạo ra một hàm băm đáp ứng bắt buộc của hàm băm mục tiêu – càng mất nhiều thời gian để tạo ra một giải pháp.

Xem thêm: Tổng hợp “Bổ sung” trong tiếng Anh: Định nghĩa, ví dụ | Sen Tây Hồ

FTXCẢNH BÁO: Đầu tư vào các danh mục tài chính tiềm ẩn rất nhiều rủi ro mà khả năng không phù hợp với một vài nhà đầu tư. vì thế hãy cân nhắc kỹ lưỡng và làm chủ bản thân trước khi đưa ra bất kỳ quyết định nào cấu thành từ những nội dung tham khảo tại sentayho.com.vn.

Bạn thấy bài viết thế nào?

Các câu hỏi về Hash (hàm băm) là gì và cách thức vận hành như thế nào?

Team Sổ Tay Thông Thái mà chi tiết là Mỹ Chi đã biên soạn bài viết dựa trên tư liệu sẵn có và kiến thức từ Internet. Dĩ nhiên tụi mình biết có nhiều câu hỏi và nội dung chưa thỏa mãn được bắt buộc của các bạn.

Thế nhưng với tinh thần tiếp thu và nâng cao hơn, Mình luôn đón nhận tất cả các ý kiến khen chê từ các bạn & Quý đọc giả cho bài viêt Hash (hàm băm) là gì và cách thức vận hành như thế nào?

Nếu có bắt kỳ câu hỏi thắc mắt nào vê Hash (hàm băm) là gì và cách thức vận hành như thế nào? hãy cho chúng mình biết nha, mõi thắt mắt hay góp ý của các bạn sẽ giúp mình nâng cao hơn hơn trong các bài sau nha <3 Chốt lại nhen <3 Bài viết Hash (hàm băm) là gì và cách thức vận hành như thế nào? ! được mình và team xem xét cũng như tổng hợp từ nhiều nguồn. Nếu thấy bài viết Hash (hàm băm) là gì và cách thức vận hành như thế nào? Cực hay ! Hay thì hãy ủng hộ team Like hoặc share. Nếu thấy bài viết Hash (hàm băm) là gì và cách thức vận hành như thế nào? rât hay ! chưa hay, hoặc cần bổ sung. Bạn góp ý giúp mình nha!!

Các Hình Ảnh Về Hash (hàm băm) là gì và cách thức vận hành như thế nào?

Hash (hàm băm) là gì và cách thức hoạt động như thế nào?

Các từ khóa tìm kiếm cho bài viết #Hash #hàm #băm #là #gì #và #cách #thức #hoạt #động #như #thế #nào

Xem thêm dữ liệu, về Hash (hàm băm) là gì và cách thức vận hành như thế nào? tại WikiPedia

Bạn nên tham khảo nội dung chi tiết về Hash (hàm băm) là gì và cách thức vận hành như thế nào? từ trang Wikipedia.◄

Tham Gia Cộng Đồng Tại

💝 Nguồn Tin tại: https://sotaythongthai.vn/

💝 Xem Thêm Giải Đáp Thắc Mắt tại : https://mangraovat.edu.vn/hoi-dap/

Related Posts

About The Author