1. Các phương thức xác thực
- Preshared key: một giá trị khóa bảo mật (secret key) được đưa vào mỗi peer (thiết bị ngang hàng), được sử dụng để xác thực ngang hàng.
- RSA signatures: sử dụng việc trao đổi giấy chứng nhận điện tử để xác thực ngang hàng (xác thực đúng người dùng mong muốn).
- RSA encrypted nonces: nonces (một số ngẫu nhiên được tạo ra bởi mỗi peer) được mã hóa và trao đổi giữa các peer. Two nonces được sử dụng trong quá trình xác thực peer.
2. Các phương thức mã hóa
Có 2 phương pháp đảm bảo an toàn dữ liệu khi sử dụng các phương thức mã hóa. Đó là: bảo vệ bản thân thuật toán (algorithm), và bảo vệ bằng khóa (keys). Với phương pháp bảo vệ bằng keys, có 2 loại thuật toán mã hóa căn bản là: đối xứng (symmetric) và bất đối xứng (asymmetric).
+ Thuật toán mã hóa đối xứng sử dụng một khóa chung, còn gọi là secret key, để mã hóa và giải mã. Khóa này cần chia sẻ trước (pre-shared) cho bên truyền và bên nhận. Vì secret key được bảo vệ bởi sender và receiver nên có thể chọn thuật toán mã hóa sử dụng key với độ dài ngắn hơn và làm cho việc tính toán nhanh hơn.
Thông thường, thuật toán đối xứng tính toán đơn giản hơn thuật toán bất đối xứng và có thể tăng tốc bằng phần cứng chuyên dụng. Nếu cần mã hóa lượng dữ liệu lớn, người ta chọn thuật toán đối xứng. Thách thức khi sử dụng thuật toán đối xứng là việc quản lý khóa. Secret key cần được trao đổi bằng kênh an toàn cho sender và receiver trước khi truyền dữ liệu.
Mã hóa đối xứng
+ Thuật toán bất đối xứng sử dụng các khóa khác nhau để mã hóa và giải mã và không dùng đến pre-shared key. Vì cả 2 bên truyền và nhận không có shared secret key nên cần dùng khóa có độ dài rất lớn để ngăn chặn tấn công. Các thuật toán này tiêu tốn nhiều tài nguyên và tính toán chậm. Trong thực tế, thuật toán bất đối xứng thường tính toán chậm hơn hàng trăm hoặc hàng nghìn lần so với thuật toán đối xứng.
Mã hóa bất đối xứng
+ Các thuật toán mã hóa đối xứng phổ biến là DES, 3DES, AES, Software Encryption Algorithm (SEAL), và Rivest ciphers (RC) series. Ngoài ra còn có Blowfish, Twofish, Threefish, và Serpent…
+ Kỹ thuật phổ biến sử dụng trong mã hóa đối xứng là block ciphers (mã hóa khối) và stream ciphers (mã hóa dòng).
* Block ciphers (mã hóa khối): phương pháp này mã hóa một khối dữ liệu gốc (plaintext) có độ dài cố định thành một khối dữ liệu đã mã hóa (ciphertext) có kích thước thông thường là 64 hoặc 128 bits. Block size là ám chỉ đến lượng dữ liệu được mã hóa tại một thời điểm. Nếu input data nhỏ hơn block size thì thuật toán sẽ thêm vào các bit giả. Phương pháp này thường cho kết quả đầu ra có kích thước lớn hơn so với dữ liệu gốc đầu vào.
Mã hóa khối (Block ciphers)
* Stream Ciphers (mã hóa dòng): phương pháp này mã hóa từng bit một của dữ liệu gốc và có tốc độ nhanh hơn so với block ciphers. Stream ciphers không làm tăng kích thước của dữ liệu.
Mã hóa dòng (Stream Ciphers)
Data Encryption Standard (DES)
+ DES thường sử dụng kỹ thuật block ciphers (và cũng có thể sử dụng mã stream ciphers). Thuật toán thực hiện trình tự đơn giản là hoán vị và thay thế data bits với một encryption key.
Đặc điểm của DES
+ DES sử dụng 2 chế độ block ciphers chuẩn là: Electronic Code Book (ECB) hoặc Cipher Block Chaining (CBC). Cả 2 chế độ này đều dùng phép toán logic XOR.
Chế độ ECB và chế độ CBC
Hình minh họa hoạt động của chế độ ECB và CBC
3DES
3DES sử dụng thuật toán DES 3 lần với 3 key khác nhau để mã hóa plaintext blocks. Thuật toán này rất tin cậy vì attacker gần như là không thể tấn công brute-force. Tuy nhiên, 3DES tiêu tốn khá nhiều tài nguyên.
AES (Advanced Encryption Standard)
AES sử dụng thuật toán Rijndael, do Joan Daemen và Vincent Rijmen phát triển. Rijndael là thuật toán lặp và sử dụng block và key có độ dài thay đổi. Để có được kết quả cuối cùng, input block khởi tạo và cipher key bị biến đổi nhiều vòng.
Một khóa 128, 192 hoặc 256 bits có thể được sử dụng để mã hóa các data blocks có kích thước 128, 192 hoặc 256 bits. Rijndael được thiết kế để dễ dàng tăng kích thước block hoặc key theo bội số của 32 bits và việc sử dụng tài nguyên tính toán cũng được tối ưu hóa.
AES hiệu quả hơn so với DES và 3DES, nhất là trong môi trường yêu cầu thông lượng cao, độ trễ thấp và đặc biệt là nếu chỉ sử dụng phần mềm để thực thi mã hóa.
Hình minh họa hoạt động của chế độ ECB và CBC
3DES
3DES sử dụng thuật toán DES 3 lần với 3 key khác nhau để mã hóa plaintext blocks. Thuật toán này rất tin cậy vì attacker gần như là không thể tấn công brute-force. Tuy nhiên, 3DES tiêu tốn khá nhiều tài nguyên.
Đặc điểm của 3DES
AES (Advanced Encryption Standard)
AES sử dụng thuật toán Rijndael, do Joan Daemen và Vincent Rijmen phát triển. Rijndael là thuật toán lặp và sử dụng block và key có độ dài thay đổi. Để có được kết quả cuối cùng, input block khởi tạo và cipher key bị biến đổi nhiều vòng.
Một khóa 128, 192 hoặc 256 bits có thể được sử dụng để mã hóa các data blocks có kích thước 128, 192 hoặc 256 bits. Rijndael được thiết kế để dễ dàng tăng kích thước block hoặc key theo bội số của 32 bits và việc sử dụng tài nguyên tính toán cũng được tối ưu hóa.
Đặc điểm của AES
AES hiệu quả hơn so với DES và 3DES, nhất là trong môi trường yêu cầu thông lượng cao, độ trễ thấp và đặc biệt là nếu chỉ sử dụng phần mềm để thực thi mã hóa.