i
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
CAO HÙNG PHƯƠ
NG
NGHIÊN CỨU XÂY DỰNG LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN CƠ SỞ
BÀI TOÁN PHÂN TÍCH SỐ
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
THÁI NGUYÊN, 2018
ĐẠI HỌC THÁiIi
NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
CAO HÙNG PHƯƠ
NG
NGHIÊN CỨU XÂY DỰNG LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN CƠ SỞ
BÀI TOÁN PHÂN TÍCH SỐ
Chuyên ngành: Khoa học máy tính
Mã số: 84 80 101
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Người hướng dẫn khoa học: TS. NGUYỄN NGỌC CƯƠNG
THÁI NGUYÊN, 2018
i
LỜI CAM ĐOAN
Em xin cam đoan tất cả các kết quả được trình bày trong luận văn:
“Nghiên cứu xây dựng lược đồ chữ ký số trên cơ sở bài toán phân tích số”
là công trình nghiên cứu của riêng em, không sao chép từ bất kỳ một công
trình nào khác. Các số liệu, kết quả nghiên cứu trong luận văn được sử dụng
là trung thực, đã được kiểm chứng và chưa được công bố trong bất kỳ công
trình của tác giả nào khác.
Nếu sai em xin hoàn toàn chịu trách nhiệm.
Thái Nguyên, ngày 10 tháng 6 năm 2018
Học viên
Cao Hùng Phương
ii
LỜI CẢM ƠN
Trước hết em xin bày tỏ lòng biết ơn sâu sắc đến thầy giáo TS Nguyễn
Ngọc Cương Phó cục trưởng Cục công nghệ thông tin là người đã trực tiếp
hướng dẫn, chỉ bảo tận tình và hết lòng giúp đỡ em trong suốt thời gian làm
luận văn này..
Xin trân trọng cảm ơn tới Ban lãnh đạo, các thầy cô giáo trường Đại
học Công nghệ thông tin và truyền thông Thái Nguyên đã chia sẻ và động
viên giúp em vượt qua mọi khó khăn để hoàn thành tốt công việc nghiên cứu
của mình.
Xin chân thành cảm ơn gia đình, bạn bè và những người đã luôn ủng
hộ, quan tâm, giúp đỡ, động viên, tạo điều kiện tốt nhất và là chỗ dựa vững
chắc giúp em có thể hoàn thành luận văn.
Cuối cùng em xin gửi lời chúc sức khỏe và thành công tới tất cả quý
thầy cô và gia đình cùng toàn thể các bạn.
Thái Nguyên, ngày 10 tháng 6 năm 2018
Học viên
Cao Hùng Phương
3
MỤC LỤC
LỜI
CAM
ĐOAN
.......................................................................................................i LỜI CẢM ƠN
............................................................................................................ii MỤC LỤC
................................................................................................................
iii
DANH
MỤC CÁC KÝ HIỆU................................................................................... v LỜI
MỞ ĐẦU ............................................................................................................ 1
CHƯƠNG 1. TỔNG QUAN CÁC CHUẨN CHỮ KÝ SỐ ....................................
3
1.1. Giới thiệu về hệ mật mã khóa công khai các nguyên lý ......................................3
1.2.
Các
khái
niệm
...........................................................................................4
cơ
bản
1.2.1 Hệ khoá công khai RSA.................................................................... 4
1.2.2 Khái niệm chữ ký số ......................................................................... 5
1.2.3 Các bước tạo và kiểm tra chữ ký điện tử ......................................... 7
1.2.4 Định nghĩa lược đồ chữ ký số .......................................................... 8
1.2.5 Chức năng của chữ ký số ................................................................. 8
1.2.6 Các yêu cầu thành phần để tạo ra được chữ ký số .......................... 9
1.2.7 Ưu, nhược điểm của chữ ký số ......................................................... 9
1.3 Các hệ chữ ký số điển hình .................................................................................10
1.3.1 Cở sở toán học ............................................................................... 10
1.3.2 Hệ mật khóa công khai RSA........................................................... 12
1.3.3 Hệ chữ ký số Elgamal .................................................................... 18
1.3.4 Chuẩn chữ ký DSS.......................................................................... 19
1.3.5 Hệ chữ ký GOST 3410.94............................................................... 20
1.4 Khả năng ứng dụng của chữ ký số vào thực tiễn ................................................22
1.4.1. Đối với người dùng cá nhân ......................................................... 22
1.4.2. Đối với các Cơ quan - Tổ Chức .................................................... 22
1.4.3. Đối với các Doanh nghiệp ............................................................ 22
1.5. Kết luận chương 1 ..............................................................................................23
CHƯƠNG 2. XÂY DỰNG LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN BÀI TOÁN PHÂN
TÍCH SỐ .................................................................................................................. 24
4
2.1. Cở sở nghiên cứu ...............................................................................................24
2.2. Xây dựng thuật toán trên bài toán phân tích số cơ bản ......................................25
2.2.1. Thuật toán trên bài toán phân tích số ........................................... 25
2.2.2.Thuật toán hình thành tham số và khóa......................................... 26
2.2.3.Thuật toán ký và kiểm tra chữ ký ................................................... 26
2.3. Xây dựng lược đồ chữ ký số trên cơ sở bài toán phân tích số ...........................27
2.3.1.Thuật toán hình thành tham số và khóa......................................... 27
Chú thích: ................................................................................................ 28
2.3.2. Thuật toán ký................................................................................ 28
2.3.3. Thuật toán kiểm tra chữ ký ........................................................... 28
2.3.4. Tính đúng đắn của lược đồ chữ ký số ........................................... 29
2.3.5. Mức độ an toàn của lược đồ chữ ký số ......................................... 29
2.4. Kết luận chương 2 ..............................................................................................30
CHƯƠNG 3. CÀI ĐẶT THƯ NGHIỆM............................................................... 32
3.1. Kịch bản chương trình........................................................................................32
3.2 Cài đặt, thử nghiệm chương trình .......................................................................33
3.2.1. Cài đặt chương trình ..................................................................... 33
3.2.2. Thử nghiệm chương trình.............................................................. 39
3.3. Kết luận chương 3 ..............................................................................................43
KẾT LUẬN VÀ KHUYẾN NGHỊ ......................................................................... 44
1. Kết luận .................................................................................................................44
2. Khuyến nghị ..........................................................................................................44
TÀI LIỆU THAM KHẢO ...................................................................................... 45
5
DANH MỤC CÁC KÝ HIỆU
T
ư
C
A
P
K
P
K
R
A
C
R
R
S
A
T
g
C T
er ô
P C
u h
P H
u ạ
R Tr
e u
C K
er h
R L
o à
n t
6
DANH MỤC CÁC HÌNH VẼ
CHƯƠNG 1
Hình 1.1 Hệ thống sử dụng mã hóa khóa công khai............................... 3
Hình 1.2 Chữ ký số ................................................................................. 6
Hình 1.3 Sơ đồ mã hóa công khai......................................................... 13
Hình 1.4 Sơ đồ quy trình tạo chữ ký trong RSA .................................. 17
Hình 1.5 Sơ đồ quy trình xác minh chữ ký số RSA ............................. 17
CHƯƠNG 2
Hình 2.1 Sơ đồ thuật toán sinh khóa và ký ........................................... 25
Hình 2.2 Sơ đồ thuật toán xác minh chữ ký ......................................... 27
CHƯƠNG 3
Hình 3.1 Khai báo các giá trị tham số và khóa ..................................... 33
Hình 3.2 Thuật toán tạo tham số cho chuơng trình .............................. 34
Hình 3.3 Câu lệnh cho nút tạo tham số chương trình ........................... 34
Hình 3.4 Câu lệnh nút lưu tham số ....................................................... 34
Hình 3.5 Thuật toán tạo khóa cho chương trình ................................... 34
Hình 3. 6 Câu lệnh cho nút tạo khóa chương trình ............................... 35
Hình 3.7 Câu lệnh nút lưu khóa ............................................................ 35
Hình 3.8 Thuật toán tạo chữ ký số ........................................................ 36
Hình 3.9 Câu lệnh cho nút tạo chữ ký số.............................................. 37
Hình 3.10 Câu lệnh nút lưu chữ ký số .................................................. 37
Hình 3.11 Câu lệnh nút nạp chữ ký số cần xác thực ............................ 37
vii
Hình 3.12 Thuật toán kiểm tra hay xác thực chữ ký số ........................ 38
Hình 3.13 Giao diện chính của phần mềm ........................................... 39
Hình 3.14 Giao diện của Modul tạo tham số và khóa .......................... 40
Hình 3.15 Giao diện của Modul tạo chữ ký số ..................................... 41
Hình 3.16 Giao diện modul xác thực chữ ký ........................................ 42
1
LỜI MỞ ĐẦU
1. Lý do chọn đề tài:
Hiện nay, khi mà Chính phủ điện tử và Thương mại điện tử là xu
hướng tất yếu của hầu hết các quốc gia trên thế giới, trong đó có Việt Nam,
thì chứng thực điện tử đã trở thành một yếu tố không thể thiếu được và ngày
càng trở nên quan trọng. Hạ tầng công nghệ của chứng thực điện tử là cơ sở
hạ tầng khoá công khai với nền tảng là mật mã khoá công khai và chữ ký số.
Có nhiều nghiên cứu về lược đồ chữ ký số nói chung, phần lớn đều dựa trên
bài toán logarit rời rạc, bài toán khai căn, phân tích số nguyên ra thừa số
nguyên tố. Gần đây có một nghiên cứu mới 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 chọn 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ế. Trước tình hình nghiên cứu trong và ngoài nước về chữ
ký số như hiện nay thì việc nghiên cứu, phát triển và từng bước đưa chữ ký số
ứng dụng vào thực tiễn là rất cần thiết. Chính vì lý do trên tôi đã chọn đề tài
“Nghiên cứu xây dựng lược đồ chữ ký số trên cơ sở bài toán phân tích số”
để nghiên cứu làm luận văn tốt nghiệp của mình .
2. Mục đích nghiên cứu
- Tìm hiểu chung về bài toán phân tích số
- Tìm hiểu chuẩn chữ ký số dựa trên bài toán phân tích số và hàm băm.
- Nghiên cứu rõ về lược đồ chữ ký số dựa trên chuẩn chữ ký số trên cơ
sở bài toán phân tích số.
3. Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu: Xây dựng lược đồ chữ ký số trên cơ sở bài toán
phân tích số.
Phạm vi nghiên cứu: Thuật toán chữ ký số này được 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ố từ đó xây
dựng lược đồ chữ ký số mới. Lược đồ Elgamal gồm cả hệ mã và chữ ký số có
độ an toàn dựa trên bài toán logarit rời rạc.
4. Phương pháp nghiên cứu
- Tổng hợp các tài liệu liên quan đến các lược đồ cơ sở dựa trên các hệ
mật và các chuẩn chữ ký số được đánh giá có độ an toàn cao
- Sử dụng phương pháp lập luận và phân tích các lược đồ làm cơ sở để
xây dựng các lược đồ chữ ký số theo mục tiêu nghiên cứu đặt ra.
- Sử dụng phương pháp mô phỏng, lập trình để xây dựng một số lược
đồ chữ ký phân tích theo mô hình ứng dụng có khả năng ứng dụng trong thực
tiễn.
5. Kết cấu của luận văn
Ngoài phần mở đầu, kết luận và danh mục tài liệu tham khảo, luận văn
được kết cấu gồm 3 chương
Chương 1. Tổng quan các chuẩn chữ ký số.
Chương 2. Xây dựng lược đồ chữ ký số trên cơ sở bài toán phân tích
số.
Chương 3. Cài đặt và thử nghiệm chương trình.
CHƯƠNG 1. TÔNG QUAN CÁC CHUẨN CHỮ KÝ SỐ
Chương này trình bày các khái niệm cơ bản vê chữ ký số, một số hệ
chữ ký số điển hình, chức năng và kha năng ứng dụng của chữ ký số, quy
trình ký, xác thực chữ ký số và định hướng nghiên cứu của đê tài. Đây chính
là những kiến thức cơ bản và chung nhất cho việc tạo ra một chữ ký số hoàn
chỉnh, là nền tảng để phát triển thuật toán lược đồ chữ ký số ở chương sau.
1.1. Giới thiệu về hệ mật mã khóa công khai các nguyên lý
Mã hóa bất đối xứng thường được hiểu là mã hoá sử dụng khóa công
khai. Mã hóa bất đối xứng sử dụng một cặp khóa: khóa bí mật và khóa công
khai, được miêu tả như hình 1.1. Mỗi quá trình truyền tin sử dụng một cặp
khóa duy nhất và có thể sử dụng linh hoạt. Khóa bí mật cần phải lưu trữ riêng
và đảm bảo tính bảo mật, không được truyền trên mạng. Khóa công khai có
thể được cung cấp miễn phí và công bố tới mọi người.
Hình 1.1 Hệ thống sử dụng mã hóa khóa công khai
Tương tự như mã hoá khoá bí mật, phương pháp này cũng có các thành
phần chính như sau:
- Plaintext: bản tin gốc.
- Encryption Algorithm: Thuật toán mã hóa.
- Public/Private keys: cặp khóa công khai/bí mật.
- Ciphertext: bản tin đã mã hóa.
- Decryption Algorithm: Thuật toán giải mã.
Quá trình sử dụng mã hóa khóa công khai:
- Bên nhận sinh cặp khóa.
- Khóa công khai thường được chứng thực bởi một bên thứ ba tin cậy
và chuyển cho người gửi theo các phương thức truyền thông thông thường.
- Bên gửi nhận được khóa công khai, kiểm tra các thông tin chứng thực
khoá và dùng khóa này để mã hóa thông điệp và gửi cho bên nhận.
- Bên nhận sử dụng khoá bí mật để giải mã thông điệp.
- Thông điệp có thể bị bên thứ ba lấy trộm, nhưng không thể đọc được
nội dung.
1.2. Các khái niệm cơ bản
1.2.1 Hệ khoá công khai RSA
RSA là hệ mật mã khóa công khai phô biến và cũng đa năng nhất trong
thực tế, phát minh bởi Rivest, Shamir & Adleman (1977). Nó là chuẩn mật
mã bất thành văn đối với PKC, cung cấp đảm bảo tính mật, xác thực và chữ
ký điện tử.
Cơ sở thuật toán RSA dựa trên tính khó của bài toán phân tích các số
lớn ra thừa số nguyên tố: không tồn tại thuật toán thời gian đa thức (theo độ
dài của biểu diễn nhị phân của số đó) cho bài toán này. Chẳng hạn, việc phân
tích một hợp số là tích của 2 số nguyên tố lớn hàng trăm chữ số sẽ mất hàng
ngàn năm tính toán với một máy PC trung bình có cấu hình CPU khoảng trên
2Ghz.
Ý tưởng (Motivation)
Các nhà phát minh có lựa chọn khá giản dị là xây dựng thuật toán
sinh/giải mã trên cơ sở phép toán lấy luỹ thừa đồng dư trên trường Zn =
{0,1,2,..n-1}. Chẳng hạn, việc sinh mã cho tin X sẽ được thực hiện qua:
Y = Xe
n
Ở đây ta dùng ký hiệu a = b n nghĩa là a = b
còn
10) còn việc giải mã:
k = 1,2,3,..., ví dụ 7 = 33
k* n với a Zn
X = Yd
n
(e – khóa sinh mã, d – khóa giải mã)
Như vậy để hai hàm sinh mã và giải mã này là hàm ngược của nhau, e
và d phải được chọn sao cho: Xed = X
n
Người ta đã tìm được cách xây dựng cặp số (e,d) này trên cơ sở công
thức như sau: X(n) = 1
n (định lý Ơ - le)
Trong đó (n) hàm số cho biết số lượng các số thuộc Zn mà nguyên
tố
cùng nhau với n. Người ta cần chọn e*d sao cho chia (n) dư 1, hay d= e-1
(n), khi đó ta sẽ có điều cần thiết:
Xed = Xk(n) +1 =( X(n))d * X = 1*X
=X
(n) có thể tính được khi đã biết công thức phân tích thừa số nguyên
tố
của n, cụ thể là nếu đã biết n = p*q (p.q là số nguyên tố) thì (n) = (p-1)
(q1).
Nói cách khác nếu như cho trước một số e thì nếu đã biết công thức
phân tích thừa số nguyên tố của n ta có thể dễ dàng tìm được d sao cho d= e-1
(n) hay là Xed = X
n, còn nếu không biết thì rất khó.
Vừa rồi là phần trình bày dẫn dắt về cội nguồn của thuật toán, sau đây
là thuật toán cụ thể.
1.2.2 Khái niệm chữ ký số
Chữ ký số : Là một thể chứng thực được mã hóa bởi khoá bí mật của
người gửi. Chữ ký số là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh,
video...) nhằm mục đích xác định chủ thể của dữ liệu đó. Quá trình tạo và xác
thực chữ ký số được mô tả như Hình 1.2.
Hình 1.2 Chữ ký số
1.2.2.1 Vai trò của chữ ký số
Chữ ký số dùng cho các văn bản số, cho biết toàn bộ văn bản đã được
ký bởi người ký. Và người khác có thể xác minh điều này. Chữ ký số tương tự
như chữ ký thông thường, đảm bảo nội dung tài liệu là đáng tin cậy, chính
xác, không hề thay đổi trên đường truyền và cho biết người tạo ra tài liệu là
ai. Tuy nhiên, chữ ký số khác chữ ký thường, vì nó tuỳ thuộc vào văn bản.
Chữ ký số sẽ thay đổi theo văn bản còn chữ ký thường thì không hề thay đổi.
Chữ ký số được sử dụng để cung cấp chứng thực chủ sở hữu, tính toàn
vẹn dữ liệu và chống chối bỏ nguồn gốc trong rất nhiều các lĩnh vực.
1.2.2.2. Ứng dụng của chữ ký số
Giải pháp dùng chữ ký số là tối ưu vì nó có hiệu lực pháp luật, do đó
không cần in ấn tài liệu mà vẫn có thể xác nhận được tài liệu, đảm bảo tính
toàn vẹn và không chối bỏ. Chữ ký số được phát hành bởi bên thứ ba là cơ
quan chứng thực có thẩm quyền cấp phát, thu hồi, quản lý chứng chỉ số cho
các thực thể thực hiện các giao dịch an toàn ( Certificate Authority hoặc CA)
nên đảm bảo tính khách quan. Như vậy, quá trình tạo chữ ký số, xác nhận các
yêu cầu pháp lý, bao gồm xác thực người ký, xác thực tin nhắn, là thành công
và hiệu quả.
Chính vì những ưu điểm của chữ ký số, nó được dùng trong nhiều ứng
dụng: Đảm bảo an ninh truyền thông, ngân hàng trực tuyến, thương mại điện
tử, đảm bảo an ninh cho thư điện tử, …
1.2.3 Các bước tạo và kiểm tra chữ ký điện tử
Quá trình sử dụng chữ ký số được thực hiện theo 2 giai đoạn: Tạo chữ
ký và kiểm tra chữ ký số. Có thể dùng khoá công khai hoặc khoá bí mật để
thực hiện các khâu trên. Hai quá trình tạo và kiểm tra sẽ được trình bày cụ thể
tiếp sau đây.
Các bước tạo chữ ký:
- Dùng giải thuật băm để tính message digest của thông điệp cần truyền
đi. Kết quả ta được một message digest.
- Sử dụng khóa bí mật của người gửi để mã hóa message digest thu
được ở bước 1. Thông thường ở bước này ta dùng giải thuật RSA. Kết quả thu
được gọi là digital signature của thông điệp ban đầu. Công việc này gọi là
“ký” vào thông điệp. Sau khi đã ký vào thông điệp, mọi sự thay đổi trên thông
điệp sẽ bị phát hiện trong giai đoạn kiểm tra. Ngoài ra, việc ký này đảm bảo
người nhận tin tưởng thông điệp này xuất phát từ người gửi chứ không phải là
ai khác.
- Gộp digital signature vào thông điệp ban đầu và gửi đến người nhận.
Các bước kiểm tra:
- Tách message ban đầu và chữ ký số.
- Dùng khóa công khai của người gửi (khóa này được thông báo đến
mọi người) để giải mã chữ ký số của thông điệp.
- Dùng giải thuật (MD5 hoặc SHA) băm thông điệp ban đầu.
- So sánh 2 chuỗi băm kết quả thu được ở 2 bước trên. Nếu trùng nhau,
ta kết luận thông điệp này không bị thay đổi trong quá trình truyền và thông
điệp này là của người gửi.
1.2.4 Định nghĩa lược đồ chữ ký số
Một lược đồ chữ ký số là bộ 5( M, A, K, S, V ) thỏa mãn các điều kiện
sau:
1. M là tập hữu hạn các bản tin.
2. S là tập hữu hạn các chữ ký.
3. K là tập hữu hạn các khóa bí mật.
4. A là tập hữu hạn các thuật toán ký.
5. V là tập hữu hạn các thuật toán xác minh.
6. Với mỗi k ∈ K tồn tại một thuật toán ký sigk ∈ A và một thuật toán
xác minh verk ∈ V tương ứng, mỗi sigk : M → S và verk: M × S → { true,
false} là hàm sao cho với mỗi m ∈ M và s ∈ S thỏa mãn phương trình sau:
����, � = ��� �(��)
��(�, ��) = {
����� , � ≠ ����(��)
1.2.5 Chức năng của chữ ký số
- Non-repudiation: Giúp cho người nhận khi kiểm tra nội dung đã được
ký chữ ký số kèm theo sẽ biết chắc người ký không thể chối cãi về những gì
đã tạo ra ở thời điểm bắt đầu tạo chữ kí số.
- Integrity: Chữ ký số giúp kiểm tra tính toàn vẹn dữ liệu của nội dung
được gửi đi là không bị thay đổi hay chỉnh sửa kể từ lúc khởi tạo chữ ký số và
ký vào văn bản gửi đi.
- Authenticity: Chữ ký số cũng dùng để chứng thực nguồn gửi nội dung
thông điệp đi. Thường thì thông tin về người chủ của chữ ký sẽ được thêm
vào kèm với nội dung chữ ký số để giúp người nhận chứng thực được ai đã
gửi thông điệp đi. Chữ ký số ứng dụng nhiều trong các hoạt động cấp chứng
chỉ Certificate SSL,… Chữ ký số cũng có có thể sử dụng trong các giao dịch
thư điện tử, để mua bán hàng trực tuyến, đầu tư chứng khoán trực tuyến,
chuyển tiền ngân hàng, thanh toán trực tuyến mà không sợ bị đánh cắp tiền
như với các tài khoản Visa, Master.
1.2.6 Các yêu cầu thành phần để tạo ra được chữ ký số
Chữ ký số dựa trên công nghệ mã hoá khóa công khai (RSA): Mỗi
người dùng phải có 1 cặp khóa (key pair) bao gồm khóa công khai (public
key) và khóa bí mật (private key).
+ Private key: Là một khóa trong cặp khóa thuộc hệ thống mật mã
không đối xứng, được dùng để tạo chữ ký số.
+ Public key: Là một khóa trong cặp khóa thuộc hệ thống mật mã
không đối xứng, được sử dụng để giả mã kiểm tra chữ ký số được tạo bởi
khóa bí mật tương ứng trong cặp khóa.
+ Digital Sign (ký số): Là việc đưa khóa bí mật vào một chương trình
phần mềm để tự động tạo và gắn chữ ký số vào thông điệp dữ liệu. Khi đọc
các tài liệu chuyên ngành, bạn sẽ gặp nhiều cụm từ “sign” hoặc “signed " thì
bạn phải hiểu là liên quan đến hoạt động của chữ ký số.
+ Signer (người ký): Là đối tượng dùng đúng khóa bí mật của mình để
tạo chữ ký số và ký vào một thông điệp dữ liệu dưới tên của mình.
+ Recipient (người nhận): Là tô chức, cá nhân nhận được thông điệp dữ
liệu được ký số bởi người ký, sử dụng chứng thư số (digital certificate) của
người ký đó để kiểm tra chữ ký số trong thông điệp dữ liệu nhận được và tiến
hành các hoạt động, giao dịch có liên quan.
1.2.7 Ưu, nhược điểm của chữ ký số
Bảng 1.1. Ưu, nhược điểm của chư ký số
Ư C C
u h k
V V H
iệ
ẫ ầ
c
gi n u
C G K
h ầ h
ữ n á
k g c
Đ Y M
ạn
ả ế
h
m u (P
T G B
h ầ ị
ờ
Tí
n
h
đ
ơ
n g
D R
ễ ất
c p
h h
1.3 Các hệ chư ký số điển hình
1.3.1 Cở sở toán học
1.3.1.1 Bài toán phân tích số
Bài toán phân tích số về cơ bản có thể được phát biểu như sau: Cho số
n∈ N , hãy tìm biểu diễn: n = P1e . P1e . P2e …
1
1
2
ek
với ei ≥ 1 và Pi là các số
Pk
nguyên tố.
Trong hệ mật RSA, bài toán phân tích số được sử dụng làm cơ sở để
hình thành cặp khóa công khai (e)/bí mật (d) cho mỗi thực thể k ý và có thể
phát biểu như sau:
- Cho p, q là 2 số nguyên tố lớn và mạnh;
- Từ p và q dễ dàng tính được: n = p × q ;
- Từ n rất khó tìm được p và q.
Với việc giữ bí mật các tham số p, q thì khả năng tính được khóa mật
(d) từ khóa công khai (e) và modulo n là rất khó thực hiện, nếu p, q được chọn
đủ lớn và mạnh.
Hiện tại, bài toán trên vẫn được coi là bài toán khó do chưa có giải
thuật thời gian đa thức cho nó và hệ mật RSA là một chứng minh thực tế cho
tính khó giải của bài toán này.
1.3.1.2 Bài toán logarit rời rạc
Cho p là một số nguyên tố và g là phần tử sinh của nhóm ZP*. Khi đó
bài toán logarit rời rạc - DLP (Discrete Logarithm Problem) trên trường ZP
hay còn gọi là bài toán DLP( p, g ) được phát biểu như sau:
Bài toán DLP(p,g): Với mỗi số nguyên dương y( ℤ p*), hãy tìm x thỏa
mãn phương trình sau:
gx mod p = y
Giải thuật cho bài toán logarit rời rạc với các tham số {p, g} công khai
có thể được viết như một thuật toán tính hàm DLP( p, g ) (.)với biến đầu vào
là y còn giá trị hàm là nghiệm x của phương trình trên:
x = DLP( p, g )(y)
Trong một hệ thống giao dịch điện tử ứng dụng chứng thực số để xác
thực nguồn gốc và tính toàn vẹn thông tin cho các thông điệp dữ liệu, bài
DLP( p, g ) là khó theo nghĩa không thể thực hiện được trong thời gian thực. Ở
đó, mỗi thành viên U của hệ thống tự chọn cho mình khóa bí mật x thỏa mãn:
1 < x < ( p- 1) , tính và công khai tham số:
y = g x mod p
1.3.1.3 Bài toán khai căn
Cho một cặp các số nguyên dương {n,t} với n là tích của hai số nguyên
tố p và q, còn t được chọn trong khoảng 1 < t < (p - 1).(q - 1). Khi bài toán
khai căn trên vành Zn = p.q hay còn gọi là bài toán RSA(n,t) được phát biểu như
sau:
Bài toán RSA(n,t) : Với mỗi số nguyên dương y
, hãy tìm x
thỏa
mãn phương trình sau:
xt modn = y
Giải thuật cho bài toán RSA(n,t) có thể được viết như một thuật toán tính
hàm RSA(n,t) (.) với biến đầu vào là y, còn giá trị hàm là x của phương trình
sau:
x = RSA(n,t) (y)
Ở dạng lược đồ chữ ký nghiên cứu, mỗi thành viên U của hệ thống tự
chọn cho mình bộ tham số {n,t} và khóa bí mật x thỏa mẫn : 1 < x < n, tính và
công khai tham số :
y = xt modn
1.3.2 Hệ mật khóa công khai RSA
a) Mật mã khóa công khai RSA
Hệ mã RSA được đặt tên dựa theo các chữ cái đầu của 3 tác giả của hệ
mã là Rivest, Shamir và Adleman. Đây là thuật toán mã hóa nổi tiếng nhất và
cũng là thuật toán được ứng dụng thực tế nhất.
Thuật toán RSA có hai khóa: Khóa công khai (hay khóa công cộng) và
khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong
quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi
người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa
công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách
khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí
mật) mới có thể giải mã được.
Hình 1.3 Sơ đồ mã hóa công khai
Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau:
Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có
thể đọc được. Để làm được điều này, Alice gửi cho Bob một chiếc hộp có
khóa đã mở sẵnvà giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ
giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập
chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại đượckhông đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bob gửi chiếc
hộp lại cho Alice. Alice mở hộp với chìa khóa của mình và đọc thông tin
trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công
khai, chiếc chìa khóa chính là khóa bí mật.
Để cài đặt RSA, ban đầu mỗi người dùng sinh khóa công khai và khóa
bí mật của mình bằng cách:
[1]. Chọn 2 số nguyên tố lớn khác nhau p, q thỏa mãn điều kiện |p| |
q|
[2]. Tính tích của nó: n = p × q.
[3]. Tính giá trị hàm Phi Euler của n: n = (p - 1)(q 1) . [4]. Chọn số nguyên d, sao cho: d < n và
gcd(d, (n) )=1. [5]. Tính giá trị e thỏa mãn điều kiện: e ×
d = 1 mod n .
Khóa công khai bao gồm: n và e. Khóa mật: d còn p, q và (n)
thường
là xóa sau khi tính toán khóa để đảm bảo an toàn.
Quá trình mã hóa:
Giả sử Bob muốn gửi đoạn thông tin m< n cho Alice, thì Bob tính bản
mã như sau: c = me mod n
Cuối cùng Bob gửi c cho Alice.
Quá trình giải mã:
Alice nhận c từ Bob và khóa bí mật d. Alice có thể tìm được m từ c
theo công thức sau: m = cd mod n
Quá trình giải mã hoạt động vì: cd = (me)d mod n = med mod n
Do e.d = 1 (mod p-1) và e.d = 1 (mod q-1), theo Định lý Fermat nhỏ
nên: med = m mod p
Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý phần dư
trung hoa, chúng ta có: med = m mod pq Hay cd = m mod n
Ví dụ:
p = 70793; q = 707933
n = p.q = 50116700869
n = (p - 1)(q - 1) = 50115922144
d = 30483041
e = 5851898625
m c m
3
0
75
23
3
4
=
75
23
38
10
44
69
304
830
75
23
348
798
Một số chú ý quan trọng về RSA
An ninh: Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học:
bài toán phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA.
Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng)
thì không thể thực hiện được việc phá mã toàn bộ đối với RSA. Phá mã một
phần phải được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn.
Bài toán RSA là bài toán tính căn bậc emodulon (với n là hợp số): tìm
số m sao cho me=c mod n, trong đó (e, n) chính là khóa công khai và c là bản
mã. Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích n ra
thừa số nguyên tố. Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ
bí mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuật
toán. Nếu kẻ tấn công tìm được 2 số nguyên tố p và q sao cho: n = pq thì có
thể dễ dàng tìm được giá trị (p-1)(q-1) và qua đó xác định d từ e. Trong
chương số học chúng ta đã biết chưa có một phương pháp nào được tìm ra
trên máy tính để giải bài toán này trong thời gian đa thức. Tuy nhiên người ta
cũng chưa chứng minh được điều ngược lại (sự không tồn tại của thuật toán).
Tốc độ: RSA có tốc độ thực hiện chậm hơn đáng kể so với các thuật
toán mã hóa đối xứng.
Chiều dài khóa: Số n cần phải có kích thước không nhỏ hơn 512 bít.
Năm 2006 hệ mật RSA được cho là hiệu quả với kích thước n phải từ 1024.
Và họ khuyến cáo là tương lai thì chiều dài n phải từ 2048 bít.
Chọn tham số công khai:
Để nâng cao tốc độ mã hóa, thì chúng ta nên chọn e với giá trị không
lớn, thường là 3, 7 hay 65537. Các số này khi biểu diễn ở dạng nhị phân chỉ
có 2 chữ số 1, nên khi thực hiện lệnh lũy thừa sẽ giảm đi lệnh nhân.
Chọn tham số mật:
- Chọn p và q còn cần đảm bảo không quá gần nhau để phòng trường
hợp phân tích n bằng phương pháp phân tích Fermat. Ngoài ra, nếu p-1 hoặc
q-1 có thừa số nguyên tố nhỏ thì n cũng có thể dễ dàng bị phân tích theo
phương pháp p-1 Pollaid và vì thế p và q cũng cần được thử để tránh khả năng
này. Chúng ta có thể chọn như sau. Trước tiên tìm số nguyên tố p1 sao cho
p=2p1+1 cũng là số nguyên tố, tương tự chọn số nguyên tố lớn q1 sao cho
q=2q1+1 cũng là số nguyên tố.
- Giá trị d cần phải đủ lớn. Năm 1990 Michael J. Wiener đã chứng
minh rằng nếu như q < p < 2q và d < n1/4/3, thì có phương pháp hiệu quả để
tính d theo n và e.
b) Chữ ký số RSA
Tạo khóa:
Quá trình tạo khóa cho sơ đồ chữ ký RSA giống như quá trình hình
thành khóa của hệ mật RSA, tức là: Alice chọn cặp số nguyên tố đủ lớn p và
q, với |p| |q|, tính n = p × q. Chọn số nguyên e thỏa mãn UCLN(e, (N ) )
=1.
Alice đi xác định số nguyên d, thỏa mãn phương trình e × d = 1 mod (N )
.
Số d là khóa mật của Alice.
Tạo chư ký:
Giả sử cần ký văn bản M. Đầu tiên chuyển M thành một số m
một hàm có thể đảo ngược (từ m có thể xác định lại M) đượcthỏa thuận trước.
Lúc này ta muốn ký lên văn bản M với số tương ứng là m. Ta sẽ tính S là bản
ký của m theo công thức: S = Sig nd(m) = md(mod n).