Thuật toán băm và mã hóa bất đối xứng là gì?

Kinhnghiemtrade

🐟Cá Con Lom Dom🐟

1. Hashing algorithm (thuật toán băm)​

1648367621301.png
  • Dữ liệu đầu vào được "băm" ra bởi hash funtions, cho ra một chuỗi dữ liệu có độ dài nhất định.
  • Hàm băm được tính toán là khó có thể đảo ngược chiều được.
  • Có nhiều loại hàm băm như: MD5, SHA1, SHA256 (bitcoin), SHA512, etc (MD5 và SHA1 không còn là mật mã an toàn)
  • Đặc tính của hàm băm:
    • Chuyển bất cứ một dạng dữ liệu nào sang 1 chuỗi ký tự có chiều dài cố định
    • Băm nhanh, càng nhanh càng tốt.
=> Tuy nhiên, "không phải hàm băm nào cũng cần nhanh, một số hàm băm chậm dùng cho hashing password để chống lại password brute force attack hiện được dùng khá phổ biến như bcrypt, PBKDF2 and scrypt"
  • Xác định được mỗi giá trị đầu vào chỉ có 1 giá trị đầu ra duy nhất
  • Giả ngẫu nhiên (Pseudorandom), kiểu như 2 bức ảnh của 2 anh em sinh đôi tuy chỉ khác nhau 1 cọng tóc thôi nhưng kết quả băm ra phải khác nhau hoàn toàn.
  • One-way usage: chỉ băm theo 1 chiều, khó có thể đảo ngược kết quả lại.
  • Collision resistant: rất khó để 2 dữ liệu đầu vào cho ra cùng 1 giá trị băm như nhau.
- Một số kiểu băm:
  • Independent hashing: băm độc lập, băm từng dữ liệu một (từng chữ 1) không phụ thuộc vào nhau.
  • Repeated hashing: kiểu băm sâu hơn, băm đi băm lại nhuyễn dữ liệu đầu vào. (input A -> băm ra B -> băm ra C)
  • Combined hashing: băm kết hợp (hello + world -> băm kết hợp ra C)
  • Sequential hashing: băm theo trình tự (input Hello -> băm ra B -> trộn B với "world" -> băm ra C)
  • Hierarchy hashing: băm theo cấp bậc (băm "hello" -> A, băm "world" -> B, sau đó lấy A+B -> băm tiếp -> C)
  • Đường cong eliptic (Eliptic curve)
Có private key, áp dụng đường cong eliptic (là một bài toán khó) bẻ cong chiếc khóa thành "public key". Từ đó dùng hash functions để tạo ra "Address".
>>> Trình tự này là tuyến tính, gần như không thể đảo ngược lại được.

2. Mật mã bất đối xứng (Asymmetric cryptography)​

1648367643287.png
- Mô tả Private to public
  • Anh có 1 cặp khóa pk và sk
  • Em cũng có 1 cặp khóa pk' và sk'
  • Anh muốn gửi Thư cho em, Anh thao tác như sau:
Anh hash (băm) Thư thành 1 chuỗi ký tự --> anh lấy khóa sk của anh ký số lên chuỗi ký tự đó -> Anh được 1 lá Thư' -> Anh gửi cả Thư và Thư' cho Em. Em nhận được Thư và Thư' của anh -> Em tách Thư ra 1 chỗ, Thư' ra 1 chỗ -> Em hash Thư và lấy pk của Anh mở khóa Thư' -> So sánh kết quả, nếu kết quả giống nhau thì đúng là Thư Anh gửi, còn khác thì là của thằng hàng xóm giả mạo.

Người dùng cần hiểu cơ chế này để tránh các gian lận trên mạng blockchain.

Mã hóa bất đối xứng tạo ra cho người dùng public key (pk) và private key (sk). Public key hiểu như địa chỉ email của bạn và private key được hiểu như mật khẩu email.

Đặc điểm của cặp khóa này là nếu bạn dùng 1 khóa để mã hóa thông tin thì chiếc khóa còn lại có thể được dùng để giải mã và ngược lại.

- Mã hóa bất đối xứng hoạt động theo 2 hướng:
  • Public to private: hoạt động như kiểu gửi mail
  • Private to public: kiểu dạng như chữ ký điện tử (digital signature)

>>> Mã hóa bất đối xứng sinh ra để bảo vệ quyền sở hữu thông tin trong tài khoản của bạn, cũng như bảo vệ các giao dịch của bạn khi dùng mạng.

Cảm ơn anh em đã theo dõi bài viết nhé!!!

:vitdangthuong::vitdangthuong::vitdangthuong:
 
Thẻ
asymmetric cryptography blockchain hash mã hóa bất đối xứng thuật toán băm
Bên trên