Certificate - Chứng thư điện tử

Wednesday, December 16, 2009 Long Nguyễn Hoàng 0 Comments

Certificate - Chứng thư điện tử
 

"only secrecy of the key provides security"
Kerckhoffs' principle

"the enemy knows the system"
Shannon's maxim

Bất kỳ ai trong số chúng ta chắc chắn cũng đã từng sử dụng chữ ký của mình trong các văn bản hợp đồng, giao dịch, cam kết,… Chữ ký là một bằng chứng mang tính pháp lý giúp xác nhận danh tính của chủ thể và các bên liên quan. Ví dụ: khi bạn đăng ký lắp đặt dịch vụ internet băng thông rộng, bạn phải điền chữ ký của mình vào bản cam kết, chữ ký này sẽ xác nhận rằng chính bạn, chứ không phải ai khác, đã đồng ý với điều khoản phía nhà cung cấp đưa ra. Phía nhà cung cấp cũng đưa ra chữ ký (thông qua nhân viên thực hiện giao dịch) để xác nhận cho hợp đồng của mình. Nếu sau này có bất kỳ rắc rối khiếu nại nào, thì các chữ ký này sẽ được sử dụng làm bằng chứng pháp lý.

Đối với giao dịch điện tử, các hợp đồng điện tử cũng đã được thực hiện từ hơn 100 năm nay với việc sử dụng mã Morse và điện tín. Vào năm 1889, tòa án tối cao bang New Hampshire (Hoa kỳ) đã phê chuẩn tính hiệu lực của chữ ký điện tử. Tuy nhiên, chỉ với những phát triển của khoa học kỹ thuật gần đây thì chữ ký điện tử mới đi vào cuộc sống một cách rộng rãi.

Vào thập niên 1980, các công ty và một số cá nhân bắt đầu sử dụng máy fax để truyền đi các tài liệu quan trọng. Mặc dù chữ ký trên các tài liệu này vẫn thể hiện trên giấy nhưng quá trình truyền và nhận chúng hoàn toàn dựa trên tín hiệu điện tử.

Hiện nay, chữ ký điện tử có thể bao hàm các cam kết gửi bằng email, nhập các số định dạng cá nhân (PIN) vào các máy ATM, ký bằng bút điện tử với thiết bị màn hình cảm ứng tại các quầy tính tiền, chấp nhận các điều khoản người dùng (EULA) khi cài đặt phần mềm máy tính, ký các hợp đồng điện tử online...

Ngày nay, việc mua sắm trên mạng không còn là điều gì mới mẻ nữa, nhưng để đảm bảo an toàn cho tài khoản của mình, việc hiểu rõ về chữ ký điện tử và chữ ký số là một điều khá cần thiết. Trong cuộc sống thực, khi đi mua sắm bạn thường tránh các cửa hàng to, hoành tráng, vì sợ sẽ bị “chém đẹp”, còn khi mua sắm trên mạng, bạn lại thường chọn những “cửa hàng” nào to lớn, khang trang nhất để ghé thăm vì chúng có vẻ an toàn và uy tín. Hãy nên nhớ rằng cuộc sống thực và trên mạng không khác nhau là mấy, nếu các cửa hàng to đẹp ngoài đời có thể là “chuyên gia chặt chém”, thì các cửa hàng hoành tráng trên mạng cũng có thể là trung tâm lừa đảo. Nhưng bạn cũng đừng vội mất lòng tin vào những giao dịch qua mạng, việc giao dịch qua mạng hoàn toàn có thể đảm bảo an toàn 100%, vấn đề là bạn hiểu “luật chơi” đến đâu. Việc trang bị cho mình những hiểu biết về vấn đề này sẽ giúp bạn tránh được nguy cơ trở thành những con mồi béo bở khi mua sắm hay giao dịch qua mạng.

Khi thực hiện một giao dịch qua mạng, bạn hãy để ý tới một số ký hiệu hiển thị trên trình duyệt:
  • Trên thanh địa chỉ (Address bar) có ghi “https”.
  • Bên phải thanh địa chỉ hoặc ở thanh trạng thái (Status bar) có hiển thị hình ổ khóa đóng.


Ký hiệu biểu thị giao thức bảo mật HTTPS trên trình duyệt Google



Ký hiệu biểu thị giao thức bảo mật HTTPS trên trình duyệt Safari



Ký hiệu biểu thị giao thức bảo mật HTTPS trên trình duyệt Opera



Ký hiệu biểu thị giao thức bảo mật HTTPS trên trình duyệt Intenet Explorer



Ký hiệu biểu thị giao thức bảo mật HTTPS trên trình duyệt Firefox


Nếu trình duyệt của bạn hiển thị hai ký hiệu này, có nghĩa là đối tác mà bạn sắp thực hiện giao dịch hay liên hệ là đáng tin cậy, vì họ sử dụng giao thức bảo mật (secure protocol), còn nếu không thì bạn đừng ngần ngại gì mà không ngừng giao dịch ngay lập tức, vì đối tác của bạn làm ăn không nghiêm túc.

Để dễ hiểu, tôi sẽ lấy một ví dụ như thế này: ngoài cuộc sống thực, khi bạn đến một cửa hàng nào đó mua sắm, bạn sẽ muốn xem giấy phép đăng ký kinh doanh của của hàng đó do bộ Công An cấp, để chứng thực rằng cửa hàng đó là của chính hãng, tất nhiên nếu bạn là khách mua hàng, thì việc xem tem chống hàng giả của Bộ Công An là đủ. Trên mạng cũng vậy, khi bạn muốn liên lạc hay giao dịch với Google chẳng hạn, bạn sẽ vào trang chủ (tức là “cửa hàng”) của Google trước tiên phải không, nhưng điều gì sẽ đảm bảo rằng trang google.com là của Google? Hay là một trang lừa đảo nào đó mạo danh Google? Lúc này bạn sẽ cần tới một “tem chống hàng giả” của các tổ chức có uy tín và thẩm quyền trên mạng (CA - “Certification Authority”), “tem” đó được gọi là “giấy chứng nhận” hay “chứng thư điện tử” (certificate). Các tổ chức có uy tín và thẩm quyền chuyên cấp giấy chứng nhận này (CA) là nơi chứng thực cho sự tin cậy của các bên đối tác. Khi bạn sắp thực hiện một giao dịch nào đó, trình duyệt sẽ tự động yêu cầu phía bên kia xuất trình “giấy chứng nhận” đã được các CA cấp, rồi tiếp tục kiểm tra xem CA đó có đáng tin cậy hay không (đề phòng phía đối tác tự cấp giấy chứng nhận cho mình). Các CA này có rất nhiều cấp, nếu chứng nhận đó được cấp bởi CA cấp cao hơn, trình duyệt web lại tiếp tục kiểm tra CA cao cấp ấy, cứ như vậy cho đến khi nó nhận ra CA gốc đáng tin (trusted root CA) đã được ghi nhớ trong danh sách có sẵn. Các CA gốc nổi tiếng, có uy tín ở tầm quốc tế như Verisign, Entrust và Thawte đều có sẵn trong danh sách tin cậy của các trình duyệt Internet Explorer, Firefox, Chrome, Opera, Safari. Nghe thì có vẻ phức tạp, nhưng thực tế quá trình này được trình duyệt thực hiện ngầm và hoàn toàn tự động, vì thế bạn sẽ chỉ nhận được thông báo rằng giao dịch đó có đáng tin cậy hay không, chứ không hề phải thực hiện bất kỳ thao tác phụ nào cả. Hãy nhớ rằng trong cuộc sống thực, nếu bạn vào một cửa hàng và yêu cầu họ xuất trình giấy phép kinh doanh để bạn yên tâm mua hàng, thì họ sẽ tống cổ bạn ra ngoài mà không cần biết bạn là “khách sộp” cỡ nào đâu.



Bạn có thể xem chứng nhận điện tử của Vietcombank do VeriSign cấp...



...với đầy đủ thông tin chi tiết (hình ảnh được chụp từ trình duyệt Google Chrome)



Trên Firefox và các trình duyệt khác cũng có thể xem chứng nhận một cách dễ dàng



Thông tin chi tiết về chứng thư điện tử khi xem trên Firefox


Để bạn dễ hình dung, tôi sẽ thử truy cập vào một trang web mà chứng nhận điện thử (hay chứng thư điện tử) của nó chưa đáng tin cậy, khi đó trình duyệt của bạn sẽ cảnh báo như sau:



Trình duyệt Google Chrome cảnh báo rằng chứng thư điện tử của trang này chưa đáng tin cậy


Sở dĩ tôi dùng từ “chưa đáng tin cậy” là bởi vì có nhiều khi đối tác đó làm ăn ngay thẳng, nhưng chứng thư điện tử của nó lại chưa đáng tin cậy, có thể do chứng thư đó đã hết hạn, hoặc được cấp phép bởi một số tổ chức chưa có uy tín, chưa được trình duyệt biết đến (tức là chưa có trong danh sách tin cậy của trình duyệt), hoặc chứng nhận đó là kiểu tự ký (self-signed certificate), nghĩa là phía đối tác tự xác nhận rằng đó chính là họ chứ không phải ai khác.

Cảnh báo của các trình duyệt web khi phát hiện chứng thư điện tử được cấp bởi CA mà nó chưa từng biết, hoặc đã hết hạn hoặc không phù hợp với địa chỉ mạng đang truy cập:



Firefox



Internet Explorer



Opera



Safari


Tuy vậy, khi gặp phải một chứng nhận điện tử chưa đáng tin cậy không có nghĩa là đối tác đó không đáng tin cậy. Cảnh báo của các trình duyệt như ở trên chỉ muốn bạn xác nhận lại rằng giao dịch mà bạn đang định thực hiện có đáng tin cậy hay không. Nếu bạn chắc chắn rằng trang web mà bạn đang truy cập là của đối tác (nhớ rằng google.comgoogles.com hay google.cm là hoàn toàn khác nhau) và đối tác của bạn là đáng tin cậy (như Vinaphone.com.vn chẳng hạn), thì bạn có thể tiếp tục giao dịch, còn nếu nửa tin nửa ngờ thì hãy xem thêm thông tin về chứng thư đó như: CA đã cấp chứng thứ đó là ai, thời hạn có hiệu lực,…. Trong trường hợp đối tác của bạn hoàn toàn xa lạ mà bạn không chắc chắn về bất cứ thông tin gì thì tốt nhất hãy ngừng giao dịch và tìm một đối tác khác có uy tín hơn, hoặc gửi thư than phiền đến cho họ về vấn đề này. Nói chung, bạn chỉ nên tin tưởng vào các chứng thư đã được cấp bởi các CA có uy tín, vì họ đã xác thực cho rất nhiều các công ty trên thế giới và được cộng đồng tin tưởng.



Thông tin chi tiết của chứng thư khi xem trên Google Chrome




Xác nhận chứng thư là đáng tin cậy và thêm vào danh sách tin tưởng của Firefox. 


Vậy câu hỏi lớn là: nếu đối tác có sử dụng giao thức bảo mật (secure protocol), thì việc giao dịch của bạn với họ sẽ được bảo mật như thế nào? Trong cuộc sống thực có rất nhiều trường hợp giả mạo chữ ký, vậy trong giao dịch điện tử có thể giả mạo chữ ký điện tử được hay không? 

Câu trả lời cho các thắc mắc trên đều có liên quan đến một thuật ngữ, đó là “mã hóa” (encryption).

Trong mật mã học (một ngành toán học ứng dụng cho công nghệ thông tin), mã hóa là phương pháp để biến thông tin (phim ảnh, văn bản, hình ảnh...) từ định dạng bình thường sang dạng thông tin không thể hiểu được nếu không có phương tiện giải mã.

Một hệ thống mã hóa bao gồm các thành phần:
  • Thông tin trước khi mã hóa, kí hiệu là P
  • Thông tin sau khi mã hóa, kí hiệu là C
  • Chìa khóa, kí hiệu là K
  • Phương pháp mã hóa/giải mã, kí hiệu là E/D.
    Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lên thông tin P, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã mã hóa C.

    Quá trình giải mã (decryption) được tiến hành ngược lại: áp dụng hàm D lên thông tin C để được thông tin đã giải mã P.

    Khóa (key) là một đoạn thông tin (dãy ký tự) điều khiển hoạt động của thuật toán mật mã hóa. Nói một cách khác, khóa là thông tin để cá biệt hóa quá trình mã hóa cũng như giải mã. Khóa cũng được sử dụng trong các thuật toán khác trong mật mã học như thuật toán tạo chữ ký số hay hàm băm mật mã.
    Có 2 loại thuật toán mã hóa/giải mã: 
    • Các thuật toán mã hóa khóa đối xứng: là các thuật toán sử dụng chung một khóa cho cả quá trình mã hóa và giải mã, tức là khóa giải mật mã giống hệt hoặc được suy ra từ khóa tạo mật mã, nên người ta gọi là giải thuật khóa bí mật (secretkey algorithm). Trong giải thuật khóa bí mật, khóa tạo mật mã và khóa giải mật mã phải được giữ bí mật, vì nếu ai đó biết được khóa giải mật mã của bạn, thì mọi dữ liệu đã mã hóa gửi cho bạn sẽ có thể được người đó giải mã. 

    • Các thuật toán mã hóa khóa bất đối xứng: dùng hai khóa khác nhau cho 2 quá trình mã hóa và giải mã. Các thuật toán này cho phép một khóa có thể công bố rộng rãi và giữ bí mật khóa còn lại, vì thế nó được gọi là giải thuật khóa công khai (public-key algorithm). Hai khóa được thiết kế sao cho việc tìm ra khóa bí mật là không thể thực hiện được kể cả khi biết khóa công khai tương ứng. Một người dùng trong hệ thống này có thể công bố khóa công khai một cách rộng rãi để người khác có thể gửi thông điệp mã hóa cho mình, chỉ cần giữ kín khóa giải mật mã.
    Mỗi hệ thống mã hóa có ưu nhược điểm riêng. Mã hóa đối xứng xử lí nhanh nhưng độ an toàn không cao. Mã hóa bất đối xứng xử lí chậm hơn, nhưng độ an toàn và tính thuận tiện trong quản lí khóa cao. Trong các ứng dụng mã hóa hiện tại, người ta thường kết hợp các ưu điểm của cả hai loại mã hóa này.
        Để đảm bảo an toàn, người ta có thể giữ bí mật thuật toán, hoặc giữ bí mật các khóa. Trên thực tế, việc giữ bí mật đối với khóa dễ hơn rất nhiều so với việc giữ bí mật đối với các thuật toán, vì khóa thường chỉ là một đoạn thông tin ngắn và ta dễ dàng thay đổi chúng khi có dấu hiệu bị lộ. Vì thế hiện nay, hầu như mọi thuật toán tạo mật mã đều dựa vào việc sử dụng khóa bí mật (secret key, private key); còn các thuật toán mã hóa thì đều được công bố rộng rãi, nếu biết thuật toán mã hóa mà không biết khóa giải mã thì cũng bó tay. 

        Vậy công nghệ mã hóa/giải mã này được áp dụng vào giao dịch điện tử như thế nào? 

        Như đã đề cập ở trên, hiện nay người ta sử dụng các thuật toán mã hóa đối xứng, nên bạn có thể công bố khóa công khai của mình cho mọi người biết mà không sợ bị lộ bí mật, miễn là bạn còn giữ kín được khóa bí mật của mình. Ví dụ nhé, khi bạn thực hiện giao dịch với Vietcombank chẳng hạn, bạn gửi đi một văn bản ký kết nào đó cho Vietcombank, nhưng không ai dám chắc rằng trên “đường đi” của mình, văn bản đó không bị các hacker chặn lại rồi đọc trộm và chỉnh sửa nội dung. Vấn đề này sẽ được giải quyết bằng cách: Vietcombank công bố khóa công khai của mình cho mọi người biết (chỉ giữ kín khóa bí mật tương ứng với khóa công khai đó), mọi người dùng khóa công khai đó để tạo ra một bản mật mã rồi gửi đi. Trên đường tới Vietcombank, giả sử một tay hacker nào đó chặn được bản dữ liệu đã được mã hóa đó, thì hắn ta cũng sẽ không thể giải mã được, vì không biết khóa bí mật là gì (khóa bí mật này chỉ có Vietcombank biết mà thôi). Khi sử dụng giao thức bảo mật HTTPS trong giao dịch, việc các hacker dùng máy tính để thử tìm khóa giải mật mã dài 128 bit (theo cách thử từng mã) có thể mất tới tỷ tỷ tỷ tỷ năm.

        Chính vì sự thuận tiện này mà việc tạo mật mã bằng khóa công khai trở nên phổ biến trong môi trường truyền thông mở rộng như Internet. Hai bên đối thoại không quen biết nhau từ trước vẫn có thể thiết lập ngay liên lạc riêng tư, bí mật nếu cần. 

        Như vậy, quy trình mã hóa sử dụng thuật toán mã hóa khóa bất đối xứng như sau:
        1. Bạn có một dữ liệu nào đó, bạn sử dụng mã khóa công khai, lấy từ cặp mã khóa bí mật – công khai của đối tác, để mã hóa dữ liệu đó thành mật mã.
        2. Gửi mật mã (dữ liệu đã được mã hóa) đó đến cho đối tác.
        3. Đối tác nhận mật mã đó, rồi sử dụng mã khóa bí mật, lấy từ cặp mã khóa bí mật – công khai của họ, để giải mã mật đó thành dữ liệu ban đầu. 
        Ứng dụng trong chữ ký điện tử (electronic signature)
          Trong cuộc sống thực, người ta thường ví von “bút sa, gà chết”, câu này cũng đúng một cách chính xác trong môi trường số (digital). Khi viết một bức thư, một cam kết,…bạn thường phải để lai chữ ký để xác nhận rằng đó chính là bạn, và bạn có trách nhiệm pháp lý với những gì bạn đã viết. Trong môi trường số, chữ ký điện tử cũng có chức năng tương tự, chỉ có điều khác là bạn không trực tiếp ký bằng tay, mà bằng cách sử dụng "hàm băm" (hash function) để tạo ra một trị số tương ứng duy nhất gọi là “giá trị băm” (hash value). Từ mỗi khối dữ liệu (có thể là một chuỗi kí tự, một đối tượng trong lập trình hướng đối tượng,…), luôn luôn có thể tính ra một giá trị băm tương ứng với khối dữ liệu đó. Giá trị băm đóng vai gần như một khóa để phân biệt các khối dữ liệu, tuy nhiên người ta chấp hiện tượng trùng khóa hay còn gọi là đụng độ và cố gắng cải thiện giải thuật để giảm thiểu sự đụng độ đó.
          MD5 (Message-Digest algorithm 5) và SHA-1 (Secure Hash Algorithm) là các hàm băm nổi tiếng nhất.
           Ứng dụng trong giao dịch điện tử, khi bạn tạo ra một thông điệp, hàm băm sẽ tính ra một giá trị băm tương ứng. Khi người nhận nhận được thông điệp đó, họ sẽ so sánh giá trị băm của thông điệp họ nhận được và giá trị băm đính kèm của thông điệp ban đầu, nếu nó khớp nhau thì thông điệp đó vẫn còn nguyên vẹn, bằng không thì nó chắc chắn đã bị chỉnh sửa trên đường đi. Vấn đề là các giải thuật để tính ra giá trị băm (tức là hàm băm) luôn được công bố rộng rãi, nên giá trị băm hoàn toàn có thể làm giả được, tức là nếu có ai đó chặn được dữ liệu của bạn trên đường đi, thì sau khi chỉnh sửa nội dung của dữ liệu đó, họ sẽ chỉnh luôn cả giá trị băm đính kèm (của dữ liệu ban đầu), để người nhận dữ liệu không phát hiện ra sự sửa đổi. Vậy bạn có thể dễ dàng nhận thấy rằng chúng ta cần phải bảo vệ giá trị băm ban đầu để nó không thể chỉnh sửa được, đó là lúc chúng ta cần tới các thuật toán mã hóa.

          Tuy nhiên, quy trình này ngược lại một chút với quy trình tạo mật mã trong giao dịch điện tử theo giao tiếp bảo mật mà tôi đã đề cập ở trên. Bạn sẽ sử dụng mã bí mật của bạn để mã hóa giá trị băm ban đầu, rồi gửi khối dữ liệu kèm theo giá trị băm đã được mã hóa đó tới cho đối tác. Đối tác của bạn sau khi nhận được khối dữ liệu đính kèm giá trị băm đã mã hóa, sẽ sử dụng khóa công khai (tương ứng với khóa bí mật mà bạn đã sử dụng để mã hóa giá trị băm) để giải mã giá trị băm đính kèm, và so sánh nó với giá trị băm của khối dữ liệu mà họ nhận được. 

          Quy trình mã hóa sử dụng thuật toán mã hóa khóa bất đối xứng như sau:
          1. Bạn có một khối dữ liệu nào đó, bạn sử dụng hàm băm để tính giá trị băm của khối dữ liệu đó.
          2. Sau đó bạn sử dụng mã khóa bí mật, lấy từ cặp mã khóa bí mật – công khai của mình, để mã hóa giá trị băm đó thành mật mã.
          3. Gửi khối dữ liệu kèm theo mật mã (giá trị băm đã được mã hóa) đó đến cho đối tác.
          4. Đối tác nhận được khối dữ liệu, kèm theo mật mã đó. Họ sẽ sử dụng hàm băm để tính ra giá trị băm của khối dữ liệu mà họ nhận, đồng thời cũng sử dụng khóa công khai, lấy từ cặp mã khóa bí mật – công khai của bạn, để giải mã mật mã đó thành giá trị băm ban đầu.
          5. Đối tác sẽ so sánh giá trị băm ban đầu (mà họ vừa giải mã) và giá trị băm của khối dữ liệu vừa nhận (mà họ vừa dùng hàm băm tính ra) để xem khối dữ liệu đã bị đụng chạm gì hay chưa.
          Bạn hãy để ý rằng tuy hai quá trình này là ngược nhau, nhưng trong mọi trường hợp, chỉ có chủ nhân khóa bí mật là người sử dụng nó. Vì không có khóa bí mật, nên bất cứ ai cũng không thể có cách nào tạo ra giá trị băm phù hợp với khối dữ liệu giả mạo. Như vậy, giá trị băm là duy nhất, nó không thể được làm giả hay chỉnh sửa, nó giống như một chữ ký cá nhân mà người khác không thể làm giả mạo được và vì thế nó có tác dụng như là một “chữ ký điện tử”.
            Giá trị băm giống với chữ ký ở những đặc điểm sau:
            • Không thể chỉnh sửa hay làm giả được, vì giá trị băm đã được mã hóa bằng khóa bí mật, chỉ có người nào tạo ra mật mã đó thì mới biết khóa bí mật.
            • Có thể kiểm tra được: người nhận tính giá trị băm của khối dữ liệu đã nhận và đối chiếu với giá trị băm được đính kèm.
            • Chỉ có giá trị một lần: mỗi khối dữ liệu có một giá trị băm khác nhau, nên “chữ ký” đó chỉ có thể được sử dụng cho một lần, không thể sao chép, không thể sử dụng cho các khối thông điệp khác.
            • Không chối bỏ được: bạn không thể chối bỏ được “chữ ký điện tử” của mình, cho rằng đấy là giả mạo (trừ khi bạn có bằng chứng rằng khóa bí mật của mình bị mất cắp).
            • Dùng để niêm phong: Thông điệp có “chữ ký” của bạn xem như được niêm phong. Bản thân thông điệp hoặc “chữ ký” sẽ hư hỏng nếu bị sửa đổi. 
            Một câu hỏi lớn nữa lại được đặt ra là: nếu bạn sắp thực hiện giao dịch lần đầu tiên với Google chẳng hạn, và bạn nhận được một thông điệp có kèm chữ ký (đã được mã hóa) ký tên là Google. Vậy làm sao để biết bức thư và chữ ký điện tử đó đúng là của Google, mà không phải là một công ty giả mạo nào đó? Khi đó mối lo ngại không phải là thông điệp từ Google nhưng đã bị chỉnh sửa nữa, mà là một thông điệp hoàn toàn giả mạo từ một công ty lừa đảo khác, mạo danh Google. Khi đó, bạn cần tới một bên thứ ba đủ tin cậy để xác nhận cho bạn rằng chữ ký đó đúng là từ Google chữ không phải là công ty giả mạo, bên thứ ba đó chính là các tổ chức chứng thực CA (Certification Authority), một cơ quan có tư cách pháp nhân thường xuyên tiếp nhận đăng ký khóa công khai và lưu trữ khóa công khai cùng lý lịch của chủ thể trong một cơ sở dữ liệu được bảo vệ chặt chẽ. Lưu ý rằng CA chỉ cần là một tổ chức có uy tín để khẳng định sự thật, chứ không nhất thiết phải là một cơ quan nhà nước. Vậy sao chúng ta biết được một CA nào đó là có uy tín hay không? Câu trả lời là “bạn phải có niềm tin”! Những CA có uy tín và đáng tin cậy đều đã có mặt trong danh sách của các trình duyệt phổ biến hiện nay, những CA khác chưa đủ phổ biến để có tên trong danh sách, hay những CA chưa đáng tin, hoặc trình duyệt chưa biết, thì trình duyệt sẽ đưa ra thông báo như tôi đã đề cập ở phía trên.
              Như vậy, nếu bạn nhận được một thông điệp (nói rộng ra là một “khối dữ liệu) từ một người lạ, kèm theo một khóa công khai để đọc “chữ ký” (tức là giá trị băm đã được mã hóa thành mật mã bằng một khóa bí mật tương ứng), bạn có thể liên lạc với CA để tìm hiểu xem khóa công khai đó là của ai. Chủ nhân khóa công khai không thể chối bỏ bức thư của họ. Nếu khóa công khai không được chứng nhận bởi CA nào cả, thì thông điệp mà bạn nhận là hoàn toàn không đáng tin cậy và không có giá trị, vì chủ nhân của nó không dám lộ mặt. Như vậy, nhờ có CA mà bạn có thể hoàn toàn tin tưởng vào những đối tác trung thực khi thực hiện những giao dịch trực tuyến. 

              Nếu bạn có ý định thành lập một công ty hoạt động trên mạng, bạn sẽ đăng ký chữ ký của mình với ai? 

              Bạn cần phải liên lạc với một CA có uy tín, danh sách các CA có uy tín các bạn có thể tra trên mạng, hoặc xem tại trang hướng dẫn của Microsoft tại đây. Khi bạn yêu cầu một CA cấp chứng thư cho địa chỉ mạng của mình, họ sẽ “điều tra” kỹ càng để biết rõ địa chỉ mạng mà bạn đăng ký có thực sự thuộc về bạn và để bảo đảm bạn chính là... bạn (với “tên tuổi” mà bạn đưa ra). Sau thủ tục “nhận diện”, CA cung cấp cho bạn công cụ để tạo cặp khóa công khai - bí mật. Cặp khóa công khai - bí mật được sản sinh dựa vào những thông tin hoàn toàn riêng tư của bạn, do đó không thể trùng với cặp khóa của người khác. Khi chữ ký của bạn đã được xác nhận bởi một CA có uy tín, có nghĩa là bạn đã chứng tỏ sự nghiêm túc của mình bằng cách cho phép khách bấm nút nào đó để xem chứng thư của bạn bất cứ lúc nào (cũng giống như việc bạn trưng bày giấy tờ pháp lý của công ty mình ngay tại cửa ra vào trụ sở). 

              Bạn phải giữ kín khóa bí mật của mình (vì là bí mật mà!) và chỉ gửi khóa công khai cho CA. Sau đó, CA sẽ cấp chứng thư cho bạn dưới dạng một tập tin. Chứng thư chứa khóa công khai của bạn và chữ ký xác nhận của CA. Khâu cuối cùng là công việc của bạn: Cài đặt chứng thư vào trình chủ web để có thể bắt đầu thực hiện những giao dịch bảo mật theo giao thức HTTPS (thao tác này khác nhau đối với các trình chủ web khác nhau và CA sẽ hướng dẫn bạn thực hiện). Một khi đã được xác nhận “ta là mình”, ta phải chịu trách nhiệm hoàn toàn về hành động của mình.

              Việc thực hiện giao dịch mua bán qua mạng chỉ an toàn khi thông tin quan trọng được gửi đi từ trình duyệt của khách theo giao thức bảo mật HTTPS. Trong giao thức bảo mật, phía chủ nhất thiết phải có chứng thư điện tử (digital certificate) để phía khách kiểm tra. Chứng thư ấy thực chất là một thông điệp chứa khóa công khai của phía chủ, được xác nhận bằng chữ ký của CA. Để trình duyệt đọc được chữ ký của CA, chứng thư cũng chứa khóa công khai của CA. Với CA có uy tín, trình duyệt nhận ra ngay khóa công khai ấy là đúng. Nếu không thể nhận biết CA, trình duyệt sẽ báo động cho khách.

              Khi việc kiểm tra chứng thư hoàn thành suôn sẻ, khách đã nhận diện được chủ, hai bên “nhìn nhau” rõ ràng, trình duyệt sẽ sản sinh khóa bí mật ở phía khách (dưới dạng một dãy số ngẫu nhiên), dùng khóa công khai của phía chủ để mật mã hóa bản thân khóa bí mật ấy và gửi cho phía chủ. Sau khi phía chủ nhận được khóa bí mật của khách, khóa bí mật ấy bắt đầu được dùng để mật mã hóa dữ liệu trao đổi qua lại giữa hai bên. Bạn để ý, dữ liệu trao đổi trong giao thức HTTPS được mật mã hóa bằng giải thuật khóa bí mật, nghĩa là dùng một khóa duy nhất vừa để mật mã hóa, vừa để giải mật mã. Giải thuật khóa bí mật thích hợp với khối dữ liệu lớn, không làm máy tính “mệt óc” như giải thuật khóa công khai.

              Xin nhắc bạn rằng quy trình làm việc như trên diễn ra hoàn toàn tự động giữa trình duyệt web và trình chủ web. Quy trình ấy có lẽ minh bạch, thẳng thắn và an toàn hơn cả giao dịch trực diện. Khi con người làm việc với nhau, vì “tế nhị”, bên này có thể ngần ngại, không yêu cầu bên kia xuất trình đầy đủ giấy tờ để chứng minh họ là ai. Giao thức bảo mật trên mạng không có chỗ cho sự “tế nhị” phiền phức ấy.

              Ở nước ta hiện nay, nền móng cho giao dịch điện tử còn rất sơ khai về mọi mặt. Tuy nhiên, con đường “điện tử hóa” gần như là lộ trình bắt buộc, tựa như ta không thể đứng ngoài hệ thống mã vạch và những tiêu chuẩn ISO. 


              Nếu bạn đã đọc đến dòng này thì xin chúc mừng, vì bạn đã nắm được những khái niệm cơ bản về giao thức bảo mật, mã hóa và chứng thư điện tử trong giao dịch điện tử. Trong các bài viết tiếp theo, tôi sẽ tiếp tục giới thiệu đến cho bạn những công cụ giúp tạo chữ ký điện tử để xác nhận và bảo vệ nhân dạng của các cá nhân, tổ chức.

              Nguyễn Hoàng Long




              (Bài viết có sử dụng thông tin tham khảo từ Wikipedia, eChip, PGP)



              Chứng thư điện tử | Chứng nhận điện tử | Chữ ký điện tử | Chữ ký số | Giao dịch điện tử | Giao thức bảo mật | mã hóa | giải mã | mật mã | khóa | giải thuật băm | hàm băm | trị băm | tính tổng | quyền xác thực
              Certificate | certification | electronic signature | digital signature | business transaction | secure protocol | encryption | decryption | cipher | key | hash algorithm | hash function | hash value | checksum | certification authorityTrích từ: www.windowsvn.net

              0 comments: