- Mua bán, đặt hàng trực tuyến
- Giao dịch qua email
- Hội nghị truyền hình và làm việc từ xa với Mega e-Meeting.
Sự ra đời của chữ ký điện tử đã khẳng định được lợi ích to lớn về chiến lược và kinh tế, đồng thời các vấn đề liên quan đến chữ ký điện tử cũng là những chủđề quan trọng nhất của mật mã học.
1.5. Kết luận chương 1
Chương này đã trình bày một cách tổng quan, cơ bản về, chữ ký số, hàm băm Hash, các hệ chữ ký số điển hình, các ứng dụng của chữ ký số, qua đó tạo tiền đề cho việc nghiên cứu và phát triển thuật toán chữ ký số được đề xuất trong chương sau.
CHƯƠNG 2. XÂY DỰNG LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN BÀI TOÁN PHÂN TÍCH SỐ
Chương này trình bày chi tiết các bước xây dựng lược đồ chữ ký số dựa trên thuật toán chữ ký số trên bài toán phân tích số, bao gồm thuật toán hình thành tham số hệ thống và khóa, thuật toán sinh chữ ký, thuật toán kiểm tra chữ ký, chứng minh tính đúng đắn của thuật toán.
2.1. Cở sở nghiên cứu
Nghiên cứu phát triển các lược đồ chữ ký số là một trong những nội dung nghiên cứu khoa học quan trọng, mang tính thời sự của an toàn thông tin. Hầu hết các lược đồ chữ ký số hiện nay đều dựa trên tính khó của bài toán: Phân tích một số nguyên lớn ra các thừa số nguyên tố, bài toán khai căn và bài toán logarit rời rạc trong modulo hợp số.
Trên nền tảng của bài toán phân tích số, có nhiều hướng nghiên cứu phát triển thuật toán chữ ký số RSA và nghiên cứu việc sinh các tham số đầu vào cho thuật toán nhằm tăng mức độ an toàn của thuật toán, nghiên cứu xác thực bản tin bằng chữ ký số RSA-PSS theo cách sử dụng hai thuật toán nền tảng là thuật toán mã hóa và kiểm tra EMSA-PSS cho bản tin và thuật toán tạo chữ ký RSA để xác thực bản tin.
Một hướng nghiên cứu khác, đề cập đến việc xây dựng một lược đồ chữ ký số trên cơ sở bài toán phân tích một số nguyên lớn ra các thừa số nguyên tố (bài toán phân tích số) kết hợp với bài toán khai căn trong modulo hợp số (bài toán khai căn). Tuy nhiên, do bài toán khai căn không có vai trò quyết định đến mức độ an toàn của lược đồ nên đã không được đề cập đến. Trong nghiên cứu này đưa ra một phương pháp xây dựng lược đồ chữ ký số theo cùng nguyên tắc đã được chỉ ra, nhưng phương pháp ở đây được mô tả dưới dạng một lược đồ tổng quát từ đó cho phép triển khai ra các lược đồ chữ ký số khác nhau cho các ứng dụng thực tế. Hơn nữa, phương pháp xây dựng
trên cơ sở bài toán phân tích số kết hợp với bài toán logarit rời rạc trong modulo hợp số nên cho phép tạo ra các lược đồ chữ ký có hiệu quả thực hiện (tốc độ, tài nguyên hệ thống) cao hơn lược đồ chữ ký được xây dựng. Cũng tương tự như bài toán khai căn đối với lược đồ, bài toán logarit rời rạc ở đây cũng không có vai trò quyết định tới độ an toàn của các lược đồ đã được xây dựng nên cũng sẽ không được đề cập ở đây.
2.2. Xây dựng thuật toán trên bài toán phân tích số cơ bản
Thuật toán [3] được phát triển từ bài toán phân tích số cơ bản, dó đó trong phần này, đề tài luận văn sẽ trình bày lại một cách ngắn gọn thuật toán chữ ký số bài toán phân tích số cơ bản, sau đó là phần thuật toán được phát triển. Mỗi thuật toán sẽ được trình bày cụ thể theo trình tự:
2.2.1. Thuật toán trên bài toán phân tích số
2.2.2.Thuật toán hình thành tham số và khóa Input: p, q – các số nguyên tố lớn. Output: n, t, ø(n). [1]. n← p × q [2]. φ (n)←( p −1)×(q −1) [3]. select t: 1< t <φ (n) [4]. return {n, t, ø(n)}
2.2.3.Thuật toán ký và kiểm tra chữ ký
Thuật toán ký:
Input: n, t, ø(n), M – Bản tin được ký bởi đối tượng U.
Output: (v,s). [1]. select k: 1< k < n [2]. R ← k t mod n [3]. if ( gcd(( f1(M, R),φ (n)) ≠ 1 OR gcd(( f1(M,R)-1 × f2(M,R)+1), φ(n) ≠ 1 ) then goto [1]. [4]. u ← 𝑘[𝑓1(𝑀,𝑅)−1.𝑓2(𝑀,𝑅)]−1 modn [6]. v ←𝑘[𝑓1(𝑀,𝑅)−1.𝑓2(𝑀,𝑅)+ 1]−1.𝑓1(𝑀,𝑅)−1.𝑓2(𝑀,𝑅) modn [7]. S ←ut mod n [8]. return (v,S)
Thuật toán kiểm tra:
Input: n, t, M – Bản tin cần thẩm tra, (v,s) – Chữ k ý của U lên M.
Output: (v,s) = true / false .
[1]. A← 𝑣𝑓1(𝑀.𝑅).𝑡 modn (1.11)
[2]. B ←𝑆𝑓2(𝑀.𝑅) modn (1.12)
[3]. if ( A = B ) then {return true ;}
Hình 2.2 Sơ đồ thuật toán xác minh chữ ký
Nhận xét:
Tham số {n,t} được sử dụng như khóa công khai của đối tượng U để kiểm tra tính hợp lệ của chữ ký (v,s).
2.3. Xây dựng lược đồ chữ ký số trên cơ sở bài toán phân tích số
Quá trình tạo tham số và khóa của thuật toán mới cơ bản giống quá trình hình thành tham số và khóa của thuật toán chữ ký số bài toán phân tích số cơ bản. Cụ thể:
2.3.1.Thuật toán hình thành tham số và khóa
Input: p, q – các số nguyên tố lớn, x – khóa bí mật
Output: n, t, y, ø(n).
[1]. n ← p×q [2]. ø(n) ← (p - 1)×(q - 1)
[4]. select x: 1< x < n và gcd(x,n) = 1
[5]. y ← xt mod n (2.1) [6]. return {n, t, y, ø(n)}
Chú thích:
i) {n, y}: khóa công khai. ii) {x, t, ø(n)}: khóa bí mật.
2.3.2. Thuật toán ký
Input: n, t, x, ø(n), M – Bản tin được ký bởi đối tượng U.
Output: (S,Z) – chữ ký của U lên M. [1]. E ← H(M) [2]. select k: 1 < k < n [3]. R ← kt modn (2.2) [4]. if gcd((R + 1), ø(n) ≠ 1) then goto [2] [5]. Z ←(R + 1)-1mod ø(n) [6]. u ← (k × x-E)Z mod n (2.3) [7]. v ← uR × xE mod n (2.4) [8]. S ← ut mod n (2.5) [9]. Z ← vt mod n (2.6) [10]. return (S,Z)
2.3.3. Thuật toán kiểm tra chữ ký
Input: n, t, y, M – Bản tin cần thẩm tra, (S,Z) – Chữ ký của U lên M.
Output: (S,Z) = true/false.
[1]. E ← H(M) (2.7) [2]. A ← SZ.Smodn× yEmodn (2.8)
[3]. if (A = Z) then {return true}
else {return false}
2.3.4. Tính đúng đắn của lược đồ chữ ký số
Điều cần chứng minh ở đây là: Cho p, q là 2 số nguyên tố phân biệt,
n = p × q, ø(n) = (p - 1) ×(q - 1), H:{0,1}*Zm, m < n, 1< t < ø(n), 1 < k,
x < n, gcd(x,n) = 1, y = xt modn, R = kt modn, E = H(M),Z = (R +1)-1,
u = (k × x-E)Z modn, v = uR × xE modn, S = ut modn. Z = vt modn. Nếu: A = SA.Smodn × yEmodn thì: A = Z.
Tính đúng đắn của lược đồ được chứng minh như sau: Từ (2.3), (2.4) ta có:
Z = vt modn = (uR × xE modn)t modn = uR.t × xE.tmodn (2.9)
= ((k × x-E)Z modn)R.t × xE.t modn = (𝑘 × 𝑥−𝐸)[𝑅+1]−1.𝑅.𝑡× xE.t modn Từ (2.1), (2.3), (2.5), (2.6) và (2.8) ta lại có:
A = SS.Z modn × yE modn = (ut modn)S.Z modn × (xt modn)E modn = u(S.Z modn).t × xE.t modn = 𝑢((𝑣𝑡 𝑚𝑜𝑑𝑛).(𝑢𝑡 𝑚𝑜𝑑𝑛)𝑚𝑜𝑑𝑛)𝑡× xE.t modn = 𝑢(𝑣𝑡.𝑢𝑡 𝑚𝑜𝑑𝑛)𝑡× xE.t modn = uR.t × eE.t mod n (2.10)
= ((k × x-E)Z modn)R.t × xE.t modn = (𝑘 × 𝑥−𝐸)[𝑅+1]−1.𝑅.𝑡× xE.t modn Từ (2.9) và (2.10) suy ra: AZ
Đây là điều cần chứng minh.
2.3.5. Mức độ an toàn của lược đồ chữ ký số
Mức độ an toàn của thuật toán có thể đánh giá qua các khả năng sẽ được xem xét dưới đây:
2.3.5.1. Khả năng tấn công làm lộ khóa mật
Ở dạng lược đồ được nghiên cứu, 3 tham số x, t và (n)cùng được sử dụng làm khóa bí mật để hình thành chữ ký. Vì thế, lược đồ chỉ bị phá vỡ nếu cả x, t và (n) cùng bị lộ, nói cách khác là kẻ tấn công phải giải được đồng thời 2 bài toán phân tích số và khai căn. Do đó, mức độ an toàn của lược đồ xét theo khả năng chống tấn công làm lộ khóa mật được đánh giá bằng mức độ khó của việc giải được đồng thời hai bài toán phân tích số và khai căn. Cần chú ý là, với việc giữ bí mật cả x và t thì bài toán khai căn ở đây là không thể giải được.
2.3.5.2. Khả năng giả mạo chữ ký
Từ thuật toán kiểm tra (Mục 2.3.2) của lược đồ được nghiên cứu cho thấy, một cặp (S,Z) giả mạo sẽ được công nhận là chữ ký hợp lệ với một bản tin M nếu thỏa mãn điều kiện:
Z = S(S.Z) mod n yEmodn, ở đây: E = H(M) (2.11)
Từ (2.11), nếu chọn trước S rồi tính Z thì khi đó điều kiện (2.11) sẽ có dạng:
Z = NZmod n (2.12)
Còn nếu chọn trước Z rồi tính S thì khi đó điều kiện (2.11) sẽ trở thành: N = SS mod n (2.13)
Với N là hằng số, rõ ràng việc giải (2.12) và (2.13) là khó hơn cả việc giải bài toán logarit rời rạc và khai căn trên Zn.
2.4. Kết luận chương 2
Phát triển các lược đồ chữ ký số với mục đích nâng cao mức độ an toàn cho thuật toán là một hướng nghiên cứu được nhiều người quan tâm. Trong [5-6] các tác giả đã đề xuất một số lược đồ chữ ký xây dựng trên đồng thời 2 bài toán khó. Những phân tích, đánh giá trong [7,8] cho thấy hướng
nghiên cứu này đã phần nào giải quyết được yêu cầu đặt ra về độ an toàn cho các lược đồ chữ ký số.
Trong luận văn này, đã chọn một lược đồ chữ ký số mới dựa trên tính khó của vuệc giải đồng thời 2 bài toán phân tích một số nguyên lớn ra các thừa số nguyên tố (Bài toán phân tích số) và bài toán khai căn trên vành Zn=p.q , ở đây: p, q là các số nguyên tố lớn (Bài toán khai căn). Do đó lược đồ có thể phù hợp với các ứng dụng trong thực tế yêu cầu mức độ an toàn cao.
CHƯƠNG 3. CÀI ĐẶT THỬ NGHIỆM
Chương này mô tả toàn bộ quy trình sử dụng chữ ký số trong các giao dịch điện tử, bao gồm: Tạo các tham số hệ thống, tạo khóa, tạo chữ ký số cho File bất kỳ và kiểm tra tính toàn vẹn của File đó.
3.1. Kịch bản chương trình
Chương trình có thể áp dụng trong cơ quan tôi đang làm Sở Khoa học và Công nghệ Nam Định. Hiện tại Sở Khoa học và Công nghệ Nam Định có các phòng ban: Văn phòng, phòng Quản lý KHCN cở sở, phòng Quản lý chuyên ngành, phòng Quản lý khoa học. Trong chức năng nhiệm vụ của Sở có quản lý các nhiệm vụ khoa học công nghệ các huyện trên địa bàn tỉnh và phòng Công thương các huyện là đầu mối giao dịch. Trong quá trình giao dịch Sở có gửi các văn bản đến các phòng Công thương thông qua đường Internet. Để xác thực văn bản của cán bộ Sở Khoa học và Công nghệ cán bộ phòng công thương dùng khóa công khai của cán bộ Sở Khoa học và công nghệ để kiểm tra. Mô hình thuật toán được thể hiện như sau:
3.2 Cài đặt, thử nghiệm chương trình
3.2.1. Cài đặt chương trình
Chương trình được xây dựng trên ngôn ngữ lập trình Java, bao gồm các Module sau:
3.2.1.1. Modul tạo các tham số
Nhiệm vụ chính của modul này là tự động tạo ra các số nguyên lớn p, q và n để phục vụ cho thao tác tiếp theo của thuật toán đề xuất
- Input: Độ dài khóa 512 bit
- Ouput: Cặp khóa bí mật/công khai RSA thỏa mãn yêu cầu thuật toán.
Do một khóa RSA là một cấu trúc gồm 2 số nguyên lớn nên ta mô tả cấu trúc tham số của RSA như sau:
Hình 3.2 Thuật toán tạo tham số cho chuơng trình
Hình 3.3 Câu lệnh cho nút tạo tham số chương trình
Hình 3.4 Câu lệnh nút lưu tham số
3.2.1.2. Modul tạo khóa
Modul này có chức năng tạo ra cặp khóa bí mật và công khai để dùng cho modul tạo chữ ký số.
Khi có yêu cầu về tạo một cặp khóa, ta chỉ việc gọi hàm generateXY()
Hình 3. 6 Câu lệnh cho nút tạo khóa chương trình
Hình 3.7 Câu lệnh nút lưu khóa
3.2.1.3. Modul tạo chữ ký số
Nhiệm vụ của modul này là tạo ra một file chữ ký số cho File bất kỳ cần ký mà người dùng lựa chọn.
- Input: Khóa bí mật và file tài liệu cần ký - Output: File chữ ký số (*.txt)
Hình 3.9 Câu lệnh cho nút tạo chữ ký số
Hình 3.10 Câu lệnh nút lưu chữ ký số
3.2.1.4. Modul xác thực chữ ký
Đầu vào của modul này là File cần xác thực và chữ ký số của nó. Nhiệm vụ của modul này là kiểm tra tính đúng đắn của chữ ký số.
- Input : File ban đầu, file chữ ký số + khóa công khai - Output : Tính đúng đắn của chữ ký số
Code chương trình:
3.2.2. Thử nghiệm chương trình
3.3.2.1. Giao diện của chương trình:
Chương trình xây dựng 3 modul chính là: Tạo chữ ký số; Xác minh chữ ký; Tham số.
3.2.2.2. Modul hình thành tham số và tạo khóa
Hình 3.14 Giao diện của Modul tạo tham số và khóa Trong cửa sổ này: n, y là khóa công khai; x, t là khóa bí mật.
B1: Để tạo tham số Click chuột vào nút "Tạo" để tạo các tham số cho hệ thống;
B2: Nhấn vào nút "Lưu" để lưu giá trị của các tham số vào file tương ứng là thamso.txt theo vị trí ổ đĩa chỉ dẫn.
B3: Để tạo khóa Click chuột vào nút "Tạo" để tạo các khóa cho hệ thống;
B2: Nhấn vào nút "Lưu" để lưu giá trị của khóa vào file tương ứng là
3.2.2.3. Modul tạo chữ ký số
Trong modul cán bộ Sở Khoa học và Công nghệ sẽ nạp văn bản và tạo chữ ký để gửi cho các huyện bằng cách sau:
Hình 3.15 Giao diện của Modul tạo chữ ký số
B1: Click chuột vào nút "Chọn tệp" để lựa chọn một tệp tùy ý cần tạo chữ ký số. Khi đó nội dung của văn bản sẽ được hiển thị lên cửa sổ bên trái.
B2: Click chuột vào nút "Tạo chữ ký" để chương trình tiến hành tạo ra chữ ký số cho văn bản được chọn theo thuật toán.
B3: Click chuột vào nút "Lưu chữ ký" để lưu lại chuỗi chữ ký số vừa tạo ra có tên là chuky.txt được lưu trong đường dẫn của người dùng chọn.
3.2.2.4. Modul xác thực chữ ký số:
Trong modul này cán bộ phụ trách phòng Công thương huyện sẽ được nhận một file văn bản và một file chuky.txt. Trước khi sử dụng nội dung văn bản người dùng cần xác thực xem có đúng văn bản trên là của Sở Khoa học và công nghệ gửi hay không. Cán bộ phòng công thương thực hiện các bước sau:
Hình 3.16 Giao diện modul xác thực chữ ký
B1: Click chuột vào nút "Bản tin kiểm tra" để lựa chọn một tệp tùy ý cần xác thực chữ ký.
B2: Click vào nút "Nạp chữ ký" và Click chọn File chữ ký đã được tạo ra trước đó.
B3: Click vào nút "Kiểm tra" và chờ thông báo kết quả. Nếu bản tin đúng chữ ký hệ thống thông báo: Chữ ký hợp lệ
Nếu bản tin không đúng sẽ thông báo: Chữ ký giả mạo
3.3. Kết luận chương 3
Các kết quả đạt được ở chương 3 đó là hoàn thành việc xây dựng 01 một chương trình theo đúng thuật toán chữ ký số được phát triển từ chữ ký số phân tích. Kết quả của chương trình một lần nữa khẳng định cho tính đúng đắn của thuật toán.
KẾT LUẬN VÀ KHUYẾN NGHỊ 1. Kết luận
Vấn đề chữ ký số là một trong những vấn đề khó trong lĩnh vực mật mã học. Nó là một vấn đề không mới, đang được phát triển ở nước ta hiện nay và có nhiều vấn đề cần giải quyết nếu muốn xây dựng một hệ thống chữ ký số đạt tiêu chuẩn quốc gia. Hướng tiếp cận theo mật mã học khóa công khai là hướng tiếp cận dựa vào yêu cầu thực tế công nghệ là công khai, và khóa mới là cái bí mật, độ an toàn của hệ thống không dựa vào độ an toàn của công nghệ mà chính là khóa.
Qua 3 chương, đề tài luận văn đã xây dựng thành công một chương trình thực hiện ký và xác thực chữ ký số theo đúng thuật toán. Mặc dù chương trình chỉ thực hiện được ở nội bộ máy tính, nhưng khi được cải tiến kết hợp với việc tạo thêm một hạ tầng PKI để cung cấp ứng dụng xác thực khóa công khai ta có thể mở rộng ứng dụng sát với thực tế yêu cầu.
2. Khuyến nghị
Với việc sử dụng chung modulo n, thuật toán được chọn cho phép dễ dàng phát triển các thuật toán chữ ký số tập thể, chữ ký số mù ứng dụng trong bầu cử trực tuyến hay thanh toán điện tử và giao thức trao đổi khóa an toàn cho các hệ mã khóa bí mật.
TÀI LIỆU THAM KHẢO
[1].Giáo trình bảo mật và an toàn thông tin, Trường Đại học Hàng Hải.
[2].Phan Đình Diệu, Giáo trình lý thuyết mật mã và an toàn thông tin, Nhà
xuất bản Đại học Quốc gia Hà Nội.
[3].Hoàng Thị Mai và Lưu Hồng Dũng, Một dạng lược đồ chữ ký xây dựng