Giới thiệu về Chữ ký số

14:02 | 03/07/2007

Sự phát triển của công nghệ thông tin trong những năm gần đây đã kéo theo sự phát triển mạnh mẽ của thương mại điện tử. Cũng vì thế, ngày càng nhiều các giao dịch được thực hiện và lưu chuyển trên các kênh mở, phổ biến và không an toàn như Internet.

. Để các giao dịch đó được thực hiện tin cậy, an toàn, tránh được các rủi ro tiềm ẩn xảy ra trên mạng mở song vẫn có được các cơ sở pháp lý để giải quyết khi có các tranh chấp, cần phải có một cơ sở hạ tầng thông tin, đảm bảo giải quyết một cách đầy đủ và hệ thống các vấn để đặt ra. Cơ sở hạ tầng này được gọi là cơ sở hạ tầng khóa công khai (đã được giới thiệu trong Tạp chí An toàn thông tin, số 1/2006). Bài này chỉ xem xét một khía cạnh quan trọng của nó, đó là chữ ký số.

Theo định nghĩa, chữ ký số được dùng để đánh dấu hoặc ký lên một tài liệu điện tử theo một quá trình tương tự như chữ ký lên giấy, nhưng được thực hiện bằng công nghệ mật mã khóa công khai. Nói cách khác, nó là một “dấu vân tay” có thể gắn kèm lên các thông báo điện tử, nhận dạng duy nhất người gửi, bảo đảm tài liệu không bị thay đổi theo bất kỳ cách gì từ khi được người gửi “ký” lên và có thể xác minh được khi cần.

Nói chung, quá trình tạo một chữ ký số và xác minh nó nhắm tới các mục tiêu sau:

- Xác thực người ký: Chữ ký không thể bị giả mạo trừ phi người ký mất kiểm soát đối với khóa riêng, chẳng hạn để lộ hoặc làm mất thiết bị hay vật mang, chứa nó.

- Xác thực thông báo: Chữ ký số cũng nhận dạng bức điện đã ký với độ chính xác và chắc chắn lớn hơn các chữ ký trên giấy. Việc xác minh sẽ cho biết có sự can thiệp nào lên nó hay không vì việc so sánh các kết quả “dấu vân tay” (một kết quả khi ký và một khi xác minh) sẽ cho biết bức điện có đúng như khi nó được ký không?

- Tạo chứng cứ pháp lý: Việc tạo một chữ ký số đòi hỏi người ký dùng khóa riêng của họ. Hành động này giống như một “nghi lễ” mà khi thực hiện nó, họ đã hoàn thành một giao dịch có trách nhiệm pháp lý.

- Tính hiệu quả: Quá trình tạo và xác minh chữ ký số bảo đảm rằng, chữ ký số chính là của người ký. Giống như quá trình trao đổi dữ liệu điện tử EDI (electronic data interchange), quá trình tạo và xác minh chữ ký hoàn toàn tự động, tương tác con người chỉ yêu cầu trong trường hợp ngoại lệ.

Các chữ ký số được tạo ra dựa trên cơ sở hệ thống mã khóa công khai - một hệ thống mã dùng hai khóa khác nhau song có liên quan đến nhau về mặt toán học. Một để tạo chữ ký số hoặc biến đổi dữ liệu thành dạng không hiểu được; còn khóa kia dùng để xác minh chữ ký số hoặc chuyển bức điện về dạng ban đầu.

Mấu chốt quan trọng của hệ thống mã khóa công khai dùng cho chữ ký số là khóa riêng. Khóa này chỉ người ký biết và được dùng để tạo chữ ký số. Còn khóa công khai được biết rộng rãi và được người bất kỳ dùng để xác minh chữ ký. Nó được đặt hoặc công bố trên một thư mục trực tuyến, nơi mọi người dễ dàng tiếp cận được. Mặc dù các khóa này có liên quan toán học với nhau nhưng không thể suy được khóa riêng từ khóa công khai.

Cả hai quá trình trên đều dùng hàm băm (hàm hash). Đó là một thuật toán tạo ra giá trị băm hay “dấu vân tay” duy nhất đối với nó. Những thay đổi bất kỳ trên bức điện đều luôn tạo ra một “dấu vân tay” khác khi dùng cùng một hàm băm. Trong trường hợp dùng hàm băm một chiều, không thể tính toán để nhận được bức điện ban đầu từ giá trị băm. Bởi vậy các hàm băm cho phép tạo ra các chữ ký số trên lượng dữ liệu dự đoán được và nhỏ hơn, trong khi vẫn cho mức tương quan đủ làm bằng chứng với nội dung bức điện ban đầu. Như thế sẽ bảo đảm không biết  được có sự thay đổi nào trên bức điện kể từ khi nó được ký.

Để hiểu rõ cách thức tạo và xác minh chữ ký, ta hãy xem xét ví dụ minh họa ở hình 1.

Ở đây, giả sử người gửi (Bob) được cung cấp hai khóa điện tử. Một khóa riêng được giữ bí mật và một khóa công khai. Khóa công khai này được Bob đăng ký tại cơ quan có thẩm quyền và bất kỳ ai muốn liên lạc với Bob cũng có thể truy nhập đến khóa đó. Bằng khóa riêng của mình, Bob có thể đặt các chữ ký số lên các tài liệu. Chữ ký số này bảo đảm rằng, mọi thay đổi trên tài liệu đã ký sẽ bị phát hiện ra.

Để ký một tài liệu, Bob sẽ dùng một hàm băm để chuyển nó thành dạng gọn hơn gọi là bản tóm lược thông báo (hình 2). Bản tóm lược này có độ dài tuỳ thuộc thuật toán băm, chẳng hạn 160 bit. Ở đây, không thể chuyển bản tóm lược thông báo trở về thông báo ban đầu mà nó được tạo ra từ đó.

Sau đó Bob mã hóa bản tóm lược thông báo bằng khóa riêng của anh ta. Kết quả sẽ  được chữ ký số(hình 3).

Cuối cùng, Bob gắn chữ ký số vào tài liệu và chuyển dữ liệu đến cho Pat (hình 4).

Đầu tiên, Pat giải mã chữ ký (bằng khóa công khai của Bob) chuyển ngược nó lại thành bản tóm lược thông báo 1, sau đó Pat sẽ băm thông báo thành bản tóm lược 2 (hình 5). Nếu bản tóm lược 1 giống với bản tóm lược 2 được tạo ra khi giải mã chữ ký số thì Pat biết rằng, dữ liệu được ký đã không bị thay đổi và chứng minh Bob đã ký vào bức điện vì chỉ có Bob mới có khóa riêng của anh ta.

Một vấn đề đặt ra là khi có kẻ nào đó muốn lừa Pat, anh ta có thể tự tạo ra một cặp khóa nhưng để dưới tên của Bob. Có cách nào Pat có thể chắc chắc rằng, khóa công khai của Bob đích thực là của chính anh ta?

Cách phổ biến nhất là dùng các tổ chức có thẩm quyền chứng thực (các CA). Để có thể gắn kết cặp khóa với người ký (cũng là người đăng ký), CA phát hành chứng chỉ - là một bản ghi điện tử trong đó liệt kê khóa công khai như một “chủ thể” của chứng chỉ và khẳng định rằng, người ký ghi danh trong chứng chỉ là người giữ khóa riêng tương ứng. Người nhận chứng chỉ nếu muốn tin cậy vào chữ ký số do người đăng ký có tên trong chứng chỉ, có thể dùng khóa công khai của  CA nêu trong chứng chỉ để xác minh rằng, chữ ký số được tạo ra bằng khóa riêng tương ứng. Nếu xác minh thành công, nó sẽ chứng tỏ rằng, người đăng ký có tên trong chứng chỉ là người giữ khóa riêng tương ứng và là người tạo ra chữ ký số.

Điều này hoàn toàn xảy ra khi Susan làm việc tại trung tâm CA. Susan có thể tạo ra một chứng chỉ số cho Bob một cách đơn giản bằng việc ký lên khóa công khai của Bob gắn kết với các thông tin về anh ta (hình 6).

Bây giờ các đồng nghiệp của Bob có thể kiểm tra chứng chỉ tin cậy của Bob để bảo đảm rằng khóa công khai của anh thực sự là của anh. Thực tế, không ai tại công ty của Bob chấp nhận chữ ký mà không có chứng chỉ do Susan tạo ra. Điều này cho Susan quyền thu hồi lại các chữ ký nếu các khóa riêng bị tổn thương hoặc không cần đến nữa.

Giả sử Bob gửi một tài liệu đã ký cho Pat. Để xác minh chữ ký trên tài liệu, Pat trước hết dùng khóa công khai của Susan (của CA) để kiểm tra chữ ký trên chứng chỉ của Bob. Việc kiểm tra thành công sẽ chứng minh rằng Susan đã tạo ra chứng chỉ này.

Tiếp theo, Pat sẽ lấy khóa công khai của Bob từ chứng chỉ và dùng nó để kiểm tra chữ ký của Bob. Nếu khóa công khai của Bob giải mã thành công chữ ký thì Pat tin chắc chữ ký đã được tạo ra bằng khóa riêng của Bob vì Susan đã chứng thực khóa công khai phù hợp. Dĩ nhiên, nếu chữ ký hợp lệ thì ta biết rằng, không có ai thay đổi nội dung đã ký