Hashing là gì?

Trước khi đi sâu vào chủ đề khai thác Bitcoin (Bitcoin mining), chúng ta cần đi một vòng ngoặt ngắn và học về một khái niệm nền tảng của tiền mã hóa.

Để thực sự hiểu Bitcoin và các tiền mã hóa khác hoạt động như thế nào, điều rất quan trọng là phải hiểu trước khái niệm “hashing” (băm).

Khi bạn thấy từ “hash”, một số người có thể nghĩ đến hash browns – món ăn sáng phổ biến của Mỹ.

Trong bài học này, tôi sẽ nói về một loại hash khác!

Đây là một khái niệm kỹ thuật, nhưng bạn phải làm quen với nó nên tôi sẽ giải thích thật đơn giản và dễ hiểu cho bạn.

Việc nắm được khái niệm hashing cũng cần thiết để hiểu cách khai thác Bitcoin hoạt động (đó là hướng dẫn tiếp theo), vì vậy xin đừng bỏ qua các bài học này. 👁️

Hashing là gì?

Hashing là một phương pháp mã hóa (cryptography) chuyển đổi bất kỳ dạng dữ liệu nào thành một chuỗi văn bản duy nhất có độ dài cố định.

Mã hóa (cryptography) là việc thực hành và nghiên cứu các kỹ thuật để giao tiếp an toàn khỏi những người quan sát bên ngoài. Trong kỷ nguyên internet, mã hóa được dùng để bảo vệ thông tin máy tính hoặc “dữ liệu”.

Nếu chưa rõ ràng, thì “crypto” trong tiền mã hóa (cryptocurrencies) chính là viết tắt của cryptography (mã hóa).

Hashing là một phần nền tảng của mã hóa. Và đóng vai trò rất lớn đằng sau “crypto” trong tiền mã hóa.

Nói đơn giản, hashing nghĩa là đưa văn bản có BẤT KỲ độ dài nào vào một hàm băm (hash function), hàm này sẽ tạo ra kết quả có ĐỘ DÀI CỐ ĐỊNH.

ham bam

Bất kỳ dữ liệu nào cũng có thể được “băm” (hashed), bất kể kích thước, loại hay độ dài của nó.

Hash được tạo ra luôn có cùng một độ dài.

Trong các ví dụ dưới đây, sử dụng hàm băm SHA-1, dù độ dài của “input” có khác nhau, “output” vẫn luôn là 40 ký tự.

vi du bam hello
vi du bam babypip
vi du bam i

Dưới đây là so sánh nhanh của ba ví dụ:

THÔNG TIN ĐẦU VÀOBĂM
Hellof7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
BabyPips.com8c8780d0b70c5ef42a534846cc042629cf07a440
Ica73ab65568cd125c2d27a22bbd9e863c10b675d

Hãy chú ý rằng dù “input” khác nhau, cả ba hash vẫn đều có độ dài 40 ký tự.

Trong ví dụ cụ thể này, độ dài cố định là 40 ký tự, được quyết định bởi hàm băm cụ thể được sử dụng (“SHA-1”), sẽ được giải thích sau.

Bây giờ, bạn chỉ cần biết rằng các hàm băm khác có thể tạo ra độ dài cố định khác nhau. Hầu hết có độ dài cố định dài hơn 40 ký tự.

Hash hoạt động như một dấu vân tay kỹ thuật số.

Một dữ liệu duy nhất sẽ luôn tạo ra cùng một hash.

Ví dụ, nếu bạn chạy từ “Hello” một triệu lần qua hàm băm, hash ở trên là thứ sẽ xuất hiện một triệu lần.

Với từ “Hello”, hash SHA-1 của nó sẽ luôn là:

f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0

Và chỉ “Hello” mới tạo ra hash đó.

Bất kỳ thay đổi nào với “Hello”, dù chỉ là đổi thành “hello”, hàm băm cũng sẽ tạo ra một hash hoàn toàn khác.

Đây là lý do hash được gọi là “dấu vân tay kỹ thuật số”.

Giống như dấu vân tay là duy nhất với bạn, hash cũng là duy nhất với một input dữ liệu cụ thể.

dau van tay

Hash không thể đảo ngược.

Input đưa vào hàm băm được gọi là “preimage”. Nhưng để đơn giản, tôi vẫn dùng “input”.

Output của hàm băm được gọi là “hash value” hoặc “digest”, hay đơn giản là “hash”.

Hàm băm được thiết kế để hoạt động theo kiểu một chiều.

vi du ham bam khong the dao nguoc

Vì hàm băm là hàm một chiều, output (hash) không thể dùng để tiết lộ input (preimage).

Điều này nghĩa là nếu bạn chỉ thấy hash, bạn KHÔNG THỂ giải mã dữ liệu gốc (preimage) mà hash đại diện.

Các hàm băm tạo ra hash không thể đảo ngược.

Không thể đảo ngược nghĩa là nếu bạn chỉ có hash, bạn không thể dùng nó để tìm ra dữ liệu gốc là gì. Điều này cho phép dữ liệu gốc vẫn được giữ an toàn và không bị biết đến.

Hàm băm là gì?

Hàm băm là một phép toán học chuyển đổi dữ liệu đầu vào có độ dài tùy ý thành output có độ dài cố định, được thực thi bằng một thuật toán nhất định.

Thuật toán chỉ là một tập hợp hướng dẫn từng bước để thực hiện tính toán, được thực hiện bởi một chương trình phần mềm.

Không quan trọng input là một chữ cái, một từ, một câu hoàn chỉnh, một trang sách, hay cả một cuốn sách. Đó là phần “tùy ý”.

Mỗi input sẽ tạo ra một output duy nhất được biểu diễn dưới dạng chuỗi alphanumeric có độ dài cố định.

Alphanumeric nghĩa là thứ gì đó gồm cả chữ cái và số.

Một hàm băm hữu ích sẽ che giấu mọi manh mối về input có thể trông như thế nào.

Ví dụ, phải không thể xác định input dài hay ngắn, hay chứa số hay chữ. Ngoài ra, chỉ thay đổi một ký tự trong input cũng phải dẫn đến output hoàn toàn khác biệt.

Các hàm băm phổ biến

Tất cả các hàm băm đều hoạt động tương tự nhau. Bạn đưa dữ liệu vào, hàm băm “xáo trộn” dữ liệu và xuất ra hash.

Các hàm băm phổ biến bao gồm:

  • MD-5: Message Digest 5 (MD5) là hàm băm phổ biến. Trong quá khứ, nó được coi là an toàn, nhưng ngày nay hacker đã tìm ra cách giải mã thuật toán và có thể làm trong vài giây.
  • SHA: Secure Hash Algorithm (SHA) là một loại hàm băm khác. Có nhiều biến thể của SHA được chia thành bốn họ: SHA-0, SHA-1, SHA-2 và SHA-3. Nói chung, số càng cao thì phiên bản càng mới và thuật toán càng an toàn.

Đối với mục đích của chúng ta, hàm băm duy nhất bạn cần biết ngay bây giờ là Secure Hash Algorithm (SHA). Cụ thể hơn là họ SHA-2, vì nó chứa một thành viên đặc biệt tên là SHA-256.

SHA-256 là hàm băm chuyển đổi một chuỗi văn bản thành một chuỗi khác luôn có cùng độ dài: 64 ký tự alphanumeric. Điều này tương đương với 256 bit, là nguồn gốc của “256” trong tên của nó.

Nó đặc biệt vì đây là hàm băm được sử dụng trong nhiều phần của hệ thống Bitcoin, mà bạn sẽ học ở các bài sau. Hiện tại, điều quan trọng là bạn biết SHA-256 là một loại hàm băm và là hàm được Bitcoin sử dụng.

Dù input là một trang sách Harry Potter hay toàn bộ series Harry Potter, output của hàm băm SHA-256 sẽ luôn có CÙNG ĐỘ DÀI, hiển thị dưới dạng 64 ký tự alphanumeric.

Bây giờ hãy cùng xem hashing hoạt động như thế nào trong crypto.

Nguồn: https://www.babypips.com/crypto/learn/what-is-hashing