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
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT KHOA CÔNG NGHỆ THƠNG TIN BÁO CÁO BÀI TẬP LỚN: AN TỒN & BẢO MẬT HỆ THỐNG THÔNG TIN Đề tài: CHỮ KÝ SỐ ELGAMAL Nhóm: 21 Sinh viên thực hiện: LHT_10k ego Hà Nội, 2021 MỤC LỤC LỜI MỞ ĐẦU Giới thiệu chung chữ ký số Giới thiệu sơ đồ chữ ký elgamal .3 I Bài toán Logarithm rời rạc Zp tính chất Các thuật toán cho toán Logarithm rời rạc a Thuật toán 3(thuật toán shanks) Độ bảo mật bit 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 lần ký khác 16 c/ Khóa bí mật a q nhỏ 17 d/ Số ngẫu nhiên k nhỏ .17 2/ Tấn công dạng : giả mạo chữ ký 17 a/ Giả mạo chữ ký không với tài liệu ký 17 b/ Giả mạo chữ ký với tài liệu ký 18 b2/ Cách 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ố Việt Nam 23 Code demo 24 Tài liệu tham khảo 35 Báo cáo tập lớn GVHD: DCT LỜI MỞ ĐẦU Ngày hoạt động người, thơng tin đóng vai trị quan trọng khơng thể thiếu Xã hội phát triển nhu cầu trao đổi thông tin thành phần xã hội ngày lớn Mạng máy tính đời mang lại cho người nhiều lợi ích việc trao đổi xử lý thơng tin cách nhanh chóng xác Chính từ thuận lợi đặt cho câu hỏi, liệu thông tin từ nơi gửi đến nơi nhận có đảm bảo tuyệt đối an tồn, đảm bảm thông tin ta không bị truy cập bất hợp pháp Thông tin lưu giữ, truyền dẫn, sử dụng mạng lưới thơng tin cơng cộng bị nghe trộm, chiếm đoạt, xuyên tạc phá huỷ dẫn đến tổn thất lường Đặc biệt số liệu hệ thống ngân hàng, hệ thống thương mại, quan quản lý phủ thuộc lĩnh vực quân lưu giữ truyền dẫn mạng Nếu nhân tố an tồn mà thơng tin khơng dám đưa lên mạng hiệu suất làm việc hiệu suất lợi dụng nguồn liệu bị ảnh hưởng Trước yêu cầu cần thiết đó, việc mã hố thơng tin đảm bảo an tồn cho thơng tin nơi lưu trữ thông tin truyền mạng Các phương thức công thông qua mạng ngày tinh vi, phức tạp dẫn đến mát thơng tin, chí làm sụp đổ hồn tồn hệ thống thơng tin tổ chức Vì an tồn thơng tin nhiệm vụ quan trọng, nặng nề khó đốn trước hệ thống thông tin Một ứng dụng an tồn thơng tin chữ ký số Với đặc điểm đơn giản cho người sử dụng mà đảm bảo tính bảo mật, kỹ thuật sử dụng chữ ký số kỹ thuật sử dụng phổ biến, đa dạng hầu hết lĩnh vực, Tài chính, Ngân hàng, Kế tốn…Vì lý đó, nhóm chúng em định nghiên cứu “Chữ ký số Elgamal” Báo cáo tập lớn GVHD: DCT Giới thiệu chung chữ ký số • Thơng thường chữ ký viết tay văn bản, tài liệu hay hợp đồng kinh tế v.v dùng để xác nhận người kí • Sơ đồ chữ kí ( hay gọi chữ ký số ) phương pháp ký điện lưu dạng điện tử Chẳng hạn điện có chữ ký truyề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ý thuật tốn xác minh Người A ký điện x dùng thuật tốn ký an tồn Chữ ký Sig(x) nhận kiểm tra thuật tố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ý xác thực Định nghĩa hình thức chữ ký số: • Một sơ đồ chữ ký số ( P, A, K, S, V) thoả mãn điều kiện sau : • P: tập hữu hạn điện • A: tập hữu hạn chữ ký • K: tập hữu hạn khóa, khóa KK gồm có phần K=(K’,K’’), K’ bí mật, K’’ cơng khai • Với K=(K’,K’’) tồn thuật toán ký SigKS thuật toán kiểm thử VerK V • Mỗi SigK: P -> A VerK:P x A ->{TRUE ,FALSE } hàm cho điện x P điện y A thoả mãn phương trình sau đây: TRUE y = Sig(x) o Ver (x,y) FALSE y # Sig(x) o Với K K , hàm SigK VerK hàm thời gian đa thức VerK hàm cơng khai cịn SigK hàm mật Ta gọi Alice người gửi cịn Bob người nhận Khơng thể dễ dàng tính toán để giả mạo chữ ký Bob điện x Nghĩa với x cho trước, có Bob tính chữ ký y để Ver (x,y) = TRUE Báo cáo tập lớn GVHD: DCT Giới thiệu sơ đồ chữ ký elgamal Sơ đồ chữ ký elgamal giới thiệu vào năm 1985 Mỹ Bản cải tiến sơ đồ Viện Tiêu Chuẩn 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 tính khó giải tốn tìm Logarithm rời rạc trường hữu hạn Trước hết ta làm quen với toán Logarithm rời rạc trường hữu hạn Zp I Bài toán Logarithm rời rạc Zp Chúng ta bắt đầu việc mơ tả tốn thiết lập trường hữu hạn Zp , p số nguyên tố Bài toán Logarithm rời rạc Zp đối tượng nhiều công trịnh nghiên cứu, xem tốn khó p chọn cẩn thận Cụ thể khơng có thuật tốn thời gian đa thức cho toán Logarithm rời rạc Đê gây khó khan cho phương pháp cơng biết, p phải có bnhaats 150 chữ số thập phân(≈ 500 bít) (p-1) phải có thừa số nguyên tố lớn, tốt p có dạng p= 2q + với q nguyên tố Số nguyên tố p dạng gọi số nguyên tố mạnh ( String – prime) dối với hệ Elgamal nói riêng cho hệ mã dộ an toàn dựa vào tính khó giải tốn Logarithm rời rạc nói chung Lợi tốn Logarithm rời rạc xây dựng sơ đồ chữ ký khó tìm Logarithm rời rạc, xong toán ngược lấy lũy thừa lại tính tốn hiệu theo luật tốn bình phương nhân Nói cách khác, lũy thừa theo modulo p hàm chiều với số nguyên tố p thích hợp Báo cáo tập lớn GVHD: DCT Mét điều hiển nhiên định nghĩa logarit nên giống hệt định nghĩa có trường số thực, tính chất logarit trường số thực có trường hữu hạn, cần quan tâm đến tính chất sau: tính chất Nếu β ≡ β1.β2… βk(mod p) Thì logαβ ≡ logαβ1 + logαβ2 + … + logαβk(mod o) Việc tìm logαβ với β cho trước trường hợp Zp biết đến kỹ thuật lý thuyết độ phức tạp tính tốn tốn khó với thuật tốn tốt thuật toán sang bậc để giải có độ phức tập cỡ: , hay thuật tốn sang trường số để giải có độ phức tạp cỡ : Tuy nhiên thấy điều hieentr nhiên với p khơng lớn việc tìm logαβ thực cách dễ dàng phương pháp duyệt tồn qua thuật tốn sau: Báo cáo tập lớn GVHD: DCT Ví dụ: Cho p =2579, α=2, a=756 Khi đó: β =2756mod2579=949./ Các thuật toán cho toán Logarithm rời rạc Trong phần ta xem p mét số nguyên tố, α phần tử nguyên tùy theo modulo p Ta lấy p α ssoos cố định Khi tốn logarithm rời rạc phát biểu dạng sau: tìm mét Aduy ≤ a ≤ p – cho αa ≡ β (mod p), với β Zp* cho trước Rõ ràng tốn logarithm rời rạc(DL) có giải phép tìm kiếm vét cạn với thời gian cỡ O(p) không gian cỡ O(1) (bỏ qua thừa số logarithm) Bằng cách tính tốn trước tất giá trị αa xếp cặp thứ tự (a, αa mod p) có lưu ý tới tọa độ thứ hai chúng ta, giải DL với thời gian cớ O(1) O(p) phép tính tốn trước O(p) bé nhí thuật tốn không tầm thường mà mô tả thuật tốn tối ưu hóa thời gian – bé nhí Daniel Shanks Báo cáo tập lớn GVHD: DCT a Thuật toán 3(thuật toán shanks) Ta biểu thị với | Tính αmj mod p, ≤ j ≤ m-1 Sắp xếp m cặp thứ tự (j, αmj mod p) có lưu ý với tọa độ thứ cặp này, ta thu danh sách L1 Tính β α-i mod p , ≤ i ≤ m-1 Sắp xếp m cặp thứ tự (I, β α-i mod p) có lưu ý tới tọa đọ thứ hai cặp xếp sau này, ta thu mét danh sách L2 Tìm cặp (j,y) L1 cặp (i, y) ) L2 Xác định logαβ = mj + I mod (p-1) -Nếu cần, bước 1, tính tốn trước - cần lưu ý (j, y) ) L1 (i, y) ) L2 αmj = y = β α-i Bởi αmj + i = β mong muốn Ngược lại, đói với β bát kỳ ta viết: logαβ = mj +i đó, ≤ j, i ≤ m-1 Vì phép tìm kiếm bước chắn thành cơng Có thể áp dụng thuật toán chạy với thời gian O(m) với bé nhí cỡ O(m) Chú ý bước thực cách (đồng thời) qua tùng danh sách L1 L2 Báo cáo tập lớn GVHD: DCT Ví dụ: Giả sử p-809 ta pahir tìm log2525 Ta có α =3, β =525 m= | | =29 Khi đó: α29 mod 809=99 Trước tiên tính cacpwj (j, 99mod 809) với ≤ j ≤ 28 Ta nhận danh sách sau: Báo cáo tập lớn GVHD: DCT Danh sách sặp xếp để tạo L1 Danh sách thứ chứa cặp (i, 525 x(3i)-1 mod 809), với ≤ j ≤ 28 Báo cáo tập lớn GVHD: DCT 2/ Ký số: Dùng khóa ký: khóa a khóa ngẫu nhiên bí mật rZ q* Chữ ký xZp* Sig k’(x, r) = (, ), = (r mod p) mod q, = ((x + a * ) * r-1 mod q (Chú ý rZ q*, để bảo đảm tồn r-1 mod q) 3/ Kiểm tra chữ ký: Với e1 = x * -1 mod q, e2 = * -1 mod q Ver k” (x, , ) = (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 ước nguyên tố p-1, t = 32 Tức p -1 = t * q hay p = t * q + = 32*q + = 32*239 + = 7649 Chọn g =3 Z7649 phần tử sinh = gt mod p = 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 khóa ký: a khóa ngẫu nhiên r = 58 Z q*, r-1 mod q = 136 + Chữ ký x = 1246 Sig k’(x, r) = (, ) = (115, 87) , = (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) chữ ký 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ử ? (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 tính tốn cụ thể sơ đồ: + Chú ý phải có (mod q) để bảo đảm có -1mod q điều kiện kiểm thử (tương đương UCLN(, p-1) = 1) Vì chọn r mà khơng điều kiện trên, phải chọn r khác để có (mod q) 21 Báo cáo tập lớn GVHD: DCT Tuy nhiên khả mod q 2-160 , điều khơng xảy + Một ý là thay tính p trước tính q, ta tính q trước tìm p 2) Liên quan chung tới DSS (1991): + Độ dài cố định p 512 bit Nhiều người muốn p thay đổi lớn Vì NIST sửa đổi p có độ dài thay đổi, bội 64: từ 512 đến 1024 bit + Nếu dùng chữ ký RSA với thành phần kiểm thử chữ ký nhỏ, việc kiểm thử nhanh việc ký Đối với DSS, ngược lại, việc ký nhanh kiểm thử Điều dẫn đến vấn đề: Một tài liệu ký lần, lại kiểm thử nhiều lần, nên người ta muốn thuật toán kiểm thử nhanh Máy tính ký kiểm thử ? Nhiều ứng dụng dùng thẻ thông minh với khả có hạn, kết nối với máy tính mạnh hơn, nên xây dựng sơ đồ chữ ký liên quan đến thẻ Nhưng tình đặt thẻ thơng minh sinh chữ ký kiểm thử chữ ký, khó kết luận ? NIST trả lời thời gian kiểm thử sinh chữ ký, nhanh không quan trọng, miễn đủ nhanh 22 Báo cáo tập lớn GVHD: DCT Ứng dụng chữ ký số Việt Nam Hiện nay, công nghệ chữ ký số Việt Nam sử dụng giao dịch để mua bán hàng trực tuyến, đầu tư chứng khốn trực tuyến Ngồi ra, Bộ Tài áp dụng chữ ký số vào kê khai, nộp thuế trực tuyến qua mạng internet thủ tục hài quan điện tử khai báo hải quan thong quan trực tuyến mà in tờ khai, đóng dấu cơng ty chạy đến quan thuế xếp hàng ngồi đợi để nộp tờ khai Trong tương lai, chữ ký số sử dụng với ứng dụng phủ điện tử quan nhà nước Sắp tới, làm việc với người dân hồn tồn thơng qua dịch vụ công trực tuyến cửa điện tử Khi cần làm thủ tục hành hay xác nhân quan nhà nước, người dân cần ngồi nhà khai báo mẫu đơn ký số để gửi xong 23 Báo cáo tập lớn GVHD: DCT Code demo Sơ đồ chữ ký Elgamal 24 Báo cáo tập lớn GVHD: DCT Sơ đồ chữ ký Elgamal Nhập văn cần mã hóa: x Nhập số nguyên tố: p Nhập khóa bí mật: a < {{p || 'p'}} Chọn giá trị ngẫu nhiên: k < {{p || 'p'}}Xây dụng Elgamal: x = {{x || "?"}}, p = {{p || "?"}}, a = {{a || "?"}}, k = {{k || "?"}}
P số nguyên tố: {{checkPrime = isPrime(p)}}
Gợi ý sử dụng số nguyên tố: {{::suggest}}
Khơng thỏa mãn tính khả nghịch: gcd(k, p - 1) = gcd({{k}}, {{p - 1}}) = {{gcd(k, p - 1)}}
Bước 1: Tìm phần tử nguyên thủyTìm phần tử sinh: alpha = {{alpha = primitiveNumber(p)}}
Tập ước số nguyên tố U_prime(p - 1) = U_prime({{p - 1}}) = { {{uprime && uprime.join(',')}} }
26 Báo cáo tập lớn GVHD: DCT Bước 2: Tính khóa cơng khai betaKhóa cơng khai beta = alpha ^ a mod p = {{alpha}} ^ {{a}} mod {{p}} = {{beta = powmod(alpha, a, p)}}
Bước 3: Mã hóa x = {{x}} Khóa chọn k = {{k || "?"}}K chọn: k = {{k || "?"}}
Tính y1 = alpha ^ k mod p = {{alpha}} ^ {{k}} mod {{p}} = {{y1 = powmod(alpha, k, p)}}
Tính y2 = x * (beta ^ k) mod p = {{x}} * ({{beta}} ^ {{k}}) mod {{p}} = {{y2 = (x * powmod(beta, k, p)) % p}}
Bản mã thu được: (y1, y2) = ({{y1}}, {{y2}})
Bước 4: Giải mã với khóa bí mật a = {{a}}Ta tìm lại x theo công thức: x = y2(y1 ^ a) ^ -1 mod p
Tính số nghịch đảo: (y1 ^ a) ^ -1 mod p = y1 ^ (p -a -1) mod p = {{y1}} ^ ({{p}} - {{a}} - 1) mod {{p}}= {{y1}} ^ {{p_a_1 = (p -a -1)}} mod {{p}} = {{y1_inv = powmod(y1, p_a_1, p)}}
27 Báo cáo tập lớn GVHD: DCTGiải mã: x = {{y2}} * {{y1_inv}} mod {{p}} = {{(y2 * y1_inv) % p}}
Kết luậnXây dựng hệ mã Elgamal với khóa: K = (p, alpha, a, beta) = ({{p}}, {{alpha}}, {{a}}, {{beta}})
Thành phần khóa cơng khai: (alpha, beta, p) = ({{alpha}}, {{beta}}, {{p}})
Thành phần khóa bí mật: (a, p) = ({{a}}, {{p}})
Mã hóa x = {{x}}: e(x, K) = (y1, y2) = ({{y1}}, {{y2}})
Phụ lục 1: Mã hóa Elgamal Nhập giá trị: x 28 Báo cáo tập lớn GVHD: DCT Nhập giá trị: alpha Nhập giá trị: beta Nhập giá trị: p Nhập giá trị khóa bí mật ngẫu nhiên: kCác tham số chọn: x = {{x3}}, alpha = {{alpha3}}, beta = {{beta3}}, p = {{p3}}, k = {{k3 || "?"}}
29 Báo cáo tập lớn GVHD: DCTTính y1 = alpha ^ k mod p = {{alpha3}} ^ {{k3}} mod {{p3}} = {{yb1 = powmod(alpha3, k3, p3)}}
Tính y2 = x * (beta ^ k) mod p = {{x3}} * ({{beta3}} ^ {{k3}}) mod {{p3}} = {{yb2 = (x3 * powmod(beta3, k3, p3)) % p3}}
Bản mã thu được: (y1, y2) = ({{yb1}}, {{yb2}})
Phụ lục 2: Ký văn bản Nhập văn cần ký: x Nhập khóa cơng khai (là số ngun tố): p Nhập khóa bí mật: a 30 Báo cáo tập lớn GVHD: DCT Nhập khóa bí mật ngẫu nhiên: kKhơng thỏa mãn tính khả nghịch: gcd(k, p - 1) = gcd({{k4}}, {{p4 - 1}}) = {{gcd(k4, p4 - 1)}}
Các tham số: x = {{x4}}, p = {{p4}}, p - = {{p4 - 1}}, a = {{a4}}, k = {{k4}}
Phần tử nguyên thủy: alpha = {{alpha4 = primitiveNumber(p4)}}
Cặp khóa cơng khai để kiểm tra chữ ký: (alpha, beta, p) = ({{alpha4}}, {{beta4 = powmod(alpha4, a4, p4)}}, {{p4}})
Cặp khóa bí mật để ký: (a, k) = ({{a4}}, {{k4}})
egcd(k4, p4 - 1) mod p - = {{egcd(k4, p4 - 1)}}
(x4 - a4 * s1) mod p - = {{mod(x4 - a4 * s1, p4 -1)}}
Chữ ký x: (s1, s2) = (alpha ^ k mod p, (x - a * s1) * (k ^ -1) mod (p -1)) = ({{s1 = powmod(alpha4, 31 Báo cáo tập lớn GVHD: DCT k4, p4)}}, {{s2 = (( mod(x4 - a4 * s1, p4 - 1) * egcd(k4, p4 1)) % (p4-1))}})
Phụ lục 3: Kiểm tra chữ kýVerify (x, s2, s2) = <=> (beta ^ s1) * (s1 ^ s2) mod p = alpha ^ x mod p
Nhập văn cần ký: x Nhập khóa cơng khai: p 32 Báo cáo tập lớn GVHD: DCT Nhập khóa cơng khai: alpha Nhập khóa cơng khai: beta Nhập chữ ký: s1 Nhập chữ ký: s2VT = (beta ^ s1) * (s1 ^ s2) mod p = ({{beta5}} ^ {{s51}}) * ({{s51}} ^ {{s52}}) mod {{p5}} = {{vt5 = mod((powmod(beta5, s51, p5) * powmod(s51, s52, p5)), p5)}}
VP = alpha ^ x mod p = {{alpha5}} ^ {{x5}} mod {{p5}} = {{vp5 = powmod(alpha5, x5, p5)}}
Kết chữ ký: {{vt5 == vp5}}
33 Báo cáo tập lớn GVHD: DCTKý văn phụ lục ?
34 Báo cáo tập lớn GVHD: DCT Tài liệu tham khảo Wikipedia Giáo trình An tồn bảo mật thơng tin Thongtincongnghe.com Internet Quantrimang.com 35 ... sách sau: Báo cáo tập lớn GVHD: DCT Danh sách sặp xếp để tạo L1 Danh sách thứ chứa cặp (i, 525 x(3i)-1 mod 809), với ≤ j ≤ 28 Báo cáo tập lớn GVHD: DCT Danh sách gồm: Báo cáo tập lớn GVHD: DCT... tùy thuộc vào việc chữ ký xác thực Định nghĩa hình thức chữ ký s? ?: • Một sơ đồ chữ ký số ( P, A, K, S, V) thoả mãn điều kiện sau : • P: tập hữu hạn điện • A: tập hữu hạn chữ ký • K: tập hữu hạn... nhiều 19 Báo cáo tập lớn GVHD: DCT III Chuẩn chữ ký số Chuẩn chữ ký số (DSS: Digital Signature Standard) đề xuất năm 1991, cải biên sơ đồ chữ ký ElGamal, chấp nhận chuẩn vào năm 1994 để dùng số lĩnh