Chữ ký số (tiếng Anh digital signature) là một dạng chữ ký điện tử được tạo ra bằng sự biến đổi một thông điệp dữ liệu sử dụng hệ thống mật mã không đối xứng theo đó người có được thông điệp dữ liệu ban đầu và khoá công khai của người ký có thể xác định được chính xác:
- Việc biến đổi được tạo ra bằng đúng khoá bí mật tương ứng với khoá công khai trong cùng một cặp khóa;
- Sự toàn vẹn nội dung thông điệp dữ liệu kể từ khi thực hiện việc biến đổi nêu trên.
Chữ ký số được xem là chữ ký điện tử an toàn khi đáp ứng các điều kiện sau:
- chữ ký số được tạo ra trong thời gian chứng thư số có hiệu lực và kiểm tra được bằng khoá công khai ghi trên chứng thư số đó;
- chữ ký số được tạo ra bằng việc sử dụng khóa bí mật tương ứng với khóa công khai ghi trên chứng thư số do một trong các tổ chức cung cấp dịch vụ chứng thực chữ ký số được cấp giấy chứng nhận đủ điều kiện đảm bảo an toàn cho chữ ký số theo quy định của quốc gia quản lý;
- khóa bí mật chỉ thuộc sự kiểm soát của người ký tại thời điểm ký.
Sơ đồ và thuật ngữ[sửa]
Việc sử dụng chữ ký điện tử trong thực tế có thể mô tả ngắn gọn như sau:
- Người gửi (chủ nhân của văn bản) “ký” văn bản bằng cách mã hóa nó với khóa bí mật của mình;
- Người gửi chuyển văn bản đã “ký” cho người nhận;
- Người nhận văn bản kiểm tra chữ ký bằng việc sử dụng chìa khóa công khai của người gửi để giải mã văn bản.
Chính vì vậy để thực hiện được các bước ở trên một sơ đồ chữ ký số phải có bộ ba thuật toán (G, S, V), thỏa mãn:
- G (thuật toán sinh khóa) tạo ra khóa công khai và khóa bí mật tương ứng, trên đầu vào văn bản.
- S (thuật toán ký) trả lại chữ ký trên các giá trị đầu vào gồm khóa bí mật và một chuỗi văn bản.
- V (thuật toán kiểm thử) trả lại kết quả chấp nhận hay từ chối trên các đầu vào: khóa công khai, chuỗi văn bản và chữ ký.
Ở đây:
- “Khóa bí mật” là một khóa trong cặp khóa thuộc hệ thống mật mã không đối xứng, được dùng để tạo chữ ký số.
- “Khóa công khai” là một khóa trong cặp khóa thuộc hệ thống mật mã không đối xứng, được sử dụng để kiểm tra chữ ký số được tạo bởi khoá bí mật tương ứng trong cặp khoá.
- “Ký số” là việc đưa khóa bí mật vào một chương trình phần mềm để tự động tạo và gắn chữ ký số vào thông điệp dữ liệu.
- “Người ký” là thuê bao dùng đúng khoá bí mật của mình để ký số vào một thông điệp dữ liệu dưới tên của mình.
- “Người nhận” là tổ chức, cá nhân nhận được thông điệp dữ liệu được ký số bởi người ký, sử dụng chứng thư số của người ký đó để kiểm tra chữ ký số trong thông điệp dữ liệu nhận được và tiến hành các hoạt động, giao dịch có liên quan.
Mật mã hóa khóa công khai[sửa]
Chữ ký số dựa trên nền tảng mật mã hóa khóa công khai. Để có thể trao đổi thông tin trong môi trường này, mỗi người sử dụng có một cặp khóa: một để công khai và một giữ bí mật. Khóa công khai được công bố rộng rãi còn khóa bí mật phải được giữ kín và không thể tìm được khóa bí mật nếu chỉ biết khóa công khai.
Để minh họa cho chữ ký số ta xét ví dụ sau: B muốn gửi thông tin cho A và muốn A biết thông tin đó thực sự do chính B gửi. B gửi cho A văn bản kèm với chữ ký số. Chữ ký này được tạo ra bằng khóa bí mật của B. Khi nhận được văn bản, A kiểm tra sự thống nhất giữa văn bản và chữ ký bằng thuật toán kiểm thử sử dụng khóa công khai của B. Bản chất của thuật toán tạo chữ ký đảm bảo nếu chỉ cho trước văn bản, rất khó (gần như không thể) tạo ra được chữ ký của B nếu không biết khóa bí mật của B. Nếu phép kiểm thử cho kết quả đúng thì A có thể tin tưởng rằng văn bản thực sự do B gửi.
Trong triển khai thực tiễn, nếu việc dùng khóa công khai trực tiếp sẽ không ổn về mặt tốc độ nếu ký một văn bản dài. Một cách để “giải quyết” vấn đề này là dùng hàm băm một chiều để lấy ra giá trị băm. Lúc đó, trên thực tế, loại chữ ký này không được sử dụng trực tiếp mà thay vào đó, B chỉ thực hiện mã hóa với khóa bí mật trên giá trị băm của văn bản. Điều này khiến việc ký trở nên đơn giản hơn và chữ ký ngắn hơn. Tuy nhiên nó cũng làm nảy sinh vấn đề khi hai văn bản khác nhau lại cho ra cùng một giá trị băm. Đây là điều có thể xảy ra mặc dù xác suất rất thấp.
Thuật toán[sửa]
Một số thuật toán chữ ký số điển hình có thể kể tới gồm:
- Sơ đồ chữ ký dựa trên RSA. Đây là sơ đồ chữ ký sử dụng hệ mã công khai RSA khá đơn giản trong việc thiết lập và có độ an toàn cao.
- DSA và biến thể đường cong elip ECDSA. Giải thuật ký số (Digital Signature Algorithm, viết tắt DSA) là chuẩn của chính phủ Mỹ hoặc FIPS cho các chữ ký số. Tháng 8/1991 Viện các tiêu chuẩn và công nghệ quốc gia (NIST) đã đề nghị để sử dụng trong chuẩn chữ ký số (DSS) và được chấp nhận năm 1993. ECDSA là một biến thể của DSA sử dụng đường cong elliptic, Nó được chấp nhận vào năm 1999 như một tiêu chuẩn ANSI, năm 2000 được chấp nhận trong tiêu chuẩn IEEE và NIST. Nó cũng đã được chấp nhận vào năm 1998 như một tiêu chuẩn ISO.
- Thuật toán chữ ký số đường cong Edwards và biến thể Ed25519. Thuật toán chữ ký số đường cong Edwards (EdDSA) là sơ đồ chữ ký điện tử sử dụng một biến thể của chữ ký Schnorr dựa trên các đường cong Edwards xoắn. Nó được thiết kế nhằm để đẩy nhanh tốc độ hơn các chương trình chữ ký số hiện có mà không ảnh hưởng đến tính bảo mật.
- Sơ đồ chữ ký ElGamal là tiền thân của DSA, và các biến thể chữ ký Schnorr và thuật toán ký Pointcheval – Stern. Sơ đồ chữ ký ElGamal hiếm khi được sử dụng trong thực tế mà biến thể do NSA phát triển mới được sử dụng rộng rãi hơn. Chữ ký Schnorr là một chữ ký điện tử do thuật toán chữ ký Schnorr tạo ra. Đây là một sơ đồ chữ ký điện tử biết đến chủ yếu vì tính đơn giản của nó và hiệu quả trong việc tạo ra chữ ký ngắn. Chữ ký Schnorr có thể đưa vào sử dụng trong Bitcoin. Thuật toán ký Pointcheval – Stern là một sơ đồ chữ ký số dựa trên sơ đồ chữ ký ElGamal. Nó thay đổi một chút sơ đồ ElGamal để tạo ra một sơ đồ được chứng minh là an toàn để chống lại các tấn công văn bản được chọn.
- Thuật toán ký Rabin. Thuật toán ký Rabin là một phương pháp chữ ký điện tử do Michael O. Rabin đề xuất ban đầu vào năm 1979 và là một trong những sơ đồ chữ ký điện tử đầu tiên được đề xuất. Thuật toán chữ ký Rabin liên quan chặt chẽ đến hệ thống mật mã Rabin.
- Các sơ đồ dựa trên ghép cặp như BLS. Đây là những lược đồ chữ ký mật mã cho phép người dùng xác minh rằng người ký là xác thực. Lược đồ sử dụng ghép cặp song tuyến (bilinear pairing) để xác minh và chữ ký là các phần tử của nhóm đường cong elliptic.
- Sơ đồ chữ ký NTRUSign. NTRUSign là một thuật toán chữ ký số mật mã khóa công khai. Phiên bản gốc của NTRUSign được công bố tại CrypTEC'99 (Hội thảo quốc tế về mã hóa và thương mại điện tử). Phiên bản cải tiến mới được đặt tên là NTRUSign và được trình bày trong phiên họp sơ bộ của Asiacrypt 2001 và được xuất bản trong kỷ yếu Hội thảo RSA 2003. Công ty hệ thống mật mã đã đăng ký bằng sáng chế cho thuật toán này.
- Chữ ký không thể phủ nhận. Chữ ký không thể phủ nhận là sơ đồ chữ ký số mà người ký có thể lựa chọn người mà họ cho phép xác minh chữ ký. Sơ đồ chữ ký này bổ sung tính năng từ chối chữ ký rõ ràng, ngăn chặn việc người ký sau đó từ chối xác minh chữ ký do bỏ sót; tình huống làm giảm giá trị chữ ký trong mắt người xác minh. Sơ đồ này do David Chaum và Hans van Antwerpen phát minh vào năm 1989.
- Chữ ký tổng hợp - một sơ đồ chữ ký hỗ trợ tổng hợp: Cho n chữ ký trên n văn bản từ n người dùng, có thể tổng hợp tất cả các chữ ký này thành một chữ ký duy nhất có kích thước không đổi theo số lượng người dùng. Chữ ký duy nhất này sẽ thuyết phục người xác minh rằng n người dùng thực sự đã ký n văn bản gốc. Chữ ký tổng hợp có thể được đưa vào sử dụng với Bitcoin;
- Chữ ký với các giao thức hiệu quả - là các sơ đồ chữ ký tạo điều kiện cho các giao thức mã hóa hiệu quả như chứng minh không lộ tri thức hoặc tính toán an toàn.
Từ góc độ thực tế và luật pháp, để có thể được chấp nhận trong thực tế, tất cả các mô hình chữ ký số cần phải đạt được một số yêu cầu sau:
- Chất lượng của thuật toán mã hóa phải đảm bảo an toàn;
- Chất lượng của phần mềm/phần cứng phải đáp ứng yêu cầu thực hiện mã hóa;
- Khóa bí mật phải được giữ an toàn;
- Quá trình phân phối khóa công khai phải đảm bảo mối liên hệ giữa khóa và thực thể sở hữu khóa là chính xác. Việc này có thể được thực hiện bởi hạ tầng khóa công khai (PKI) và mối liên hệ giữa khóa và người sở hữu được chứng thực bởi những bộ phận điều hành PKI (còn gọi là ủy quyền chứng thực). Đối với hệ thống PKI mở, nơi mà tất cả mọi người đều có thể yêu cầu sự chứng thực trên thì khả năng lỗi là rất thấp. Tuy nhiên các PKI thương mại cũng đã gặp phải nhiều vấn đề có thể dẫn đến những văn bản bị ký sai.
- Người sử dụng (và phần mềm) phải thực hiện đúng các bước của giao thức ký.
Chỉ khi tất cả các điều kiện trên được thỏa mãn thì chữ ký số mới là bằng chứng xác định người gửi hoặc người có thẩm quyền đối với văn bản.
Lịch sử[sửa]
Khái niệm về sơ đồ chữ ký số được Whitfield Diffie và Martin Hellman lần đầu tiên mô tả vào năm 1976, mặc dù họ chỉ phỏng đoán rằng các sơ đồ như vậy tồn tại là dựa trên các hàm hoán vị một chiều của cửa sập. Ngay sau đó, Ronald Rivest, Adi Shamir và Len Adeld đã phát minh ra thuật toán RSA, có thể sử dụng để tạo chữ ký số nguyên thủy. Gói phần mềm đầu tiên, phát hành năm 1989, được bán rộng rãi cung cấp chữ ký số sử dụng thuật toán RSA là Lotus Notes 1.0.
Sau RSA người ta nhanh chóng phát triển các chương trình chữ ký số khác, trong đó sớm nhất là chữ ký Lamport, chữ ký Merkle và chữ ký Rabin.
Năm 1988, Shafi Goldwasser, Silvio Micali và Ronald Rivest trở thành người đầu tiên định nghĩa các yêu cầu bảo mật của các chương trình chữ ký số một cách chặt chẽ. Họ đã mô tả một cách hệ thống các mô hình tấn công sơ đồ chữ ký, trình bày sơ đồ chữ ký GMR và lần đầu tiên chứng minh được việc có thể ngăn chặn cả sự giả mạo và chống lại tấn công văn bản đã ký.
Khi người ta bỏ dần việc sử dụng các tài liệu giấy có chữ ký tay hoặc tem xác thực, chữ ký số có thể cung cấp thêm bằng chứng đảm bảo để chứng minh, nhận dạng và xem tình trạng của tài liệu điện tử cũng như thừa nhận sự chấp thuận của người ký.
Ứng dụng[sửa]
Những lợi ích khi sử dụng chữ ký số:
- Khả năng xác thực (xác định nguồn gốc). Chữ ký số có thể được sử dụng để xác thực nguồn gốc văn bản. Khi quyền sở hữu khóa bí mật chữ ký số được ràng buộc với một người dùng cụ thể, chữ ký hợp lệ cho thấy văn bản là do người dùng đó gửi. Vấn đề sự tin cậy về tính xác thực của người gửi đặc biệt quan trọng đối với các giao dịch tài chính. Chẳng hạn một chi nhánh ngân hàng gửi một gói tin về trung tâm dưới dạng (a, b), trong đó a là số tài khoản và b là số tiền chuyển vào tài khoản đó. Một kẻ lừa đảo có thể gửi một số tiền nào đó để lấy nội dung gói tin và truyền lại gói tin thu được nhiều lần để thu lợi (tấn công truyền lại gói tin).
- Toàn vẹn thông tin. Trong nhiều tình huống, người gửi và người nhận tin nhắn cần tin tưởng rằng văn bản không bị thay đổi trong quá trình truyền. Mặc dù việc mã hóa che giấu đi nội dung của văn bản, nhưng có thể thay đổi văn bản đã mã hóa mà không cần hiểu nó. (Một số thuật toán mã hóa, được gọi là thuật toán không thể nhầm lẫn, ngăn chặn điều này, nhưng một số thuật toán khác thì không.) Tuy nhiên, nếu một văn bản được ký điện tử, bất kỳ thay đổi nào trong văn bản sau khi ký sẽ làm mất hiệu lực chữ ký. Hơn nữa, không có cách nào hiệu quả để sửa đổi văn bản và chữ ký của nó để tạo ra một văn bản mới có chữ ký hợp lệ, bởi vì điều này vẫn được xem là không thể tính toán được bởi hầu hết các hàm băm mật mã.
- Không thể thoái thác. Trong giao dịch, một bên có thể từ chối nhận một văn bản nào đó là do mình gửi. Để ngăn ngừa khả năng này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ ký số với văn bản. Khi có tranh chấp, bên nhận sẽ dùng chữ ký này như một chứng cứ để bên thứ ba giải quyết. Tuy nhiên, trong trường hợp khóa bí mật có thể bị lộ thì tính không thể thoái thác cũng không thể đạt được hoàn toàn.
Trong thực tế khi triển khai nền tảng số cần phải có cơ quan cấp chứng chỉ số (CA). Chứng chỉ số xác nhận quyền sở hữu khóa công khai của chủ thể có tên trên chứng chỉ. Điều này cho phép những người khác (các bên phụ thuộc) dựa vào chữ ký hoặc các xác nhận được đưa ra về khóa riêng tương ứng với khóa công khai được chứng nhận. CA hoạt động như một bên thứ ba đáng tin cậy - được cả chủ thể (chủ sở hữu) của chứng chỉ và bên dựa vào chứng chỉ tin cậy.
Lưu ý rằng các thuộc tính xác thực, không thể thoái thác… được dựa vào khóa bí mật chưa bị thu hồi trước khi sử dụng. Việc thu hồi công khai cặp khóa là một yêu cầu bắt buộc, khi các khóa bí mật bị rò rỉ sẽ dễ dàng chỉ ra chủ sở hữu của cặp khóa. Kiểm tra trạng thái thu hồi yêu cầu có thể được thực hiện “trực tuyến” (online); ví như kiểm tra danh sách thu hồi chứng chỉ (CRL là danh sách các chứng chỉ số đã bị cơ quan cấp chứng chỉ thu hồi trước ngày hết hạn theo lịch trình và không còn đáng tin cậy nữa) hoặc qua giao thức xác định trạng thái chứng chỉ trực tuyến (giao thức lấy trạng thái thu hồi của chứng chỉ số). Có thể xem điều này tương tự như việc một nhà cung cấp nhận thẻ tín dụng trước tiên phải kiểm tra trực tuyến với nhà phát hành thẻ tín dụng để xem một thẻ đó đã được báo cáo bị mất hoặc bị đánh cắp. Tất nhiên, với các cặp khóa bị đánh cắp, hành vi trộm cắp thường chỉ được phát hiện sau khi sử dụng khóa bí mật.
Tại Việt Nam, ngày 27/09/2018, Chính phủ đã ban hành Nghị định quy định chi tiết thi hành Luật giao dịch điện tử về chữ ký số và dịch vụ chứng thực chữ ký số, tạo điều kiện thúc đẩy sự phát triển các giao dịch điện tử nói chung và chính phủ điện tử cũng như thương mại điện tử nói riêng.
Theo một thống kê của Bộ Thông tin và Truyền thông, trong giai đoạn 2017-2018, tỷ lệ văn bản điện tử áp dụng chữ ký số trên tổng số văn bản chuyển qua mạng của các cơ quan, đơn vị ở mức cao (có cơ quan đạt tới 95%). Đến hết 31/03/2018, tất cả 30/30 các Bộ, cơ quan ngang Bộ, cơ quan thuộc Chính phủ được cấp chứng thư số chuyên dùng, trong đó có 28/30 đơn vị ứng dụng chữ ký số chuyên dùng do Ban Cơ yếu Chính phủ cấp, 28/30 Bộ, cơ quan ngang Bộ (chiếm 90%) có ứng dụng chữ ký số nhằm phục vụ các hoạt động quản lý, nghiệp vụ trao đổi thông tin trong phạm vi nội bộ.
Cũng tính đến 31/03/2018, 63/63 địa phương được cấp chứng thư số. Trong đó có 57 địa phương đã ứng dụng chữ ký số chuyên dùng của Ban Cơ yếu Chính phủ. Phần mềm tích hợp chữ ký số được sử dụng phổ biến trong các cơ quan nhà nước như phần mềm quản lý văn bản và điều hành, hệ thống email công vụ. Nhờ chữ ký số, nền hành chính công đang có những bước chuyển mạnh mẽ sang các giao dịch điện tử, từng bước thực hiện xây dựng chính phủ điện tử trong phạm vi cả nước.
Tài liệu tham khảo[sửa]
- Nghị định số 130/2018/NĐ-CP của Chính phủ: Quy định chi tiết thi hành Luật giao dịch điện tử về chữ ký số và dịch vụ chứng thực chữ ký số.
- Rivest, R.; A. Shamir; L. Adleman (1978). “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems” (PDF). Communications of the ACM.21 (2): 120–126.
- Bộ thông tin và truyền thông, “Báo cáo tình hình phát triển và ứng dụng chữ ký số tại Việt Nam năm 2018”, NXB Thông tin và Truyền thông.