1. Tổng quan chữ kí số

Mã hóa bất đối xứng thường được hiểu là mã hoá sử  dụng khóa công khai. Mã  hóa bất đối xứng sử dụng một cặp khóa: khóa bí mật và khóa công khai, được miêu tả. Mỗi quá trình truyền tin sử dụng một cặp khóa duy nhất và có thể sử dụng linh   hoạt. Khóa bí mật cần phải lưu trữ riêng và đảm bảo tính bảo mật, không được truyền trên mạng. Khóa công khai có thể được cung cấp miễn phí và công bố tới mọi người.

Khái niệm, đặc điểm, vai trò và ứng dụng của chữ ký số?

>> Luật sư tư vấn pháp luật doanh nghiệp, gọi: 1900.6162

Tương tự như mã hoá khoá bí mật, phương pháp này cũng có các thành phần chính như sau:
• Plaintext: bản tin gốc.
• Encryption Algorithm: phép biến đổi xuôi, thực hiện biến đổi bản tin gốc.
• Public/Private keys: cặp khóa công khai/bí mật.
• Ciphertext: bản tin đã biến đổi.
• Decryption Algorithm: phép biến đổi ngược, khôi phục bản tin gốc. Quá trình sử dụng mã hóa khóa công khai:
• Bên nhận sinh cặp khóa.
• Khóa công khai thường được chứng thực bởi một  bên thứ ba  tin cậy và chuyển cho  người gửi theo các phương thức truyền thông thông thường.
• Bên gửi  nhận được khóa công khai, kiểm tra các thông tin chứng thực khoá và dùng   khóa này để mã hóa thông điệp và gửi cho bên nhận.
• Bên nhận sử dụng khoá bí mật để giải mã thông điệp. D(Kd(E(Ke,M)) = M
• Thông điệp có thể bị bên thứ ba lấy trộm, nhưng không thể đọc được nội dung.
Chữ ký số : Là một thể chứng thực được mã hóa bởi khoá bí mật của người gửi. Chữ ký số là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video...) nhằm mục đích xác định chủ thể của dữ liệu đó. Quá trình tạo và xác thực chữ ký số được mô tả như Hình 1. 

2. Vai trò của chữ ký số

Chữ ký số dùng cho các văn bản số, cho biết toàn bộ văn bản đã được ký bởi người  ký. Và người khác có thể xác minh điều này. Chữ ký số tương tự như chữ ký thông thường, đảm bảo nội dung tài liệu là đáng tin cậy, chính xác, không hề thay đổi trên đường truyền và cho biết người tạo ra tài liệu là ai. Tuy nhiên, chữ ký số khác chữ ký thường, vì nó tuỳ thuộc vào văn bản. Chữ ký số sẽ thay đổi theo văn bản còn chữ ký thường thì không hề thay đổi.
Chữ ký số được sử dụng để cung cấp chứng thực chủ sở hữu, tính toàn vẹn dữ liệu và chống chối bỏ nguồn gốc trong rất nhiều các lĩnh vực.

3. Ứng dụng của chữ ký số

Giải pháp dùng chữ ký số là tối ưu vì nó có hiệu lực pháp luật, do đó không cần in ấn tài liệu mà vẫn có thể xác nhận được tài liệu, đảm bảo tính toàn vẹn và không chối bỏ. Chữ  ký số được phát hành bởi bên thứ ba là cơ quan chứng thực có thẩm quyền cấp phát, thu hồi, quản lý chứng chỉ số cho các thực thể thực hiện các giao dịch an toàn ( Certificate Authority hoặc CA) nên đảm bảo tính khách quan. Như vậy, quá trình tạo chữ ký số, xác nhận các yêu cầu pháp lý, bao gồm xác thực người ký, xác thực tin nhắn, là thành công và hiệu quả.
Chính vì những ưu điểm của chữ ký số, nó được dùng trong nhiều ứng dụng:  Đảm  bảo an ninh truyền thông, ngân hàng trực tuyến, thương mại  điện tử, đảm bảo an ninh cho  thư điện tử, …

4. Chữ ký kép

Chữ ký kép được sử dụng để xác minh khi dữ liệu được tạo thành từ các phần khác   nhau của các đơn vị logic đơn lẻ. Chữ ký kép kết nối hai  bản tin một cách an toàn, nhưng  mỗi bên chỉ có thể đọc được thông tin dành riêng cho mình [9].
Trong thương mại điện tử, trường hợp khách hàng muốn gửi một thông  tin đặt  hàng  (OI – Order Information) tới nhà cung cấp và thông tin thanh toán (Payment Information -  PI) tới ngân hàng. Nhà cung cấp không cần biết mã số thẻ tín dụng của khách hàng và ngân hàng cũng không cần thiết chi tiết đặt hàng của khách hàng. Khách hàng được cung cấp sự bảo vệ tính riêng tư bằng việc giữ hai mục tách rời nhau. Tuy nhiên, hai mục phải được liên kết với nhau theo cách mà có thể được sử dụng để giải quyết các vấn đề tranh cãi khi cần. Liên kết được yêu cầu để khách hàng có thể chứng minh rằng thanh toán này dành cho đặt hàng này mà không phải là cho các mặt hàng hoặc dịch vụ khác.  

5. Chữ ký số

5.1 Quá trình tạo và kiểm tra chữ ký số

Quá trình sử dụng chữ ký số được thực hiện theo 2 giai đoạn: Tạo chữ ký và kiểm tra chữ ký số. Có thể dùng khoá công khai hoặc khoá bí mật  để thực  hiện các khâu trên. Hai  quá trình tạo và kiểm tra sẽ được trình bày cụ thể tiếp sau đây.
Các bước tạo chữ ký:
• Dùng giải thuật băm để tính message digest của thông điệp cần truyền đi. Kết quả ta
được một message digest.
• Sử dụng khóa bí mật của người gửi để mã hóa message digest thu được ở bước 1. Thông thường ở bước này ta dùng giải thuật RSA. Kết quả thu được gọi là digital signature của thông điệp ban đầu. Công việc này gọi là “ký” vào thông điệp. Sau khi đã ký vào thông điệp, mọi sự thay đổi trên thông điệp sẽ bị phát hiện trong giai đoạn kiểm tra. Ngoài ra, việc ký này đảm bảo người nhận tin tưởng thông điệp này xuất phát từ người gửi chứ không phải là ai khác.
• Gộp digital signature vào thông điệp ban đầu và gửi đến người nhận.
Các bước kiểm tra:
• Tách message ban đầu và chữ ký số.
• Dùng khóa công khai của người gửi (khóa này được thông báo đến mọi người) để giải   mã chữ ký số của thông điệp.
• Dùng giải thuật (MD5 hoặc SHA) băm thông điệp ban đầu.
• So sánh 2 chuỗi băm kết quả thu được ở 2 bước trên. Nếu trùng nhau, ta kết luận thông
điệp này không bị thay đổi trong quá trình truyền và thông điệp này là của người gửi.

5.2 Các loại hệ chữ ký

5.2.1 Hệ chữ ký RSA

Dựa vào ưu điểm của hệ mã RSA, nếu thiết lập được sơ đồ chữ ký dựa trên bài toán phân tích ra thừa số nguyên tố thì độ an toàn của chữ ký sẽ rất cao. Việc thiết lập sơ đồ xác thực chữ ký RSA rất đơn giản, ta chỉ cần đảo ngược hàm mã hóa và giải mã. Sau đây là sơ   dồ chữ ký RSA:
Cho n = p*q trong đó p,q là các số nguyên tố. Đặt p = A = Zn và định nghĩa: K = {(n,p,q,a,b) : n = p*q, p là các số nguyên tố, ab ≡ 1 (mod Ø (n))}.
Các giá trị n và b là công khai, còn p,q,a là bí mật. Với K = (n, p, q, a, b) ta xác định:
Sigk(x) = xa mod n Và
Verk(x,y) = TRUE  x ≡ yb (mod n) với x, y € Zn . [10]

5.2.2 Hệ chữ ký DSA

Hệ chữ ký DSA dựa vào thuật toán chữ ký số (DSA) - là chuẩn của chính phủ liên bang hoa kỳ hoặc FIPS đề ra cho chữ ký số [7].
Sinh khóa
Việc tạo khóa gồm hai bước. Bước thứ nhất là lựa chọn các tham số cho thuật toán
được chia sẻ giữa các người sử dụng khác nhau trong cùng hệ thống:
• Chọn một hàm băm mã hóa H.
• Chọn kích thước khóa L. Đây là thước đo chính quyết định sức mạnh mã hóa của khóa. DSS chuẩn ràng buộc L là bội số của 64 và 512≤L≤1024. Sau đó, FIPS 186-2 xác định L luôn là 1024. Không lâu sau, NIST 800-57 đề nghị độ dài khóa là 2048 (hoặc 3072) để thời gian an toàn đến năm 2010 (hoặc 2030), sử dụng tương ứng với các giá trị băm và q dài hơn.
• Chọn một số nguyên tố q cùng số bit với đầu ra của H.
• Chọn một số nguyên tố p độ dài L bit sao cho p–1 là bội của q. Tức là p=qz–1 với số nguyên z nào đó.
• Chọn g = h(p-1)/q mod p với h bất kỳ (1<h<p–1), và chọn lại nếu kết quả là 1. Hầu hết cách chọn h đều nhận được g có thể sử dụng, thông thường chọn h=2.
Các tham số thuật toán (p,q,g) có thể chia sẻ giữa những người khác nhau trong hệ    thống. Bước thứ hai tính các khóa bí mật và khóa công khai của từng người :
• Chọn x ngẫu nhiên sao cho 0<x<q.
• Tính y=gx mod p
• Khóa công khai là (p,q,g,y), khóa bí mật là x
Ký và kiểm tra chữ ký
Để ký một thông điệp m, người ký thực hiện các bước sau:
• Phát sinh một số ngẫu nhiêu k (0<k<q) cho mỗi thông điệp.
• Tính r=(gk mod p) mod q.
• Tính s = k-1(h(m) + xr) mod q.
• Tính toán lại chữ ký trong trường hợp không chắc chắn r=0 hoặc s=0.
• Chữ ký là (r,s)
Để kiểm tra chữ ký, người nhận thực hiện các bước sau:
• Loại bỏ chữ ký nếu 0<r<q hoặc 0<s<q không thỏa mãn.
• Tính w=s 1 mod q.
• Tính u 1 =(ℋ(m)×w) mod q.
• Tính u 2 =(r×w) mod q.
• Tính v=( (g u1 ×y u2)mod p) mod q
• Chữ ký có hiệu lực nếu v=r.

5.2.3 Đánh giá các thuật toán tạo chữ ký RSA và DSA

Để  so sánh tốc độ của hai thuật toán chữ ký số RSA và DSA. Thử nghiệm dưới đây  đã được tiến hành và ghi nhận : Độ dài khóa được thử nghiệm cho cả RSA và DSA là 576, 640, 704, 768, 832, 896, 960, 1024, 2048, 3072 (bit). Ứng với mỗi độ dài khóa, lần lượt cho cả RSA và DSA phát sinh khóa, ký văn bản ngẫu nhiên (kích thước 2 MB) và kiểm tra chữ  ký tạo được. Hàm băm mã hóa SHA-1 được chọn để sử dụng cho cả RSA và DSA. Thử nghiệm được lặp lại 50.000 lần. 
Kết quả thử nghiệm cũng cho thấy tốc độ xác nhận chữ ký của RSA không thay đổi đáng kể khi kích thước khóa tăng do số mũ công khai e được sử dụng luôn là một số đủ lớn (giá trị phổ biến hiện nay là 65537) và tốc độ thực hiện phép lũy thừa modulo (phép toán chính trong quy trình xác nhận chữ ký) sẽ tăng không nhiều. Ngược lại, tốc độ xác nhận chữ ký của DSA mặc dù thấp hơn RSA nhưng sẽ ngày càng tăng khi kích thước khóa tăng lên. Nguyên nhân là do quy trình xác nhận chữ ký của DSA gồm rất nhiều phép tính tốn chi phí cao (phép lũy thừa modulo và phép nhân) nên khi kích thước khóa tăng dần thì điều này sẽ  trở thành gánh nặng. Mặc khác, nếu kích thước L được chọn lớn hơn thì tốc độ xác nhận    chữ ký sẽ chậm hơn nữa.

5.2.4 Hệ chữ ký ElGammal

Hệ chữ ký ElGammal được thiết kế riêng biệt cho mục đích chữ ký, trái ngược với RSA thường được sử dụng cho cả mã hóa công khai và chữ ký. Hệ chữ ký ElGammal là không xác định, nghĩa là có rất nhiều giá trị chữ ký cho cùng một thông điệp cho trước [7]. Thuật toán xác minh phải có khả năng nhận bất kỳ giá trị chữ ký nào như là việc xác thực.   Sơ đồ chữ ký ElGammal được miêu tả như sau:
Cho p là một số nguyên tố như bài toàn logarit rời rạc trong zp, α € Zp* là một phần tử  nguyên tử và p = Zp* , a =( Zp*)*Zp-1 và định nghĩa:
K = {(p, α, a, β) : β ≡αa (nod p)}
Trong đó giá trị p, α, β là công khai còn a là bí mật
Với K = {(p, α, a, β) và chọn một số ngẫu nhiên k € Z*p-1, định nghĩa: Sigk(x, k) = (γ, δ)
Trong đó γ = αk mod p
δ=(x-a*γ)k-1 mod (p-1)
Với x, γ € Z*p và δ € Zp-1, định nghĩa:
Ver(x, y, δ) = TRUE  βyγδ ≡ αx (mod p)
Nếu chữ ký là đúng thì việc xác nhận thành công khi:
βyγδ ≡ αBγαkδ (mod p) ≡ αx (mod p) Trong đó aγ + kδ ≡ x (mod p – 1). [10]
B sẽ tính toán chữ ký bằng việc sử dụng cả giá trị bí mật a (một phần của khóa) và số bí mật ngẫu nhiên k (giá trị để ký bức điện). Việc xác minh có thể thực hiện được chỉ với các thông tin được công khai.

5.3 Chuẩn chữ ký số

Chuẩn chữ ký điện tử (DSS) được sửa đổi từ hệ chữ ký ElGammal. DSS sử dụng một khóa công khai để kiểm tra  tính toàn vẹn của dữ liệu nhận được và đồng nhất với dữ liệu   của người gửi. DSS cũng có thể sử dụng bởi người thứ ba để xác định tính xác thực của chữ ký và dữ liệu của nó.
DSS đã sửa đổi hệ chữ ký ElGamma cho phù hợp theo cách này một khác khéo léo,   để mỗi 160 bit bức điện được ký sử dụng một chữ ký 320 bit, nhưng việc tính toán được   thực hiện với 512 bit modulo p. Cách này được thực hiện nhờ việc chia nhỏ Zp* thành các trườn có kích thước 2160. Việc thay đổi này sẽ làm thay đổi giá trị δ:
δ=(x + αγ)k-1 mod (p – 1)
Điều này cũng làm cho giá trị kiểm tra cũng thay đổi: Αxβγ ≡ γδ (mod p)
Nếu UCLN (x + αγ, p -1) = 1 thì sẽ tồn tại δ-1 mod (p-1), do đó ta có
Αxδ^(-1)βγδ^(-1) ≡ γ (mod p)
Đây chính là sự đổi mới của DSS. Chúng ta cho q là một số nguyên tố 160 bit sao cho q | (p
– 1) và α là một số thứ q của 1 mod p, thì β và γ cũng là số thứ q của 1 mod p.
Do đó, α, β và γ có thể được tối giản trong modulo p mà không ảnh hường gì đến việc xác minh chữ ký. Sơ đồ thuật toán:
Cho p là một số nguyên tố 512 – bit trong trường logarit rời rạc Zp; q là một số nguyên tố  160 – bit và q chia hết (p-1). Cho α thuộc Zp*; p = Zp*, A = Zq * Zq và định nghĩa:
K = {(p, q, α, a, β) : β ≡ αa (mod p)}
Trong đó giá trị p, q, α, β là công khai, còn a là bí mật.
Với K = (p, α, a, β) và chọn một số ngẫu nhiên k ( 1 <= k <= q-1) và định nghĩa: Sigk(x, k) = (γ, δ)
Trong đó γ = (αk mod p) mod q
δ = (x + a*γ)k-1 mod q
Với x thuộc Z*p và γ, δ thuộc Zq , việc xác minh được thực hiện bằng cách tính: E1 = xδ-1 mod q
E2 = γδ-1 mod q
Ver(x, γ, δ) = TRUE  (αE1βE2 mod p) mod q = γ [10]
Chú ý rằng, với  DSS thì δ ≠ 0 (mod q) vì giá trị δ-1 mod q cần cho việc xác minh chữ ký .  Khi B tình một giá trị δ≡0 (mod q) trong thuật toán ký, anh ta nên bỏ nó đi và chọn một số ngẫu nhiên k mới.

6. PDF và chữ kí số

PDF (viết tắt từ tên tiếng Anh Portable Document Format, Định dạng Tài liệu Di  động) là một định dạng tập tin văn bản khá phổ biến của hãng Adobe System. Tương tự như định dạng Word (.doc), PDF hỗ trợ văn bản thô (text) cùng với phông chữ, hình ảnh đồ họa, âm thanh và nhiều hiệu ứng khác. Tuy nhiên, việc hiển thị văn bản PDF không phụ thuộc   vào môi trường làm việc của người sử dụng (cấu hình máy, phần mềm và hệ điều hành).
Không như văn bản Word, một văn bản PDF, trong hầu hết các trường hợp sẽ được hiển thị giống nhau trên những môi trường làm việc khác nhau. Chính vì ưu điểm này, định dạng  PDF đã trở nên phổ biến cho việc phát hành sách, báo hay các tài liệu khác qua mạng  Internet.
Để đọc được tập tin PDF trên máy vi tính, người dùng phải có một phần mềm hỗ trợ định dạng này. Phần mềm phổ biến hiện nay là Adobe Reader hay Foxit Reader.
Trân trọng!
Bộ phận tư vấn pháp luật doanh nghiệp - Công ty luật Minh Khuê