Mã khoá công khai trong mạng riêng ảo (PKI và VPN)

Hiện nay nhiều mạng riêng ảo (VPN) đang thể hiện sự hạn chế bởi chính hệ thống

bảo mật quá đơn giản. Trong bài này chúng ta sẽ bàn đến một số sửa đổi cần thiết

để có thể đáp ứng yêu cầu phát triển một mạng riêng ảo lớn và có tính bảo mật

cao. Đa số các mạng riêng ảo ngày nay đang được khai thác không sử dụng sự hỗ

trợ của cơ sở hạ tầng mã khoá công khai (PKI). Các điểm kết cuối của các mạng

VPN này (các cổng bảo mật hoặc các máy khách) nhận thực lẫn nhau thông qua

thiết lập các "đường ngầm" IP. Một cách đơn giản nhất, điều đó có thể thực hiện

được thông qua việc thiết đặt cầu hình tại cả hai đầu của đường ngầm VPN cùng

chia sẻ một bí mật chung - một cặp mật khẩu (password). Phương pháp giải quyết

"thô sơ" này có thể hoạt động tốt trong một mạng VPN nhỏ nhưng sẽ trở nên kồng

kềnh, khó điều khiển trong một mạng VPN lớn khi số lượng điểm truy nhập lên tới

hàng trǎm, thậm chí hàng ngàn điểm. Hãy so sánh với một câu lạc bộ nhỏ, ở đó

mọi người đều biết nhau vì số lượng người ít và hầu như họ đã quen biết nhau từ

trước. Không có gì khó khǎn trong việc ghi nhớ tên và nhận dạng của các thành

viên trong một nhóm nhỏ. Nhưng với một câu lạc bộ có hàng trǎm thành viên thì

chắc chắn cần phải có thẻ hội viên. Các thành viên mới có thể chứng minh họ là ai

khi họ xuất trình thẻ hội viên. Với "hạ tầng" như vậy, hai người hoàn toàn không

quen biết có thể nhận dạng và tin cậy nhau đơn giản là vì họ tin vào thẻ hội viên

của nhau. Tương tự như vậy, hai đầu cuối VPN có thể nhận thực nhau thông qua

giấy chứng nhận điện tử - Một loại "thẻ hội viên điện tử" không thể thiếu trong các

mạng VPN lớn. Vậy tại sao hiện nay không phải mạng VPN lớn nào cũng sử dụng

chứng nhận điện tử? Bởi vì việc triển khai mạng lớn không chỉ đòi hỏi chứng nhận

điện tử mà yêu cầu xây dựng một hạ tầng hoàn thiện bao gồm: khối cung cấp

chứng nhận điện tử, phương cách bảo đảm để khởi tạo và phân phối chúng, cách

thức truy xuất dễ dàng để xác nhận tính hợp lệ. Nói một cách ngắn gọn, đó chính

là cơ sở hạ tầng mã khoá công khai - PKI. Khoá công khai là gì và tác dụng? Để

hiểu được yêu cầu và các đòi hỏi của PKI, chúng ta cần biết một số kiến thức sơ

lược về khoá mật mã công khai. Hệ thống này xây dựng trên cơ sở một cặp khoá

mã có liên hệ toán học với nhau trong đó một khoá sử dụng để mã hoá thông điệp

và chỉ có khoá kia mới giải mã được thông điệp và ngược lại. Khi đó chúng ta có

thể công khai hoá một khoá trong cặp khoá này. Nếu ai cần gửi cho chúng ta các

thông điệp bảo đảm, họ sẽ có thể sử dụng khoá đã được cung cấp công khai này để

mã hoá thông điệp trước khi gửi đi và bởi vì chúng ta đã giữ bí mật khoá mã còn

lại nên chỉ chúng ta mới có thể giải mã được thông điệp bảo đảm đó. Cặp khoá này

còn dùng để xác nhận thông điệp. Người gửi sẽ tạo một đoạn mã bǎm (hash) của

thông điệp - một dạng rút gọn của thông điệp nguyên bản - với một số thuật toán

(ví dụ như MD5, SHA-1 ...). Người gửi sẽ mã hoá đoạn mã bǎm bằng khoá riêng

của mình và người nhận sẽ dùng khoá công khai của người gửi để giải đoạn mã

bǎm của người gửi, sau đó so sánh với đoạn mã bǎm của thông điệp nhận được

(được tạo bằng cùng một thuật toán). Nếu trùng nhau thì người nhận có thể tin

rằng thông điệp nhận được không bị thay đổi trong quá trình truyền tải trên mạng

và xuất phát từ người gửi xác định. Cách thực hiện này được gọi là chữ ký điện tử.

Nhưng cần nhắc lại là chúng ta yêu cầu không chỉ chữ ký - chúng ta cần một thẻ

hội viên điện tử. Chính vì thế mà xuất hiện khái niệm giấy chứng nhận điện tử.

Một chứng nhận điện tử gắn tên của hội viên hay thiết bị với một cặp khoá, tương

tự như thẻ hội viên gắn tên của hội viên với chữ ký và ảnh của họ. Để đảm bảo

giấy chứng nhận là hợp lệ, chúng ta thường yêu cầu giấy chứng nhận phải được

cấp do một tổ chức tin cậy. Đối với giấy chứng nhận điện tử, tổ chức này được gọi

là hệ thống cung cấp chứng nhận (CA-Certification Authority) Các mạng VPN sử

dụng chứng nhận điện tử như thế nào? Khi đường ngầm IP đã được khởi tạo, các

điểm kết cuối sẽ nhận thực lẫn nhau thông qua chứng nhận điện tử. Ví dụ cổng bảo

mật X sẽ tự chứng nhận và ký (điện tử) thông điệp bằng khoá mã riêng của nó.

Cổng bảo mật Y sẽ nhận chúng nhận điện tử của X và sử dụng khoá công khai của

X để kiểm tra chữ ký điện tử. Nếu đúng thì cổng bảo mật X được xác nhận vì chữ

ký điện tử chỉ có thể được tạo ra bằng khoá mã riêng được gắn liền với chứng

nhận điện tử của X. Tại sao giấy chứng nhận điện tử lại có tính mở rộng hơn kiểu

chia sẻ khoá bảo mật chung? Rõ ràng chúng ta không còn cần phải cung cấp

những cặp mã khoá chia sẻ cho mỗi cặp thiết bị VPN. Mỗi thiết bị VPN chỉ cần

một giấy chứng nhận điện tử. Và chúng ta cũng không cần phải thiết lập lại cấu

hình của tất cả các điểm đã có của VPN mỗi khi chúng ta mở thêm một điểm mới.

Thay vào đó, chúng ta có thể chứng nhận cho mỗi thiết bị thông qua hệ thống thư

mục công cộng - ví dụ như qua LDAP. Cao hơn nữa, chúng ta có thể kết hợp hai

mạng VPN sẵn có thông qua việc cộng tác giữa hai CA trong trao đổi cơ sở dữ

liệu và trong việc phát hành giấy chứng nhận. Điều đó cũng tương tự như việc

công nhận hộ chiếu của một nước khác như là một giấy chứng minh hợp lệ vậy.

Cũng như hộ chiếu, mỗi giấy chứng nhận điện tử cũng phải có thời hạn hợp lệ và

có thể bị nơi phát hành thu hồi khi cần thiết. Xuất trình chữ ký điện tử liên quan

đến một giấy chứng nhận điện tử không hợp lệ, không tồn tại hay đã bị thu hồi sẽ

dẫn đến việc truy nhập không thành công. Vấn đề này có thể trở nên phức tạp nếu

người kiểm tra (nơi nhận) không thường xuyên kiểm tra tình trạng hợp lệ của giấy

chứng nhận tại nơi phát hành giấy chứng nhận (CA). Thậm chí, nếu việc kiểm tra

được thực hiện thì có thể danh sách các giấy chứng nhận điện tử bị thu hồi cũng đã

"lạc hậu". Vậy thì cần phải kiểm tra các danh sách này hàng tháng, hàng tuần hay

hàng ngày, hàng giờ? đó là vấn để của thực tế khi áp dụng các chính sách bảo mật

của mỗi nhà quản trị mạng cụ thể.