Mật mã học gắn liền với quá trình mã hóa nghĩa là chuyển đổi thông tin từ dạng “có thể hiểu được” thành dạng “không thể hiểu được” và ngược lại là quá trình giải mã. Vậy Mã hóa đối xứng là gì? Mã hóa bất đối xứng là gì? Chúng có gì giống và khác nhau hay không? Bài viết dưới đây sẽ giải đáp thắc mắc đó
1. Một số khái niệm cơ bản:
1.1. Mật mã học:
Là ngành khoa học nghiên cứu về việc đảm bảo an toàn thông tin. Mật mã học gắn liền với quá trình mã hóa nghĩa là chuyển đổi thông tin từ dạng “có thể hiểu được” thành dạng “không thể hiểu được” và ngược lại là quá trình giải mã. Cryptography giúp đảm bảo những tính chất sau cho thông tin:
– Tính bí mật: thông tin chỉ được tiết lộ cho những ai có quyền được tiếp cận
– Tính toàn vẹn: thông tin không thể bị thay đổi mà không bị phát hiện.
– Tính xác thực: người gửi (hoặc người nhận) có thể chứng minh đúng họ.
– Tính chống chối bỏ: người gửi hoặc nhận sau này không thể chối bỏ việc đã gửi hoặc nhận thông tin.
1.2. Thám mã:
Nghiên cứu cách phá các hệ mật nhằm phục hồi bản rõ ban đầu từ bản mã, nghiên cứu các nguyên lí và
– Tìm khóa vét cạn
– Phân tích thống kê
– Phân tích toán
1.3. Bản rõ:
Dạng ban đầu của thông báo Bản mã (Ciphertext): Dạng mã của bản rõ ban đầu Khóa (Key): thông tin tham số dùng để Mã hóa (Encryption): Quá trình biến đổi thông tin từ dạng bản rõ sang bản mã bằng khóa hoặc không cần khóa Giải mã (Decryption): Quá trình ngược lại biến đổi thông tin từ dạng bản mã sang bản rõ
2. Phân loại thuật toán mã hóa:
Có nhiều cách phân loại thuật toán mã hóa nhưng cách phân loại theo khóa được sử dụng phổ biến hơn
2.1. Thuật toán mã hóa khóa đối xứng:
Mã hóa đối xứng, còn được gọi là Secret Key Cryptography (hoặc Private Key Cryptography), là một phương pháp mã hóa sử dụng cùng một khóa cho cả quá trình mã hóa và giải mã. Quá trình này diễn ra như sau:
Trong hệ thống mã hóa đối xứng, trước khi truyền dữ liệu, hai bên gửi và nhận phải thỏa thuận về một khóa chung để sử dụng cho cả quá trình mã hóa và giải mã. Khóa này được tạo ra bằng một bộ sinh khóa. Sau đó, bên gửi sẽ mã hóa văn bản gốc (Plaintext) bằng cách sử dụng khóa bí mật này, sau đó gửi thông điệp đã mã hóa cho bên nhận. Bên nhận nhận được thông điệp đã mã hóa sẽ sử dụng khóa bí mật mà hai bên đã thỏa thuận để giải mã và khôi phục lại văn bản gốc.
Việc trao đổi thông tin giữa bên gửi và bên nhận thông qua việc sử dụng mã hóa đối xứng có quy trình như vậy. Trong quá trình này, điều quan trọng nhất là giữ kín khóa. Mặc dù việc thảo luận và thống nhất về thuật toán mã hóa có thể công khai, nhưng việc thỏa thuận về khóa cho quá trình mã hóa và giải mã phải được thực hiện một cách bí mật. Điều này cần thiết vì hai lý do chính:
– Nếu hai bên chỉ thống nhất về thuật toán mã hóa mà không chia sẻ khóa sử dụng trong quá trình mã hóa, khi bên gửi gửi thông điệp mã hóa cho bên nhận mà không cung cấp khóa, bên nhận sẽ không thể giải mã và hiểu được nội dung thông điệp. Do đó, việc trao đổi khóa cần phải diễn ra song song với việc thảo luận về thuật toán.
– Việc trao đổi khóa phải thông qua các kênh bí mật, chẳng hạn như trao đổi trực tiếp (mặt đối mặt) hoặc trao đổi gián tiếp qua điện thoại, email, tin nhắn. Điều này cần thiết để đảm bảo khóa không bị bên thứ ba nghe lén và lấy cắp. Đồng thời, sự tin tưởng và tương tác đáng tin cậy giữa hai bên là điều kiện cần để việc trao đổi khóa diễn ra một cách an toàn.
Thuật toán mã hóa đối xứng có ưu điểm là tốc độ nhanh và bảo mật tương đối cao, miễn là khóa bí mật không bị lộ. Điều quan trọng nhất là việc đảm bảo khóa được truyền tới bên nhận một cách an toàn và bảo mật.
* Một số thuật toán mã hóa khóa công khai phổ biến
Thuật toán mã hóa khóa công khai là một chủ đề quan trọng trong lĩnh vực bảo mật thông tin. Dưới đây là một số ví dụ về các thuật toán mã hóa khóa công khai phổ biến.
– DES (Data Encryption Standard): DES viết tắt của Tiêu Chuẩn Mã Hóa Dữ Liệu. Với DES, dữ liệu gốc (Plaintext) được chia thành các khối có kích thước 64 bit và mã hóa bằng cách sử dụng một khóa cũng có kích thước 64 bit. Tuy nhiên, thực tế chỉ có 56 bit trong số đó được sử dụng để tạo khóa. DES đã từng là một trong những thuật toán phổ biến nhất trên thế giới với lịch sử hơn 20 năm. Nó được phát triển bởi đội ngũ của IBM vào những năm 1970 và sau đó được NIST (Viện Tiêu Chuẩn và Công Nghệ Quốc Gia Hoa Kỳ) phát triển tiếp để sử dụng trong các ứng dụng
– Triple DES (3DES): Triple DES, viết tắt của Mã Hóa Ba Lần, cải thiện độ mạnh của DES bằng cách sử dụng một quá trình mã hóa-giải mã-mã hóa với 3 khóa. Đầu tiên, dữ liệu gốc 64-bit được mã hóa bằng khóa thứ nhất. Sau đó, dữ liệu đã mã hóa được giải mã bằng khóa thứ hai. Cuối cùng, dùng khóa thứ ba và kết quả từ quá trình giải mã trước để mã hóa.
– AES (Advanced Encryption Standard): AES viết tắt của Tiêu Chuẩn Mã Hóa Nâng Cao. AES ra đời sau khi NIST kêu gọi phát triển một thuật toán mới thay thế cho DES. Vào tháng 11 năm 2001, AES chính thức thay thế DES. Thuật toán này hỗ trợ kích thước khóa từ 128, 192 đến 256 bit. Hiện nay, AES được sử dụng rộng rãi trong nhiều ứng dụng bảo mật.
2.2. Thuật toán mã hóa bất đối xứng:
Thuật toán mã hóa khóa công khai, hay còn gọi là mã hóa khóa công khai (Public Key Cryptography), đã được thiết kế để giải quyết một số vấn đề quan trọng trong lĩnh vực bảo mật thông tin. Điểm quan trọng của loại mã hóa này là sự tách biệt giữa khóa dùng cho việc mã hóa và khóa dùng cho việc giải mã. Hai loại khóa này không thể suy luận hoặc tính toán ra từ nhau. Trong thực tế, chúng có mối liên hệ toán học nhưng không thể dựa vào một khóa để suy diễn ra khóa còn lại.
Thuật toán này có tên gọi “Public-Key” vì khóa dùng cho mã hóa (Encryption Key) được công khai và có thể truy cập cho tất cả mọi người. Một người hoàn toàn xa lạ có thể sử dụng khóa này để mã hóa dữ liệu, nhưng chỉ có người có khóa giải mã (Decryption Key) mới có thể đọc dữ liệu đã mã hóa. Trong loại mã hóa này, khóa mã hóa được gọi là “Public Key” và khóa giải mã được gọi là “Private Key”.
Vì sao lại xuất hiện Mã Hóa Khóa Công Khai?
Như đã trình bày ở trên, mặc dù các thuật toán mã hóa riêng có tốc độ nhanh, nhưng chúng cũng đến với nhược điểm riêng:
– Khóa phải được trao đổi qua một kênh bí mật.
– Nếu khóa bị mất, thông tin có thể bị đánh cắp hoặc giả mạo.
– Khóa cần thay đổi định kì.
Khi số lượng người dùng tăng, số lượng khóa cần quản lý cũng tăng theo, và đó là một vấn đề khó khăn. Đây là lý do Mã Hóa Khóa Công Khai ra đời để giải quyết những thách thức này.
* Ưu Điểm Của Mã Hóa Khóa Công Khai Trong Quản Lý Khóa:
– Mã hóa khóa riêng có một điểm yếu quan trọng nằm trong khâu quản lý khóa, một khía cạnh quan trọng để đảm bảo tính bảo mật và hiệu quả của hệ thống bảo mật. Mã hóa khóa công khai đã ra đời để giải quyết vấn đề này một cách thông minh. Hãy cùng tìm hiểu cách mà mã hóa khóa công khai đã giải quyết vấn đề quản lý khóa một cách linh hoạt.
– Trong hệ thống mã hóa khóa công khai, mỗi người dùng khi tham gia đều được cung cấp hai khóa: một khóa dùng để mã hóa (Public Key) và một khóa dùng để giải mã (Private Key). Public Key được công khai và mọi người có thể biết đến nó, trong khi Private Key phải được bảo mật tuyệt đối. Quá trình truyền tin an toàn dựa vào việc sử dụng cả hai khóa này.
* Quá Trình Truyền Tin An Toàn Trong Hệ Thống Mã Hóa Khóa Công Khai
– Người gửi (Sender) yêu cầu hoặc tìm kiếm Public Key của người nhận (Receiver) trên một máy chủ (Server) quản lý các Public Key.
– Sau khi có Public Key của người nhận, cả hai thống nhất một thuật toán mã hóa cụ thể. Người gửi sử dụng Public Key của người nhận và thuật toán đã thống nhất để mã hóa thông tin bí mật.
– Thông tin sau khi mã hóa được gửi tới người nhận. Lúc này, ngay cả người gửi cũng không thể giải mã thông tin đã mã hóa (khác biệt so với mã hóa khóa riêng).
– Người nhận sử dụng Private Key của mình để giải mã và khôi phục thông tin ban đầu.
Mã hóa khóa công khai giúp quản lý khóa một cách linh hoạt và hiệu quả hơn. Người dùng chỉ cần bảo vệ Private Key của mình. Hệ thống này an toàn hơn nhiều so với mã hóa khóa riêng, vì người mã hóa không thể giải mã dữ liệu đã mã hóa bằng Public Key của người khác.
Tuy nhiên, điều này đến cùng với một nhược điểm: tốc độ thực hiện. Mã hóa khóa công khai chậm hơn mã hóa khóa riêng khoảng ~1000 lần. Do đó, người ta thường kết hợp hai hệ thống mã hóa khóa riêng và khóa công khai lại với nhau, tạo nên một hệ thống gọi là Hybrid Cryptosystems (Hệ thống mã hóa lai).
3. Sự khác biệt giữa mã hóa đối xứng và bất đối xứng:
* Mã hóa đối xứng:
– Khóa: Mã hóa đối xứng sử dụng cùng một khóa để thực hiện cả quá trình mã hóa và giải mã. Khóa này cần được chia sẻ giữa người gửi và người nhận, điều này đòi hỏi quản lý khóa an toàn và hiệu quả.
– Tính đối xứng: Quá trình mã hóa và giải mã đều sử dụng cùng một khóa, tạo ra tính đối xứng trong cách thực hiện. Điều này có nghĩa là nếu ai đó biết khóa mã hóa, họ cũng có khả năng giải mã dữ liệu.
– Tốc độ: Mã hóa đối xứng thường nhanh hơn mã hóa bất đối xứng vì chỉ cần thực hiện một loạt các phép biến đổi đơn giản.
* Mã hóa bất đối xứng:
– Khóa: Mã hóa bất đối xứng sử dụng một cặp khóa, gồm khóa công khai và khóa riêng tư. Khóa công khai được chia sẻ công khai và dùng để mã hóa dữ liệu, trong khi khóa riêng tư được giữ bí mật và dùng để giải mã dữ liệu. Không cần chia sẻ khóa riêng tư.
– Tính bất đối xứng: Khóa công khai và khóa riêng tư đóng vai trò không đối xứng, điều này có nghĩa là dữ liệu mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa riêng tư, và ngược lại.
– Độ bảo mật: Mã hóa bất đối xứng thường đảm bảo độ bảo mật cao hơn do không cần chia sẻ khóa riêng tư. Người gửi chỉ cần biết khóa công khai của người nhận để mã hóa dữ liệu, và người nhận giữ khóa riêng tư để giải mã.
Tóm lại: Sự khác biệt cơ bản giữa mã hóa đối xứng và mã hóa bất đối xứng là trong việc sử dụng khóa và cách thức thực hiện quá trình mã hóa và giải mã. Mã hóa đối xứng sử dụng cùng một khóa cho cả hai quá trình, trong khi mã hóa bất đối xứng sử dụng cặp khóa khác nhau cho việc mã hóa và giải mã. Mã hóa bất đối xứng thường đảm bảo tính bảo mật cao hơn, trong khi mã hóa đối xứng thường nhanh hơn trong việc thực hiện quá trình mã hóa và giải mã.