Mã hóa đối xứng, tức là cả hai quá trình mã hóa và giải mã đều dùng một chìa khóa. Để đảm bảo tính an toàn, chìa khóa này phải được giữ bí mật. Vì thế các thuật toán loại này còn có tên gọi khác là secret key cryptography (hay private key cryptography), tức là thuật toán mã hóa dùng chìa khóa riêng (hay bí mật). Các thuật toán loại này lý tưởng cho mục đích mã hóa dữ liệu của cá nhân hay tổ chức đơn lẻ nhưng bộc lộ hạn chế khi thông tin đó phải được chia sẻ với một bên thứ hai.
Giả sử nếu Alice chỉ gửi thông điệp đã mã hóa cho Bob mà không hề báo trước về thuật toán sử dụng, Bob sẽ chẳng hiểu Alice muốn nói gì. Vì thế bắt buộc Alice phải thông báo cho Bob về chìa khóa và thuật toán sử dụng tại một thời điểm nào đó trước đấy. Alice có thể làm điều này một cách trực tiếp (mặt đối mặt) hay
gián tiếp (gửi qua email, tin nhắn...). Điều này dẫn tới khả năng bị người thứ ba xem trộm chìa khóa và có thể giải mã được thông điệp Alice mã hóa gửi cho Bob.
Hình 3.1: Thuật toán mã hóa đối xứng
Bob và Alice có cùng một khóa . Khóa này được xây dựng sao cho .
Mã hóa đối xứng có thể phân thành hai nhóm phụ:
- Thuật toán khối (Block ciphers):Trong đó từng khối dữ liệu trong văn
bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài. Độ dài mỗi khối gọi là block size, thường được tính bằng đơn vị bit. Ví dụ thuật toán 3-Way có kích thước khối bằng 96 bit. Một số thuật toán khối thông dụng là: DES, 3DES, RC5, RC6, 3-Way, CAST, Camelia, Blowfish, MARS, Serpent, Twofish, GOST.
- Thuật toán dòng (Stream ciphers):Trong đó dữ liệu đầu vào được mã
hóa từng bit một. Các thuật toán dòng có tốc độ nhanh hơn các thuật toán khối, được dùng khi khối lượng dữ liệu cần mã hóa chưa được biết trước, ví dụ trong kết nối không dây. Có thể coi thuật toán dòng là thuật toán khối với kích thước mỗi khối là 1 bit. Một số thuật toán dòng thông dụng: RC4, A5/1, A5/2, Chameleon.
3.1.1. DES
DES là một thuật toán khối với kích thước khối 64 bit và kích thước chìa 56 bit. Tiền thân của nó là Lucifer, một thuật toán do IBM phát triển. Cuối năm 1976, DES được chọn làm chuẩn mã hóa dữ liệu của nước Mỹ, sau đó được sử dụng rộng rãi trên toàn thế giới. DES cùng với mã hóa bất đối xứng đã mở ra một thời kì mới cho ngành mã hóa thông tin. Trước DES, việc nghiên cứu và sử dụng mã hóa dữ liệu chỉ giới hạn trong chính phủ và quân đội. Từ khi có DES, các sản phẩm sử dụng nó tràn ngập thị trường. Đồng thời, việc nghiên cứu mã hóa thông tin cũng
Hình 3.2: 16 bước trong quá trình mã hóa bằng DES 3.1.2. 3DES
Triple Data Encryption Standard (3DES): 3DES là DES được bổ sung thêm một số tính năng cao cấp, nó thực hiện mã hóa dữ liệu thông qua việc xử lý mỗi block 3 lần và mỗi lần với một khóa khác nhau.Trước hết nó sẽ dùng một khóa để mã hóa plain-text thành ciphertext, sau đó lại tiếp tục dùng một khóa khác nữa để mã hóa ciphertext, và tiếp tệp mã hóa ciphertext này với khóa thứ 3, nghĩa là 3DES sử dụng một khóa 168-bit, nên đó an toàn hơn và tất nhiên là việc xử lý sẽ chậm hơn DES.
3.1.3. AES
Avandted Encryption Standard (AES): AES được tạo ra để thay thế DES, nó không chỉ nhanh hơn mà còn mã hoá an toàn hơn nên ngày nay được sữ dụng rất nhiều. AES cũng thực hiện mã hóa dữ liệu theo từng block, có khả năng hỗ trợ block 128-bit; 192-bit; 256-bit.
3.2. Mã hóa bất đối xứng
Thay vì sử dụng một khóa đơn trong hệ thống mã hóa đối xứng, hệ thống mã hóa bất đối xứng sử dụng một cặp khóa có quan hệ toán học. Một khóa là riêng tư, chỉ được chính chủ nhân. Khóa thứ hai thì được phổ biến, công cộng và phân phối tự do. Khóa công cộng thì được dùng để mã hóa và ngược lại khóa riêng thì được dùng để giải mã thông tin. Trong VPN, 2 hệ thống mã hóa bất đối xứng được dùng phổ biến là thuật toán Diffie-Hellman (DH) và thuật toán Rivest Shamir Adleman (RSA).
3.2.1. Diffie-Hellman (D-H)
Trong thuật toán D-H, mỗi thực thể giao tiếp nhận được một cặp khóa, một được phân phối tới những thực thể thông tin khác và một được giữ lại riêng. Thuật toán D-H làm việc theo những vấn đề chính sau :
- Người gửi nhận khóa công cộng của người nhận, do khóa này là khóa công cộng nên đều được mọi người biết.
- Người gửi thực hiện một thao tác gộp khóa riêng và khóa công cộng của người nhận, kết quả cho ra một khóa chung bảo mật (shared secret key).
- Thông điệp sẽ được mã hóa bằng khóa vừa nhận được. - Sau đó thông điệp mã hóa sẽ được gửi đến người nhận.
- Trong quá trình nhận thông điệp mã hóa, bên nhận sẽ phát sinh một khóa chung bí mật khác cũng bằng thao tác tương tự gộp chính khóa riêng của mình với khóa chung của bên gửi.
Giả định cơ bản của thuật toán này là nếu bất kỳ một ai bắt được thông điệp mã hóa, người đó cũng không thể nào giải mã được bởi vì họ không xử lý khóa riêng của bên nhận được (khóa riêng của họ). Dữ liệu được trao đổi dựa trên thuật toán Diffie-Hellman được mô tả ở hình:
Hình 3.4: Thuật toán D-H
Mặc dù thuật toán D-H có một độ an toàn cao hơn so với hệ thống mã hóa đối xứng, nhưng cũng gặp một số vấn đề khó khăn. Phải đảm bảo chắc chắn rằng khóa công cộng phải được trao đổi trước khi quá trình trao đổi dữ liệu thực sự được xác định. Cho ví dụ: Nếu 2 bên trao đổi khóa công cộng cho nhau qua môi trường không an toàn, như Internet, điều đó có thể làm cho khóa công cộng có thể bị bắt giữ trước bởi một người xâm phạm nào đó, sau đó người này sẽ gửi khóa công cộng của mình cho cả hai bên đầu cuối đang thực hiện trao đổi. Trong trường hợp này, người xâm nhập sẽ dễ dàng mắc vào nghe lén thông tin của hai bên đầu cuối bởi vì cả hai bên đầu cuối đều trao đổi dữ liệu thông qua khóa công cộng của người xâm phạm. Đây là một dạng xâm nhập được biết như một kiểu tấn công Man-in-the- Middle.
Thuật toán Rivest Shamir Adleman (RSA), sẽ được tham khảo tiếp theo sau sẽ giải quyết hiệu quả phương pháp tấn công Man-in-the-Middle mà đã nảy ra trong thuật toán DH. Thuật toán RSA nổi lên như là một cơ chế mã hóa bất đối xứng khá mạnh.
3.2.2. RSA
Thuật toán RSA triển khai quá trình xác nhận bằng cách sử dụng chữ ký điện tử theo các bước sau :
Hình 3.5: Thuật toán RSA
- Khóa công cộng của người gửi được yêu cầu và được dùng cho người nhận và sau đó được chuyển hướng về phía trước (forward).
- Người gửi sử dụng hàm băm để làm giảm kích thước mẩu tin gốc. Thông điệp tổng hợp thì được hiểu như là một thông điệp phân loại (message digest (MD)).
- Người gửi mã hóa thông điệp phân loại bằng khóa riêng của nó được rút ra từ sự phát sinh chữ ký điện tử độc nhất.
- Thông điệp và chữ ký điện tử được kết hợp và chuyển hướng đến người nhận.
- Trong lúc nhận thông điệp mã hóa, người nhận phục hồi lại thông điệp phân loại bằng cách sử dụng cùng một hàm băm như người gửi.
- Người nhận sau đó giải mã chữ ký điện tử bằng cách sử dụng khóa công cộng của người gửi.
- Người nhận sau đó sẽ so sánh thông điệp phân loại vừa được phục hồi (bước 5) và thông điệp phân loại nhận được từ chữ ký điện tử (bước 6). Nếu cả hai đồng nhất, tức là dữ liệu không bị chặn đứng, giả mạo hoặc chỉnh sửa trong suốt quá trình trao đổi. Ngược lại, dữ liệu sẽ không được chấp nhận, bị từ chối.
RSA bảo đảm an toàn và bảo mật trong chuyến đi của dữ liệu bởi vì người nhận kiểm tra sự đúng đắn của dữ liệu qua 3 lần (bước 5, 6 và 7). RSA cũng làm đơn giản hóa công việc quản lý khóa. Trong cách mã hóa đối xứng, n^2 khóa được yêu cầu nếu trong quá trình trao đổi có n thực thể. Bằng cách so sánh, cách mã hóa
(giọng nói, quét võng mạc, dấu vân tay,..). Xác thực là thuật ngữ dùng chung, nó bao gồm hai khái niệm: Xác thực nguồn gốc dữ liệu và xác thực tính toàn vẹn dữ liệu. Các khái niệm này đều liên quan đến một hàm toán học gọi là hàm băm.