|
HỒ LÔ BIẾN |
|
CHỨNG THƯ ĐIỆN TỬ:
"Từ khi trăng là nguyệt"
(tiếp theo)
HOÀNG NGỌC GIAO (SAMIS) |
|
Bạn thử hình dung: Mỗi cá nhân, mỗi tổ chức có một
cặp khóa, khóa công khai để tạo mật mã và khóa bí
mật tương ứng để giải mật mã. Ta có thể dùng khóa
công khai của tổ chức ấy (vì là “công khai” mà) để
tạo mật mã gởi đến cho họ. Do bên nhận có sẵn “bửu
bối” là khóa giải mật mã, chỉ có họ mới đọc được
thông điệp của bạn. Ngược lại, người ta có thể dùng
khóa công khai của bạn để gửi thư mật mã cho bạn. Vì
chỉ riêng bạn có khóa bí mật tương ứng với khóa công
khai đã dùng, không ai có thể đọc được thư ấy ngoài
bạn. 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. |
|
Chữ ký thời “điện tử” |
|
Trong môi trường mạng, giải thuật mật mã với khóa công
khai không chỉ dùng vào việc bảo vệ tính bí mật của dữ
liệu mà còn là phương tiện để bảo vệ tính xác thực của
dữ liệu, ngăn chặn sự giả mạo, sự “cạo sửa”. Khi viết
thư trên giấy, bạn ký tên (hoặc... lăn tay, nếu cần) vào
bức thư để người nhận biết rằng chính bạn, chứ không
phải ai khác, đã viết bức thư. Với cách thức như vậy, ta
cũng không thể chối bỏ bức thư mà mình đã viết. Đối với
thông điệp mà bạn gửi qua mạng, cũng có một cơ chế để
tạo ra “chữ ký” của riêng bạn mà người ta thường gọi là
chữ ký số (digital signature) hoặc nói cho có vẻ... hiện
đại là chữ ký điện tử. Cơ chế ấy như sau: Từ mỗi thông
điệp luôn luôn có thể tính ra một trị số tương ứng duy
nhất gọi là trị băm (hash value). Trị băm là đặc thù của
thông điệp, giống như dấu tay của một người. Hai thông
điệp khác nhau chắc chắn có trị băm khác nhau. Bằng cách
so sánh trị băm ban đầu kèm theo thông điệp và trị băm
được tính ra từ bản thân thông điệp, ta sẽ biết thông
điệp ấy có bị sửa đổi, có bị “đục bỏ” hoặc thêm thắt chi
không trên đường đi. |
|
Tuy nhiên, trong thực tế mọi giải thuật tính toán
trị băm đều được công bố rộng rãi, không có chi bí
mật. Do vậy, nếu ai đó sửa đổi thông điệp do bạn gửi
đi thì rất có thể họ sẽ tìm cách sửa luôn trị băm
đính kèm cho phù hợp, làm cho ta không phát hiện
được sự sửa đổi. Bạn thử nghĩ xem, ta cần làm gì để
bảo vệ “trị băm ban đầu”? |
|
Người ta đã tìm ra một giải pháp: Mật mã hóa trị băm
kèm theo thông điệp bằng giải thuật khóa công khai.
Cụ thể là bên gửi dùng khóa bí mật để mật mã hóa trị
băm của thông điệp và bên nhận dùng khóa công khai
để giải mật mã đó. Bạn chú ý một chút, kẻo nhầm lẫn:
Giải pháp vừa nêu ngược với trường hợp mật mã hóa
bản thân thông điệp, trong đó khóa công khai dùng để
tạo mật mã ở bên gửi và khóa bí mật dùng để giải mật
mã ở bên nhận. Hiển nhiên, 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 biết khóa bí mật, “kẻ gian” sẽ không thể tạo ra
trị băm phù hợp cho thông điệp giả mạo. Trị băm ở dạng
mật mã được bạn gửi kèm theo thông điệp của mình có vai
trò giống như chữ ký của riêng bạn, người khác không thể
“nhái” được. “Chữ ký điện tử” là như thế. |
|
Cụ thể, cách thức sử dụng chữ ký điện tử như sau.
Trước khi gửi thông điệp, ta “ký tên” qua các bước: |
|
1. Tính trị băm của thông điệp. |
|
2. Mật mã hóa trị băm bằng khóa bí mật, lấy từ cặp
khóa bí mật-công khai của bạn. |
|
Sau khi nhận thông điệp, đối tác của bạn kiểm tra
chữ ký trên thông điệp ấy qua các bước: |
|
1. Dùng khóa công khai của bạn giải mật mã để tìm
lại trị băm ban đầu. |
|
2. So sánh trị băm thu được với trị băm được tính ra
từ bản thân thông điệp đã nhận. |
|
3. Nếu hai trị băm trùng nhau thì kết luận chắc chắn
rằng thông điệp ấy do chính bạn gởi đi, không bị sửa
đổi, không phải giả mạo. Nếu hai trị băm khác nhau,
chắc chắn có chuyện “chẳng lành” chi đó trên đường
truyền (Hình 1). |
|
Trị băm ở dạng mật mã của thông điệp, thứ được mệnh
danh là chữ ký điện tử, có vai trò chứng thực rất
giống với chữ ký trên thư viết tay thông thường, thể
hiện qua các yếu tố: |
|
* Không giả mạo được: “Chữ ký” của bạn được tạo nên
bằng khóa bí mật. Chỉ có bạn mới tạo ra được “chữ
ký” như vậy. |
|
* Kiểm tra được: Người nhận thông điệp biết được
“chữ ký” kèm theo thông điệp là của chính bạn nhờ
khóa công khai tương ứng với khóa bí mật của bạn. |
|
* Chỉ dùng một lần: “Chữ ký” chỉ có hiệu lực cho một
thông điệp duy nhất. Không thể sao chép “chữ ký” ấy
để dùng cho thông điệp khác. |
|
* Không chối bỏ được: Bạn không thể chối bỏ “chữ ký”
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. |
|
Do vậy, chữ ký điện tử rồi sẽ trở thành điều bình
thường trong cuộc sống. Nếu không sợ nhầm lẫn, ta có
thể gọi “chữ ký điện tử” là “chữ ký” cho ngắn gọn. |
|
|
|
Niềm tin thời “điện tử” |
|
Đối với chữ ký trên giấy, nhận dạng chữ ký có khi là
vấn đề không nhỏ. Nếu người nhận thư của bạn là
người thân thiết, người ấy biết rõ chữ ký của bạn từ
lâu và nhận ra ngay chữ ký trong thư không phải giả
mạo. Tuy nhiên, nếu người nhận thư là người chưa
từng quen biết với bạn, có khả năng xảy ra trường
hợp: người ấy nhận thư của người khác mạo nhận là
bạn. Bức thư giả danh dĩ nhiên “có vấn đề”. Người
nhận thư sẽ “đùng đùng” cầm bức thư ấy đi tìm bạn
cho bằng được để... mắng vốn (giống như trò đùa thời
học sinh, một bức thư tỏ tình ly kỳ gởi cho “nàng”
học khác lớp do tên “quỷ sứ” nào đó bày ra, giả mạo
chữ ký của bạn). |
|
Cũng có vấn đề tương tự đối với chữ ký điện tử trong
thông điệp gởi qua mạng. Nếu hai bên đối thoại đã
từng quen biết, bên nhận có sẵn khóa công khai của
bên gởi, thì mọi chuyện đều ổn. Bạn thử hình dung,
khi hai bên không quen biết nhau (như khi... “tìm
bạn phương xa” trên mạng), cho dù bên nhận đã giải
mật mã đối với chữ ký bằng khóa công khai đính kèm
và không thấy chi lạ, vẫn phải đặt ra vấn đề: Làm
sao biết khóa công khai ấy thực sự của ai? Thông
điệp gởi đến tuy không bị sửa đổi trên đường đi
nhưng có thể là thông điệp giả mạo hoàn toàn. Để
nhận biết chữ ký trên thư tỏ tình chắc chắn là của
“người ấy”, người nhận thư tỉnh táo nghĩ ngay đến
chuyện tìm người tin cậy biết rõ “đương sự” để hỏi.
Đối với khóa công khai dùng để giải mật mã cho chữ
ký, giải pháp như vậy cũng được áp dụng. Cần có một
bên thứ ba đáng tin cậy biết rõ khóa công khai của
bên gởi. Bên thứ ba ấy chính là 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ẽ. CA chuyên nghiệp
không nhất thiết là cơ quan nhà nước. Điều quan
trọng nhất của một CA là uy tín để khẳng định sự
thật, bảo đảm không thể có chuyện “đổi trắng thay
đen”. |
|
Khi nhận thư của người lạ có kèm khóa công khai để
đọc chữ ký. Nếu chữ ký chứng tỏ bức thư do chính chủ
nhân của khóa công khai ấy gửi đi, bạn có thể liên
lạc với CA để tìm hiểu xem khóa công khai ấy thực sự
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ả, bạn nên... quên bức thư ấy đi,
nó không có giá trị gì khi chủ nhân của nó không dám
lộ mặt. Nhờ có CA, không ai có thể giả danh...
Microsoft hay IBM để gởi thông điệp “làm ăn” đến
người khác. “Trò xưa đã khép” cho những vụ ném đá
giấu tay! |
|
|
|
“Từ khi trăng là nguyệt” |
|
Như đã trình bày, 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ếu bạn có ý định lên mạng “mở tiệm”, địa chỉ mạng
của bạn cần có chứng thư điện tử được cấp bởi một CA
có uy tín. Những cửa hàng “điện tử” chấp nhận chi
trả qua mạng thường chứng tỏ sự nghiêm túc của họ
bằng cách cho phép khách bấm nút nào đó để xem chứng
thư của họ bất cứ lúc nào (ví như giấy tờ pháp lý
của một công ty được trưng bày ngay cửa ra vào trụ
sở!). |
|
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. |
|
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. |
|
Ở 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. |
|

Hình 1: Các bước tạo lập thông điệp có chữ ký
điện tử ở nơi gửi và các bước kiểm tra thông điệp có
chữ ký điện tử ở nơi nhận. |
|
|