Những năm gần đây, người dùng đã được nhìn thấy rất nhiều lần cụm từ “mã hóa”. Chúng ta đã có thể hiểu “nôm na” về tầm quan trọng của cụm từ này trong cuộc sống trực tuyến hiện nay. Khi sử dụng WhatsApp, người dùng đang sử dụng mã hóa. Đăng nhập vào ngân hàng trực tuyến, người dùng cũng đang sử dụng mã hóa. Đến mật khẩu Wi-Fi hàng ngày sử dụng cũng đã được mã hóa.
Tuy người dùng sử dụng cụm từ “mã hóa” hàng ngày, nhưng vẫn còn nhiều thuật ngữ “lạ mắt”. Dưới đây là danh sách những thuật ngữ mã hóa mà người dùng nên biết.
1. Plaintext
Hãy bắt đầu với thuật ngữ cơ bản nhất, đơn giản nhất và cũng quan trọng nhất. Plaintext là một thông tin trước khi được mã hóa. Đây là dữ liệu ban đầu mà người dùng có thể dễ dàng đọc hiểu được.
2. Ciphertext
Ciphertext là thuật ngữ chỉ văn bản đã được mã hóa để giữ bí mật cho nội dung. Dữ liệu ở dạng có thể đọc nhưng không thể hiểu được.
3. Encryption
Encryption hay còn gọi là mã hóa, chỉ quá trình biến đổi dữ liệu từ dạng văn bản thông tin ban đầu đơn giản “Plaintext” sang văn bản không thể hiểu được “Ciphertext” với mục đích giữ bí mật. Người dùng cần phải có “Key” để có thể giải mã và đọc hiểu được văn bản này.
- Decryption
Là quá trình ngược lại với Encryption, giải mã là việc sử dụng “Key” để chuyển hóa văn bản mã hóa “Ciphertext” trở lại thành văn bản đơn giản dễ hiểu “Plaintext”.
4. Key
Quá trình mã hóa đòi hỏi một “key” mật mã để khởi động thuật toán chuyển đổi plaintext thành ciphertext. Nguyên lý của Kerckhoffs cho rằng: “Chỉ có key bí mật mới đem lại sự an toàn”, trong khi đó Shannon vẫn tiếp tục “kẻ thù biết về hệ thống”. Hai tuyên bố này đã làm thay đổi nhận thức về vai trò của mã hóa và cái “key” bí mật.
Việc giữ bí mật hoàn toàn thuật toán mã hóa là vô cùng khó khăn, tuy nhiên việc chỉ giữ một key bí mật để mở thuật toán đó thì lại dễ dàng hơn nhiều.
Key bí mật có phải Mật khẩu?
Không hoàn toàn vậy, vì việc sử dụng key mã hóa chỉ là kết quả của quá trình giải thuật toán mã hóa, trong khi đó mật khẩu là công cụ người dùng hay sử dụng hàng ngày. Sự nhầm lẫn này phát sinh bởi vì mật khẩu được sử dụng phổ biến hiện nay nhưng key mã hóa rất hiếm được các chuyên gia đụng đến.
Mật khẩu thực tế chỉ là một bước trong quá trình tạo ra key mã hóa. Người dùng nhập vào các ký tự, chữ số với mức độ bảo mật cao để tạo ra thuật toán mã hóa đầu vào.
5. Hash
Khi một trang web mã hóa mật khẩu của bạn, nó sẽ sử dụng một thuật toán để chuyển đổi mật khẩu từ dạng plaintext sang hash. Hàm hash là hàm một chiều mà nếu đưa một lượng dữ liệu bất kì qua hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra.
Khi đã chuyển đổi plaintext sang hàm hash, rất khó để đảo ngược quá trình này để suy ra được dữ liệu ban đầu, điều này tương tự như việc bạn không thể chỉ dựa vào một dấu vân tay mà suy ra ai là chủ của nó.
Ví dụ: Từ “Illuminatus” đi qua hàm hash SHA-1 cho ra kết quả E783A3AE2ACDD7DBA5E1FA0269CBC58D.
Với tính năng, hàm hash là giải pháp hữu ích khi chống lại các cuộc tấn công của tin tặc, nhất là dưới hình thức tấn công bằng cách kết hợp các mật khẩu. Tuy nhiên vẫn cần thêm những biện pháp bảo mật khác để bảo vệ tài khoản của mình.
6. Salt
Khi tạo mật khẩu, quá trình mã hóa sẽ yêu cầu thực hiện các bước an toàn bảo mật. Một trong những bước đó là “Salt” mật khẩu. Một salt sẽ thêm ngẫu nhiên một dữ liệu hash một chiều, ví dụ: Có 2 người dùng đều sử dụng cùng một mật khẩu là hunter2. Chúng ta chạy hunter2 qua hash SHA256 và nhận được dãy mã hóa: f52fbd32b2b3b86ff88ef6c490628285f482af15ddcb29541f94bcf526a3f6c7.
Một người nào đó “hack” dữ liệu mật khẩu và kiểm tra hash, mỗi tài khoản với hash này đều bị tin tặc tấn công.
Trong khi đó, chúng ta sử dụng một “salt” riêng biệt để thêm ngẫu nhiên ký tự cho mỗi mật khẩu:
Salt #1: hunter2 + sausage:
3436d420e833d662c480ff64fce63c7d27ddabfb1b6a423f2ea45caa169fb157
Salt #2: hunter2 + bacon:
728963c70b8a570e2501fa618c975509215bd0ff5cddaf405abf06234b20602c
Như đã thấy ở trên, việc bổ sung salt ngẫu nhiên khiến cho mật khẩu được an toàn hơn nhiều. Bên cạnh đó, mật khẩu vẫn sẽ gắn liền với tên đăng nhập nên người dùng không phải lo lắng về vấn đề nhầm lẫn cơ sở dữ liệu.
7. Thuật toán đối xứng và bất đối xứng
Trong thuật toán hiện đại, có 2 loại chính là đối xứng và bất đối xứng. Cả hai đều mang chức năng mã hóa dữ liệu nhưng có cách thức hơi khác nhau:
- Thuật toán đối xứng: Sử dụng cùng một key cho cả việc mã hóa và giải mã dữ liệu. Cả hai công đoạn này phải được đồng nhất về thuật toán trước khi thực hiện.
- Thuật toán bất đối xứng: Sử dụng hai key khác nhau: key công khai và key cá nhân. Điều này cho phép mã hóa dữ liệu một cách an toàn mà không cần phải thiết lập một key mã hóa chung. Nó còn được biết đến với tên gọi “key mã hóa công khai” (public key cryptology)
Ngày nay, chúng ta vẫn thường xuyên thấy các dịch vụ trực tuyến sử dụng key mã hóa công khai.
8. Key công khai và Key riêng tư
Tiếp theo, chúng ta cùng tìm hiểu thêm về chức năng hoạt động của các key trong quá trình mã hóa, chúng gồm 2 loại là key công khai và key riêng tư.
- Thuật toán bất đối xứng sử dụng 2 key: key công khai và key riêng tư. Trong đó, người dùng có thể gửi key công khai đi bất kỳ đâu, còn key riêng tư chỉ có thể được biết bởi chủ sở hữu. Đâu là nguyên nhân của việc đó?
Bất kỳ người có key công khai cũng có thể mã hóa tin nhắn gửi riêng cho người nhận nhưng chỉ duy nhất người nhận có key riêng tư mới đọc được tin nhắn đó.
Key công khai và riêng tư đóng vai trò quan trọng trong chữ ký số. Qua đó, người gửi có thể ký thông điệp của mình bằng key mã hóa cá nhân. Những người nhận có giữ key công khai có thể nhận và đọc được thông điệp đó một cách an toàn. Một cặp key công khai và cá nhân được tạo ra bởi thuật toán mã hóa.
9. HTTPS
HTTPS (HTTP Secure) là một nâng cấp bảo mật được thực hiện rộng rãi hiện nay cho giao thức ứng dụng HTTP, nền tảng Internet mà chúng ta sử dụng hàng ngày. Khi sử dụng kết nối HTTPS, dữ liệu sẽ được mã hóa bằng Bảo Mật tầng truyền tải (Transport Layer Security – TLS), bảo vệ dữ liệu đang chuyển tuyến của người dùng.
HTTPS sử dụng key công khai và riêng tư dài hạn để lần lượt tạo ra các key công khai và riêng tư ngắn hạn. Key ngắn hạn là cặp key đối xứng chỉ sử dụng được một lần duy nhất và sẽ bị xóa khi người dùng rời khỏi trang web HTTPS (đóng kết nối và kết thúc quá trình mã hóa). Khi đăng nhập lại trang web này lần nữa, người dùng sẽ nhận được một key ngắn hạn khác.
Trang web phải tuân thủ nghiêm chỉnh HTTPS mới có thể cung cấp cho người dùng bảo mật hoàn chỉnh. Vì vậy, 2018 là năm đầu tiên phần lớn trang web trực tuyến bắt đầu cung cấp kết nối HTTPS thông qua chuẩn HTTP.
10. Tính năng mã hóa End-to-End
Một trong những thuật ngữ mã hóa được sử dụng nhiều nhất hiện nay là mã hóa end-to-end. Dịch vụ nền tảng tin nhắn mạng xã hội WhatsApp đã bắt đầu cung cấp cho người dùng tính năng mã hóa end-to-end (E2EE) vào năm 2016 để đảm bảo tin nhắn của người dùng được giữ bí mật.
Trong hoàn cảnh này, tin nhắn của người dùng sẽ được mã hóa từ khi gửi đi và giữ nguyên cho đến khi người nhận nhận được tin nhắn đó. Điều gì đã diễn ra ở đây? Key cá nhân được sử dụng để mã hóa và giải mã tin nhắn của bạn sẽ không rời khỏi thiết bị, đảm bảo rằng bạn là người duy nhất có thể gửi đi tin nhắn bằng các dấu hiệu riêng.
WhatsApp không phải dịch vụ tin nhắn đầu tiên và duy nhất cung cấp mã hóa end-to-end. Tuy nhiên, nó đã khai mở nhận thức về tầm quan trọng của tính năng này trong việc bảo mật tin nhắn của người dùng.
Kết luận về mã hóa
Mặc dù vậy, nhiều chính phủ và tổ chức trên thế giới không thích việc mã hóa dữ liệu. Nhưng nếu không có nó, Internet sẽ trở thành một nơi cực kì nguy hiểm. Bạn chắc chắn sẽ không thể mua hàng trực tuyến, sử dụng internet banking hoặc thậm chí không thể tán gẫu với những người bạn của mình trên mạng.
Thực tế nhìn sơ qua rằng, mã hóa có vẻ khó khăn, các nền tảng toán học của mã hóa đôi khi rất phức tạp. Nhưng mã hóa với những con số thuật toán là điều hữu ích cho tình hình an ninh mạng phức tạp hiện nay.
Rất nhiều phần mềm bảo mật đang sử dụng các tính năng giải mã để chống lại việc mã hóa dữ liệu để tống tiền của tin tặc hiện nay, tiêu biểu là các công cụ giải mã như Trend Micro Decryptor Tool, No more Ransom…