1/. Chữ ký “không thể phủ nhận”
Nhằm tránh việc nhân bản chữ ký để sử dụng nhiều lần, tốt nhất là ngƣời gửi tham gia trực tiếp vào việc kiểm thử chữ ký. Điều đó đƣợc thực hiện bằng một giao thức kiểm thử, dƣới dạng một giao thức mời hỏi và trả lời.
Ví dụ: Chữ ký không thể phủ định Chaum - Han Van Antwerpen [7].
2/. Chữ ký “một lần”
Để bảo đảm an toàn, “khóa ký” chỉ dùng 1 lần (one- time) trên 1 tài liệu.
Ví dụ: Chữ ký Lamport do hai nhà khoa học L.Lamport xây dựng nên, 1979 [11], chữ ký Fail – Stop do hai nhà khoa học Van Heyst vàPedersen xây dựng [8].
1.3.2.3. Phân loại chữ ký theo ứng dụng đặc trưng
1/. Chữ ký “mù” (Blind Signature): sẽ đƣợc giới thiệu chi tiết trong mục sau.
2/. Chữ ký “nhóm” (Group Signature): sẽ đƣợc trình bày trong mục sau
3/. Chữ ký “Bội” (Multy Signature):
Chữ ký bội là chữ ký không phải của một cá nhân mà là của một nhóm ngƣời.Vì vậy, muốn tạo đƣợcchữ ký, tất cả những ngƣời này cùng phải tham gia ký.Tuy nhiên chữ ký cóthể đƣợc kiểm định bởi bất kỳ ai. Đây là trƣờng hợp dành cho thực tế của việc đƣa ranhững quyết định do nhiều ngƣời [15].
4/. Chữ ký “mù nhóm” (Blind Group Signature):[14]
Chữ ký số “mù nhóm” là sự kết hợp các thuộc tính của chữ ký “nhóm” và chữ ký “mù”. Sơ đồ chữ ký số “mù nhóm” đƣợc Lysyanskaya và Ramzam đƣa ra năm 1998.
5/. Chữ ký “mù bội” (Blind Multy Signature): Chữ ký số “mù bội” là sự kết hợp các thuộc tính của chữ ký “bội” và chữ ký “mù”. Sơ đồ chữ ký số “mù bội” đƣợc .
1.3.3. So sánh chữ ký thông thƣờng và chữ ký số
Chữ ký thông thƣờng (tức chữ ký viết tay) đƣợc dùng rất phổ biến trong các công việc hàng ngày, nhƣ viết thƣ, rút tiền từ ngân hàng, ký hợp đồng,... Chữ ký đƣợc sử dụng nhƣ là bằng chứng để xác định ngƣời ký tài liệu là ai và khẳng định ngƣời ký đã chấp nhận hay chịu trách nhiệm về nội dung đƣợc đề cập trong tài liệu. Vì vậy, một chữ ký phải có các thuộc tính sau:
- Chữ ký phải có tính tin cậy (xác thực).
- Chữ ký không thể giả mạo đƣợc: chữ ký chứng minh chỉ có ngƣời ký đã ký tài liệu một cách chủ định mà không có ai khác.
- Chữ ký không thể đƣợc dùng lại: chữ ký phải là một phần của tài liệu và không thể chuyển chữ ký sang tài liệu khác.
- Tài liệu đã ký không thể thay đổi đƣợc, tức là không thể sửa đổi tài liệu sau khi ký.
- Chữ ký không thể chối bỏ: sau khi ký, ngƣời ký không thể phủ nhận chữ ký màanh ta đã ký.
Trong tƣơng lai, hầu nhƣ các hoạt động giao dịch đều đƣợc thực hiện thông qua mạng máy tính. Vì vậy, thay vì sử dụng tài liệu giấy với chữ ký viết tay ngƣời ta sử dụng tài liệu điện tử với chữ ký số. Về hình thức, chữ ký số hoàn toàn khác với chữ ký thông thƣờng nhƣng vẫn đảm bảo các thuộc tính của chữ ký nhƣ: tính tin cậy (xác thực), tính không thể giả mạo, tính không thể dùng lại, tính không thể thay đổi, tính không thể chối bỏ. Về mặt thuộc tính chữ ký số và chữ ký thông thƣờng đều có những thuộc tính giống nhau nhƣng về mặt vật lý và cấu trúc có những khác biệt rõ rệt.
- Thứ nhất, chữ ký thông thƣờng là một phần vật lý của tài liệu đƣợc ký. Tuy nhiên, chữ ký số không gắn vào thông điệp đƣợc ký nhƣ chữ ký thông thƣờng, vì thế thuật toán ký phải liên kết giữa chữ ký và thông điệp đƣợc ký.
- Thứ hai, thẩm định chữ ký thông thƣờng thực hiện bằng cách so sánh nó với chữ ký khác (chữ ký tin cậy). Trái lại, thẩm định chữ ký số dùng thuật toán kiểm tra công khai. Do đó, bất kỳ ai cũng có thể thẩm định. Sử dụng sơ đồ chữ ký an toàn sẽ ngăn chặn đƣợc khả năng giả mạo.
- Một sự khác biệt nữa giữa chữ ký số và chữ ký thông thƣờng, bản sao của tài liệu số đã ký hoàn toàn giống với bản gốc. Ngƣợc lại, vẫn có thể phân biệt đƣợc bản sao của tài liệu giấy đã kývà bản gốc.Vì thế, phải ngăn chặn việc sử dụng lại thông điệpsố đã ký khi quá hạn sử dụng bằng cách thêm thông tin thời gian khi thông điệp đƣợc ký.
1.3.4. Tạo đại diện tài liệu và hàm băm
1.3.4.1. Một số vấn đề với chữ ký số
1/. Vấn đề 1
Ký số thực hiện trên từng bit tài liệu, nên độ dài của chữ ký số ít nhất cũng bằng độ dài của tài liệu. Một số chữ ký trên bản tin có kích thƣớc gấp đôi bản tin gốc. Ví dụ khi dùng sơ đồ chữ ký số DSS để ký vào bản tin có kích thƣớc 160 bit, thì chữ ký số này sẽ có kích thƣớc 320 bit.Trong khi đó trên thực tế, ta cần phải ký vào các bản tin có kích thƣớc rất lớn, ví dụ vài chục MegaByte (tƣơng ứng hàng ngàn trang tin trên giấy). Nhƣ vậy phải tốn nhiều bộ nhớ để lƣu trữ “chữ ký”, mặt khác tốn nhiều thời gian để truyền “chữ ký” trên mạng.
2/. Vấn đề 2
Với một số sơ đồ chữ ký “an toàn” thìtốc độ ký lại chậm vì chúng dùng nhiều phép tính số học phức tạp nhƣ số mũ modulo.
3/. Vấn đề 3
Thực tế có thể xảy ra trƣờng hợp: với nhiều bản tin đầu vào khác nhau, sử dụng hệ mã hóa hay sơ đồ ký giống nhau (có thể khác nhau) nhƣng lại cho ra bản mã hay chữ ký giống nhau (ánh xạ nhiều – một). Điều này sẽ dẫn đến phức tạp cho việc xác thực thông tin.
1.3.4.2. Cách giải quyết các vấn đề trên
1/. Cách 1
- Một cách đơn giản để giải quyết các vấn đề trên với thông điệp có kích thƣớc lớn là “chặt” bản tin thành nhiều đoạn nhỏ (ví dụ các đoạn 160 bit), sau đó ký lên các đoạn đó độc lập nhau. Nhƣng biện pháp này vẫn không giải quyết đƣợc vấn đề nêu trên.
- Hơn thế nữa còn gặp vấn đề nghiêm trọng hơn. Đó là kết quả sau khi ký, nội dung của thông điệp có thể bị xáo trộn các đoạn với nhau, hoặc một số đoạn trong chúng có thể bị mất mát. Ta cần phải bảo vệ tính toàn vẹn của bản tin gốc.
2/. Cách 2
- Thay vì phải ký trực tiếp trên tài liệu dài, ngƣời ta thƣờng dùng “hàm băm” để tạo “đại diện” cho tài liệu, sau đó ký số lên “đại diện” này.
- Các tài liệu (bản tin) có thể dƣới dạng văn bản, hình ảnh, âm thanh,… và kích thƣớc của chúng tùy ý (vài KB đến vài chục MB), qua các thuật toán băm nhƣMD4, MD5, SHA,…các đại diện tƣơng ứng của chúng có kích thƣớc cố định, ví dụ 128 bit với dòng MD, 160 bit với dòng SHA.
- Đại diện của tài liệu chính là giá trị của “hàm băm” trên tài liệu, nó còn đƣợc gọi là “tóm lƣợc” hay “bản thu gọn” của tài liệu.
- Với mỗi tài liệu (đầu vào),qua hàm băm chỉ có thể tính ra đƣợc một “đại diện” với giá trị băm tƣơng ứng - duy nhất. “Đại diện” của tài liệu đƣợc xem là “đặcthù” của tài liệu (thông điệp), giống nhƣ dấu vân tay của mỗi ngƣời.
- Trên thực tế, hai tài liệu khác nhau có hai “đại diện” khác nhau. Nhƣ vậy khi đã có “đại diện” duy nhất cho tài liệu, thì việc “ký” vào tài liệu, đƣợc thay bằng ký vào đại diện của nó là hoàn toàn hợp lý. Đó là chƣa kể việc tiết kiệm thời gian cho việc ký số, bộ nhớ lƣu giữ “chữ ký”, thời gian truyền “chữ ký” trên mạng.
1.3.4.3. Tổng quan về hàm băm
1/. Khái niệm hàm băm
Hàm băm là thuật toán không dùng khóa để mã hóa (ở đây dùng thuật ngữ “băm”thay cho“mã hóa”), nó có nhiệm vụ “lọc” (băm) tài liệu và cho kết quả là một giá trị “băm” có kích thƣớc cố định, còn gọi là “đại diện tài liệu” hay “đại diện thông điệp”.
Hàm băm là “hàm một chiều”, theo nghĩa giá trị của hàm băm là duy nhất, và từgiá trị băm này khó có thể suy ngƣợc lại nội dung hay độ dài ban đầu của tài liệu gốc.
2/. Đặc tính của hàm băm
Hàm băm h là hàm một chiều với các đặc tính sau:
- Với tài liệu đầu vào (bản tin gốc) x, chỉ thu đƣợc giá trị băm duy nhất z = h(x). - Nếu dữ liệu trong bản tinx bị thay đổi hay bị xóa để thành bản tin x‟ thì giá trị băm h(x‟) ≠ h(x).
- Cho dù chỉ là một sự thay đổi nhỏ, ví dụ chỉ thay đổi 1 bit dữ liệu của bản tin gốc x, thì giá trị băm h(x) của nó cũng vẫn thay đổi. Điều này có nghĩa là: hai thông điệp khác nhau thì giá trị băm của chúng cũng khác nhau.
- Nội dung của bản tin gốc khó thể suy ra từ giá trị hàm băm của nó. Nghĩa là: với thông điệp x thì dễ tính đƣợc z = h(x) nhƣng lại khó tính ngƣợc lại đƣợc x nếu chỉ biết giá trị băm h(x) (kể cả khi biết hàm băm h).
3/. Ứng dụng của hàm băm
- Với bản tin dài x, thì chữ ký trên x cũng sẽ dài, nhƣ vậy tốn thời gian ký, tốn bộ nhớ lƣu giữ chữ ký, tốn thời gian truyền chữ ký trên mạng. Ngƣời ta dùng hàm băm h để tạo đại diện bản tin z = h(x), nó có độ dài ngắn (ví dụ 128 bit). Sau đó ký trên z, nhƣ vậy chữ ký trên z sẽ nhỏ hơn rất nhiều so với chữ ký trên bản tin gốc x.
- Hàm băm dùng để xác định tính toàn vẹn dữ liệu.
4/. Các tính chất của hàm băm
- Tính chất 1: Hàm băm h là không va chạm yếu.
Hàm băm h đƣợc gọi là không va chạm yếu nếu cho trƣớc bức điện x, khó thể tính toán để tìm ra bức điện x‟ ≠ x mà h(x‟) = h(x)
- Tính chất 2: Hàm băm h là không va chạm mạnh.
Hàm băm h đƣợc gọi là không va chạm mạnh nếu khó có thể tính toán để tìm ra hai bức thông điệp khác nhau x‟ và x (x‟ ≠ x) mà có h(x‟) = h(x)
- Tính chất 3: Hàm băm h là hàm một chiều
Hàm băm h đƣợc gọi là hàm một chiều nếu khi cho trƣớc một bản tóm lƣợc thông báo z thì khó thể tính toán để tìm ra thông điệp ban đầu x sao cho h(x) = z.
Chương 2.MỘT SỐ LOẠI CHỮ KÝ ĐẶC BIỆT
2.1. CHỮ KÝ MÙ RSA 2.1.1. Khái niệm chữ ký mù 2.1.1. Khái niệm chữ ký mù
Chữ ký mù đƣợc David Chaum giới thiệu vào năm 1983, nó là một loại chữ kýsố, trong đó nội dung của thông điệp cần đƣợc ký bị “che” đi trƣớc khi nó đƣợc ký.
Chữ ký thu đƣợc có thể đƣợc xác thực nhƣ là đối với chữ ký số thông thƣờng. Chữ ký mù thƣờng đƣợc dùng trong các vấn đề đòi hỏi sự nặc danh nhƣ trong các ứng dụng tiền điện tử, bỏ phiếu điện tử,….
Chữ ký mù là chữ ký mà ngƣời ký không biết mình đang ký trên nội dung gì. Vì vậy mà ngƣời tagọi là “mù”.Làmđƣợc nhƣ vậy vì nội dung X trƣớc khi đƣa cho ngƣời ký đã đƣợc làm mù thành X‟. Ngƣời ký ký trên X‟ chứ không phải ký trên X.
Ví dụ: Alice cần Bob ký cho một chữ ký trên nội dung X, Alice không đƣa X cho Bob ký mà làm mù X thành X‟. Sau đó Alice đƣa X‟ cho Bob ký. Sau khi nhận đƣợc chữ ký trên X‟, A xóa mù để thu đƣợc chữ ký trên X. Nhƣ vậy Alice vẫn có chữ ký Bob của trên X mà Bob không hề biết thông tin gì về X.
2.1.2. Sơ đồ chữ ký RSA 1/. Sơ đồ 1/. Sơ đồ
- Tạo cặp khóa (bí mật, công khai) (a, b) :
Chọn bí mật 2 số nguyên tố lớn p, q, tínhn = p * q, công khai n, đặt P= A= Zn
Tính bí mật (n) = (p-1).(q-1). Chọn khóa công khai b <(n), nguyên tố cùng nhau với (n).
Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b 1(mod (n)).
Tập cặp khóa (bí mật, công khai) K = {(a, b)/ a, b Zn , a*b 1 (mod (n))}. - Ký: Chữ ký trên x P là y = Sigk (x) = xa (mod n), y A.
2/. Ví dụ
- Tạo cặp khóa (bí mật, công khai) (a, b):
Chọn bí mật số nguyên tố p = 13, q = 23, tính n = p * q = 13*23 = 299, công khai n.
Đặt P = A = Zn . Tính bí mật (n) = (p-1).(q-1) = 12 * 22 = 264 Chọn khóa công khai b = 23<(n), nguyên tố với (n).
Khóa bí mật a = 23, là phần tử nghịch đảo của b theo mod (n): a * b 1 (mod (n)).
- Ký số: Chữ ký trên x = 12là:
y = Sig k (x) = xa (mod n)=1223 (mod 299) = 416, y A.
- Kiểm tra chữ ký: Verk (x, y) = đúng x=ya(mod n)12= 41623 (mod 299).
2.1.3. Sơ đồ chữ ký mù RSA 1/. Sơ đồ 1/. Sơ đồ
Mục đích là Alicecần có đƣợc chữ ký của Bob trên văn bản x theo sơ đồ chữ ký RSA nhƣng không để cho Bob biết giá trị x thực sự. Chữ ký đó là giá trị xamod n. Lúc này Alice và Bob phải thực hiện một số bƣớc sau:
- Alice làm mù x (che x) thành u: u = Blind(x) = x.rb(mod n), với n và b đƣợc lấy từ khóa công khai của Bob, r là ngẫu nhiênZn và r nguyên tố cùng nhau với n. (r phải nguyên tố cùng nhau với n để tồn tại phần tử nghịch đảo r-1 mod n).
- Alice gửi u cho Bob, Bob ký trên u, đƣợc chữ ký là v = Sig(u) sau đó gửi lại cho A:
v = Sig(Blind(x)) = Sig(x*rb(mod n)) = xa. (rb)a(mod n) - Alice xóa mù trên v, sẽ nhận đƣợc chữ ký trên x
z = Unblind(v) = v/r mod n = xa.(rb)a /r(mod n) = xa.r/r mod n = xa mod n
Nhƣ vậy Alice đã nhận đƣợc chữ ký của Bob: xa mod n, mà Bob không biết nội dung của văn bản x. Bởi vì nội dung của thông điệp x đã đƣợc làm mù thành u thông qua việc nhân với rb, cho dù b là số công khai lấy từ Bob, nhƣng r là số ngẫu nhiên mà Bob khó có thể biết đƣợc.Sau khi Bob ký xong, Alice xóa mù (nhân với r-1) chữ ký trên u để nhận đƣợc chữ ký của Bob trên x. [6]
2/. Ví dụ minh họa
Sơ đồ chữ ký mù RSA với K = (n, p, q, r, b, a) trong đó: p = 113, q = 23, n = p * q = 2599
(n) = ( p -1 ) * (q – 1 ) = 2464
Chọn khóa công khai b = 23<(n), nguyên tố cùng nhau với (n). Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a =1607. Giả sử thông điệp cần ký là x = 1607.
-Alice chọn số ngẫu nhiên r = 13 nguyên tố cùng nhau với n. Alice che dấu định danh x bằng bí danh u:u = Blind(x) = x.rb(mod n) = 1067 *1323(mod 2599) =2164629.
- Alice gửi bí danh u cho Bob, nhận đƣợc chữ ký v:
v = Sig(u) = x a .(rb)a= uamod n = 216462923 ( mod 2599 ) = 2261.
- Sau khi nhận đƣợc v, Alicetiến hành xóa mù trên v sẽ nhận đƣợc chữ ký trên định danhx:
Unblind(v) = v/r mod n = xa.(rb)a /r(mod n) = xa mod n = 160723 ( mod 2599) =2573.
2.2. CHỮ KÝ NHÓM
2.2.1. Khái niệm về chữ ký nhóm(Groups Signature)
Chữ ký nhóm đƣợc David Chaum và Van Heyst giới thiệu lần đầu tiên vào năm 1991.Kể từ đó đến nay đã có nhiều nhà khoa học nghiên cứu và đƣa ra một số sơ đồ chữ ký nhóm khác nhƣ sơ đồ chữ ký nhóm của Chen và Pedersen năm 1994, sơ đồ chữ ký nhóm của Camenisch và Stadler năm 1997.
Chữ ký nhóm là chữ ký số đại diện cho một nhóm ngƣời hoặc một tổ chức xã hội nào đó.
Các thành viên của một nhóm ngƣời đƣợc phép ký trên thông điệp với tƣ cách là ngƣời đại diện cho nhóm.
2.2.2. Những đặc điểm của chữ ký nhóm
+ Chỉ có thành viên trong nhóm mới có thể ký tên vào bản thông báo đó
+ Ngƣời nhận thông điệp có thể kiểm tra xem chữ ký đó có đúng là của nhóm đó hay không, nhƣng ngƣời nhận không thể biết đƣợc ngƣời nào trong nhóm đã ký vào thông điệp đó.
+ Trong trƣờng hợp cần thiết chữ ký có thể đƣợc “mở” (có hoặc là không có sự giúp đỡ của thành viên trong nhóm) để xác định ngƣời nào đã ký vào thông điệp đó.
2.2.2.1. Hiệu quả của chữ ký nhóm
Khi đánh giá hiệu quả của một sơ đồ chữ ký nhóm ta cần quan tâm đến các thông số sau:
+ Độ lớn của khóa công khai nhóm (số bit) + Độ lớn của chữ ký trên một thông điệp (số bit)
+ Hiệu quả của các thủ tục: Setup, Join, Sign, Verify, Open
+Tính ƣu việt của chữ ký nhóm chính là khả năng cho phép những nhóm ngƣời, những tổ chức giao tiếp với nhau, mà trong đó việc xác thực các thông tin gửi cho nhau thông qua các khóa công khai của mỗi nhóm. Nhờ đó những thành viên của nhóm có thể ký nặc danh đại diện cho nhóm của mình mà không thể để lộ thông tin cá nhân của mình, và chỉ có ngƣời quản trị mới có thể xác định đƣợc ngƣời ký.
2.2.2.2. Việc đảm bảo an ninh đối với chữ ký nhóm.
+ Không thể giả mạo: Chỉ có các thành viên trong nhóm mới có thể đại diện cho nhóm ký trên thông điệp của nhóm.
+ Ngƣời ký nặc danh có thể tính toán đƣợc: Bất kỳ ai cũng có thể xác thực chữ ký một cách dễ dàng nhƣng không thể biết đƣợc ai là ngƣời ký (Trừ ngƣời quản lý nhóm và ngƣời ký).
+ Không thể chối bỏ: Một thành viên ký trên một thông điệp thì không thể chối bỏ chữ ký đó đƣợc. Ngƣời quản lý nhóm có thể xác định đƣợc ai đã ký vào thông điệp đó.
+ Không thể phân tích quan hệ: Việc phân tích xem hai chữ ký của một thành viên trong nhóm khác nhau nhƣ thế nào là khó đối với các thành viên của nhóm trừ