Bài tập lớn Mật mã và an toàn dữ liệu Chữ ký số ELGAMAL • Chữ ký điện tử là dạng thông tin đi kèm dữ liệu (văn bản, hình ảnh, video…) nhằm mục đích xác định người chủ của dữ liệu đó, chữ ký ở dưới chân email là một ví dụ về loại chữ ký này. • Chữ ký số chỉ là một tập con của chữ ký điện tử, là một dạng chữ ký điện tử dựa trên công nghệ mã hoá. Để sử dụng chữ ký số thì người dùng phải có một cặp khoá gồm khoá công khai (public key) và khoá bí mật (private key). Khoá bí mật dùng để tạo chữ ký số, khoá công khai dùng để thẩm định chữ ký số hay xác thực người tạo ra chữ ký số đó.
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Bài tập lớn
Mật mã và an toàn dữ liệu
Đề bài: Chữ ký số ELGAMAL
Giảng viên: PGS.TS Trịnh Nhật Tiến
Học viên thực hiện: Uông Huy Quân,
Khóa: K19-TDL&MMT
Lớp MH: INT 6010 2
Mã HV: 12025324
Hà Nội, Năm 2014
Trang 2MỤC LỤC
1 T NG QUAN V CH KÝ S ỔNG QUAN VỀ CHỮ KÝ SỐ Ề CHỮ KÝ SỐ Ữ KÝ SỐ Ố 3
1.1 Khái niệm 3
1.2 Pháp lý của chữ ký số 3
1.3 Ưu điểm của chữ ký số 3
1.4 Lợi ích khi sử dụng chữ ký số của doanh nghiệp 4
1.5 Cách sử dụng chữ ký số 4
2 S Đ CH KÝ ELGAMAL Ơ ĐỒ CHỮ KÝ ELGAMAL Ồ CHỮ KÝ ELGAMAL Ữ KÝ SỐ 5
2.1 Tạo cặp khóa (bí mật, công khai) (a, h) : 5
2.2 Ký số: 5
2.3 Kiểm tra chữ ký: 5
2.4 Ví dụ: 5
3 Đ AN TOÀN C A CH KÝ ELGAMAL Ộ AN TOÀN CỦA CHỮ KÝ ELGAMAL ỦA CHỮ KÝ ELGAMAL Ữ KÝ SỐ 6
3.1 Vấn đề giả mạo chữ ký Elgamal 6
3.2 Vấn đề Phá khóa theo sơ đồ Elgamal 8
4 ƯU ĐIỂM VÀ NHƯỢC ĐIỂM CỦA CHỮ KÝ ELGAMAL U ĐI M VÀ NH ỂM VÀ NHƯỢC ĐIỂM CỦA CHỮ KÝ ELGAMAL ƯU ĐIỂM VÀ NHƯỢC ĐIỂM CỦA CHỮ KÝ ELGAMALỢC ĐIỂM CỦA CHỮ KÝ ELGAMAL C ĐI M C A CH KÝ ELGAMAL ỂM VÀ NHƯỢC ĐIỂM CỦA CHỮ KÝ ELGAMAL ỦA CHỮ KÝ ELGAMAL Ữ KÝ SỐ 9
4.1 Ưu điểm 9
4.2 Nhược điểm 9
Trang 31 TỔNG QUAN VỀ CHỮ KÝ SỐ
Chữ ký điện tử là dạng thông tin đi kèm dữ liệu (văn bản, hình ảnh,
video…) nhằm mục đích xác định người chủ của dữ liệu đó, chữ ký ở dưới chân email là một ví dụ về loại chữ ký này
Chữ ký số chỉ là một tập con của chữ ký điện tử, là một dạng chữ ký
điện tử dựa trên công nghệ mã hoá Để sử dụng chữ ký số thì người dùng phải có một cặp khoá gồm khoá công khai (public key) và khoá bí mật (private key) Khoá bí mật dùng để tạo chữ ký số, khoá công khai dùng để thẩm định chữ ký số hay xác thực người tạo ra chữ ký số đó
Một số văn bản quy phạm pháp luật do Quốc hội, Chính phủ và các Bộ thông qua và ban hành liên quan đến chữ ký số:
Luật Giao dịch điện tử số 51/2005/QH11 do Quốc hội thông qua ngày
29/11/2005 quy định về giao dịch điện tử trong hoạt động của các cơ quan nhà nước trong lĩnh vực dân sự, kinh doanh, thương mại và các lĩnh vực khác do pháp luật quy định
Luật Công nghệ thông tin số 67/2006/QH11 do Quốc hội thông qua
ngày 29/6/2006 quy định về hoạt động ứng dụng và phát triển công nghệ thông tin, các biện pháp bảo đảm ứng dụng và phát triển công nghệ thông tin, quyền và nghĩa vụ của cơ quan, tổ chức, cá nhân tham gia hoạt động ứng dụng và phát triển công nghệ thông tin
Nghị định số 26/2007/NĐ-CP ngày 15/2/2007 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ố
Thông tư số 05/2010/TT-BNV ngày 01/7/2010 của Bộ Nội vụ hướng
dẫn về cung cấp, quản lý và sử dụng dịch vụ chứng thực chữ ký số chuyên dùng phục vụ các cơ quan thuộc hệ thống chính trị
Việc sử dụng chữ ký số mang lại nhiều ưu điểm khi cần xác định nguồn gốc
và tính toàn vẹn của văn bản trong quá trình sử dụng
Khả năng xác định nguồn gốc
Các hệ thống mật mã hóa khóa công khai cho phép mật mã hóa văn bản với khóa bí mật mà chỉ có người chủ của khóa biết
Để sử dụng Chữ ký số thì văn bản cần phải được mã hóa hàm băm (là giải thuật nhằm sinh ra các giá trị băm tương ứng với mỗi khối
dữ liệu: có thể là một chuỗi kí tự, một đối tượng trong lập trình hướng
Trang 4các khối dữ liệu) Sau đó dùng khoá bí mật của người chủ khóa để mã hóa, khi đó ta được Chữ ký số Khi cần kiểm tra, bên nhận giải mã với khóa công khai để lấy lại hàm băm và kiểm tra với hàm băm của văn bản nhận được Nếu hai giá trị này khớp nhau thì bên nhận có thể tin tưởng rằng văn bản đó xuất phát từ người sở hữu khóa bí mật
Tính toàn vẹn
Cả hai bên tham gia vào quá trình thông tin đều có thể tin tưởng
là văn bản không bị sửa đổi trong khi truyền vì nếu văn bản bị thay đổi thì hàm băm cũng sẽ thay đổi và lập thức bị phát hiện Quy trình mã hóa
sẽ ẩn nội dung dối với bên thứ ba
Tính không thể phủ nhận
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
Việc ứng dụng chữ ký số giúp doanh nghiệp tiết kiệm thời gian, chi phí
hành chính Hoạt động giao dịch điện tử cũng được nâng tầm đẩy mạnh Không mất thời gian đi lại, chờ đợi
Không phải in ấn các hồ sơ
Việc ký kết các văn bản ký điện tử có thể diễn ra ở bất kỳ đâu, bất kỳ
thời gian nào
Việc chuyển tài liệu, hồ sơ đã ký cho đối tác, khách hàng, cơ quan quản
lý… diễn ra tiện lợi và nhanh chóng
Tạo chữ ký số
Sử dụng các ứng dụng hỗ trợ tạo chữ ký số từ khóa bí mật, khóa
bí mật do nhà cung cấp dịch vụ chứng thức chữ ký số công cộng cấp được lưu giữ dưới dạng tệp tin (có mật khẩu khi sử dụng), để an toàn và chống copy khóa bí mật một số nhà cung cấp dịch vụ lưu trữ khóa bí mật trong một thiết bị phần cứng chuyên dụng là USB Token hoặc SmartCard Thiết bị này sẽ đảm bảo khóa bí mật được lưu trữ an toàn, không thể sao chép hay nhân bản được và cũng không thể bị virus phá hỏng
Kiểm tra chữ ký
Trang 5Khi giao dịch điện tử, người nhận phải kiểm tra được tính pháp lý của chữ ký số của người giao dịch với mình gửi đến Trong các ứng dụng hỗ trợ ký số có chức năng kiểm tra được chữ ký số công cộng hợp pháp hay không Việc kiểm tra là so sánh tính đồng nhất của khóa công khai trên chữ ký số của người gửi đến với khóa công khai của Nhà cung cấp dịch vụ chứng thực chữ ký số công cộng lưu trữ trên hệ thống máy chủ của Trung tâm chứng thực chữ ký số quốc gia (Root Certification Authority) thuộc Bộ Thông tin – Truyền thông
Sơ đồ chữ ký Elgamal được giới thiệu năm 1985 Sơ đồ này thiết kế dành riêng cho chữ ký số khác với sơ đồ RSA dành chung cho cả hệ thống mã công khai
và chữ ký số
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là “khó” giải
Chọn phần tử nguyên thuỷ g Zp* Đặt P = Z p*, A = Z p* x Z p-1 Chọn khóa bí mật là a Zp* Tính khóa công khai h g a mod p
Định nghĩa tập khóa: = {(p, g, a, h): h g a mod p}
Các giá trị p, g, h được công khai, phải giữ bí mật a
Dùng 2 khóa ký: khóa a và khóa ngẫu nhiên bí mật r Zp-1* (Vì r Zp-1* , nên nguyên tố cùng p -1, do đó tồn tại r -1 mod (p -1) ) Chữ ký trên x P là y = Sig a (x, r) = (, ), y A
Trong đó Z p*, Zp-1 :
= g r mod p và = (x – a * ) * r -1 mod (p -1)
Ver k (x, , ) = đúng h * g x mod p
Chú ý: Nếu chữ ký được tính đúng, kiểm thử sẽ thành công vì
h * g a * g r * mod p g (a + r * ) mod p g x mod p
Do = (x – a * ) * r -1 mod (p -1) nên (a * + r *) x mod (p-1)
Trang 62.4 Ví dụ:
Chữ ký Elgamal trên dữ liệu x = 112
Chọn số nguyên tố p = 463 Đặt P = Z p*, A = Z p* x Z p-1 Chọn phần tử nguyên thuỷ g = 2 Zp*
Chọn khóa bí mật là a = 211 Zp* Tính khóa công khai h g a mod p = 2 211 mod 463 = 249
Định nghĩa tập khóa: = {(p, g, a, h): h g a mod p}
Các giá trị p, g, h được công khai, phải giữ bí mật a
Vì r Zp-1* , nên nguyên tố cùng p -1, do đó tồn tại r -1 mod (p -1)
Cụ thể:
UCLN(r, p-1) = UCLN(235, 462) = 1, nên r -1 mod (p-1) = 235 -1 mod
462 = 289
Chữ ký trên dữ liệu x = 112 là ( , ) = (16, 108), trong đó:
= g r mod p = 2 235 mod 463 = 16
= (x – a * ) * r -1 mod (p -1) = (112 - 211 * 16) * 289 mod 462 = 108
mod p
h * = 249 16 * 16 108 mod 463 = 132
g x mod p = 2 112 mod 463 = 132
Hai giá trị đó bằng nhau, như vậy chữ ký là đúng
Bài toán căn bản bảo đảm độ an toàn của Sơ đồ chữ ký Elgamal:
Bài toán tính Logarit rời rạc:
Biết khóa công khai h g a mod p
Nên có thể xác định khóa bí mật a bằng cách tính Log g h
H cố gắng giả mạo chữ ký trên x, mà không biết khóa bí mật a
Như vậy, H phải tính được và
* Nếu chọn trước , H phải tính qua đẳng thức h * g x mod
p (E2) Tức là g x h - mod p hay log g x h - mod p
* Nếu chọn trước , H phải tính qua phương trình: h * g x mod p
Trang 7Hiện nay chưa có cách hữu hiệu 2 trường hợp trên, nhưng phỏng đoán là khó hơn bài toán logarit rời rạc
Có thể có cách tính , đồng thời với (, ) là chữ ký ? Chưa có trả lời rõ !
* Nếu chọn trước , , sau đó tính x, H phải đối đầu với bài toán logarit rời rạc
Ta có h * g x mod p (E2)
Như vậy x log g g x log g h *
H có thể ký trên tài liệu ngẫu nhiên bằng cách chọn trước đồng thời x,
,
Cách 1
* Chọn x, , thoả mãn điều kiện kiểm thử như sau:
Chọn các số nguyên i, j sao cho 0 i, j p-2, (j, p-1) = 1 và tính:
= g i h j mod p, = - j -1 mod (p -1), x = - i j -1 mod (p -1)
Trong đó j -1 được tính theo mod (p -1) (nghĩa là j nguyên tố với p-1)
* Chứng minh (, ) là chữ ký trên x, bằng cách kiểm tra điều kiện kiểm thử:
h h (g i h j ) - j -1 mod p h g – i j-1 h - mod p g x mod p
Ví dụ
* Chọn các tham số của sơ đồ chữ ký Elgamal:
Số nguyên tố p = 463, phần tử sinh g = 2, Khóa bí mật a = 135 Khóa công khai h = g a mod p = 2 135 mod 463 = 272
* Chọn x, , thoả mãn điều kiện kiểm thử như sau:
Chọn i = 89, j = 125, 0 i, j p-2, (j, p-1) = 1 Tính j -1 mod (p-1) = 377
= g i * h j mod p = 289 * 272125 mod 463 = 218
= - * j -1 mod (p -1) = -218 * 377 mod 462 = 50
x = - * i * j -1 mod (p -1) = -218 * 89 * 377 mod 462 = 292
* (, ) = (218, 50) là chữ ký trên x = 292, vì thỏa mãn điều kiện kiểm thử:
h * = 272 218 * 218 50 322 (mod 463)
Trang 8Cách 2
* Nếu (, ) là chữ ký trên tài liệu x có từ trước, thì có thể giả mạo chữ
ký trên tài liệu x’ khác
+ Chọn số nguyên k, i, j thỏa mãn 0 k, i, j p-2, (k - j , p-1)
= 1 và tính:
= k g i h j mod p, = (k j ) 1 mod (p -1),
x’ = (k x + i ) (k - j ) -1 mod (p -1)
* (, ) là chữ ký trên x’, vì thỏa mãn điều kiện kiểm thử:
h g x’ mod p
Chú ý
Cả hai cách giả mạo nói trên đều cho chữ ký đúng trên tài liệu tương ứng, nhưng đó không phải là tài liệu được chọn theo ý của người giả mạo Tài liệu đó đều được tính sau khi tính chữ ký, vì vậy giả mạo loại này trong thực tế cũng không có ý nghĩa nhiều
Khoá bí mật a có thể bị phát hiện, nếu khóa ngẫu nhiên r bị lộ, hoặc dùng r cho hai lần ký khác nhau
Nếu r bị lộ, thám mã sẽ tính được khoá mật a = (x - r ) -1 mod (p-1)
Giả sử dùng r cho 2 lần ký trên x1 và x2
(, 1) là chữ ký trên x1, (, 2) là chữ ký trên x2
Khi đó thám mã có thể tính được a như sau:
Do đó ta có Đặt = r , ta có tương đương với x1-x2 r (1 - 2) mod (p-1) (1)
Đặt d = (1 - 2, p -1) Khi đó d | (p-1), d | (1 - 2) d | (x1-x2)
) (mod
1
) (mod
2 1 2
) (mod
)
*(1 2 2
Trang 9Khi đó đồng dư thức (1) trở thành: x' r * ' (mod p')
Vì (', p') = 1 nên tính = (')-1 mod p' và tính r = x'* mod p'
r = x'* + i*p' mod (p-1), với i là giá trị nào đó, 0 i d-1 Thử với giá trị đó, ta tìm được r (điều kiện thử để xác định r là = r mod p)
Tiếp theo sẽ tính được a như trường hợp 1)
Độ phức tạp của bài toán logarit lớn nên độ an toàn cao
Chữ ký phụ thuộc vào văn bản cần ký và giá trị ngẫu nhiên nên có thể có
nhiều chữ ký khác nhau
Tốc độ chậm do phải xử lý số nguyên lớn
Dung lượng bộ nhớ cần thiết lớn
x
p
x x d d p d
' ' '
1 2
1 2
1