SHA (Secure Hashing Algorithm) là gì? Tìm hiểu Thuật toán hàm băm an toàn

SHA (Secure Hashing Algorithm) là gì? Tìm hiểu Thuật toán hàm băm an toàn

Giới thiệu về Hàm băm SHA

SHA là viết tắt của Secure Hashing Algorithm hay còn gọi là Thuật toán băm an toàn. SHA là phiên bản sửa đổi của MD5 và được sử dụng để băm dữ liệu (hashing data) và chứng chỉ (certificates). Thuật toán băm (hashing algorithm) rút ngắn dữ liệu đầu vào thành một dạng nhỏ hơn mà không thể hiểu được bằng cách sử dụng các phép toán bit, bổ sung mô-đun và các hàm nén (compression functions).

Bạn có thể tự hỏi, liệu băm (hash) có thể được bẻ khóa (cracked) hoặc giải mã (decrypted) không? Hashing tương tự như mã hóa (encryption), sự khác biệt duy nhất giữa băm và mã hóa là băm là một chiều, nghĩa là khi dữ liệu được băm, thông báo băm kết quả không thể bị bẻ khóa, trừ khi sử dụng một cuộc tấn công brute force.

Xem hình ảnh dưới đây để biết hoạt động của thuật toán SHA (Secure Hashing Algorithm). SHA hoạt động theo cách như vậy ngay cả khi một ký tự duy nhất của thông báo thay đổi, sau đó nó sẽ tạo ra một hàm băm khác.

Hình ảnh ví dụ về hoạt động của thuật toán SHA (Secure Hashing Algorithm)
Hình ảnh ví dụ về hoạt động của thuật toán SHA (Secure Hashing Algorithm). Theo: encryptionconsulting

Ví dụ: băm của hai thông điệp (messages) giống nhau, nhưng khác nhau, tức là Thiên đường (Heaven) và thiên đàng (heaven) là khác nhau. Tuy nhiên, chỉ có sự khác biệt của một chữ cái viết hoa H và chữ nhỏ h.

Thông báo ban đầu được băm bằng SHA-1, dẫn đến thông báo băm “06b73bd57b3b938786daed820cb9fa4561bf0e8e”. Nếu thông báo thứ hai, tương tự, được băm bằng SHA-1, thông báo băm sẽ trông giống như “66da9f3b8d9d83f34770a14c38276a69433a535b”.

Đây được gọi là hiệu ứng tuyết lở (avalanche effect). Hiệu ứng này rất quan trọng trong mật mã hóa (cryptography), vì nó có nghĩa là ngay cả sự thay đổi nhỏ nhất trong thông điệp đầu vào cũng thay đổi hoàn toàn đầu ra. Điều này sẽ ngăn những kẻ tấn công không thể hiểu thông báo băm ban đầu nói gì và cho người nhận thông báo biết liệu thông báo có bị thay đổi trong quá trình truyền hay không.

  ByteNext ra mắt Bộ sưu tập NFT Miss Universe Vietnam 2022 nhằm tôn vinh phái đẹp

Thuật toán hàm băm SHA (Secure Hashing Algorithm) cũng hỗ trợ tiết lộ nếu một tin nhắn gốc bị thay đổi theo bất kỳ cách nào. Bằng cách tham chiếu thông báo băm ban đầu, người dùng có thể biết liệu ngay cả một ký tự đã được thay đổi hay không, vì các thông báo băm sẽ hoàn toàn khác.

Một trong những phần quan trọng nhất của SHA (Secure Hashing Algorithm) là chúng có tính xác định. Điều này có nghĩa là miễn là đã biết hàm băm được sử dụng, thì bất kỳ máy tính hoặc người dùng nào cũng có thể tạo lại thông báo băm. Tính xác định của SHA là một trong những lý do khiến mọi chứng chỉ SSL trên Internet bắt buộc phải được băm bằng hàm SHA-2.

Các biểu mẫu SHA (Secure Hashing Algorithm) khác nhau

Khi tìm hiểu về các biểu mẫu SHA (Secure Hashing Algorithm), một số loại SHA khác nhau được tham chiếu.

Ví dụ về tên SHA được sử dụng là SHA-1, SHA-2, SHA-256, SHA-512, SHA-224 và SHA-384, nhưng trên thực tế chỉ có hai loại: SHA-1 và SHA-2. Những con số lớn hơn khác, như SHA-256, chỉ là phiên bản của SHA-2 lưu ý độ dài bit của SHA-2.

SHA-1 là thuật toán băm an toàn ban đầu (Original Secure Hashing Algorithm), trả về thông báo băm 160 bit sau khi băm. Ai đó có thể thắc mắc, SHA-2 có thể bị bẻ khóa như SHA-1 không? Câu trả lời là có. Do độ dài ngắn của thông báo băm, SHA-1 dễ bị cưỡng bức hơn SHA-2, nhưng SHA-2 vẫn có thể bị cưỡng bức (brute forced).

Một vấn đề khác của SHA-1 là nó có thể cung cấp cùng một thông báo băm cho hai giá trị khác nhau, vì số lượng kết hợp có thể được tạo với 160 bit là quá nhỏ. Mặt khác, SHA-2 cung cấp cho mọi thông báo một giá trị duy nhất, đó là lý do tại sao tất cả các chứng chỉ bắt buộc phải sử dụng SHA-2.

SHA-2 có thể tạo ra nhiều độ dài bit khác nhau, từ 256 đến 512 bit, cho phép nó gán các giá trị hoàn toàn duy nhất cho mọi thông báo băm được tạo. Xung đột xảy ra khi hai giá trị có cùng một thông báo băm.

  Mysten Labs ra mắt Blockchain lớp 1 có tên là Sui

SHA-1 có thể dễ dàng tạo ra va chạm, giúp những kẻ tấn công dễ dàng lấy được hai thông báo trùng khớp và tạo lại bản rõ (plaintext) ban đầu So với SHA-1, SHA-2 an toàn hơn nhiều và đã được yêu cầu trong tất cả các chữ ký số và chứng chỉ kể từ năm 2016.

Thông thường. các cuộc tấn công như tấn công brute force có thể mất nhiều năm hoặc thậm chí hàng thập kỷ để bẻ khóa mã băm, vì vậy SHA-2 được coi là thuật toán băm an toàn nhất.

SHA (Secure Hashing Algorithm) được sử dụng để làm gì và tại sao

Như đã đề cập trước đây, Thuật toán băm an toàn (Secure Hashing Algorithm) được yêu cầu trong tất cả các chữ ký số (digital signatures) và chứng chỉ liên quan đến kết nối SSL/TLS, nhưng SHA cũng có nhiều cách sử dụng hơn. Các ứng dụng như SSH, S-MIME (Secure / Multipurpose Internet Mail Extensions – Tiện ích mở rộng thư Internet an toàn/đa năng) và IPSec cũng sử dụng SHA.

SHA cũng được sử dụng để băm mật khẩu (hash password) để máy chủ chỉ cần nhớ các hàm băm hơn là mật khẩu. Bằng cách này, nếu kẻ tấn công đánh cắp cơ sở dữ liệu chứa tất cả các mã băm, chúng sẽ không có quyền truy cập trực tiếp vào tất cả các mật khẩu bản rõ, chúng cũng cần phải tìm cách bẻ khóa các hàm băm để có thể sử dụng mật khẩu.

SHA cũng có thể hoạt động như các chỉ báo về tính toàn vẹn của tệp (file). Nếu một tệp đã được thay đổi khi chuyển tiếp, thông báo băm kết quả được tạo từ hàm băm sẽ không khớp với thông báo băm ban đầu do chủ sở hữu tệp tạo và gửi.

Bây giờ chúng ta đã biết SHA (Secure Hashing Algorithm) được sử dụng để làm gì, nhưng tại sao lại sử dụng Thuật toán băm an toàn ngay từ đầu?

Một lý do phổ biến là khả năng ngăn chặn những kẻ tấn công của họ. Mặc dù một số phương pháp, chẳng hạn như các cuộc tấn công brute force, có thể tiết lộ bản rõ (plaintext) của các bản đào tạo băm, nhưng các chiến thuật này được SHA thực hiện cực kỳ khó khăn.

  Boba Network huy động được 45 triệu đô la với mức định giá 1,5 tỷ đô la

Một mật khẩu được băm bởi SHA-2 có thể mất nhiều năm, thậm chí hàng thập kỷ để phá vỡ, do đó lãng phí tài nguyên và thời gian cho một mật khẩu đơn giản, điều này có thể khiến nhiều kẻ tấn công quay lưng.

Một lý do khác để sử dụng SHA (Secure Hashing Algorithm) là tính duy nhất của tất cả các thông báo băm. Nếu SHA-2 được sử dụng, sẽ có ít hoặc không có xung đột, có nghĩa là một thay đổi đơn giản của một từ trong tin nhắn sẽ thay đổi hoàn toàn thông báo băm. Vì có rất ít hoặc không có va chạm, nên kẻ tấn công không thể tìm thấy một mẫu để làm cho việc phá vỡ Thuật toán băm an toàn (Secure Hashing Algorithm) trở nên dễ dàng hơn.

Hạn chế của SHA-2

  • Trình duyệt hỗ trợ
Trình duyệtPhiên bản trình duyệt tối thiểu
Chrome26+
Firefox1.5+
Internet Explorer6+ (With XP SP3+)
Netscape7.1+
Safari3+ (Ships with OS X 10.5)
Mozilla1.4+
Opera9.0+
  • Máy chủ hỗ trợ
ServerPhiên bản máy chủ tối thiểu
AWS (Dịch vụ web của Amazon)YES
Apache2.0.63+ w / OpenSSL 0.9.8o +
Cisco ASA 55008.2.3.9+ cho phiên VPN AnyConnect; 
8,4 (2) + cho các chức năng khác
Sản phẩm dựa trên JavaJava 1.4.2+
Máy chủ IBM Domino9.0+ (Đi kèm với HTTP 8.5+)
Máy chủ HTTP của IBM8.5+ (Đi kèm với Domino 9+)
IBM z / OSv1r10 +
Sản phẩm dựa trên OpenSSLOpenSSL 0.9.8o +
Trình quản lý ví Oracle11.2.0.1+
Oracle Weblogic10.3.1+
Web Sphere MQ7.0.1.4+
  • Hệ điều hành hỗ trợ
Hệ điều hànhSSL Certificate Minimum OS VersionClient Certificate Minimum OS Version
Android2.3+2.3+
iOS3.0+3.0+
ChromeOSYESYES
Mac OS X10.5+10.5+
Windows XPSP3+ XPSP3+ (partial)
Windows Server2003 SP2 +Hotfixes (Partial)2003 SP2 +Hotfixes (Partial)
Windows Phone7+7+
Blackberry5.0+5.0+

Tương lai của SHA (Secure Hashing Algorithm)

Tại thời điểm này, SHA-2 là tiêu chuẩn công nghiệp cho các thuật toán băm (hashing algorithms), mặc dù SHA-3 có thể làm lu mờ điều này trong tương lai. SHA-3 được phát hành bởi NIST, công ty cũng tạo ra SHA-1 và SHA-2, vào năm 2015 nhưng không được coi là tiêu chuẩn của ngành vì nhiều lý do. Trong thời gian phát hành SHA-3, hầu hết các công ty đang trong quá trình chuyển đổi từ SHA-1 sang SHA-2, vì vậy việc chuyển ngay sang SHA-3 trong khi SHA-2 vẫn rất an toàn là không hợp lý.

Cùng với đó, SHA-3 được xem là chậm hơn SHA-2, mặc dù điều này không chính xác. SHA-3 chậm hơn về mặt phần mềm, nhưng nó nhanh hơn nhiều so với SHA-1 và SHA-2 về mặt phần cứng, và ngày càng nhanh hơn qua hàng năm. Vì những lý do này, chúng ta có thể sẽ thấy việc chuyển sang SHA-3 sau này khi SHA-2 trở nên không an toàn hoặc không được dùng nữa.

Theo: encryptionconsulting

Khuyến cáo: Thông tin trên bài viết này chỉ mang tính tham khảo, không có bất kỳ lời khuyên nào về mua bán, đầu tư. Bạn hãy tự nghiên cứu trước khi thực hiện bất kỳ hình thức đầu tư nào.

Nội dung đề xuất