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ử. Show Ý nghĩa của Hash trong BlockchainXươ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). 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)Coin5687f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1coin568e58605c14a76ff98679322cca0eae7b3c4e08936Cò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)Coin568f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191coin56859bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2Như 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ămMột hàm băm đạt được độ bảo mật cao cần có đầy đủ 6 tính chất như sau:
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ếnMộ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.
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 HashMột hàm băm thông thường được ứng dụng trong nhiều lĩnh vực như:
Ứ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ư:
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.
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 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ậnNhì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. Đ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. |