Thứ Năm, 8 tháng 10, 2015

Tổng quan về công nghệ VPN

Tổng quan về công nghệ VPN

A. VPN là gì và tại sao chúng ta cần sử dụng VPN?
I. VPN là gì?
VPN là viết tắt của virtual private network (mạng riêng ảo). Chữ network cho biết đây là một mạng cho phép kết nối giữa 2 thiết bị với nhau. Chữ virtual cho biết đây là một kết nối luận lý (logical connection) giữa 2 thiết bị. Chẳng hạn một thiết bị ở Hà Nội kết nối Internet thông qua một ISP tại Hà Nội, và một thiết bị ở Sài Gòn kết nối Internet thông qua một ISP tại Sài Gòn, và ta có thể xây dựng một logical network, hay virtual network, giữa 2 thiết bị này thông qua phương tiện vận chuyển là mạng Internet. Chữ private cho biết đây là kết nối riêng tư giữa 2 thiết bị, nghĩa là dữ liệu trao đổi thông qua kết nối này phải được đảm bảo tính tin cậy bằng cách mã hóa , tính toàn vẹn,  cũng như phải chứng thực các thiết bị.
Để kết nối 2 thiết bị ở Sài Gòn và Hà Nội với nhau, thay vì dùng VPN ta cũng có thể thuê đường leased-line (kết nối WAN dành riêng). Tuy nhiên, giải pháp này đắt hơn rất nhiều so với dùng VPN, vốn chỉ cần có kết nối Internet là được. Ngoài ra, khi công ty có nhu cầu mở rộng thêm nhiều sites thì lại phải thuê thêm các kênh leased-line khác, khiến chi phí càng tăng cao. Sử dụng VPN giúp tiết kiệm chi phí và có được tính scalability.
II. Các công nghệ VPN
Có một số công nghệ VPN sau:
  • IPsec: Thực hiện bảo mật cho gói tin IP ở Layer 3 của mô hình OSI, có thể dùng cho site-to-site VPN hoặc remote-access VPN.
  • SSL: Secure Socket Layer thực hiện bảo mật cho TCP session tại Layer 4 của mô hình OSI, và có thể dùng cho remote-access VPN (cũng như dùng để truy cập an toàn một web server thông qua HTTPS).
  • MPLS: MPLS Layer 3 VPN mặc định không có mã hóa. Ta có thể sử dụng IPsec chung với MPLS VPN.
III. 2 loại VPN chính
VPN có thể được phân thành 2 loại chính là remote-access và site-to-site.
  • Remote-access VPN: Một số user có thể cần tạo một kết nối VPN từ PC của họ đến trụ sở (hoặc đến nơi mà họ muốn). Loại này gọi là remote-access VPN. Remote-access VPN có thể sử dụng công nghệ IPsec hoặc SSL.
  • Site-to-site VPN: Một số công ty có 2 hoặc nhiều sites, và họ muốn các sites này có thể kết nối an toàn với nhau. Loại này gọi là site-to-site VPN. Site-to-site VPN thường sử dụng công nghệ IPsec.
IV. Những ưu điểm của VPN
Lợi ích của việc sử dụng VPN (cả remote-access và site-to-site) bao gồm:
  • Tính tin cậy
  • Tính toàn vẹn
  • Chứng thực
  • Chống tấn công lặp lại
1. Tính tin cậy
Tính tin cậy (confidentiality) nghĩa là dữ liệu (được mã hóa) trao đổi giữa 2 bên thì chỉ có 2 bên là có thể đọc được (nghĩa là chỉ có 2 bên là có khóa giải mã). Bất cứ ai nghe lén hoặc bắt được dữ liệu đó mà không có khóa giải mã thì cũng vô ích.
2. Tính toàn vẹn
Tính toàn vẹn dữ liệu (data integrity) nghĩa là đảm bảo dữ liệu trao đổi giữa 2 bên được nguyên vẹn, nếu có bất kỳ thay đổi nào về dữ liệu trong quá trình truyền đều sẽ bị phát hiện. Chúng ta sử dụng thuật toán hash (băm) để làm việc này.
Đối với Cisco IOS image, để đảm bảo file image mà ta download từ Cisco là chính xác, không bị lỗi trong quá trình truyền, ta có thể dùng lệnh verify với đường dẫn tới file image trong bộ nhớ flash (ví dụ: verify /md5 flash:/c2800nm-advipservicesk9-mz.124-24.T4.bin). Kết quả của lệnh này sẽ cho ra một chuỗi MD5 hash, và ta đem so sánh chuỗi hash vừa tính được với chuỗi được cung cấp trên trang web của Cisco cho file image này. Nếu giống nhau thì ta biết được rằng file image đã download về là nguyên vẹn, không bị lỗi.
3. Chứng thực
Ngoài việc mã hóa dữ liệu và đảm bảo dữ liệu không bị thay đổi trên đường truyền, một VPN tunnel còn phải có khả năng chứng thực (authentication) đối tượng ở phía đầu bên kia của VPN tunnel. Có một số cách chứng thực sau:
  • Pre-shared key
  • Chữ ký số
  • Username và password (dùng với remote-access VPN)
4. Chống tấn công lặp lại
Hầu hết các công nghệ VPN đều hỗ trợ chống kiểu tấn công lặp lại (antireplay), nghĩa là khi một gói tin VPN đã được gửi đi thì gói tin đó sẽ không còn hợp lệ khi gửi tiếp lần thứ 2 trong VPN session đó.
B. Các thành phần cơ bản của cryptography
I. Mã hóa khối
Một thuật toán mã hóa khối (block cipher) sẽ thực hiện mã hóa trên một khối bit có kích thước cố định, chẳng hạn lấy 64-bit plain text và tạo ra 64-bit cipher text. Các thuật toán mã hóa block cipher là các thuật toán mã hóa đối xứng, nghĩa là key mã hóa cũng là key giải mã. Một số thuật toán block cipher bao gồm:
  • Advanced Encryption Standard (AES)
  • Triple Digital Encryption Standard (3DES)
  • Blowfish
  • Digital Encryption Standard (DES)
  • International Data Encryption Algorithm (IDEA)
Nếu như không đủ dữ liệu để mã hóa đủ một block thì block cipher sẽ thêm padding vào (chẳng hạn block size là 64 bit nhưng chỉ còn 56 bit dữ liệu thì sẽ thêm padding là 8 bit). Điều này có thể dẫn đến overhead (dù rất nhỏ), vì padding sẽ được xử lý chung với dữ liệu thật.
II. Mã hóa dòng
Một thuật toán mã hóa dòng (stream cipher) sẽ thực hiện mã hóa trên mỗi bit plain text để tạo ra 1 bit cipher text tương ứng (còn được gọi là cipher digit stream). Các thuật toán mã hóa stream cipher là các thuật toán mã hóa đối xứng, nghĩa là key mã hóa cũng là key giải mã. Bởi vì stream cipher không mã hóa trên từng block cố định nên sẽ ít overhead hơn block cipher.
III. Thuật toán mã hóa đối xứng
Thuật toán mã hóa đối xứng (symmetric encryption algorithm) là thuật toán sử dụng cùng một key để mã hóa và giải mã dữ liệu. Các thuật toán mã hóa đối xứng phổ biến là:
  • DES
  • 3DES
  • AES
  • IDEA
  • RC2, RC4, RC5, RC6
  • Blowfish
Thuật toán mã hóa đối xứng là thuật toán dùng để mã hóa dữ liệu trong các kết nối VPN ngày nay. Lý do dùng thuật toán mã hóa đối xứng là vì nó nhanh hơn nhiều và tốn ít CPU hơn so với thuật toán mã hóa bất đối xứng. Vì thuật toán được public nên dữ liệu có an toàn hay không phụ thuộc vào chiều dài key. Chiều dài key thông thường là từ 40 bit đến 256 bit, và key càng dài thì càng an toàn. Chiều dài key phải ít nhất 80 bit mới được xem là tương đối an toàn.
IV. Thuật toán mã hóa bất đối xứng
Thuật toán mã hóa bất đối xứng (asymmetric encryption algorithm) là thuật toán sử dụng key mã hóa và key giải mã khác nhau. 2 key này tạo thành một cặp, và được gọi là public key và private key. Public key là key được phép công khai cho mọi người biết, còn private key là key được giữ bí mật bởi người sở hữu cặp public-private key đó. Nếu mã hóa bằng public key thì cách duy nhất để giải mã là dùng private key, và nếu mã hóa bằng private key thì cách duy nhất để giải mã là dùng public key. Tuy nhiên, thuật toán bất đối xứng làm tốn rất nhiều CPU, vì vậy ta không dùng nó để mã hóa và giải mã dữ liệu của user, mà chỉ dùng cho một số mục đích như chứng thực VPN peer hoặc phát sinh key để dùng cho thuật toán đối xứng.
V. Hàm băm
Băm (hashing) là phương pháp dùng để kiểm tra tính toàn vẹn dữ liệu. Một hàm hash sẽ xử lý một khối dữ liệu và tạo ra một chuỗi dữ liệu với kích thước cố định (fixed-length). Hàm hash là hàm một chiều, nghĩa là không thể suy ra khối dữ liệu ban đầu từ chuỗi dữ liệu sau khi hash.
  • Nếu 2 máy tính khác nhau dùng cùng một hàm hash để xử lý cùng một khối dữ liệu thì chuỗi dữ liệu sau khi hash phải giống nhau.
  • Không thể phát sinh cùng một chuỗi hash từ các khối dữ liệu khác nhau.
Kết quả của hàm hash là một chuỗi dữ liệu với kích thước cố định, và được gọi là digest, message digest, hoặc hash.
Bên gửi sẽ chạy thuật toán hash cho mỗi gói tin và đính kèm kết quả hash trên mỗi gói tin đó. Nếu bên nhận chạy lại thuật toán hash trên gói tin và so sánh kết quả hash thấy giống với kết quả được gửi kèm trong mỗi gói tin thì nghĩa là dữ liệu trong gói tin còn nguyên vẹn. Nếu kết quả khác nhau nghĩa là dữ liệu đã bị thay đổi trong quá trình truyền.
Có 3 loại hash phổ biến là:
  • Message digest 5 (MD5): Tạo ra 128-bit digest
  • Secure Hash Algorithm 1 (SHA-1): Tạo ra 160-bit digest
  • Secure Hash Algorithm 2 (SHA-2): Tạo ra 224-bit hoặc 512-bit digest
Cũng như mã hóa, đối với hash thì càng nhiều bit đồng nghĩa với càng an toàn.
VI. HMAC
Hashed Message Authentication Code (HMAC) sử dụng cơ chế hash, nhưng dùng secret key để mã hóa trước rồi mới hash. Bằng cách này thì attacker nếu không có secret key sẽ không thể nào thay đổi dữ liệu trong gói tin mà không bị phát hiện. HMAC khắc phục nhược điểm của hash thông thường (không dùng secret key).
VII. Chữ ký số
Chữ ký số (digital signature) đem lại 3 lợi ích:
  • Chứng thực
  • Tính toàn vẹn
  • Tính không từ chối trách nhiệm (non-repudiation)
Giả sử Bob và Lois là 2 thiết bị kết nối VPN với nhau, và muốn dùng chữ ký số để chứng thực lẫn nhau. Để đơn giản ta chỉ tập trung vào một thiết bị: Bob muốn chứng minh với Lois rằng mình chính là Bob.
Trước khi thực hiện chứng thực thì cả Bob và Lois đều tạo ra một cặp public-private key cho riêng mình, và đều nhận được chứng chỉ số (digital certificate) từ một certificate authority (CA) mà cả hai cùng tin tưởng (CA là một tổ chức cung cấp chứng chỉ số). Nếu ta mở một chứng chỉ số ra thì sẽ thấy tên của đối tượng và public key của đối tượng đó (public key này được đối tượng gửi cho CA khi muốn CA cung cấp chứng chỉ số). Ngoài ra, chứng chỉ số còn có chữ ký số của CA (dùng để kiểm tra rằng chứng chỉ số do chính CA cấp). Trong trường hợp này, khi ta mở chứng chỉ số của Bob ra thì sẽ thấy tên của Bob và public key của Bob. Cả Bob và Lois đều tin tưởng CA và đều nhận được chứng chỉ số của mình do CA cấp.
Bob lấy một gói tin và phát sinh ra một chuỗi hash từ gói tin đó. Sau đó Bob mã hóa chuỗi hash này bằng private key của Bob. Tiếp theo Bob đính kèm chuỗi hash đã được mã hóa vào trong gói tin và gửi nó cho Lois. Chuỗi hash sau khi được mã hóa bằng private key được gọi là chữ ký số.
Khi Lois nhận được gói tin thì sẽ nhìn vào chữ ký số được đính kèm cùng với gói tin. Lois giải mã chữ ký số bằng public key của Bob. Sau đó Lois chạy thuật toán hash trên gói tin mà Lois nhận được, và đem so sánh kết quả với chuỗi hash mà Bob gửi (sau khi đã giải mã bằng public key của Bob). Nếu 2 chuỗi hash này giống nhau thì Lois biết được 2 điều: thứ nhất, người đã mã hóa gói tin này là Bob bằng private key của Bob; thứ hai, dữ liệu còn nguyên vẹn. Quá trình này gọi là chứng thực bằng chữ ký số, và thường diễn ra 2 chiều (2 bên chứng thực lẫn nhau) trong IPsec VPN tunnel khi sử dụng chữ ký số để chứng thực.
Trong quá trình trên, sở dĩ Lois có public key của Bob là vì Bob và Lois trao đổi chứng chỉ số cho nhau. Do đó Bob có public key của Lois và Lois có public key của Bob. Để kiểm tra chữ ký số của CA trong chứng chỉ số thì cả Bob và Lois đều phải có public key của CA. Trong trường hợp này, Lois sử dụng public key của CA để đảm bảo chứng chỉ số của Bob là do chính CA cấp. Vì Lois tin tưởng CA nên Lois sẽ tin tưởng và sử dụng public key của Bob sau khi biết được CA là hợp lệ.
Hầu hết các trình duyệt web đều có sẵn public key của các CA phổ biến trên Internet ngày nay.
VIII. Quản lý key
Quản lý key (key management) giải quyết các vấn đề liên quan đến tạo key, kiểm tra key, trao đổi key, lưu trữ key, và khi hết thời hạn sử dụng thì hủy key.
Không gian key (keyspace) là tập hợp tất cả các giá trị có thể có của key. Key càng dài (keyspace càng lớn) thì càng an toàn. Tuy nhiên, nhược điểm của việc sử dụng key quá dài là sẽ khiến cho thời gian mã hóa và giải mã dữ liệu lâu hơn, và tốn nhiều CPU hơn.
C. Sơ lược về IPsec và SSL
I. IPsec
IPsec là tập hợp các giao thức và thuật toán dùng để bảo vệ gói tin IP. IPsec mang lại các lợi ích về confidentiality thông qua mã hóa, data integrity thông qua hashing và HMAC, và authentication bằng cách sử dụng chữ ký số hoặc pre-shared key (PSK). IPsec cũng hỗ trợ antireplay. Dưới đây là các thành phần của IPsec:
  • ESP và AH: Đây là 2 phương pháp chính để triển khai IPsec. ESP là viết tắt của Encapsulating Security Payload và có thể thực hiện tất cả các tính năng của IPsec. AH là viết tắt của Authentication Header, có thể thực hiện nhiều tính năng của IPsec ngoại trừ một tính năng quan trọng là mã hóa dữ liệu. Vì lý do đó nên ta ít thấy AH được sử dụng.
  • Thuật toán mã hóa: DES, 3DES, AES.
  • Thuật toán hash: MD5, SHA.
  • Kiểu chứng thực: Pre-shared key, chữ ký số.
  • Quản lý key: Thuật toán mã hóa bất đối xứng Diffie-Hellman (DH) dùng để phát sinh key tự động cho các thuật toán mã hóa đối xứng. Internet Key Exchange (IKE) thực hiện các công việc thương lượng và quản lý key.
II. SSL
IPsec có thể dùng cho site-to-site hoặc remote-access VPN, còn SSL chỉ dùng cho remote-access VPN. Tuy nhiên, việc sử dụng SSL cho remote-access VPN tỏ ra tiện lợi hơn IPsec, vì hầu như mọi trình duyệt web (web browser) đều hỗ trợ SSL, trong khi muốn sử dụng IPsec thì máy tính phải có IPsec client.
Để sử dụng SSL, user sẽ kết nối đến web server hỗ trợ SSL (SSL server) thông qua giao thức HTTPS. Phụ thuộc vào web server kết nối tới mà SSL còn được gọi là Transport Layer Security hay TLS. Tiếp theo, trình duyệt sẽ yêu cầu web server tự định danh, và web server sẽ gửi cho trình duyệt chứng chỉ số của nó, hay còn gọi là chứng chỉ SSL (SSL certificate). Khi trình duyệt nhận được chứng chỉ số của web server, nó sẽ thực hiện kiểm tra tính hợp lệ của chứng chỉ bằng cách kiểm tra chữ ký số của CA trên chứng chỉ đó. Nếu chữ ký số của CA hợp lệ thì trình duyệt sẽ tin tưởng chứng chỉ số của web server và chấp nhận public key của web server chứa trong chứng chỉ số đó.
Thông thường, web server không yêu cầu trình duyệt tự định danh, mà nó sẽ chứng thực user thông qua username và password.
Sau khi chứng thực xong, trình duyệt và web server sẽ tiếp tục trao đổi và thương lượng về thuật toán mã hóa mà chúng sẽ sử dụng và key dùng để mã hóa và giải mã dữ liệu.
 Xem thêm:

Không có nhận xét nào:

Đăng nhận xét