Hashing (băm) là quá trình thay đổi đầu vào gồm các chữ cái và ký tự có kích cỡ thường xuyên thay đổi để tạo đầu ra có kích thước cố định. Tiến trình này được làm bằng phương pháp sử dụng các công thức toán học như các hàm Hashing (băm) ( được làm dưới dạng các thuật toán Hashing (băm) ).
Tuy không phải hàm Hashing (băm) nào cũng dùng mật mã hóa, tuy nhiên cái là hàm Hashing (băm) mật mã hóa thực sự là trọng tâm của tiền điện tử. Nhờ chúng, blockchain và những hệ thống chia nhỏ khác có khả năng có được tính vẹn toàn và bảo mật của thông tin ở độ cao.
Các hàm Hashing (băm) lâu nay cũng các hàm Hashing (băm) mật mã hóa đều mang tính tất định. Tính tất định nghĩa là , miễn sao đầu vào không thay đổi, thì thuật toán Hashing (băm) luôn phơi bày cùng một đầu ra ( còn có tên gọi là thay mặt hoặc Hashing (băm) ).
Bình thường, các thuật toán Hashing (băm) của tiền điện tử được xây dựng như các hàm Hashing (băm) một chiều, cũng có nghĩa là chúng chẳng thể thay đổi trở lại dễ dàng mà không phải tốn nhiều thời gian toan tính và tài nguyên. Nói cách khác , có khả năng thuận lợi tạo đúc rút đầu ra từ dữ liệu đầu vào , tuy nhiên chẳng thể thay đổi theo chiều ngược lại ( tìm ra được dữ liệu đầu vào từ độc nhất đúc rút đầu ra ). Nói chung , việc tìm thấy được dữ liệu đầu vào càng túng bấn, thì tính bảo mật của thuật toán Hashing (băm) đó càng cao.
Hàm Hashing (băm) hoạt động ra sao?
Các hàm Hashing (băm) sự khác nhau sẽ định hình nên các thành quả đầu ra có kích cỡ không giống nhau, tuy nhiên kích cỡ của các đúc rút đầu ra có khả năng nhận được luôn bất di bất dịch, không thay đổi. Chẳng hạn, thuật toán sha-256 chỉ có thể tạo nên các đúc rút đầu ra có kích cỡ 256 bit, trong khi đó thuật toán sha-1 sẽ luôn làm nên một hệ quả thay mặt có kích cỡ 160-bit.
Để minh họa, hãy chạy các từ Binance và binance qua thuật toán Hashing (băm) sha-256 (thuật toán được ứng dụng trong bitcoin).
https://emn178.github.io/online-tools/sha256.html
SHA-256 | |
Đầu vào | Đầu vào (256 bit) |
Binance | f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191 |
binance | 59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2 |
Có thể thấy một đổi khác nhỏ ( viết hoa ký tự trước hết ) mang tới một trị giá Hashing (băm) triệt để khác. Tuy vậy, do mọi người đang dùng sha-256, các sự việc đầu ra luôn có kích cỡ bất di bất dịch là 256-bit ( hoặc 64 ký tự ) – bất kể kích cỡ dữ liệu đầu vào là bao nhiêu. Hai sự việc đầu ra này vẫn để nguyên bất kể mọi người chạy hai từ này qua thuật toán này bao nhiêu lần.
Trái lại, lúc mọi người chạy các dữ liệu đầu vào này qua thuật toán Hashing (băm) sha-1, mọi người sẽ thu được các hệ quả sau :
SHA-1 | |
Đầu vào | Đầu ra (160 bit) |
Binance | 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1 |
binance | e58605c14a76ff98679322cca0eae7b3c4e08936 |
Sha là từ kí hiệu của secure hash algorithms ( thuật toán Hashing (băm) bảo mật ). đây chính là một tập hợp các hàm Hashing (băm) mật mã hóa, gồm có các hàm Hashing (băm) sha-0, sha-1 và các hội nhóm hàm Hashing (băm) sha-2 và sha-3. Sha-256, với sha-512 và các hàm Hashing (băm) khác , thuộc về nhóm hàm Hashing (băm) sha-2. ở thời điểm hiện tại, chỉ các hội nhóm sha-2 và sha-3 được coi là các hội nhóm hàm Hashing (băm) bảo mật.
Tầm ảnh hưởng của hàm Hashing (băm)?
Các hàm Hashing (băm) cổ truyền có rất nhiều tình huống dùng, gồm tra cứu cơ sở dữ liệu , nhận định tệp lớn và kiểm soát thông tin. Hơn nữa, các hàm Hashing (băm) mật mã còn được sử dụng rộng rãi trong một vài app bảo vệ danh tính, ví như nhân diện lời nhắn và dấu vân tay công nghệ. Lúc được ứng dụng trong bitcoin, các hàm Hashing (băm) mật mã là 1 phần rất quan trọng của tiến trình đào và cũng tham gia tạo nên các khu vực và khóa mới.
Hashing (băm) quả là một dụng cụ mạnh mẽ lúc cần giải quyết một lượng dữ liệu lớn. Thí dụ, chúng ta có khả năng chạy một tệp hoặc tập thông tin lớn phê duyệt hàm Hashing (băm) và về sau dùng đúc rút đầu ra từ của chúng để chóng vánh xác minh làm rõ tính chuẩn xác và tính vẹn toàn của thông tin. điều đó là có khả năng bởi phẩm chất tất định của các hàm Hashing (băm) : đầu vào sẽ luôn mang tới một đầu ra cô động, giản lược ( Hashing (băm) ). Dựa vào kỹ thuật này, sẽ không cần phải dự trữ và thấm sâu vào tâm trí một lượng dữ liệu lớn nữa.
Hashing (băm) là phương pháp rất có hiệu quả trong kỹ thuật blockchain. Blockchain bitcoin có vài ba công tác dùng cách Hashing (băm), đa số các công việc là vì trong tiến trình đào. Trên thực tế , hầu hết các giao thức tiền ảo đều căn cứ vào Hashing (băm) để kết nối và thu gọn các hội nhóm mua bán thành các khối và cũng để định hình nên các kết nối mật mã giữa mỗi khối, tạo nên một blockchain một cách hữu hiệu.
Các hàm Hashing (băm) mật mã
Thêm một lần nữa, một hàm Hashing (băm) khai triển các kỹ thuật mã hóa có khả năng được định nghĩa là hàm Hashing (băm) mật mã. Hầu như, để phá vỡ vụn một hàm Hashing (băm) mật mã nhu cầu thực hành nhiều cố gắng mạnh mẽ. Để một người có khả năng phục hồi một hàm Hashing (băm) mật mã, họ sẽ cần tiên liệu đầu vào là gì theo trình tự thử và sai cho đến khi tạo được hệ quả đầu ra tương xứng. Dẫu vậy, cũng có tài năng các đầu vào sự khác nhau tạo nên cùng một đầu ra, tình huống này được biết với tên xung khắc.
Về phương diện kỹ thuật , một hàm Hashing (băm) mật mã phải có ba thuộc tính sau để được xem là bảo mật. Ba thuộc tính là vì chống xung khắc, chống nghịch ảnh, và chống nghịch ảnh thứ nhì.
Trước khi chia sẻ về từng thuộc tính , mọi người hãy thu gọn những thuộc tính này.
- Chống xung đột: hai dữ liệu đầu vào không giống nhau chẳng thể tạo nên cùng một mã Hashing (băm).
- Chống nghịch ảnh: chẳng thể vực dậy hàm Hashing (băm) ( chẳng thể tìm thấy dữ liệu đầu vào bằng những thành quả đầu ra ).
- Chống nghịch ảnh thứ hai: chẳng thể tìm dữ liệu đầu vào thứ nhì xung đột với một dữ liệu đầu vào cho trước.
Chống xung đột
Như đã miêu tả, xung khắc diễn ra lúc các dữ liệu đầu vào không giống nhau tạo nên một mã Hashing (băm) đồng nhất. Chính vì vậy, một hàm Hashing (băm) được cho là chống xung khắc cho đến khi ai đó dò thấy sự xung khắc. Lưu tâm rằng các xung khắc sẽ luôn có ở một hàm Hashing (băm) nào đó, vì các dữ liệu đầu vào là bất tận, trong khi ấy các hệ quả đầu ra có thể có là hữu hạn.
Hay nói cách khác , một hàm Hashing (băm) được xem là chống xung khắc lúc có thể xác định được sự xung khắc cực kỳ thấp và có khả năng mất hàng triệu năm toan tính để dò thấy xung khắc. Cho nên, dù thiếu hẳn hàm Hashing (băm) nào là triệt để né được xung khắc, nhưng một số hàm đủ mạnh để được coi là chống xung khắc ( thí dụ, sha-256 ).
Trong số nhiều thuật toán sha, các hội nhóm sha-0 và sha-1 mất dần bảo mật nữa vì mọi người đã dò thấy các xung khắc ở nhóm này. Ngày nay, các hội nhóm sha-2 và sha-3 được cho là chống xung khắc.
Chống nghịch ảnh
Thuộc tính chống nghịch ảnh liên quan đến định nghĩa các hàm một chiều. Hàm Hashing (băm) được cho là chống ngược ảnh lúc năng lực tìm ra được dữ liệu đầu vào từ một thành quả đầu ra nào là vì cực kỳ thấp.
Thuộc tính này không giống như thuộc tính đầu tiên, người tấn công sẽ dùng thuộc tính này để cố tiên liệu được dữ liệu đầu vào dựa theo đúc rút đầu ra đã nắm được. Trong khi ấy, xung khắc xảy đến lúc xác định được hai dữ liệu đầu vào không giống nhau tuy nhiên lại tạo nên cùng một hệ quả đầu ra, tuy nhiên việc dữ liệu đầu vào nào đã qua sử dụng là chẳng quan trọng.
Thuộc tính chống nghịch ảnh cực kỳ mấu chốt để phòng thủ thông tin, vì chỉ cần mã Hashing (băm) của một lời nhắn để minh chứng tính xác nhận của chúng, mà không nhất thiết hé lộ dữ liệu. Trên thực tế , nhiều nhà đáp ứng giải pháp và sử dụng web tích trữ đồng thời dùng mật khẩu dưới dạng các mã Hashing (băm) thay vì dưới dạng văn bản chính.
Chống nghịch ảnh thứ hai
Có thể hiểu theo cách giản dị, chống nghịch ảnh thứ nhì nằm ở giữa hai thuộc tính thứ nhất. Tấn công nghịch ảnh thứ 2 xảy đến lúc ai đó xác định được một dữ liệu đầu vào chi tiết mà định hình nên một sự việc đầu ra giống với sự việc đầu ra của một dữ liệu đầu vào khác mà họ đã nắm được.
Nói cách khác , tấn công nghịch ảnh thứ nhì như việc tìm một xung khắc, tuy nhiên thay vì tìm hai dữ liệu đầu vào ngẫu nhiên làm nên cùng một mã Hashing (băm), thì họ tìm một dữ liệu đầu vào mà định hình nên một mã Hashing (băm) giống với mã Hashing (băm) của một dữ liệu đầu vào mà họ đã nắm được.
Vì vậy, hàm Hashing (băm) nào tránh khỏi xung khắc cũng cùng lúc tránh khỏi các tấn công nghịch ảnh thứ nhì, vì nghịch ảnh thứ nhì đồng nghĩa với xung khắc sẽ xảy đến. Nhưng thật ra, vẫn còn cơ hội làm tấn công nghịch ảnh đối với một hàm chống nghịch ảnh, vì điều này tức là tìm một dữ liệu đầu vào độc nhất dựa theo một hệ quả đầu ra độc nhất.
Đào
Trong bitcoin có nhiều bước dùng mining các hàm Hashing (băm), ví như điều tra số dôi dư, kết nối các dữ liệu đầu vào và thành quả đầu ra của mua bán, và các Hashing (băm) các thương vụ trong một khối để tạo nên một merkle tree. Tuy nhiên một trong số nguyên nhân khiến blockchain bitcoin là một blockchain bảo mật là các thợ đào phải tạo vô kể các cử chỉ Hashing (băm) để sau cùng xác định được một biện pháp hợp chuẩn cho khối kế tiếp.
Chi tiết là , một thợ đào phải thử nhiều dữ liệu đầu vào không giống nhau lúc tạo một trị giá Hashing (băm) cho khối cơ hội để phát triển của họ. Về bản tính, các thợ đào chỉ có thể xác nhận được khối của họ nếu họ tạo được một mã Hashing (băm) đầu ra mà mở đầu bằng vài ba số 0. Lượng các số 0 xác nhận độ khó của việc đào, và độ khó này chuyển đổi theo tiến độ Hashing (băm) của mạng.
Trong tình huống này, tiến độ Hashing (băm) thay mặt cho lượng nguồn năng lượng dồi dào máy vi tính được ứng dụng để đào bitcoin. Nếu vận tốc Hashing (băm) của mạng nâng lên, giao thức bitcoin sẽ tự động căn chỉnh độ khó của việc đào để thời kỳ bình quân thiết yếu để đào được một khối sẽ giữ vững ở mức 10 phút. Trái lại, nếu vài ba thợ đào ngừng đào, khiến vận tốc Hashing (băm) giảm trông thấy, thì độ khó của việc đào sẽ được sửa đổi, khiến việc đào trở thành đơn giản hơn ( cho đến khi thời kỳ bình quân để đào được một khối trở lại mức 10 phút ).
Lưu ý rằng các thợ đào không nhất thiết tìm được các xung khắc nguyên nhân bởi có hàng chục mã Hashing (băm) để họ nhiều khả năng định hình nên như là các đầu ra hợp chuẩn ( lúc đầu bằng số ít số 0 khăng khăng ). Vì vậy có nhiều hướng giải quyết để đào một khối rỏ ràng, và các thợ đào chỉ cần tìm được một trong đó – theo ngưỡng được xác nhận từ độ khó của việc đào.
Tại vì đào bitcoin là một công việc phải làm tiêu tốn nhiều chi phí , nên các thợ đào chẳng có lý do nào để lừa đảo chuỗi vì điều này sẽ mang tới các hao tổn thu chi tiền khá nhiều. Càng có rất nhiều thợ đào tham dự một blockchain thì blockchain đó càng lớn mạnh.
Kết luận
Không thể phủ nhận rằng các hàm Hashing (băm) là các dụng cụ rất quan trọng trong khoa học máy tính , nổi bật lúc ứng xử khối thông tin đồ sộ. Lúc được ghép với mật mã hóa, các thuật toán Hashing (băm) có khả năng được ứng dụng nhạy bén, đem đến có thể bảo mật và xác nhận theo mọi cách không giống nhau. Do đó, các hàm Hashing (băm) mật mã là rất quan trọng đối với gần như tất cả các mạng tiền điện tử, chính vì thế việc ý thức được các thuộc tính và quá trình thực hiện của chính nhất định sẽ có lợi cho các thành viên để mắt tới kỹ thuật blockchain.