Mã Hash la gì

Hash (hàm băm) là một hàm chuyển đổi đầu vào của các chữ cái và số thành đầu ra được mã hóa có độ dài cố định. Băm được tạo bằng thuật toán và rất cần thiết để quản lý blockchain trong tiền điện tử.

Mã Hash la gì

Ý 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 liên kết 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ệ. Quá trình xác nhận dựa trên dữ 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 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 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. Ví dụ, băm từ chữ “Tạp Chí Bitcoin” sẽ tạo ra một đầu ra có cùng độ dài với hàm băm ” Tiger Thông Đẹp Trai“. 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 xử lý các hàm băm cần thiết để mã hóa các khối mới đòi hỏi sức mạnh xử lý đáng kể của máy tính, có thể 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ệ 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 yêu cầu đượ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 số phiên bản, dấu thời gian, 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 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 yêu cầu người khai thác xác định chuỗi nào sẽ sử dụng làm chuỗi không, chính nó yêu cầ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ó 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 có thể kiểm tra một số 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 yêu cầu 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.

Trong khoa học máy tính, hash (hash function) có nghĩa là hàm băm. Đây là thuật ngữ mô tả các thuật toán chuyển đổi giá trị đầu vào có độ dài và nội dung bất kỳ thành đầu ra được mã hóa có độ dài cố định. Vậy cụ thể hash là gì? Hash trong Blockchian có ý nghĩa như thế nào? Mời bạn cùng Coin568 tìm hiểu chi tiết trong bài viết dưới đây!

Hash (hay hash function, hashing) nghĩa là hàm băm, đây là thuật ngữ mô tả các thuật toán băm có khả năng chuyển đổi giá trị đầu vào (input), ví dụ như chữ cái, số hay ký tự có độ dài và nội dung bất kỳ, thành giá trị đầu ra (output) được mã hóa là một xâu ký tự có độ dài cố định.

Đoạn mật mã output từ quá trình hash function cũng được gọi là Hash. Ngoài ra, nó cũng được gọi bằng các tên khác như giá trị băm (hash value), mã băm (hash code), tóm tắt thông điệp (message digest) hoặc chữ ký số (digital fingerprint).

hash la gi

Tìm hiểu Hash là gì?

Giá trị băm có kích thước cố định. Tuy nhiên, chiều dài của mỗi giá trị băm sẽ phụ thuộc vào thuật toán băm sử dụng. Ví dụ: thuật toán băm SHA-1 chỉ tạo ra output 160 bit còn SHA 256 có thể tạo ra các output 256 bit.

Giả sử, khi chạy các từ “Coin568” và “coin568” qua thuật toán băm SHA-1, chúng ta thu được kết quả như sau:

InputOutput (160 bits)Coin5687f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1coin568e58605c14a76ff98679322cca0eae7b3c4e08936

Còn khi chạy các từ trên qua thuật toán băm SHA-256 (thuật toán băm của Bitcoin), chúng ta thu được kết quả như sau:

InputOutput (256 bits)Coin568f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191coin56859bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2

Như vậy có thể thấy được mỗi hàm băm khác nhau sẽ tạo ra giá trị băm khác nhau, tuy nhiên, chiều dài cố định của giá trị băm luôn không đổi. Ngoài ra, chỉ cần một chút thay đổi nhỏ (dù chỉ là sự khác biệt về cách viết hoa chữ cái đầu tiên) ở giá trị đầu vào cũng dẫn đến một giá trị băm hoàn toàn khác.

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

Một hàm băm đạt được độ bảo mật cao cần có đầy đủ 6 tính chất như sau:

  • Chấp nhận rất nhiều dữ liệu truyền vào: Chúng ta có thể hash gần như mọi nội dung kỹ thuật số như chữ số, ký tự, văn bản tài liệu, hình ảnh, bài hát hoặc bất cứ thứ gì.
  • Tính tất định (Deterministic): Một input chỉ ra một output duy nhất và không được trùng lặp với bất kỳ output nào đã tồn tại trước đó. Với một input, dù thực hiện bao nhiêu lần cũng chỉ thu về một kết quả output giống nhau.
  • Tính toán nhanh (Quick Computation): Hash 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.
  • Không thể đảo ngược (Pre-image Resistance): Hash là hàm một chiều, không thể khôi phục được 100% nội dung thông điệp ban đầu. Do đó, bạn không thể đoán được giá trị đầu vào của nó là gì. Giống như việc bạn có một miếng thịt, sau khi bạn băm nhuyễn miếng thịt đó ra thì từ hỗn hợp thịt băm, bạn không thể khôi phục lại miếng thịt ban đầu. Nhờ vào tính chất này mà hash được ứng dụng mạnh mẽ trong việc xác thực dữ liệu.
  • Hiệu ứng lở tuyết (Avalanche effect): Thuật toán băm đảm bảo nếu có bất kỳ thay đổi (dù là nhỏ nhất) trên dữ liệu input đều sẽ gây ra sự thay đổi lớn trên giá trị băm output. Giá trị băm mới này hoàn toàn khác biệt với giá trị băm cũ.
  • Ít xảy ra xung đột (Collision Resistant): Tức là khả năng để các giá trị input khác nhau cho ra cùng một giá trị băm là rất thấp.

tinh chat ham bam

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

Nếu một hash function không hội tụ đầy đủ các tính chất trên sẽ không an toàn và dễ bị hacker tấn công. Mặt khác, các hash hội tụ đầy đủ 6 tính chất trên được gọi hàm băm mật mã (cryptographic hash function).

Các dạng Hash phổ biến

Một số hàm hash phổ biến hiện nay phải kể đến như MD5, SHA, CRC232, RIPEMD, Whirlpool… Hàm SHA (viết tắt của Secure Hash Function) là hash được công bố bởi NIST (National Institute of Standards and Technology), bao gồm 4 thuật toán hash khác nhau là SHA-0, SHA-1, SHA-2 và SHA3.

  • SHA-0 là hash function 160-bit được công bố vào năm 1993.
  • SHA-1 là hash function 160-bit ra đời vào năm 1995, nhằm khắc phục các nhược điểm của SHA-0.
  • SHA-2 được công bố vào năm 2001, bao gồm một số biến thể là SHA-224, SHA-256, SHA-384, SHA-512/224 và SHA-512/256.
  • SHA-3 ra đời năm 2012, sử dụng thuật toán Keccak có hiệu năng và khả năng chống “xung đột” rất tốt.

Năm 2004, các nhà nghiên cứu đã tìm ra điểm yếu của một loạt hàm băm SHA-0, MD5 và RIPEMD-160. Đến năm 2005, các nhà nghiên cứu đã ghi nhận các cuộc tấn công đối với SHA-1.

Dưới đây là một số thuật toán băm phổ biến hiện nay. Các thuật toán xảy ra tình trạng xung đột (Collision) không còn được khuyến khích sử dụng đối với các hệ thống hoặc chức năng yêu cầu tính bảo mật cao.

Kích thước đầu ra (output size)Kích thước trạng thái trong (Internal state size)Kích thước khối (Block size)Độ dài (Length size)Kích thước word (Word size)Xung đột (Collision)HAVAL256/224/192/160/12825610246432CóMD2128384128Không8khả năng lớnMD41281285126432CóMD51281441228888CóPANAMA2568736256No32Có lỗiRIPEMD1281285126432CóRIPEMD-128/256128/256128/2565126432KhôngRIPEMD-160/320160/320160/3205126432KhôngSHA-01601605126432KhôngSHA-11601605126432Có lỗiSHA-256/224256/2242565126432KhôngSHA-512/384512/384512102412864KhôngTiger(2)-192/160/128192/160/1281925126464KhôngVEST-4/8 (hash mode)160/256256/384880/1281KhôngVEST-16/32 (hash mode)320/512512/7688160/2561KhôngWHIRLPOOL5125125122568Không

Ứng dụng của Hash

Một hàm băm thông thường được ứng dụng trong nhiều lĩnh vực như:

  • Là công cụ đắc lực trong việc xử lý thông tin có dung lượng lớn. Bất kể dữ liệu ban đầu có dung lượng lớn bao nhiêu thì sau khi trải qua quá trình băm thì dữ liệu đầu ra đều có kích thước cố định nhỏ gọn.
  • Định danh tệp hoặc dữ liệu (ví dụ như Git, Mercurial…) một cách tin cậy.
  • Hash giúp chúng ta đảm bảo tính toàn vẹn của dữ liệu, thông điệp. Hay nói cách khác là đảm bảo cho dữ liệu không bị thay đổi trong quá trình truyền hay gửi.
  • Sử dụng cho việc tra cứu cơ sở dữ liệu, phân tích dữ liệu và quản lý tệp lớn.
  • Tạo và xác nhận chữ ký.
  • Xác minh mật khẩu.

ung dung hash la gi

Ứng dụng hash trong tạo và xác nhận chữ ký.

Các hàm băm mật mã (cryptographic hash function) sẽ có tính ứng dụng cao trong bảo mật thông tin chẳng hạn như:

  • Xác thực tin nhắn.
  • Lấy dấu vân tay kỹ thuật số. 
  • Trong blockchain, hash function là một phần thiết yếu của quá trình đào coin (mining). Ngoài ra, hashing còn được sử dụng để định danh các khối và tạo nên tính liên tục trước sau giữa các khối. 

Hàm băm mật mã chính là cốt lõi của công nghệ Cryptocurrency. Nhờ hàm băm mật mã mà blockchain có thể đạt được tính toàn vẹn và bảo mật dữ liệu ở mức độ cao. Bên cạnh đó hash function cho phép xử lý dữ liệu đầu vào blockchain nhanh chóng và an toàn.

  • Hàm băm cho phép xử lý dữ liệu an toàn, nhanh chóng

Trong blockchain, hàm băm được sử dụng để tăng cường xử lý giao dịch. Tất cả các dữ liệu giao dịch đầu vào dù có kích thước lớn hay nhỏ đều được chuyển đổi thành một giá trị cố định thông qua thuật toán băm. Giá trị băm sau đó sẽ được lưu trữ dễ dàng trên blockchain và cho phép trích xuất nhanh chóng các thông tin liên quan đến giao dịch bất cứ lúc nào.

Ví dụ, tất cả các giao dịch Bitcoin được xử lý thông qua thuật toán SHA-256, rút ngắn độ dài băm xuống 256 bit. Bất kể quy mô của giao dịch là bao nhiêu, kích thước giao dịch của nó sẽ luôn có độ dài được thiết lập là 256 bit.

Quả thật, nếu không có các hàm băm thì việc lưu trữ các giao dịch có dữ liệu lớn trên blockchain sẽ khó có thể thực hiện được.

  • Hàm băm là xương sống duy trì an ninh mạng

ham hash trong blockchain

Hàm băm trong Blockchain

Các blockchain Proof of Work duy trì an ninh mạng và tạo đồng coin mới thông qua cơ chế đào (mining). Cụ thể hệ thống sẽ sử dụng hash function để tạo ra các bài toán khó. Để giải được bài toán này, bắt buộc thợ đào phải tìm ra được đoạn mã đầu ra (output).

Nhờ tính chất của hàm băm là một người không thể đoán được kết quả đầu ra. Họ chỉ có thể tìm được kết quả bằng cách thử hàng loạt các kết quả đầu vào (input) qua thuật toán hàm băm nhất định rồi so sánh lại với đề bài.

Khi hệ thống xuất hiện giao dịch, các thợ đào muốn nhận phần thưởng khối phải sử dụng máy đào chuyên dụng để cạnh tranh nhau giải bài toán. Người đầu tiên tìm ra đáp án sẽ có trách nhiệm xác minh giao dịch, thêm khối mới vào blockchain và nhận phần thưởng.

Việc tạo ra các bài toán với hash function sẽ giúp ngăn chặn các cuộc tấn công của hacker và đảm bảo thợ đào không thể in được đồng coin mới ra môi trường bên ngoài nếu không chứng minh công việc họ đã thực hiện.

Kết luận

Nhìn chung hash là một trong những phương pháp mã hóa thông tin có độ bảo mật cao có tính ứng dụng cao trong thực tiễn và đặc biệt là trong công nghệ blockchain. Hy vọng thông qua bài viết bạn đã nắm được khái niệm hash là gì, thấy được tầm quan trọng của hàm băm trong blockchain, từ đó có thêm niềm tin vào lĩnh vực đầu tư tiền mã hóa.

dinh van dam

Đinh Văn Đàm tốt nghiệp chuyên ngành công nghệ thông tin trường Đại học Aptech. Hiện tại, Đinh Văn Đàm đang là chuyên gia cố vấn, phụ trách chuyên mục “Thuật Ngữ” tại Coin568. Với 5 năm kinh nghiệm trong lĩnh vực Blockchain cùng sự am hiểu sâu sắc về thị trường tiền điện tử, tôi sẽ đồng hành và chia sẻ với bạn đọc các thuật ngữ crypto từ cơ bản đến nâng cao.