Mã hóa, giải mã, thuật toán mã hóa là gì ? Tại sao phải mã hóa
1. Khái niệm
Mã hóa (encryption) tức là biến đổi “thông tin gốc” dạng tường minh (plaintext) thành “thông tin mã hóa” dạng ẩn tàng (cipher text) bằng cách sử dụng một khóa mã (thuật toán mã hóa) nào đó. Chỉ có những người giữ chìa khóa (key) bí mật mới có thể giải mã (decryption) thông tin dạng ẩn tàng trở lại thành dạng thông tin có dạng tường minh.
Giải mã (decrypt, decipher, decryption) đó là quá trình ngược lại với mã hóa, khôi phục lại những thông tin dạng ban đầu từ thông tin ở dạng đã được mã hóa.
Thuật toán mã hóa là một tập hợp các quy tắc được sử dụng để thực hiện quá trình mã hóa và giải mã nhằm che giấu thông tin hoặc giải mã thông tin
Ví dụ :
Người Hebrew (Do Thái cổ) đã sáng tạo một thuật toán mã hóa đơn giản và hiệu quả gọi là thuật toán atbash mà chìa khóa mã hóa và giải mã là một sự thay thế (substitution) trong bảng chữ cái. Giả sử dùng chìa khóa mã hóa là bảng hoán vị:
Khi đó chẳng hạn từ gốc (plaintext): JERUSALEM sẽ được mã hóa thành từ mã (ciphertext): QVIFHZOVN. Nếu người nhận tin có chìa khóa thì việc biến đổi QVIFHZOVN trở lại thành JERUSALEM là điều hoàn toàn đơn giản, nhưng nếu không có chìa khóa thì quả là khó khăn, người nhận được thông điệp không thể nào hiểu nổi QVIFHZOVN có nghĩa là gì cả! Cho dù biết rằng quy luật mã hóa chỉ là một sự thay thế của 25 chữ cái nhưng nếu tấn công bạo lực thì phải thử lần lượt hết mọi khả năng tạo chìa khóa, tức là phải thử 25! khả năng (tất nhiên về sau người ta có rất nhiều biện pháp để giảm bớt khả năng dò tìm, chẳng hạn nếu plaintext có độ dài khá lớn thì có thể sử dụng dò tìm theo tần suất xuất hiện của các ký tự).
2. Phân loại mã hóa
Ngày nay người ta phân biệt ra hai nhóm thuật toán mã hóa chính là: Các thuật toán mã hóa cổ điển và các thuật toán hiện đại.
2.1. Các thuật toán cổ điển
Các thuật toán cổ điển: (những thuật toán này ngày nay đôi khi vẫn còn được dùng chẳng hạn trong trò chơi tìm mật thư) gồm: Thuật toán thay thế, Thuật toán chuyển vị.
2.1.1. Thuật toán thay thế
Thuật toán thay thế (Substitution) là thuật toán mã hóa trong đó từng ký tự (hoặc từng nhóm ký tự) của plaintext được thay thế bằng một (hay một nhóm) ký tự khác. Thuật toán atbash của người Hebrew hay thuật toán vòng của Caesar đều là các thuật toán thay thế. Chính ý tưởng của mã vòng Caesar đã được ứng dụng trong máy Enigma.
2.1.2. Thuật toán chuyển vị
Thuật toán chuyển vị (Transposition) là thuật toán mã hóa trong đó các ký tự trong văn bản ban đầu chỉ thay đổi vị trí cho nhau còn bản thân các ký tự không hề bị biến đổi.
2.2. Các thuật toán hiện đại
Thuật toán hiện đại là thuật ngữ dùng để chỉ các thuật toán được phát triển trong những năm gần đây, thường dựa trên các lý thuyết và kỹ thuật tiên tiến. Thuật toán hiện đại thường có hiệu quả hơn các thuật toán truyền thống, và có thể giải quyết các vấn đề mà các thuật toán truyền thống không thể. Người ta thường chia thành 3 loại sau đây : Mã hóa đối xứng hay khóa bí mật SKC (Secret Key Cryptography), Mã hóa bất đối xứng hay khóa công khai và khóa riêng PKC (Public and Private Keys Cryptography) và Hàm băm (Hash function)
2.2.1. Mã hóa đối xứng hay khóa bí mật SKC
Mã hóa đối xứng hay khóa bí mật SKC (Secret Key Cryptography): Chỉ dùng một chìa khóa cho cả mã hóa và giải mã (biến đổi theo hai chiều ngược nhau)
Các loại mã hóa đối xứng phổ biến là: DES (Data Encryption Standard): Một trong những thuật toán mã hóa đối xứng đầu tiên và phổ biến, được sử dụng trong nhiều ứng dụng.
-
AES (Advanced Encryption Standard): Tiêu chuẩn hiện đại thay thế DES, với khóa có thể là 128, 192, hoặc 256 bit.
-
IDEA (International Data Encryption Algorithm) :Một thuật toán mã hóa đối xứng mạnh mẽ và an toàn.
-
Blowfish: Thuật toán mã hóa đối xứng với khóa có thể được điều chỉnh linh hoạt.
-
Twofish: Một phiên bản nâng cao của Blowfish, thiết kế để cung cấp độ bảo mật cao.
-
RC4 (Rivest Cipher 4): Một thuật toán mã hóa dựa trên việc tạo ra dãy khóa ngẫu nhiên, thường được sử dụng trong các ứng dụng như SSL/TLS.
-
3DES (Triple DES): Sự kết hợp của ba chu kỳ mã hóa DES, tăng cường độ bảo mật so với DES.
-
RC6: Một thuật toán mã hóa đối xứng phức tạp dựa trên cấu trúc Feistel.
2.2.2. Mã hóa bất đối xứng hay khóa công khai và khóa riêng PKC
Mã hóa bất đối xứng hay khóa công khai và khóa riêng PKC (Public and Private Keys Cryptography): Sử dụng hai khóa riêng biệt: một khóa để mã hóa (khóa công khai: public key) và một khóa khác để giải mã (khóa riêng: private key).
Các loại mã hóa bất đối xứng phổ biến là:
-
RSA (Rivest–Shamir–Adleman): Sử dụng cặp khóa công khai và khóa riêng tư, phổ biến trong bảo mật truyền thông và chữ ký số.
-
Diffie-Hellman: Dùng để trao đổi khóa bí mật qua kênh không an toàn, thường được sử dụng trong quá trình thiết lập kết nối an toàn.
-
Elliptic Curve Cryptography (ECC): Sử dụng toán học đại số đồng dư trên các đường cong elip, cung cấp độ bảo mật cao với chi phí tính toán thấp.
-
DSA (Digital Signature Algorithm): Một thuật toán chữ ký số được sử dụng để xác minh tính toàn vẹn của dữ liệu và xác nhận danh tính của người ký.
-
ElGamal: Kết hợp việc trao đổi khóa Diffie-Hellman với mã hóa bất đối xứng, thường được sử dụng trong bảo mật truyền thông.
-
Blum Blum Shub: Sử dụng số nguyên tố và toán học modular, thường được sử dụng trong sinh số ngẫu nhiên an toàn.
-
Lattice-based Cryptography: Dựa trên khái niệm lưới số học, được xem là an toàn trước nhiều thuật toán phân tích của máy tính lượng tử.
2.2.3. Hàm băm (Hash function)
Hàm băm (Hash function): Mã hóa một chiều (one-way cryptography) dùng một biến đổi toán học để “mã hóa” thông tin gốc thành một dạng không biến đổi ngược được: không có chìa khóa vì từ ciphertext không tìm ngược lại được plaintext!
Các loại hàm băm phổ biến là:
-
MD5 (Message Digest Algorithm 5): Dù vẫn còn sử dụng, nhưng đã bị coi là không an toàn do nhiều lỗ hổng bảo mật. Độ dài hash là 128-bit.
-
SHA-1 (Secure Hash Algorithm 1): Cũng không an toàn nữa do các phương pháp tấn công đã được phát triển. Độ dài hash là 160-bit.
-
SHA-256, SHA-384, SHA-512: Là các biến thể của SHA-2, cung cấp độ dài hash lớn hơn (tương ứng là 256-bit, 384-bit, và 512-bit) và được xem là an toàn cho đến thời điểm hiện tại.
-
Whirlpool: Một hàm băm có độ dài hash lên đến 512-bit, được coi là an toàn và phổ biến trong một số ứng dụng bảo mật.
-
bcrypt: Thường được sử dụng cho lưu trữ mật khẩu, có thể được điều chỉnh để yêu cầu nhiều tài nguyên tính toán, làm chậm quá trình tấn công brute-force.
-
Scrypt: Tương tự như bcrypt, nhưng còn sử dụng bộ nhớ nhiều hơn, làm cho nó trở nên khó khăn hơn cho tấn công brute-force.
-
SHA-3 (Secure Hash Algorithm 3): Một trong những tiếp nối của họ SHA, được thiết kế để cung cấp một lựa chọn mới với cấu trúc khác biệt.
3. Tại sao phải mã hóa
Bởi vì mã hóa là một phần quan trọng của bảo mật thông tin và bảo vệ dữ liệu giúp giảm bị mất hoặc đánh cắp dữ liệu khi bị tấn công từ môi trường bên ngoài .
Dưới đây là một số lý do chính tại sao phải sử dụng mã hóa:
-
Bảo vệ dữ liệu riêng tư : Mã hóa giúp bảo vệ thông tin cá nhân và nhạy cảm khỏi sự truy cập trái phép. Điều này đặc biệt quan trọng khi truyền dữ liệu qua các kênh không an toàn như internet.
-
Ngăn chặn thay đổi dữ liệu hay lộ lọt dữ liệu : Mã hóa giúp đảm bảo tính toàn vẹn của dữ liệu bằng cách ngăn chặn sự thay đổi trái phép từ bên thứ ba.
-
Bảo vê mật khẩu: Khi lưu trữ mật khẩu, sử dụng hàm băm hoặc mã hóa đảm bảo rằng mật khẩu không thể dễ dàng bị đọc được nếu hệ thống bị tấn công.
-
Bảo mật thông tin truyền tải :Trong quá trình truyền tải dữ liệu giữa hai đối tượng, mã hóa giúp ngăn chặn sự đánh cắp thông tin trên đường truyền.
-
Đảm bảo quy chuẩn trong an toàn thông tin: Nhiều lĩnh vực, như y tế và tài chính, yêu cầu việc bảo mật thông tin. Mã hóa giúp tự động đáp ứng nhiều yêu cầu an ninh thông tin.
-
Bảo vệ dữ liệu cất trữ : Khi lưu trữ dữ liệu trên các thiết bị lưu trữ hoặc trong các cơ sở dữ liệu, mã hóa ngăn chặn sự truy cập trái phép vào dữ liệu đó.
Tóm lại, việc sử dụng mã hóa đóng vai trò quan trọng trong việc bảo vệ dữ liệu, đảm bảo an toàn thông tin và tuân thủ các chuẩn mực an ninh.
4. Tổng kết
Như vậy, mình vừa giới thiệu khái niệm, phân loại và tại sao phải mã hóa. Hy vọng, qua bài viết trên, các bạn sẽ nắm được thông tin bổ ích này. Nếu thấy có sai sót có thể đóng góp dưới phần Bình luận mình xin tiếp thu các ý kiến của mọi người đóng góp Tại phần sau mình sẽ nói Caesar cổ điển: Một thuật toán mã hóa đơn giản nhưng hiệu quả Cảm ơn các bạn đã theo dõi bài viết của mình và mong rằng các bạn sẽ tiếp tục ủng hộ những bài viết tiếp theo của mình nhé!
Nguồn tham khảo : Giáo trình MẬT MÃ HỌC & HỆ THỐNG THÔNG TIN AN TOÀN (CRYPTOGRAPHY AND SECURE INFORMATION SYSTEM) - TS. THÁI THANH TÙNG
All Rights Reserved