5. CHỮ KÝ ĐIỆN TỬ
5.6.1. Giới thiệu
Sơ đồ chữ ký DSS dựa trên giải thuật ký điện tử DSA (Digital Signature Algorithm). Chữ ký dạng DSS là một dạng chữ ký kèm thông điệp, điều đó có nghĩa là chữ ký phải được gửi kèm với thông điệp mà bản thân chữ ký không chứa (hoặc không sinh ra) thông điệp, thông thường những chữ ký dạng này đều đỏi hỏi phải có một hàm băm trên thông điệp (do nội dung thông điệp có độ dài không xác định). Hàm băm này được sử dụng trong quá trình sinh chữ ký để xây dựng một dạng nén của dữ liệu (condensed version of data). Dữ liệu này được gọi là đại diện văn bản (message digest). Phần đại diện văn bản này là đầu vào của giải thuật sinh chữ ký. Người xác nhận chữ ký cũng sử dụng hàm băm này để xây dựng phương pháp xác nhận chữ ký. Ðối với sơ đồ chữ ký DSS hàm băm là Security Hash Algorithm (SHA) được miêu tả trong FIPS 186, hàm băm này tạo ra một giá trị số nguyên 160 bit đặc trưng cho một thông điệp, điều này làm hạn chế một trong các giá trị tham số của DSS phải là 160 bit. Ngoài ra, chuẩn này yêu cầu việc sinh chữ ký phải sử dụng một khoá riêng cho mỗi người ký, ngược lại để xác nhận chữ ký, người xác nhận phải có một khoá công khai tương ứng với khoá riêng của người gửi.
Trang 70
Chữ ký DSA 5.6.2. Các giải thuật cơ bản của DSS
a.Giải thuật sinh khoá
Mỗi một thực thể tạo một khoá công khai và một khoá mật tương ứng theo cách sau:
• Chọn một số nguyên tố q sao cho 2159 < q < 2160
• Chọn một số nguyên tố p sao cho 2511+64t < p < 2512+64t ở đó t ∈ [0,8] • Chọn số α như sau:
• Chọn g là một số nguyên bất kỳ nhỏ hơn p, α = g(p-1)/q mod p • α khác 1
• Chọn số nguyên a sao cho : 1 ≤ a ≤ q - 1 • Tính β = α a mod p
• Khoá riêng của thực thể là a, khoá công khai là bộ (p,q, α, β)
b.Giải thuật sinh chữ ký
Khi cần sinh chữ ký cho một thông điệp x thực thể phải làm những việc như sau: • Chọn một số nguyên mật k, 0 < k < q - 1 • Tính γ = (ak mod p) mod q. • Tính k-1 mod q. • Tính δ = k-1(h(x) + aγ) mod q • Chữ ký của thực thể cho x là cặp (δ, γ) c.Giải thuật xác nhận chữ ký
Khi cần xác chữ ký cho một thông điệp m thực thể phải làm những việc như sau: • Dành lấy khoá công khai của thực thể ký (p,q, α, β)
• Nếu điều kiện : 0 < δ, γ < q không thoả mãn thì từ chối chữ ký • Tinh w = δ -1 mod q và h(x)
• Tính e1= w.h(x) mod q và e2 = γw mod q • Tính v = (αe1 βe2 mod p) mod q
• Nếu v = γ thì chấp nhận chữ ký ngoài ra thì từ chối
Trang 71 Ví dụ :
Giả sử q =101, p = 78q + 1 =7879.
3 là phần tử nguyên thuỷ trong Z7879 nên ta có thể lấy: α = 378 mod 7879 =170 Giả sử a =75, khi đó β = αa mod 7879 = 4576
Muốn kí bức điện x = 1234, ta chọn số ngẫu nhiên k =50, vì thế có k-1 mod 101 = 99
khi đó có :
γ = (17030 mod 7879) mod 101 = 2518 mod 101 = 94 Và δ = (1234 +75*94)*99 mod 101 = 96
Chữ kí (94, 97) trên bức điện 1234 được xác minh bằng các tính toán sau: d-1 = 97-1 mod 101 =25
e1 = 1234 * 25mod 101 = 45 e2 = 94 * 25 mod 101 =27
Có (17045 456727 mod 7879) mod 101 = 2518 mod 101 = 94 vì thế chữ kí hợp lệ. Giả sử p là số nguyên tố 512 bít sao cho bài toán logarit rời rạc trong Zp là khó giải.
Cho q là số nguyên tố 160 bít là ước của (p-1). Giả thiết α ∈ Zp là căn bậc q của 1 modulo p Cho p ∈ Zp và a = Zq× Zp và định nghĩa :
A= {(p, q, α, a, β) : β ≡ αa (mod p)} Các số p, q, α và β là công khai, có a mật.
Với K = (p, q, α , a, β ) và với một số ngẫu nhiên (mật) k ,1 ≤ k ≤ q-1, ta định nghĩa:
Quá trình ký số sigk (x, k) = (γ, δ) trong đó γ =(ak mod p) mod q và
δ = (x +aγ)k-1 mod q với x ∈ Zp và γ, δ ∈ Zq Quá trình xác minh sẽ hoàn toàn sau các tính toán :
e1= xδ-1 mod q e2= γδ-1 mod q
Trang 72
5.6.3. Tính chất của chữ ký của DSS
a. Ðộ an toàn : Độ an toàn của chữ ký phụ thuộc vào độ bí mật của khoá riêng. Người sử dụng phải được bảo vệ trước về khóa riêng của mình. Nếu khoá riêng đảm bảo an toàn tuyệt đối thì chữ ký cũng có mức độ an toàn hầu như tuyệt đối. Mặt khác, với khoá công khai là công khai, chữ ký DSS là an toàn khi từ khoá công khai không thể tìm được khoá riêng, Thật vậy, ta có:
Cho p là một số nguyên tố rất lớn, phương trình toán học sau là không thể giải được: y = ax mod p (1) với y, a = g(p-1)/q và khác 1. Ðể xem xét điều này trước hết chúng ta nhận xét phương trình (1) có nghiệm x duy nhất thuộc khoảng [1,q]. Thật vậy giả sử có hai nghiệm là x1 và x2 từ (1) ta có:
y = ax1 mod p và y = ax2 mod p. Không mất tính tổng quát giả sử x1 < x2 từ đây suy ra :
ax1 chia hết cho p (không thoả mãn do p nguyên tố)
Tồn tại k nhỏ hơn p sao cho ak ≡ 1 (mod p). Với giá trị a có dạng a = g(p-1)/q thì điều này không thể xảy ra khi g < p.
Trong nhiều trường hợp, thông điệp có thể mã và giải mã chỉ một lần nên nó phù hợp cho việc dùng với hệ mật bất kì (an toàn tại thời điểm được mã). Song trên thực tế, nhiều khi một bức điện được dùng làm một tài liệu đối chứng, chẳng hạn như bản hợp đồng hay một chúc thư và vì thế cần xác minh chữ kí sau nhiều năm kể từ lúc bức điện được kí. Bởi vậy, điều quan trọng là có phương án dự phòng liên quan đến sự an toàn của sơ đồ chữ kí khi đối mặt với hệ thống mã. Ư
Vì sơ đồ Elgamal không an toàn hơn bài toán logarithm rời rạc nên cần dùng modulo p lớn chẳng hạn từ 512 bít trở lên. Tuy nhiên độ dài chữ ký theo sơ đồ Elgamal là gấp đôi số bit của p mà với nhiều ứng dụng dùng thẻ thông minh thì cần chữ kí ngắn hơn nên giải pháp sửa đổi là: một mặt dùng p với độ dài biểu diễn từ 512 bít đến 1024 bít, mặt khác trong chữ ký (γ, δ), các số γ, δ có độ dài biểu diễn ngắn, chẳng hạn là 160 bít - khi đó độ dài chữ ký là 320 bít. Điều này thực hiện bằng cách dùng nhóm con Cyclic Zq* của Zp* thay cho chính bản thân Zp*, do đó mọi tính toán vẫn được thực hiện trong Zp* nhưng dữ liệu và thành phần chữ ký lại thuộc Zq*.
b.Tính hợp lệ : tính hợp lệ của chữ ký DSA dựa trên 2 định lý sau:
Định lý: Cho p, q là 2 số nguyên tố thoả mãn điều kiện q \ (p-1). h là một số nguyên dương bất kỳ thoả mãn h < p. Nếu :
g ≡ h(p-1)/qmod p thì gq ≡ 1 mod p.
Thật vậy gq ≡ (h(p-1)/q)q ≡ h(p-1) mod p ≡ 1 mod p (theo định lý Ferma nhỏ). Định lý: Với g, p, q xác định như trên ta luôn có :
Trang 73 Nếu m ≡ n mod p thì gm ≡ gn mod p. Thật vậy không mất tính tổng quát ta đặt m=n+kq. Thì gm ≡ g n + kq ≡ (gn mod p). (gkq mod p) ≡ gn mod p => điều phải chứng minh.
c. Nhược điểm: Khi DSS được đề xuất năm 1991, đã có một vài ý kiến chỉ trích được đưa ra. Một ý kiến cho rằng, việc xử lý lựa chọn của NIST là không công khai. Tiêu chuẫn đã được Cục An ninh Quốc gia (NSA) phát triển mà không có sự tham gia của khôi công nghiệp Mỹ. Còn những chỉ trích về mặt kĩ thuật thì chủ yếu là về kích thước modulo p bị cố định = 512 bít. Nhiều người muốn kích thước này có thể thay đổi được nếu cần, có thể dùng kích cỡ lớn hơn. Ðáp ứng những đòi hỏi này, NIST đã chọn tiêu chuẩn cho phép có nhiều cở modulo, nghĩa là cỡ modulo bất kì chia hết cho 64 trong phạm vi từ 512 đến 1024 bít.
Một phàn nàn khác về DSS là chữ kí được tạo ra nhanh hơn việc xác minh nó. Trong khi đó, nếu dùng RSA làm sơ đồ chữ kí với số mũ xác minh công khai nhỏ hơn (chẳng hạn = 3) thì có thể xác minh nhanh hơn nhiều so với việc lập chữ kí. Ðiều này dẫn đến hai vấn đề liên quan đến những ứng dụng của sơ đồ chữ kí:
Bức điện chỉ được kí một lần, song nhiều khi lại cần xác minh chữ kí nhiều lần trong nhiều năm. Ðiều này lại gợi ý nhu cầu có thuật toán xác minh nhanh hơn.
Những kiểu máy tính nào có thể dùng để kí và xác minh? Nhiều ứng dụng, chẳng hạn các thẻ thông minh có khả năng xử lý hạn chế lại liên lạc với máy tính mạnh hơn. Vi thế có nhu cầu nhưng thiết kế một sơ đồ để có thực hiện trên thẻ một vài tính toán. Tuy nhiên, có những tình huống cần hệ thống mình tạo chữ kí, trong những tình huống khác lại cần thẻ thông minh xác minh chữ kí. Vì thế có thể đưa ra giải pháp xác định ở đây.
Sự đáp ứng của NIST đối với yêu cầu về số lần tạo xác minh chữ kí thực ra không có vấn đề gì ngoài yêu cầu về tốc độ, miễn là cả hai thể thực hiện đủ nhanh.
5.6.4. Lựa chọn sơđồ ký khả thi
Trong các sơ đồ chữ ký điện tử chúng ta quyết định chọn cài đặt 2 sơ đồ chữ ký là DSA và RSA bởi vì một số nguyên nhân sau :
Cả hai sơ đồ này đều được chính phủ Mỹ thông qua trong Chuẩn chữ kí số (DSS). Cả hai giải thuật RSA và DSA đều được công bố trong Hồ Sơ trong liên bang (FIPS) vào ngày 19/5/94 và được đưa ra làm chuẩn chính thức của chữ ký điện tử vào 1/12/94 mặc dù nó đã được đề xuất từ 8/91.
Các sơ đồ chữ ký này đều là các sơ đồ chữ ký dựa trên các phương pháp mã hoá khóa khóa công khai và đều có độ bảo mật rất cao.
Trang 74 Các bộ số liệu để kiểm nghiệm sự đúng đắn trong việc cài đặt các chữ ký này đều được công khai. Nếu trong quá trình thử nghiệm các chữ ký này đều đảm bảo đúng với bộ số liệu thì chữ ký được coi là an toàn.
Cả hai sơ đồ chữ ký đều có thể chuyển đồi từ các chữ ký kèm thông điệp thành chữ ký khôi phục thông điệp không mấy khó khăn với việc tích hợp thêm các hàm có độ dư R (Redundancy Function).
Trong thực tế, khi đưa ra hệ thống CA server, phía đối tác quyết định lựa chọn sơ đồ chữ ký DSA là chữ ký chính thức cho toàn bộ các giao dịch.
Thời gian xác nhân chữ ký của hai chữ ký này đều ngắn và chấp nhận được trong môi trường mạng công cộng.
5.7. Tấn công chữ ký điện tử
Khi nói đến chữ ký điện tử, chúng ta luôn mục tiêu an toàn lên hàng đầu. Một chữ ký điện tử chỉ thực sự được áp dụng trong thực tế nêu như nó được chứng minh là không thể giả mạo. Mục tiêu lớn nhất của kẻ tấn công các sơ đồ chữ ký chính là giả
mạo chữ ký; điều này có nghĩa là kẻ tấn công sẽ sinh ra được chữ ký của người ký lên
thông điệp mà chữ ký này sẽ được chấp nhận bởi người xác nhận. Trong thực tế các hành vi tấn công chữ ký điện tử hết sức đa dạng, để dễ dàng phân tích một sơ đồ chữ ký là an toàn hay không người ta tiến hành kiểm nghiệm độ an toàn của chữ ký trước các sự tấn công sau:
• Total break: Một kẻ giả mạo không những tính được thông tin về khoá riêng
(private key) mà còn có thể sử dụng một thuật toán sinh chữ ký tương ứng tạo ra được chữ ký cho thông điệp.
• Selective forgert: Kẻ tấn công có khả năng tạo ra được một tập hợp các chữ ký
cho một lớp các thông điệp nhất định, các thông điệp này được ký mà không cần phải có khoá mật của người ký.
• Existential forgery: Kẻ tấn công có khả năng giả mạo chữ ký cho một thông
điệp, kẻ tấn công không thể hoặc có rất ít khả năng kiểm soát thông điệp được giả mạo này.
Ngoài ra, hầu hết các chữ ký điện tử đều dựa vào cơ chế mã hoá khoá công khai, các chữ ký điện tử dựa trên cơ chế này có thể bị tấn công theo các phương thức sau:
• Key-only attacks: Kẻ tấn công chỉ biết khóa chung của người ký.
• Message attacks: ở đây kẻ tấn công có khả năng kiểm tra các chữ ký khác nhau có phù hợp với một thông điệp có trước hay không. Ðây là kiểu tấn công rất thông dụng trong thực tế nó thường được chia làm 3 lớp:
Trang 75
o Known-message attack: Kẻ tấn công có chữ ký cho một lớp các thông
điệp.
o Chosen-message attack: Kẻ tấn công dành được các chữ ký đúng cho một danh sách các thông điệp trước khi tiến hành hoạt động phá huỷ chữ ký, cách tấn công này là non-adaptive (không mang tính phù hợp) bởi vì thông điệp được chọn trước khi bất kỳ một chữ ký nào được gửi đi.
o Adaptive-chosen message attack: Kẻ tấn công được phép sử dụng người ký như là một bên đáng tin cậy, kẻ tấn công có thể yêu cầu chữ ký cho các thông điệp mà các thông điệp này phụ thuộc vào khoá công khai của người ký, như vậy kẻ tấn công có thể yêu cầu chữ ký của các thông điệp phụ thuộc vào chữ ký và thông điệp dành được trước đây và qua đó tính toán được chữ ký.
5.8. Kết luận
Với sự phát triển mang tính toàn cầu của mạng Internet, con người có thể giao tiếp dễ dàng trong một cộng đồng rộng lớn. Tuy nhiên đối với các giao dịch mang tính nhạy cảm, cần phải có cơ chế đảm bảo an toàn trong phiên giao dịch đó. Cần thiết hơn cả đó là mỗi bên cần xác định chính xác người mình đang giao tiếp có đúng là đối tác mong đợi hay không. Chúng ta đã đề cập đến hai kỹ thuật chính trong an toàn thông tin đó là mã hóa và ký số. Hai kỹ thuật này cũng được áp dụng phần nào trong việc xác thực đối tác trong mỗi phiên giao dịch.
Về kỹ thuật mã hóa, có hai phương pháp: mã hóa đối xứng và mã hóa khóa khóa công khai. Mã hóa đảm bảo an toàn về thông tin giao tiếp nhưng không đảm bảo liệu thông tin có bị giả mạo hoặc có bị mạo danh hay không. Vấn đề chủ yếu nằm ở việc quản lý khóa mã hóa và giải mã ở cả hai phương pháp mã hóa.
Đối với phương pháp ký số, dựa vào chữ ký cùng cặp khóa riêng và công khai, chúng ta có thể xác định được chính xác đối tác trong giao dịch. Chúng ta cũng đã tìm hiểu hai loại chữ ký : chữ ký kèm thông điệp và chữ ký sinh thông điệp cùng ba sơ đồ ký được chấp nhận và sử dụng rộng rãi: RSA, Elgamal và DSS.
Có một vấn đề đặt ra đối với chữ ký số, liệu chúng ta có đảm bảo chính xác chữ ký hoặc khóa khóa công khai là thuộc đối tác hay không. Có rất nhiều cách tấn công vào chữ ký số, trong đó phổ biến là phương pháp mạo danh chữ ký. Giải pháp khắc phục đưa ra là sử dụng chứng chỉ số cho khóa khóa công khai nhằm đảm xác thực tính đúng đắn của đối tác trong giao dịch. Các vấn đề liên quan chứng chỉ khóa khóa công khai được đề cập trong phần khác.