Hiểu thuật toán băm an toàn (SHA-256)

Thuật toán băm an toàn (SHA-256)

Trong các giao dịch liên quan đến tiền điện tử như bitcoin, các giao dịch được lấy làm đầu vào và chạy thông qua thuật toán băm an toàn (“SHA”). SHA bao gồm bốn thuật toán SHA:SHA-0, SHA-1, SHA-2 và SHA-3.

SHA-1 là hàm băm SHA hiện tại được sử dụng rộng rãi nhất, được sử dụng trong nhiều ứng dụng và giao thức, bao gồm bảo mật Lớp cổng bảo mật (SSL).

SHA-2 là loại phổ biến nhất khác, bao gồm SHA-224, SHA-256, SHA-384 và SHA-512, tùy thuộc vào số bit trong giá trị băm.

Ví dụ:bitcoin sử dụng SHA-256, mang lại cho nó giá trị băm có độ dài cố định. Bất kể kích thước hoặc độ dài của đầu vào, đầu ra sẽ luôn có độ dài cố định 256 bit. Điều này là để bạn không cần phải nhớ dữ liệu đầu vào, dữ liệu này có thể rất lớn--tất cả những gì bạn phải làm là ghi nhớ hàm băm và theo dõi. Để biết thêm thông tin về hàm SHA, vui lòng nhấp vào đây.

Hàm băm mật mã

Tùy thuộc vào đặc điểm mật mã của nó, hàm băm có thể được áp dụng theo hai cách khác nhau:lưu trữ mật khẩu và tính toàn vẹn dữ liệu.

Lưu trữ mật khẩu

Thay vì lưu trữ mật khẩu ở chế độ mở, tất cả quá trình đăng nhập đều lưu trữ giá trị băm của mật khẩu trong chính tệp đó. Tệp mật khẩu bao gồm một bảng các cặp có dạng (id người dùng, h(P)).

Quá trình này được mô tả trong hình dưới đây:

Trong trường hợp kẻ xâm nhập tìm thấy tệp, họ chỉ có thể nhìn thấy giá trị băm của mật khẩu, ngay cả khi họ truy cập vào chính mật khẩu đó. Họ sẽ không thể đăng nhập bằng hàm băm cũng như không thể lấy được mật khẩu từ giá trị băm, vì hàm băm có đặc tính kháng lại hình ảnh trước.

Tính toàn vẹn dữ liệu

Đây là ứng dụng phổ biến nhất của hàm băm. Nó được sử dụng để tạo tổng kiểm tra trên các tệp dữ liệu, cung cấp sự đảm bảo cho người dùng rằng dữ liệu là chính xác.

Hiểu thuật toán băm an toàn (SHA-256)

Trong hình trên, bạn có thể thấy tính năng kiểm tra tính toàn vẹn hỗ trợ người dùng phát hiện bất kỳ thay đổi nào được thực hiện đối với tệp gốc.

Lưu ý khi kiểm tra tính toàn vẹn dữ liệu là điều này chỉ có giá trị nếu bạn tin rằng tệp trên thực tế là tệp gốc.

Ví dụ:Kẻ xâm nhập xâm nhập và thay vì sửa đổi dữ liệu tệp, chúng thay đổi toàn bộ tệp và tính toán một hàm băm hoàn toàn mới, sau đó gửi nó đến người nhận. Làm sao bạn biết được? Bạn sẽ không.

Vì vậy, việc kiểm tra tính toàn vẹn chỉ hữu ích nếu người dùng chắc chắn về tính nguyên gốc của tệp.

Đặc điểm/Thuộc tính mật mã

Để hàm băm được coi là một công cụ mã hóa “an toàn” và hiệu quả, nó phải có những đặc điểm hoặc thuộc tính nhất định.

Xác định

Theo thuộc tính này, bất kể một cá nhân duyệt một đầu vào cụ thể thông qua hàm băm bao nhiêu lần, bạn sẽ luôn nhận được kết quả tương tự. Điều này giúp bạn dễ dàng theo dõi bất kỳ thông tin đầu vào cụ thể nào.

Tính toán nhanh

Theo thuộc tính này, bất kỳ hàm băm nào cũng cần nhanh chóng trả về giá trị băm của đầu vào.

Khả năng chống lại hình ảnh trước

Thuộc tính “kháng trước hình ảnh” có nghĩa là sẽ khó tính toán để đảo ngược hàm băm.

Ví dụ:Nếu hàm băm (h) tạo ra giá trị băm (z), thì sẽ rất khó để tìm thấy bất kỳ giá trị đầu vào (x) nào băm thành (z). Liên kết trong chuỗi rất khó tìm thấy. Điều này đảm bảo chống lại bất kỳ hacker tiềm năng nào chỉ có giá trị băm và đang cố gắng tìm đầu vào (liên kết trong chuỗi).

Khả năng kháng ảnh trước thứ hai

Thuộc tính này có nghĩa là khó tìm được đầu vào khác có cùng hàm băm.

Ví dụ:Nếu hàm băm (h) cho đầu vào (x) tạo ra giá trị băm h(x), thì sẽ khó tìm thấy bất kỳ giá trị đầu vào (y) nào khác sao cho h(y) =h(x).

Điều này bảo vệ chống lại bất kỳ mối đe dọa nào có giá trị đầu vào và hàm băm của nó, đồng thời muốn thay thế một giá trị h(x) khác làm giá trị hợp pháp thay cho giá trị đầu vào ban đầu đó.

Khả năng chống va chạm

Thuộc tính này gây khó khăn cho việc tìm thấy hai đầu vào khác nhau có độ dài bất kỳ do cùng một hàm băm.

Ví dụ:Đối với hàm băm h, sẽ khó tìm được hai đầu ra khác nhau, x và y mà hacker có thể kết hợp h(x) =h(y).

Mặc dù về cơ bản, các hàm băm nén các hàm có độ dài băm cố định, nhưng hàm băm không thể không xảy ra xung đột. Bằng cách có đặc tính “không va chạm”, chỉ khiến kẻ tấn công gặp khó khăn hơn trong việc tìm thấy hai giá trị đầu vào có cùng hàm băm.

Thân thiện với câu đố

Đối với mọi đầu ra, “y”, nếu “K” được chọn từ phân phối có “entropy tối thiểu cao”, thì rất khó tìm được đầu vào “x” sao cho H(k|x) =Y.

“Entropy tối thiểu cao” có nghĩa là giá trị được chọn được phân bổ rộng rãi trên một phạm vi giá trị đến mức xác suất chọn giá trị đúng là rất khó xảy ra.

Bạn còn nhớ trò chơi “chọn số từ 1 đến 100 không?” Đó là entropy tối thiểu cao.

| có nghĩa là tham gia--nói cách khác, k|x có nghĩa là kx.

Cấu trúc dữ liệu

Khi nói về các thuộc tính cấu trúc dữ liệu, chúng ta đề cập đến con trỏ và danh sách liên kết.

Con trỏ là biến lưu trữ địa chỉ của biến khác trong lập trình, trỏ tới vị trí của biến khác.

Danh sách liên kết là một chuỗi các khối, mỗi khối chứa một tập hợp dữ liệu được liên kết với khối tiếp theo thông qua một con trỏ.

Hiểu thuật toán băm an toàn (SHA-256)

Bên trong mỗi khối, bạn sẽ thấy một con trỏ chứa địa chỉ của khối tiếp theo. Khối đầu tiên mà bạn nhìn thấy con trỏ được gọi là Khối Genesis

Hiểu thuật toán băm an toàn (SHA-256)

Cây Merkle

Khi nói về các thuộc tính cấu trúc dữ liệu, chúng ta đề cập đến con trỏ và danh sách liên kết.

Con trỏ là biến lưu trữ địa chỉ của biến khác trong lập trình, trỏ đến vị trí của biến khác.

Danh sách liên kết là một chuỗi các khối, mỗi khối chứa một tập hợp dữ liệu được liên kết với khối tiếp theo thông qua một con trỏ.

Hiểu thuật toán băm an toàn (SHA-256)

Bất cứ khi nào nhìn vào Cây Merkle, tốt nhất nên bắt đầu từ phần dưới cùng với các nút lá (L1, L2, L3, L4). Di chuyển lên trên, bạn sẽ thấy các nút không có lá, đóng vai trò là hàm băm của các giá trị (hash(L1)), (hash(L2)), (hash(L3)) và (hash(L4)) của các nút con của chúng (Hash 0-0, 0-1, 1-0, 1-1).

“Nút con” là các nút đưa vào hàm băm. Đối với Hash 0, các nút con là Hash 0-0 và Hash 0-1. Đối với Hash 1, các nút con là Hash 1-0 và Hash 1-1.

Hiểu thuật toán băm an toàn (SHA-256)

Di chuyển biểu đồ lên cấp cao nhất, được gắn nhãn “Top Hash”, đây là nút gốc.

Vậy bạn đang thắc mắc mục đích của Merkle Tree là gì? Việc sắp xếp qua bất kỳ khối cụ thể nào không phải là một nhiệm vụ dễ dàng, tuy nhiên, khi sử dụng cây Merkle, bạn sẽ tiết kiệm thời gian tìm kiếm một giao dịch cụ thể để xác định xem nó có thuộc khối cụ thể đó hay không.

Khi bạn đang xem một giao dịch, bạn muốn đảm bảo rằng dữ liệu chứa trong các khối thích hợp. Bằng cách sử dụng cây Merkle, bạn có thể nhanh chóng theo dõi dữ liệu bằng cách lần theo dấu vết băm.

Hiểu thuật toán băm an toàn (SHA-256)

Áp dụng băm vào quy trình khai thác

Khi một khối mới xuất hiện, toàn bộ nội dung của các khối đó sẽ được băm. Nếu hàm băm nhỏ hơn mục tiêu độ khó thì nó sẽ được thêm vào chuỗi khối để cộng đồng xác nhận.

Rất hiếm khi bạn có sẵn một khối mới để thêm vào chuỗi, cứ như vậy. Đó là lý do tại sao nonce, một chuỗi dữ liệu tùy ý được thêm vào hàm băm của khối. Sau khi thêm vào, chuỗi sẽ được băm lại và so sánh với mức độ khó.

Nếu nó cao hơn mức độ khó, nonce sẽ được thay đổi và nó tiếp tục lặp đi lặp lại cho đến khi đáp ứng được yêu cầu về độ khó. Chỉ khi những yêu cầu đó được đáp ứng, khối cuối cùng mới được thêm vào blockchain.

Tỷ lệ băm

Tốc độ băm mô tả tốc độ băm diễn ra trong quá trình khai thác.

Tỷ lệ băm cao có nghĩa là có nhiều bên tham gia vào quá trình khai thác hơn, mang lại hoạt động trơn tru. Tuy nhiên, nếu tốc độ băm quá nhanh thì độ khó sẽ tăng lên.

Nếu tốc độ băm trở nên quá chậm, mức độ khó sẽ giảm xuống. Ý tưởng là luôn đảm bảo hệ thống chạy trơn tru, vì vậy việc cung cấp mọi phương tiện hoạt động băm chính xác là điều cần thiết.

Vì vậy, tóm lại:

Khi bạn nhận được một khối dữ liệu, hàm băm của nội dung của khối đó sẽ được kết hợp với một chuỗi dữ liệu ngẫu nhiên hoặc ngẫu nhiên.

Chuỗi dữ liệu mới đó (băm + nonce) sau đó được băm lại, so với mức độ khó. Tùy thuộc vào việc nó có đáp ứng các yêu cầu hay không, chuỗi mới sẽ được băm lại hay được thêm vào chuỗi khối.

Sau khi được thêm vào blockchain, cộng đồng sẽ được thông báo

Những người khai thác chịu trách nhiệm cho quá trình này sẽ được thưởng bằng bitcoin.


Thông tin quỹ
  1. Thông tin quỹ
  2. Quỹ đầu tư công
  3. Quỹ đầu tư tư nhân
  4. Quỹ phòng hộ
  5. Quỹ đầu tư
  6. Quỹ chỉ số