Chương 2 : Các phương pháp mã hoá và bảo mật thông tin
3.1 Hạ tầng cơ sở hệ thống khoá mã công kha i PKI
PKI
Hạ tầng hệ thống khoá mã công khai PKI bao gồm các chương trình, định dạng dữ liệu, thủ tục trao đổi thông tin, giao thức liên lạc, chính sách bảo mật và cơ chế mã hoá công khai để cho mọi người trên toàn hệ thống có thể trao đổi thông tin một cách an toàn. PKI là một cơ cấu xác thực theo tiêu chuẩn ISO sử dụng thuật toán mã hoá công khai và giao thức chuẩn X.509 [6]. Cơ cấu này cho phép xác thực giữa các hệ thống mạng và mạng Internet. Các giao thức và các thuật toán không được chỉ định một cách cụ thể là lý do tại sao hệ thống này chỉ được gọi là một cơ cấu mà không phải là một công nghệ cụ thể.
PKI đảm bảo các thông tin trao đổi được xác thực, an toàn, toàn vẹn và không bị phủ nhận. PKI là một hệ thống mã hoá kết hợp các phương pháp mã hoá đối xứng và bất đối xứng.
Có một sự khác nhau giữa phương pháp mã hoá khoá công khai và PKI. Phương pháp mã hoá khoá công khai đòi hỏi phải xác định cụ thể thuật toán, khoá mã, các kỹ thuật cần thiết để mã hoá và giải mã còn PKI - giống như tên gọi của nó chỉ đơn thuần là hạ tầng cơ sở. Hạ tầng cơ sở này mặc nhiên cho rằng các thực thể đầu nhận có thể xác thực được thông qua các chứng chỉ số và cho rằng giao thức trao đổi khoá Diffie-Hellman (hoặc một giao thức trao đổi khoá khác) sẽ tự động dàn xếp
tạo và phân phát chứng chỉ số, duy trì và huỷ bỏ các chứng chỉ số, phân phát và duy trì khoá mã và đảm bảo các công nghệ liên lạc và làm việc với nhau nhằm mục đích mã hoá bảo mật thông tin liên lạc.
Phương pháp mã hoá khoá công khai chỉ là một phần trong PKI và cần có rất nhiều phần khác để xây dựng nên hệ thống cơ sở hạ tầng này. Một ví dụ tương tự là giao thức gửi thư điện tử SMTP. SMTP là một công nghệ dùng để gửi thư điện tử từ nơi này đến nơi khác, nhưng cần phải có rất nhiều thành phần khác trước khi giao thức này có thể làm việc. Các thành phần đó bao gồm các máy chủ thư điện tử, các máy trạm, cùng với các thông điệp dạng thư điện tử. Tất cả những điều đó xây dựng nên một hạ tầng cơ sở - hạ tầng cơ sở thư điện tử.
PKI được tạo nên bởi rất nhiều thành phần khác nhau: các đơn vị cấp phát chứng chỉ, các đơn vị đăng ký chứng chỉ, chứng chỉ, khoá mã và người sử dụng [5].
Một người tham muốn tham gia vào một hệ thống PKI cần phải có một chứng chỉ số (digital certificate). Chứng chỉ số là một dạng tài liệu có chứa khoá mã công khai của người ấy cùng với các thông tin nhận dạng khác. Chứng chỉ số được ký (digital signature) bởi một đối tác tin cậy thứ ba hay còn gọi là một tổ chức cấp phát chứng chỉ (certificate authority - CA). CA có nhiệm vụ kiểm tra các thông tin của người giữ khoá mã. Khi CA ký vào chứng chỉ, chứng chỉ đó sẽ được gắn liền với một khoá mã công khai và CA có trách nhiệm phải xác thực khoá mã công khai đó. Điều đó có nghĩa là CA đã cho phép những người chưa bao giờ gặp nhau có thể xác thực, tin cậy lẫn nhau và trao đổi thông tin với nhau bằng phương pháp an toàn [5]. Ví dụ nếu A chưa bao giờ gặp B nhưng muốn trao đổi thông tin một cách an toàn với B thì cả A và B đều phải cùng được tin cậy bởi một CA. Sau đó A có thể lấy khoá mã công khai của B và tiến hành trao đổi thông tin một cách an toàn.
3.1.1 Đơn vị cấp phát chứng chỉ - CA
CA là một tổ chức làm nhiệm vụ cấp phát và duy trì chứng chỉ khoá mã công khai. Khi một người yêu cầu cấp chứng chỉ, CA sẽ kiểm tra các thông tin của người đó, tạo chứng chỉ, ký vào chứng chỉ, chuyển đến cho người yêu cầu và duy trì chứng chỉ trong suốt thời gian hiệu lực của chứng chỉ ấy. Khi một người khác muốn trao
đổi thông tin với người này, CA sẽ bảo đảm tính pháp lý của người đó [5]. Ví dụ khi David nhận được một thông điệp trong đó có chứa khoá mã công khai của Kevin, David sẽ liên lạc với CA và hỏi “Xin chào, đó có phải là Kevin Chaisson không?” CA sẽ đối chiếu với cơ sở dữ liệu và trả lời “Chính xác, và chứng chỉ của anh ta hoàn toàn hợp lệ”. David sẽ cảm thấy an tâm hơn và cho phép Kevin tiến hành trao đổi thông tin với anh ta.
Hình 3.1: Phương pháp mã hoá khoá mã công khai dựa vào CA cho phép người sử dụng tin cậy nhau
Một tổ chức có thể có một CA dùng trong nội bộ. Điều này cho phép tổ chức đó quản lý CA server, thiết lập cách thức xác thực, duy trì và thu hồi chứng chỉ khi cần thiết. Các tổ chức CA hỗ trợ loại hình dịch vụ này và các cá nhân, cơ quan phải trả phí cho họ khi sử dụng dịch vụ này [6].
Một số tổ chức CA nổi tiếng trên thế giới là Entrust và Verisign. Phần lớn các trình duyệt web đều thiết lập sẵn cấu hình thông tin của các CA nổi tiếng do đó người sử dụng không cần phải quan tâm làm thế nào để liên hệ với các CA để kiểm tra chứng chỉ của người khác. Toàn bộ quá trình này được thực hiện bên trong trình duyệt web.
CA có trách nhiệm tạo và quản lý các chứng chỉ, duy trì và huỷ bỏ chúng khi cần thiết. Các chứng chỉ bị huỷ bỏ nằm trong một danh sách gọi là certificate revocation list (CRL). Danh sách này chứa các chứng chỉ bị huỷ bỏ, lý do và các thông tin khác. Danh sách này được duy trì và cập nhật định kỳ. Một chứng chỉ có
ra chứng chỉ đó trao nhầm người hoặc khi chứng chỉ đó hết thời hạn hiệu lực. Một ví dụ tương tự của CRL là bằng lái xe do công an giao thông cấp. Nếu người sử dụng bằng lái vi phạm giao thông nhiều lần, bằng lái sẽ bị thu hồi và cập nhật vào danh sách các bằng lái không còn hiệu lực. Tương tự nếu bằng lái đó hết thời hạn sử dụng, bằng lái đó cũng được cập nhật vào danh sách và bằng lái đó không còn hiệu lực.
3.1.2 Chứng chỉ (Certificates)
Một trong những phần quan trọng nhất của PKI đó là chứng chỉ khoá mã công khai. Chứng chỉ là một cơ chế dùng để gán khoá mã công khai với một loạt các thành phần cần thiết để xác định chính xác người chủ sở hữu [5]. Mỗi một chứng chỉ có một số serial trong hệ thống của CA và được gán cho cho người sử dụng. Chứng chỉ khoá mã công khai phổ biến nhất là X.509 v3. Rất nhiều giao thức mã hoá sử dụng loại chứng chỉ này, trong đó có SSL.
Hình 3.2: Mỗi một chứng chỉ chứa đầy đủ các thông tin nhận dạng cần thiết
Chứng chỉ bao gồm số serial, mã hiệu phiên bản, các thông tin về người sở hữu, thông tin về thuật toán, thời gian hiệu lực và chữ ký số của CA cấp phát chứng chỉ đó.
3.1.3 Đơn vị đăng ký (Registration Authority)
Do số lượng các đối tượng mà CA phải chịu trách nhiệm quản lý quá lớn, đôi khi phải chuyển giao bớt công việc cho phần tử khác. Rất nhiều hệ thống PKI lớn sử dụng một đơn vị đảm nhiệm việc đăng ký gọi là RA (Registration Authority) để
làm nhiệm vụ quản lý đăng ký cấp chứng chỉ [5]. RA có thể khởi tạo và xác nhận từng đối tượng riêng lẻ, phân phát khoá mã công khai cho người dùng, thay mặt người sử dụng khởi tạo các tiến trình xử lý chứng chỉ với CA, quản lý thời gian hiệu lực của chứng chỉ. RA không làm nhiệm vụ phát hành chứng chỉ nhưng có thể đóng vai trò trung gian giữa người sử dụng và CA. Điều này tỏ ra rất hữu ích trong môi trường phân tán.
Hình 3.3: Đơn vị đăng ký chứng chỉ giúp giảm bớt khối lượng công việc và lưu lượng thông tin gửi đến CA trong môi trường phân tán
Ví dụ giả sử CA được đặt ở NewYork, có một công ty ở New Mexico yêu cầu hỗ trợ về mặt cấp phát chứng chỉ. Sẽ hiệu quả hơn rất nhiều nếu có một RA ở New Mexico đảm nhiệm việc giải đáp các thắc mắc, thu thập các yêu cầu cấp chứng chỉ rồi chuyển sang cho CA. Điều này có thể giảm bớt khối lượng công việc cho CA và tạo sự thuận lợi cho người dùng [6].
3.1.4 Các bƣớc trong PKI
Giả sử John muốn có một cặp khoá mã public/private cho cá nhân anh ta, anh ta làm một yêu cầu gửi đến CA. CA yêu cầu John cung cấp các thông tin cá nhân như bản sao thẻ căn cước, địa chỉ nhà, số điện thoại,… Sau khi CA nhận và kiểm tra các thông tin do John cung cấp, CA đăng ký tên John vào hệ thống cơ sở dữ liệu và tạo một cặp khoá mã. CA tạo một chứng chỉ bằng khoá mã công khai của John và gán các thông tin chung của John vào chứng chỉ ấy. Khoá mã cá nhân có thể tạo bởi CA
hoặc bởi máy tính của John, tuỳ theo quy định của hệ thống. Nếu khoá mã cá nhân của John được tạo bởi CA, nó sẽ được gửi đến cho John theo một đường an toàn. Bây giờ John đã được đăng ký và tham gia vào hệ thống PKI. John muốn trao đổi thông tin với Diane nên anh ta yêu cầu khoá mã công khai của Diane trên CA mà anh ta đăng ký. CA gửi khoá mã công khai của Diane cho John và John sử dụng khoá mã đó để mã hoá khoá mã session dùng để mã hoá thông tin rồi gửi cho Daine. Sau đó John gửi chứng chỉ kèm theo mã khoá công khai của anh ta cho Diane. Khi Daine nhận được chứng chỉ của John, trình duyệt của Daine sẽ kiểm tra xem sự hợp lệ của CA ký trên chứng chỉ của John. Sau đó trình duyệt của Diane sẽ tin cậy CA này và tạo yêu cầu CA kiểm tra tính hợp lệ của chứng chỉ. Khi CA xác nhận rằng chứng chỉ đó hợp lệ, Diane sẽ sử dụng mã khoá cá nhân để giải mã nhằm lấy khoá mã session. Sau đó cả John và Diane sẽ trao đổi thông tin với nhau một cách an toàn.
Hình 3.4: CA và mối quan hệ với người sử dụng