Chữ ký số Elgamal ,Báo cáo bài tập lớn : an toàn và bảo mật hệ thống thông tin đề tài chữ ký số Elgamal, Báo cáo bài tập lớn : an toàn và bảo mật hệ thống thông tin đề tài chữ ký số Elgamal, code demo ,code demo, Báo cáo bài tập lớn : an toàn và bảo mật hệ thống thông tin đề tài chữ ký số Elgamal, Báo cáo bài tập lớn : an toàn và bảo mật hệ thống thông tin đề tài chữ ký số Elgamal, HUMG
Trang 2BÁO CÁO BÀI TẬP LỚN:
AN TOÀN & BẢO MẬT HỆ THỐNG
Trang 3LỜI MỞ ĐẦU 1
Giới thiệu chung về chữ ký số 2
Giới thiệu sơ đồ chữ ký elgamal 3
I Bài toán Logarithm rời rạc trong Zp 3
1 tính chất 1 4
2 Các thuật toán cho bài toán Logarithm rời rạc 5
a Thuật toán 3(thuật toán shanks) 6
4 Độ bảo mật từng bit của các logarithm rời rạc 11
II.Sơ đồ chữ ký số Elgamal 13
1/ Tấn công dạng 1: tìm cách xác định khóa bí mật 16
a/ số ngẫu nhiên k bị lộ 16
b/ Dùng k cho 2 lần ký khác nhau 16
c/ Khóa bí mật a quá nhỏ 17
d/ Số ngẫu nhiên k quá nhỏ 17
2/ Tấn công dạng 2 : giả mạo chữ ký 17
a/ Giả mạo chữ ký không cùng với tài liệu được ký 17
b/ Giả mạo chữ ký cùng với tài liệu được ký 18
b2/ Cách 2 19
III Chuẩn chữ ký số 20
1./Sơ đồ Chuẩn chữ ký số DSS 20
a/.Tạo cặp khóa (bí mật, công khai) (a, h) : 20
b/ Ký số: 21
c/ Kiểm tra chữ ký: 21
Ứng dụng chữ ký số tại Việt Nam 23
Code demo 24
Tài liệu tham khảo 35
Trang 4Ngày nay trong mọi hoạt động của con người, thông tin đóng một vai trò
quan trọng không thể thiếu Xã hội càng phát triển nhu cầu trao đổi thông tin giữa các thành phần trong xã hội ngày càng lớn Mạng máy tính ra đời đã
mang lại cho con người rất nhiều lợi ích trong việc trao đổi và xử lý thông tin một cách nhanh chóng và chính xác Chính từ những thuận lợi này đã đặt ra
cho chúng ta một câu hỏi, liệu thông tin đi từ nơi gửi đến nơi nhận có đảm bảotuyệt đối an toàn, ai có thể đảm bảm thông tin của ta không bị truy cập bất
hợp pháp Thông tin được lưu giữ, truyền dẫn, cùng sử dụng trên mạng lưới
thông tin công cộng có thể bị nghe trộm, chiếm đoạt, xuyên tạc hoặc phá huỷ dẫn đến sự tổn thất không thể lường được Đặc biệt là đối với những số liệu
của hệ thống ngân hàng, hệ thống thương mại, cơ quan quản lý của chính phủ hoặc thuộc lĩnh vực quân sự được lưu giữ và truyền dẫn trên mạng Nếu như
vì nhân tố an toàn mà thông tin không dám đưa lên mạng thì hiệu suất làm
việc cũng như hiệu suất lợi dụng nguồn dữ liệu đều sẽ bị ảnh hưởng Trước
các yêu cầu cần thiết đó, việc mã hoá thông tin sẽ đảm bảo an toàn cho thông tin tại nơi lưu trữ cũng như khi thông tin được truyền trên mạng
Các phương thức tấn công thông qua mạng ngày càng tinh vi, phức tạp có thểdẫn đến mất mát thông tin, thậm chí có thể làm sụp đổ hoàn toàn hệ thốngthông tin của tổ chức Vì vậy an toàn thông tin là nhiệm vụ quan trọng, nặng
nề và khó đoán trước đối với các hệ thống thông tin
Một trong những ứng dụng của an toàn thông tin là chữ ký số Với đặc điểm
là đơn giản cho người sử dụng mà vẫn đảm bảo được tính bảo mật, kỹ thuật
sử dụng chữ ký số là một trong những kỹ thuật được sử dụng phổ biến, đadạng trong hầu hết các lĩnh vực, nhất là Tài chính, Ngân hàng, Kế toán…Vì lý
do đó, nhóm chúng em quyết định nghiên cứu về “Chữ ký số Elgamal”
Trang 5Giới thiệu chung về chữ ký số
• Thông thường chữ ký viết tay trên các văn bản, trên các tài liệu hay
trên các hợp đồng kinh tế v.v thì được dùng để xác nhận người kí
nó
• Sơ đồ chữ kí ( hay còn gọi là chữ ký số ) là phương pháp ký một bức
điện lưu dưới dạng điện tử Chẳng hạn một bức điện có chữ ký được
truyền trên mạng máy tính
• Một sơ đồ chữ ký số thường chứa hai thành phần: Thuật toán ký và
thuật toán xác minh Người A có thể ký bức điện x dùng thuật toán ký
an toàn Chữ ký Sig(x) nhận được có thể kiểm tra bằng thuật toán xác
minh công khai Ver Khi cho trước cặp (x,y) thuật toán xác minh cho
giá trị TRUE hay FALSE tùy thuộc vào việc chữ ký được xác thực như thế nào
• 4 Với mọi K=(K’,K’’) tồn tại một thuật toán ký SigKS và một
thuật toán kiểm thử VerK V
• Mỗi SigK: P -> A và VerK:P x A ->{TRUE ,FALSE } là những hàm sao cho mỗi bức điện x P và mỗi bức điện y A thoả mãn
phương trình sau đây:
TRUE nếu y = Sig(x)
o Ver (x,y) FALSE nếu y # Sig(x)
o Với mọi K K , hàm SigK và VerK là các hàm thời gian đa thức VerK sẽ là hàm công khai còn SigK là hàmmật Ta gọi Alice là người gửi còn Bob là người nhận Không thể dễ dàng tính toán để giả mạo chữ ký của
Trang 7Giới thiệu sơ đồ chữ ký elgamal
Sơ đồ chữ ký elgamal đã từng được giới thiệu vào năm 1985 ở Mỹ Bảncải tiến của sơ đồ này đã được Viện Tiêu Chuẩn và Công Nghệ Quốc
Gia Mỹ(NIST) chấp nhận làm chuẩn chữ ký số Sơ đồ chữ ký Elgamal dựa trên tính khó giải bài toán tìm Logarithm rời rạc trên trường hữu
hạn Trước hết ta hãy làm quen với bài toán Logarithm rời rạc trên
trường hữu hạn Zp
Chúng ta sẽ bắt đầu bằng việc mô tả bài toán này khi thiết lập một trường hữuhạn Zp , p là số nguyên tố
Bài toán Logarithm rời rạc trong Zp là đối tượng trong nhiều công trịnh nghiên cứu, và được xem là bài toán khó nếu p được chọn cẩn thận Cụ thể là không có một thuật toán thời gian đa thức nào cho bài toán Logarithm rời rạc
Đê gây khó khan cho các phương pháp tấn công đã biết, p phải có ít bnhaats
150 chữ số thập phân(≈ 500 bít) và (p-1) phải có ít nhất một thừa số nguyên tốlớn, tốt nhất p có dạng p= 2q + 1 với q là nguyên tố Số nguyên tố p dạng này gọi là số nguyên tố mạnh ( String – prime) dối với hệ Elgamal nói riêng và
cho những hệ mã dộ an toàn dựa vào tính khó giải của bài toán Logarithm rời rạc nói chung Lợi thế của bài toán Logarithm rời rạc trong xây dựng sơ đồ
chữ ký là khó tìm được các Logarithm rời rạc, xong bài toán ngược lấy lũy
thừa lại có thể tính toán hiệu quả theo luật toán bình phương và nhân Nói
cách khác, lũy thừa theo modulo p là hàm một chiều với các số nguyên tố p
thích hợp
Trang 8Mét điều hiển nhiên là định nghĩa về logarit nên trên giống hệt như định nghĩa
đã có trong trường số thực, do vậy các tính chất về logarit trên trường số thực cũng sẽ có trong trường hữu hạn, ở đây chúng ta chỉ cần quan tâm đến tính
nhất như thuật toán sang bậc 2 để giải có độ phức tập cỡ:
, hay thuật toán sang trường số để giải có độ phức tạp
cỡ :
Tuy nhiên chúng ta còn thấy một điều hieentr nhiên là với p không lớn lắm thì
Trang 9Ví dụ:
Cho p =2579, α=2, a=756 Khi đó:
β =2756mod2579=949./
2 Các thuật toán cho bài toán Logarithm rời rạc
Trong phần này ta xem rằng p là mét số nguyên tố, α là một phần tử nguyên
tùy theo modulo p Ta lấy p và α là các ssoos cố định Khi đó bài toán
logarithm rời rạc có thể được phát biểu dưới dạng sau: tìm mét
Aduy nhất 0 ≤ a ≤ p – 2 sao cho αa ≡ β (mod p), với β ∈ Zp* cho trước
Rõ ràng là bài toán logarithm rời rạc(DL) có thể có được giải bằng một phép tìm kiếm vét cạn với thời gian cỡ O(p) và không gian cỡ O(1) (bỏ qua thừa sốlogarithm) Bằng cách tính toán trước tất cả các giá trị αa có thể và sắp xếp
các cặp thứ tự (a, αa mod p) có lưu ý tới các tọa độ thứ hai của chúng ta, có
thể giải DL với thời gian cớ O(1) bằng O(p) phép tính toán trước và O(p) bé
nhí thuật toán không tầm thường đầu tiên mà chúng ta sẽ mô tả thuật toán tối
ưu hóa thời gian – bé nhí của Daniel Shanks
Trang 10a Thuật toán 3(thuật toán shanks)
4 Sắp xếp m cặp thứ tự (I, β α-i mod p) có lưu ý tới các tọa đọ thứ
hai của các cặp được sắp xếp sau này, ta sẽ thu được mét danh sách L2
5 Tìm một cặp (j,y)∈ L1 và một cặp (i, y) )∈ L2
6 Xác định logαβ = mj + I mod (p-1)
-Nếu cần, các bước 1, 2 có thể tính toán trước
- tiếp theo cần lưu ý là nếu (j, y) )∈ L1 và (i, y) )∈ L2
αmj = y = β α-i
Bởi vậy αmj + i = β như mong muốn
Ngược lại, đói với β bát kỳ ta có thể viết:
logαβ = mj +i
trong đó, 0 ≤ j, i ≤ m-1 Vì thế phép tìm kiếm ở bước 5 chắc chắn thành công
Có thể áp dụng thuật toán này chạy với thời gian O(m) và với bé nhí cỡ O(m).Chú ý là bước 5 có thể thực hiện một cách (đồng thời) qua tùng danh sách L1
và L2
Trang 12Danh sách sẽ được sặp xếp để tạo ra L1.
Danh sách thứ 2 chứa các cặp được sắp (i, 525 x(3i)-1 mod 809), với
0 ≤ j ≤ 28
Trang 13Danh sách này gồm:
Trang 14
Sau khi sắp xếp danh sách này, ta có L2
Bây giờ nếu xử lý đồng thời qua cả 2 danh sách, ta sẽ tìm được(10,644) trong
L1 và (19,644) trong L2 Bởi vậy ta có thể tính
Log3525= 29x10+19=309
Có thể kiểm tra thấy rằng quả thực 3309 ≡ 525(mod 809)
Trang 15Bây giờ ta xem xét vấn đề thông tin bộ phận của các Logarithm rời rạc và
xem thử việc tính toán các bít riêng của các logarithm rời rạc là khó hay dễ
Cụ thể, xét bài toaans “ Bít thứ i của logarithm rời rạc” được trịnh bày ở trên Bài toán này được gọi là bài toán về bjt thứ i
Trước tiên , ta sẽ chỉ ra rằng, bít thấp nhất của các logarithm rời rạc rất dễ tínhtính toán nói cách khác, nếu i=1 thì bài toán về bít thứ I có thể giải các thặng
dư bình phương theo modulo p, với p là số nguyên tố
Xét ánh xạ f: Zp*→Zp* được định nghĩa như sau:
khi và chỉ khi: p|(w – x) (w+x) | diều này xảy ra khi và chỉ khi
w ≡ ± x mod p Ta rút ra: |f-1(y)| =2 với mọi y ∈ QR(p) và bởi vậy:
QR(p)1=(p-1)/2
Trang 16
Ở cuối thuật toán, giá trị xi là các bít biểu diễn nhị phân của Logαβ, nghĩa là:
Trang 17Giả sử p=19, α =2 và β = 6 Vì trong ví dụ này, các giá trị quá nhỏ nên có thể lập bảng các giá trị của Li(y) và L2(y) vói mọi giá trị y ∈ Z19* Các giá trị này được cho trên bảng sau:
Bảng các giá trị của L1 và L2 vói p=19, α =2
Sơ đồ Elgamal được thiết kế vỡi mục đích dành riêng cho chữ ký số, điểm
mạnh là cùng số nguyên tố p trong cùng một sơ đồ thì với k là ngẫu nhiên nên
ta có thể có nhiều chữ ký số, không tất định giống như hệ thống mã khóa côngkhai Elgamal, ở sơ dồ chữ ký RSA ta chỉ thấy trên cùng một sơ dồ với cùng
mét ố nguyên tố p thì ta chỉ có một chữ kí số Điều này có nghiaxw là có
nhiều chữ ký hợp lệ trên bức điện cho trước bất kỳ Thuật toán xác minh phải
óc khả năng chấp nhận bất kỳ chữ ký hợp lệ nào khi xác thực chữ ký đó
Trang 18Nếu chữ ký được tính đúng , kiểm thử sẽ thành công vì:
βy * yδ ≡ αay * αk δmod p ≡ α(ay+k δ) mod p ≡ αx mod p
Do δ = (x-ay)k-1 mod(p-1) nên (ay + kδ) ≡ x mod(p-1)
Ví dụ:
Chữ ký Elgamal trên dữ liệu x=112
Trang 19Định nghĩa tập khóa K={(p,α,a,β): β ≡ αa mod p}
Các giá trị (p,α,β) được công khai, còn giá trị a được giữ bí mật
bài toán căn bản để bảo đảm độ an toàn cho sơ đồ chữ ký Elgamal chính là
bài toán tính logarithm rời rạc Biết khóa cũng khai β ≡ αa mod p Nên có thể xác định khóa bí mật a bằng cách tính logαβ
Trang 20Khóa bí mật a có thể bị phát hiện, nếu khóa ngẫu nhiên k bị lộ, hoặc dùng k
cho hai lần bất kỳ khác nhau
a/ số ngẫu nhiên k bị lộ
Nếu k bị lộ, kẻ thám mã sẽ tính được khóa bí mật a=(x-kδ)y-1 mod
(p-1) → Giải pháp phòng tránh: càn thận trọng trong việc sử dụng số ngẫu
nhiên k, không được ddeer lộ số k được dùng
Trang 21p’= p−1 d
Khi đó đồng dư thức (1) trở thành: x’ ≡ k δ’(mod p’)
Vì (δ’ , p‘) = 1 nên tính ε = x’*ε +i*p’mod(p-1), với giá trị nào đó, 0≤ i ≤
d-1.Thử với giá trị nào đó, ta tìm được k (điều kiện thử để xác định k là: y= α’
mod p
Tiếp theo sẽ tính được giá trị a như trường hợp 1
→ Giải pháp phòng tránh: mỗi lần ký sử dụng một số k khác nhau
d/ Số ngẫu nhiên k quá nhỏ
Tương tự như đối với khóa bí mật a, số ngẫu nhiên k cũng phải bí mật Trong trường hợp các tham số này quá nhỏ thì bằng phương pháp dò tìm đơn giản
người ta cũng có thể tìm được chúng Khi đó, sơ đồ chữ ký sẽ bị mất an toàn Nếu k bị lộ, kẻ thám mã sẽ tính được khóa bí mật a
→ Giải pháp phòng tránh: chọn số ngẫu nhiên k là những số nguyên lớn, có
kích thước gần số modulo n
2/ Tấn công dạng 2 : giả mạo chữ ký
a/ Giả mạo chữ ký không cùng với tài liệu được ký
+ Tin tặc H cố gắng gải mạo chữ ký trên x mà không hề biết khóa bí mật a
Như vậy, yêu cầu H phải tính được y và δ
Nếu chọn trước y, thì H phải tính y qua phương tình:
Trang 22Có thể có cách tính y, δ đồng thời với(y,δ) là chữ ký ? câu trả lời là: chưa rõ!
Nếu chọn trước y, δ sau đó tính x, thì tin tặc H phải đói đầu với bài toánlogarithm rời rạc
o Ta có: βyyδ ≡αx= mod p (E2)
Như vậy: x= logααx ≡ logαβyyδ
b/ Giả mạo chữ ký cùng với tài liệu được ký
+ Tin tặc H có thể ký tên treent ài liệu ngẫu nhiên bằng cách chọn trước đồng thời x,y,δ
Trang 23b2/ Cách 2
Nếu (y, δ )là chữ ký tren tài liệu x có từ trước, thì có thể giả mạo 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, (ky –jδ, p-1)=1 và tính:
Trang 24Chuẩn chữ ký số (DSS: Digital Signature Standard) được đề xuất năm
1991, là cải biên của sơ đồ chữ ký ElGamal, và được chấp nhận là chuẩn vàonăm 1994 để dùng trong một số lĩnh vực giao dịch ở USA
Thông thường tài liệu số được mã hoá và giải mã 1 lần Nhưng chữ ký lại liên
quan đến pháp luật,chữ ký, có thể phải kiểm thử sau nhiều năm đã ký Do
đó chữ ký phải được bảo vệ cẩn thận.
Số nguyên tố p phải đủ lớn (chẳng hạn dài cỡ 512 bit) để bảo đảm an
toàn, nhiều người đề nghị nó phải dài 1024 bit Tuy nhiên, độ dài chữ ký theo
sơ đồ Elgamal là gấp đôi số bit của p, do đó nếu p dài 512 bit thì độ dài chữ
ký là 1024 bit
Trong ứng dụng dùng thẻ thông minh (Smart card) lại mong muốn có
chữ ký ngắn, nên giải pháp sửa đổi là một mặt dùng p với độ dài từ 512 bit
đến 1024 bit (bội của 64), mặt khác trong chữ ký (, ), các số , có độ dài biểu diễn ngắn, ví dụ 160 bit Khi đó chữ ký là 320 bit
Điều này được thực hiện bằng cách dùng nhóm con cyclic Zq* của Zp* thay cho Zp*, do đó mọi tính toán được thực hiện trong Zp*, nhưng thành phần
Trang 252/ Ký số: Dùng 2 khóa ký: khóa a và khóa ngẫu nhiên bí mật rZ q*.
Chữ ký trên xZp* là Sig k’(x, r) = (, ), trong đó
= (r mod p) mod q, = ((x + a * ) * r-1 mod q
(Chú ý rZ q*, để bảo đảm tồn tại r-1 mod q).
3/ Kiểm tra chữ ký: Với e1 = x * -1 mod q, e2 = * -1 mod q.
Ver k” (x, , ) = đúng (e1 * he2 mod p) mod q =
Ví dụ:
a/ Tạo cặp khóa (bí mật, công khai) (a, h) :
Chọn p = 7649, q = 239 là ước nguyên tố của p-1, t = 32.
Tức là p -1 = t * q hay p = t * q + 1 = 32*q + 1 = 32*239 + 1 = 7649.
Chọn g =3 Z7649 là phần tử sinh = gt mod p = 3 32 mod 7649 = 7098.
Chọn khóa mật a = 85, khóa công khai h = a mod p = 709885 mod 7649 =
5387
2/ Ký số: Dùng 2 khóa ký: a và khóa ngẫu nhiên r = 58 Z q*, r-1 mod q =
136
+ Chữ ký trên x = 1246 là Sig k’(x, r) = (, ) = (115, 87) , trong đó
= (r mod p) mod q = (709858 mod 7649)mod 239 = 593 mod 239 = 115
= (x + a * ) * r-1 mod q = (1246 + 85 * 115) *136 mod 239 = 87
3/ Kiểm tra chữ ký: (, ) = (115, 87) là chữ ký đúng trên x = 1246.
e1 = x* -1 mod q = 1246 * 11 mod q = 83, e2 = * -1 mod q = 115*11
mod q = 70
Điều kiện kiểm thử đúng ? (e1 * he2 mod p) mod q = ,với -1 = 11.
(709883 *538770 mod 7649) mod 239 = 593 mod 239 = 115 =
Chú ý
1) Liên quan tới các tính toán cụ thể trong sơ đồ:
+ Chú ý rằng phải có 0 (mod q) để bảo đảm có -1mod q trong điều kiện
kiểm thử (tương đương UCLN(, p-1) = 1) Vì vậy nếu chọn r mà không
Trang 26+ Độ dài cố định của p là 512 bit Nhiều người muốn p có thể thay đổi lớn
hơn
Vì thế NIST sửa đổi là p có độ dài thay đổi, là bội của 64: từ 512 đến 1024
bit
+ Nếu dùng chữ ký RSA với thành phần kiểm thử chữ ký là nhỏ, thì việc
kiểm thử nhanh hơn việc ký Đối với DSS, ngược lại, việc ký nhanh hơn kiểmthử
sơ đồ chữ ký ít liên quan đến thẻ
Nhưng tình huống đặt ra là một thẻ thông minh có thể sinh ra chữ ký vàcũng có thể kiểm thử chữ ký, do vậy rất khó kết luận ?
NIST trả lời rằng thời gian kiểm thử và sinh chữ ký, cái nào nhanh hơn khôngquan trọng, miễn là đủ nhanh
Trang 27Hiện nay, công nghệ chữ ký số tại Việt Nam có thể sử dụng trong các giaodịch để mua bán hàng trực tuyến, đầu tư chứng khoán trực tuyến Ngoài ra,
Bộ Tài chính cũng đã áp dụng chữ ký số vào kê khai, nộp thuế trực tuyến qua mạng internet và các thủ tục hài quan điện tử như khai báo hải quan và thong quan trực tuyến mà không phải in các tờ khai, đóng dấu của công ty và chạy
đến cơ quan thuế xếp hàng và ngồi đợi để nộp tờ khai này Trong tương lai,
chữ ký số có thể sử dụng với các ứng dụng chính phủ điện tử bởi cơ quan nhà nước Sắp tới, sẽ làm việc với người dân hoàn toàn thông qua các dịch vụ
công trực tuyến và một cửa điện tử Khi cần làm thủ tục hành chính hay một
sự xác nhân gì của cơ quan nhà nước, người dân chỉ cần ngồi ở nhà khai báo
mẫu đơn và ký số để gửi là xong