Tải bản đầy đủ (.pdf) (99 trang)

Khảo sát các chữ kí số dựa trên hệ RSA, nghiên cứu lược đồ chữ kí RSA-PSS và những chuẩn hóa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.51 MB, 99 trang )




















1
MỤC LỤC

LỜI CẢM ƠN 4
LỜI CAM ĐOAN 5
CÁC KÝ HIỆU VIẾT TẮT 6
MỞ ĐẦU 7
Chƣơng 1 NGHIÊN CỨU HỆ MẬT KHOÁ CÔNG KHAI 10
1.1 Lịch sử ra đời và phát triển 10
1.2 Định nghĩa hệ mật khoá công khai 11
1.3 Tính an toàn của hệ mật mã 14
1.4 Thám mã chống lại hệ mật khoá công khai 14


1.5 Sự cần thiết của việc xác minh hệ thống khóa công khai. 16
1.5 So sánh hệ mật khóa đối xứng và hệ mật khóa công khai 17
1.5.1 Lợi thế của hệ mật khóa đối xứng. 18
1.5.2 Điểm yếu của hệ mật khóa đối xứng. 18
1.5.3 Lợi thế của hệ mật khóa công khai 18
1.5.4 Điểm yếu của hệ mật khóa công khai 19
1.6 Hệ chữ ký số 21
1.6.1 Định nghĩa hệ chữ ký số 21
1.6.2 Các ưu điểm của chữ ký số 23
1.6.3 Ứng dụng của chữ ký số 24
Chƣơng 2 NGHIÊN CỨU HỆ MẬT VÀ CHỮ KÝ SỐ RSA 25
2.1 Tính an toàn các thuật toán mã hoá 25
2.2 Hệ mật RSA 26
2.2.1 Quá trình tạo khóa 26
2.2.2 Quá trình mã hóa 27

2
2.2.3 Quá trình giải mã 27
2.2.4 Chuyển đổi văn bản rõ 28
2.2.5 Tính không an toàn của hệ mật RSA 29
2.2 Hệ chữ ký số RSA 32
2.2.1 Định nghĩa hệ chữ ký số RSA 32
2.2.2 Hệ thống ký hiệu an toàn cho lược đồ ký số 33
2.2.3 Tính an toàn 34
Chƣơng 3 CHỮ KÝ SỐ RSA-PSS 35
3.1 Tổng quan về sơ đồ chữ ký RSA-PSS 35
3.1.1 RSA-PSS hoạt động như thế nào ? 36
3.1.2 Ưu thế của RSA-PSS 38
3.1.3 Các công trình chuẩn 39
3.1.4 Một số nhận xét về lược đồ ký RSA-PSS 40

3.2 Định nghĩa lược đồ ký PSS2000 40
3.2.1 Lược đồ ký điện tử PSS96 40
3.2.2 Lược đồ ký điện tử PSS2000 41
3.2.3 Lược đồ tổng quát hóa 43
3.2.4 Định nghĩa lược đồ RSA-GENPSS 44
3.2.5 Các mô hình an toàn 47
3.2.6 Một số xem xét về vấn đề lưu trữ 48
3.2.7 Phân tích cấu trúc hàm băm 49
3.2.8 Phân tích chuỗi cố định E (bc) 51
Chƣơng 4 SỰ CHUẨN HOÁ CỦA LƢỢC ĐỒ KÝ RSA-PSS 54
4.1 Nguyên lý chung 54
4.2 Các hàm chuyển đổi dữ liệu 55
4.2.1 Hàm cơ sở chuyển đổi từ dạng số sang dạng chuỗi Octet 55
4.2.2 Hàm chuyển đổi từ dạng Octet sang dạng số nguyên 55

3
4.3 Các phép toán mật mã cơ sở 56
4.3.1 Phép toán cơ sở RSASP1 56
4.3.2 Phép toán cơ sở RSAVP1 57
4.3.3 Phương pháp định dạng cho cho chữ ký với phần nối thêm vào 58
4.4 Lược đồ ký với phần nối thêm vào 64
4.4.1 Thao tác sinh chữ ký 65
4.4.2 Thao tác kiểm tra chữ ký 66
4.5 Tiêu chuẩn tham số sử dụng trong chữ ký số RSA-PSS 67
Chƣơng 5 CHỨNG MINH TÍNH AN TOÀN TỐI ƢU CHO LƢỢC ĐỒ KÝ DỰA
VÀO PHƢƠNG PHÁP XÁC SUẤT 70
5.1 Các định nghĩa 70
5.2 Một biến thể của PSS 72
5.3 Áp dụng PSS 76
5.4 Chứng minh tính an toàn tối ưu cho PSS 80

5.5 Bàn luận thêm 85
Chƣơng 6 CHỨNG MINH TÍNH AN TOÀN CHO LƢỢC ĐỒ KÝ RSA-PSS 86
6.1 Kết quả chính 86
6.2 RSA-PSS với việc khôi phục thông điệp 93
6.3 Các mô hình an toàn của lược đồ ký RSA-PSS với việc khôi phục thông điệp 95
KẾT LUẬN 97
TÀI LIỆU THAM KHẢO 98







6
CÁC KÝ HIỆU VIẾT TẮT
CRT
Chinese remainder theorem-Định lý số dƣ Trung Quốc
EM
Thông điệp đƣợc mã hoá, là một xâu gồm 8 bit
IEEE
Institute of Electrical and Electronics Engineers
IFP
Bài toán phân tích số nguyên (Integer Factorization
Problem)
IFSSA
Integer Factorization Signature Scheme with Appendix-
Lƣợc đồ ký thừa số nguyên với phần nối thêm vào
I2OSP
Interger to Octet String primitive- Nguyên thuỷ chuyển

kiểu số sang xâu kiểu byte
lcm
Bội chung nhỏ nhất (Least Common Multiple)
MGF
Mask Generation Function- Hàm sinh mặt nạ
MIT
Massachusetts Institute of Technology
NIST
National Institute of Standards and Technology
OS2IP
Octet to Interger String primitive – Nguyên thuỷ chuyển
kiểu byte sang kiểu số
RSA
Hệ mã hóa khóa công khai Rivest – Shamir – Adleman
SSA
Signature Scheme with Appendix- Lƣợc đồ ký với phần nối
thêm vào


7
MỞ ĐẦU
Trong kỷ nguyên công nghệ thông tin, Internet tại Việt Nam đã và đang có
những bƣớc phát triển mạnh mẽ, tạo nền tảng cho những ứng dụng hết sức đa dạng và
phong phú nhƣ chính phủ điện tử, giao dịch điện tử, truyền thông giải trí Tuy nhiên
một vấn đề lâu nay vẫn gây lo ngại cho các cấp quản lý cũng nhƣ đông đảo quần
chúng và giới doanh nghiệp, đó là tính an toàn. Trên thực tế, rất nhiều website và
thông tin dữ liệu về sản phẩm dịch vụ do không đảm bảo tính toàn vẹn đã bị sụp đổ.
Các hacker có thể thâm nhập vào những hệ thống của các “đại gia” nhƣ Microsoft,
Cisco, ở Việt Nam thì VDC, FPT cũng bị hacker thâm nhập. Việc bị cƣớp tên miền
cũng xảy ra nhiều lần.

Cho tới nay, việc mã hoá dữ liệu là một phƣơng pháp đủ mạnh để bảo vệ những
dữ liệu quan trọng hoặc riêng tƣ không bị xâm phạm bởi chú ý, tò mò . Tuy nhiên,
ngày càng có nhiều tin tặc có thể thêm, tráo đổi dữ liệu, mạo danh một cách táo tợn và
thiện nghệ. Chữ ký điện tử giúp ngƣời ta tin tƣởng vào tính nguyên vẹn của thông báo,
xác thực đƣợc ngƣời ký thông báo và tạo chứng cứ không thể chối bỏ đƣợc về trách
nhiệm của ngƣời ký. Đó là lý do tại sao sự an toàn trong dữ liệu cần phải tích hợp các
chữ ký điện tử, các chứng thực điện tử và phƣơng pháp quản lý khoá theo trật tự cấp
bậc. Nếu áp dụng một cách khôn ngoan các phƣơng pháp này vào việc quản lý dữ liệu
cùng với sự hỗ trợ của những khuôn mẫu thực thi, thì chúng ta sẽ có một nền tảng an
toàn lƣu trữ đa tầng, toàn diện, có khả năng đối đầu đƣợc với tình trạng đe doạ đa
chiều trƣớc mắt và trong tƣơng lai. Thị trƣờng an toàn thông tin tại Việt Nam đang
bƣớc vào giai đoạn giao thời khi cơ cở hạ tầng truyền thông cơ bản đã hình thành rõ
nét, nhu cầu sử dụng ngày càng nhiều các thiết bị của thời đại kỹ thuật số…Đã đến
giai đọan cần phải nắn nót và trau chuốt lại hệ thống của mình, nếu không bảo đảm an
toàn tốt, chúng ta sẽ đánh mất nhiều thứ.
Có rất nhiều hệ mã hoá đã đƣợc biết đến trong lĩnh vực mật mã học. Nhƣng
không phải hệ mã hoá nào cũng đáp ứng đủ các thuộc tính cần thiết của hệ mật: tính bí


8
mật, tính nguyên vẹn, tính xác thực, tính không bị từ chối và tính chống chối lặp. Có
ba hệ mã hóa thông dụng đã đứng vững và đƣợc sử dụng để xây dựng các lƣợc đồ ký
điện tử: RSA, hệ mã hoá dựa trên logarit rời rạc, và hệ mã hoá dựa trên đƣờng cong
elliptic. Các hàm một chiều sử dụng trong hệ mã này đƣợc xem là an toàn theo thừa
nhận,tức là không có thuật toán nào hữu hiệu để tính hàm ngƣợc của chúng. Trong
khoảng mƣời năm trở lại đây, vấn đề này đang thu hút rất nhiều sự quan tâm của cộng
đồng mật mã trên thế giới. RSA đƣợc liệt vào một trong các giải thuật mã hóa bất đối
xứng đƣợc dùng thông dụng nhất cho đến ngày hôm nay (ra đời năm 1977 tại MIT),
RSA đƣợc đặt tên từ ba nhà khoa học phát minh ra nó: Ron Rivest, Adi Shamir, và
Leonard Adleman. Nó đƣợc dùng hàng ngày trong các giao dịch thƣơng mại điện tử

qua web browser (SSL), PGP, dùng cho chữ ký số đảm bảo tính toàn vẹn của các
thông điệp khi lƣu chuyển trên Internet, phân phối & cấp phát các khoá bí mật.
Mật mã khoá công khai liên quan đến các khái niệm, định nghĩa và cấu trúc của
các hệ thống tính toán, liên quan đến tính an toàn. Để thiết kế các hệ thống mật mã
phải dựa trên cơ sở vững chắc. Nó dựa trên các công cụ toán học cơ bản nhƣ: lý thuyết
số học-cụ thể lý thuyết đồng dƣ thức, logarit rời rạc, lý thuyết về độ phức tạp tính toán
(hàm một chiều) cũng nhƣ khả năng phân tích các thuật toán…
Ngƣời ta đang cố gắng đƣa ra những lƣợc đồ ký sao cho tính không thể giả mạo
đƣợc của nó có thể đánh giá thông qua độ an toàn của các hàm một chiều mà nó sử
dụng. Trong phạm vi luận văn này lƣợc đồ ký sử dụng hàm một chiều của hệ mã
RSA-PSS đƣợc đi sâu nghiên cứu, trong đó nêu ra một số phƣơng pháp chứng minh
cho tính an toàn của lƣợc đồ đó. Luận văn gồm 6 chƣơng:
Chƣơng 1: Trong phần này luận văn trình bày những nghiên cứu lý thuyết về hệ mật
khoá công khai bao gồm: Lịch sử ra đời và phát triển, định nghĩa hệ mật khoá công
khai và xem xét tính an toàn của hệ mật khoá công khai.
Chƣơng 2: Chƣơng này nghiên cứu cụ thể hệ mật khoá công khai và hệ chữ ký số
RSA. Những lý thuyết đƣợc đề cập đến bao gồm: Nghiên cứu quá trình tạo khoá, mã


9
hoá, giả mã, và tính không an toàn của hệ mật RSA. Đồng thời cũng nghiên cứu tính
an toàn của lƣợc đồ ký số RSA.
Chƣơng 3: Giới thiệu tổng quan lƣợc đồ ký RSA-PSS bao gồm Cơ chế hoạt động, ƣu
thế, các công trình chuẩn và một số nhận xét quý báo về lƣợc đồ ký này. Sau đấy định
nghĩa và nghiên cứu cụ thể lƣợc đồ ký PSS2000.
Chƣơng 4: Nghiên cứu sự chuẩn hoá của lƣợc đồ ký RSA-PSS, cụ thể là các tiêu
chuẩn tham số sử dụng trong chữ ký số RSA-PSS để áp dụng lƣợc đồ vào các ứng
dụng thực tế an toàn.
Chƣơng 5: Chứng minh tính toàn cho lƣợc đồ ký dựa vào phƣơng pháp xác suất.
Chƣơng 6: Chứng minh tính toàn cho lƣợc đồ ký RSA-PSS và giới thiệu các mô hình

an toàn của lƣợc đồ ký RSA-PSS với việc khôi phục thông điệp







10
Chƣơng 1
NGHIÊN CỨU HỆ MẬT KHOÁ CÔNG KHAI
1.1 Lịch sử ra đời và phát triển
Trong hầu hết lịch sử mật mã học, khóa dùng trong các quá trình mã hóa và
giải mã phải đƣợc giữ bí mật và cần đƣợc trao đổi bằng một phƣơng pháp an toàn
khác (không dùng mật mã) nhƣ gặp nhau trực tiếp hay thông qua một ngƣời đƣa thƣ
tin cậy. Vì vậy quá trình phân phối khóa trong thực tế gặp rất nhiều khó khăn, đặc biệt
là khi số lƣợng ngƣời sử dụng rất lớn. Mật mã khóa công khai đã giải quyết đƣợc vấn
đề này vì nó cho phép ngƣời dùng gửi thông tin mật trên đƣờng truyền không an toàn
mà không cần thỏa thuận khóa từ trƣớc.
Mật mã khóa công khai đƣợc thiết kế đầu tiên bởi James H. Ellis, Clifford Cocks, và
Malcolm Williamson tại GCHQ (Anh) vào đầu thập kỷ 1970. Sau này đƣợc phát triển
và biết đến là một trƣờng hợp đặc biệt của RSA. Tuy nhiên những thông tin này chỉ
đƣợc tiết lộ vào năm 1997.
Năm 1976, Whitfield Diffie và Martin Hellman công bố một hệ thống mật mã khóa
bất đối xứng trong đó nêu ra phƣơng pháp trao đổi khóa công khai. Công trình này
chịu ảnh hƣởng từ xuất bản trƣớc đó của Ralph Merkle về phân phối khóa công khai.
Trao đổi khóa Diffie-Hellman là phƣơng pháp có thể áp dụng trên thực tế đầu tiên để
phân phối khóa bí mật thông qua một kênh thông tin không an toàn. Kỹ thuật thỏa
thuận khóa của Merkle có tên là hệ thống câu đố Merkle.
Thuật toán đầu tiên cũng đƣợc Rivest, Shamir và Adleman tìm ra vào năm 1977 tại

MIT. Công trình này đƣợc công bố vào năm 1978 và thuật toán đƣợc đặt tên là RSA.
RSA sử dụng phép toán tính hàm mũ môđun (môđun đƣợc tính bằng tích số của 2 số
nguyên tố lớn khác nhau) để mã hóa và giải mã cũng nhƣ tạo chữ ký số. An toàn của
thuật toán đƣợc đảm bảo với điều kiện là không tồn tại kỹ thuật hiệu quả để phân tích
một số rất lớn thành thừa số nguyên tố.[3]


11
Kể từ thập kỷ 1970, đã có rất nhiều thuật toán mã hóa, tạo chữ ký số, thỏa thuận khóa
đƣợc phát triển. Các thuật toán nhƣ ElGamal (mật mã) do Netscape phát triển hay
DSA do NSA và NIST dựa trên các bài toán lôgarit rời rạc. Vào giữa thập kỷ 1980,
Neal Koblitz bắt đầu cho một dòng thuật toán mới: mật mã đƣờng cong elliptic và
cũng tạo ra nhiều thuật toán tƣơng tự. Mặc dù cơ sở toán học của dòng thuật toán này
phức tạp hơn nhƣng lại giúp làm giảm khối lƣợng tính toán, đặc biệt khi khóa có độ
dài lớn.
1.2 Định nghĩa hệ mật khoá công khai
Định nghĩa một sơ đồ hệ thống mật mã
Một sơ đồ hệ thống mật mã là một bộ năm S = (P,C,K,E,D) thoả mãn các điều kiện
sau đây:
1. P là một tập hữu hạn các bản rõ.
2. C là một tập hợp hữu hạn các bản mã
3. K là một tập hữu hạn các khóa
4. E là một ánh xạ từ K

P

C, đƣợc gọi là phép lập mật mã và D là một ánh xạ
từ K

C


P, đƣợc gọi là phép giải mã. Với mỗi k

K, ta định nghĩa e
k
: P

C,
d
k
: : C

P là hai hàm cho bởi:

x

P: e
k
(x) = E(k,x);

y

C: d
k
(y) = D(k,y);
e
k
và d
k
đƣợc gọi lần lƣợt là hàm lập mã và hàm giải mã ứng với khóa mật mã k.

Các hàm đó phải thỏa mãn hệ thức:

x

P: d
k
(e
k
(x)) = x.
Bây giờ chúng ta xem một bài toán truyền thông tin giữa hai thành phần là Bob và
Alice đƣợc minh hoạ nhƣ hình vẽ dƣới đây.


12


Chọn một số ngẫu nhiên lớn để sinh cặp kkhóa.





Dùng khoá công khai để mã hóa, nhƣng dùng khoá bí mật để giải mã.
Hình vẽ 1.1 Minh họa sau hệ mật khoá công khai
Bob chọn cặp khoá (e,d). Bob gửi khoá mã hoá e (đƣợc gọi là khoá công khai) cho
Alice qua một kênh nào đó nhƣng giữ lại khóa giải mã d an toàn và bảo mật (đƣợc gọi
là khóa bí mật). Sau đó Alice có thể gửi một thông điệp m cho Bob bằng cách áp dụng
phép biến đổi mã hóa đƣợc xác định bởi khóa công khai của Bob để có đƣợc c=E
e
(m).

Bob giải mã bản mã c bằng cách áp dụng phép biến đổi ngƣợc D
d
đƣợc xác định duy
nhất bởi d.


13
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ẵn và 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 đƣợc-khô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.
Do khóa mã e không cần phải giữ bí mật mà nó đƣợc công khai, nên bất kỳ thực thể
nào cũng có thể gửi các thông điệp đã đƣợc mã hóa cho Bob mà chỉ có Bob mới giải
mã đƣợc nó. Hình 2 minh họa cho điều này, trong đó A
1
,A
2
,A
3
là các thực thể khác
nhau. Chú ý rằng nếu thực thể A
1
, gửi thông điệp m
1
sau khi mã hóa nó thành c

1
thì A
1

không thể khôi phục lại m
1
từ c
1


Hình vẽ 1.2 Minh hoạ quá trình trao đổi khoá công khai
Với mật mã khoá công khai nhƣ đã mô tả ở trên, giả sử rằng việc biết khóa công khai
e cũng không cho phép tính toán đƣợc khóa bí mật d. Điều này đƣợc giả thiết rằng có
sự tồn tại của hàm sập một cửa .


14
1.3 Tính an toàn của hệ mật mã
Tính an toàn của một hệ mật mã phụ thuộc vào độ khó của bài toán thám mã
khi sử dụng hệ mật đó. Ngƣời ta đã đề xuất ra một số cách hiểu cho khái niệm an toàn
của hệ thống mật mã, để trên cơ sở các cách hiểu đó nghiên cứu tính an toàn của nhiều
hệ mật mã khác nhau, sau đây là một số cách hiểu chung nhất:
1. An toàn vô điều kiện: Giả thiết ngƣời thám mã có đƣợc thông tin về bản mã.
Theo quan niệm lý thuyết thông tin, nếu những hiểu biết về bản mã không thu
hẹp đƣợc độ bất định về bản rõ đối với ngƣời thám mã, thì hệ mật mã là an toàn
vô điều kiện, hay theo thuật ngữ của C.Shannon, hệ là bí mật hoàn toàn. Nhƣ
vậy, hệ là an toàn vô điều kiện, nếu độ bất định về bản rõ sau khi ngƣời thám
mã có đƣợc các thông tin (về bản mã) bằng độ bất định về bản rõ trƣớc đó.
2. An toàn chứng minh đƣợc: Một hệ thống mật mã đƣợc xem là có độ an toàn
chứng minh đƣợc nếu ta có thể chứng minh đƣợc là bài toán thám mã đối với

hệ thống đó khó tƣơng đƣơng với một bài toán khó đã biết, thí dụ bài toán phân
tích một số nguyên thành tích các thừa số nguyên tố v v ( khó tƣơng đƣơng có
nghĩa là nếu bài toán này giải đƣợc thì bài toán kia cũng giải đƣợc với cùng một
độ phức tạp nhƣ nhau).
3. An toàn tính toán: Hệ mật đƣợc xem là an toàn tính toán, nếu mọi phƣơng pháp
thám mã đã biết đều đòi hỏi một nguồn năng lực tính toán vƣợt mọi khả năng
(kể cả phƣơng tiện thiết bị ) tính toán của một kẻ tấn công.
1.4 Thám mã chống lại hệ mật khoá công khai
Tính an toàn của một hệ mật đƣợc định nghĩa bằng một cuộc tấn công. Các tấn
công tích cực đã đƣợc mô hình hoá thành 3 mô hình thông thƣờng. Các mô hình
này đƣợc sử dụng để phân tích các hệ mật mã trong tài liệu này[4].
1. Tấn công bản rõ đƣợc chọn (Chosen-plaintext attack -CPA)


15
Kẻ tấn công chọn bản rõ và sử dụng sự trợ giúp của hàm mã hoá để thu đƣợc
bản mã tƣơng ứng. Mục đích của kẻ tấn công là phá vỡ hệ mật mã bằng cách sử
dụng cặp bản rõ - bản mã .
2. Tấn công chọn bản mã (Chosen-ciphertext attack -CCA)
Kẻ tấn công chọn bản mã và sử dụng sự trợ giúp của hàm giải mã để thu đƣợc
bản rõ tƣơng ứng. Mục đích của nguời tấn công là phá vỡ hệ mật mã bằng
cách sử dụng cặp bản rõ- bản mã. Việc tấn công thành công nếu anh ta có thể
lấy lại thông tin bản rõ nào đó từ một bản mã đích chặn bắt bởi ngƣời tấn công
sau khi hàm giải mã kết thúc.
3. Tấn công chọn thích hợp bản mã (Adaptive chosen-ciphertext attack -
CCA2)
Đây là kiểu tấn công CCA trong đó sự trợ giúp của hàm giải mã của hệ mật
mã đích luôn sẵn sàng, ngoại trừ bản mã đích.
Nhƣ vậy chúng ta có thể hình dung 3 kiểu tấn công này với các tình huống nhƣ sau:
1 . Ở mô hình CPA, kẻ tấn công đƣợc quyền sở hữu một hàm mã hoá

2. Ở mô hình CCA kẻ tấn công đƣợc quyền sử dụng hàm giải mã: Hàm giải mã
sẽ dừng lại khi ngƣời tấn công đƣa cho nó bản mã đích .
3. Ở mô hình CCA2 kẻ tấn công đƣợc quyền sử dụng một hàm giải mã mà anh
ta muốn. Trƣớc hoặc sau khi kẻ tấn công có đƣợc bản mã đích, anh ta không
cung cấp bản mã đích cho hàm giải mã.
CPA và CCA đƣợc xem nhƣ là các mô hình thám mã chống lại hệ mật khoá khoá công
khai trong đó mục tiêu của ngƣời tấn công là phá vỡ hệ mật mã đích bằng cách sử
dụng cặp bản rõ-bản mã anh ta có đƣợc từ các kiểu tấn công. Chúng ta nên chú ý đến
ba điểm sau đây đƣợc xác định cho một hệ mật khoá công khai[4]
1. Hàm mã hoá của hệ mật luôn dùng đƣợc đối với mọi ngƣời, do khi một khoá
công khai đƣợc công khai thì mọi ngƣời dễ dàng điều khiển hoàn toàn hàm mã


16
hoá. Mặt khác CPA có thể luôn đƣợc dùng để chống lại một hệ mật khoá công
khai. Vì vậy, chúng ta có thể gọi một tấn công đối với hệ mật khoá công khai
là CPA nếu việc tấn công không sử dụng bất kỳ hàm giải mã nào. Do đó bất
kỳ hệ mật nào cũng phải chống lại CPA, nếu không nó không phải là một hệ
mật mã sử dụng đƣợc.
2. Thông thƣờng, lý thuyết toán làm cơ sở cho hầu hết các hệ mật khóa công
khai có một vài thuộc tính của một cấu trúc đại số nhƣ là: tính kết thúc, tính
kết hợp, tính đồng cấu. Kẻ tấn công có thể khai thác các thuộc tính này và
thiết lập một bản mã qua một số tính toán khéo léo. Nếu kẻ tấn công đƣợc trợ
giúp bởi một phép giải mã, thì những tính toán khéo léo của anh ta có thể cho
phép anh ta có đƣợc một số thông tin văn bản gốc, hoặc thậm chí khoá bí mật
của hệ mật đích. Do đó, hệ mật khoá công khai dễ bị tấn công bởi CCA và
CCA2
3. Dƣờng nhƣ CCA bị giới hạn. Trong các ứng dụng ngƣời dùng bị tấn công
thƣờng không biết việc tấn công đó. Do đó ngƣời dùng có thể không bao giờ
biết khi nào nên bắt đầu dừng hỗ trợ sự trợ giúp giải mã. Chúng ta thƣờng giả

sử rằng ngƣời dùng bình thƣờng không biết đƣợc sự tồn tại của việc giả mạo,
do đó thông thƣờng sự trợ giúp của hàm giải mã luôn sẵn sàng. Mặt khác, bất
kỳ hệ mật khoá công khai nào nên chống lại CCA do kẻ giả mạo luôn luôn tìm
ra cách để thực hiện sự trợ giúp của hàm giải mã.
1.5 Sự cần thiết của việc xác minh hệ thống khóa công khai.
Giả thiết rằng hệ mật khóa công khai là một hệ thống lý tƣởng, không yêu cầu
một kênh truyền an toàn để truyền khóa mã hóa. Điều này ngụ ý rằng hai thực thể có
thể truyền thông tin cho nhau bằng một kênh không an toàn mà không cần phải gặp
nhau để trao đổi khóa. Thật chẳng may điều này không đảm bảo. Hình 3 minh họa một
kẻ giả mạo có thể làm cho hệ thống thất bại mà không cần phải phá vỡ hệ thống mã
hóa. Đây chính là kiểu giả mạo về danh nghĩa. Ở tình huống này ngƣời giả mạo làm
giả thực thể B bằng cách gửi cho thực thể A một khoá công khai e’ mà A nghĩ rằng đó


17
là khóa công khai của B. Kẻ giả mạo chặn lấy thông điệp đƣợc mã hoá do A gửi cho
B, giải mã với khoá bí mật riêng d’, rồi lại mã hoá thông điệp bằng khoá công khai e
của A và gửi nó cho B. Điều này cho thấy cần thiết phải xác minh khoá công khai để
có đƣợc sự xác minh nguồn gốc dữ liệu của khoá công khai. A phải đƣợc thuyết phục
rằng anh ta đang mã hóa bằng khoá công khai hợp lệ của B. Do vậy, công nghệ mật
mã khoá công khai phải chấp nhận một số giải pháp để giải quyết vấn đề này.


1.5 So sánh hệ mật khóa đối xứng và hệ mật khóa công khai
Sơ đồ khóa đối xứng và khóa công khai có những điểm thuân lợi và không
thuận lợi khác nhau. Phần này nêu ra những đặc điểm này.
Hình 1.3 Minh hoạ Kẻ giả mạo tấn công vào quá trình trao đổi thông tin giữa hai
thực thể



18
1.5.1 Lợi thế của hệ mật khóa đối xứng.
1. Mật mã khóa đối xứng có tốc độ xử lý cao. Sự bổ sung phần cứng nào đó
có thể thu đƣợc tốc độ mã hoá hàng trăm mega byte trên một giây.
2. Khóa dùng cho hệ mật khóa đối xứng tƣơng đối ngắn.
3. Hệ mật khóa đối xứng có thể sử dụng nhƣ một nguyên thuỷ để tạo ra
nhiều công nghệ mật mã khác nhau bao gồm bộ sinh số giả ngẫu nhiên,
hàm băm, lƣợc đồ ký số có hiệu suất tính toán cao.
4. Hệ mật khóa đối xứng có thể đƣợc sử dụng để xây dựng các hệ mật tốt
hơn. Các phép biến đổi đơn giản và dễ dàng phân tích
1.5.2 Điểm yếu của hệ mật khóa đối xứng.
1. Trong bài toán truyền thông tin giữa hai thực thể thì khoá phải đƣợc giữ
bí mật ở cả hai ngƣời
2. Trong một mạng lớn thì có nhiều cặp khóa cần phải quản lý, do đó muốn
quản lý khoá hiệu quả yêu cầu sử dụng một thành phần thứ ba đƣợc tin
cậy không điều kiện.
3. Việc truyền thông tin giữa hai thực thể A và B trong một hệ mật khoá đối
xứng yêu cầu thay đổi khoá thƣờng xuyên, có thể là phải thay đổi đối với
mỗi phiên truyền tin.
4. Công nghệ chữ ký số dựa trên hệ mật khóa đối xứng càng lớn mạnh thì
yêu cầu các khoá phải lớn hơn đối với việc xác minh công khai hoặc phải
sử dụng thành phần thứ ba tin cậy.
1.5.3 Lợi thế của hệ mật khóa công khai
1. Chỉ cần giữ bí mật đối với khoá bí mật
2. Việc quản lý khóa trong một mạng yêu cầu sự hiện diện của duy nhất
một bộ phận đƣợc tin cậy chứ không phải là một thành phần thứ ba tin


19
cậy không điều kiện. Phụ thuộc vào chế độ sử dụng, thành phần thứ ba

đƣợc tin cậy có thể chỉ yêu cầu chế độ “off-line’ chứ không phải chế độ
thời gian thực.
3. Phụ thuộc vào chế độ sử dụng, một cặp khoá khoá bí mật và khoá công
khai vẫn không đƣợc thay đổi đối với một định kỳ thời gian đáng kể. Ví
dụ qua nhiều phiên truyền tin hoặc thậm chí vài năm.
4. Nhiều lƣợc đồ ký khóa công khai mang lại nhiều công nghệ chữ ký số
tƣơng đối hiệu quả. Khoá đƣợc sử dụng để mô tả hàm kiểm tra công
khai nhỏ hơn nhiều so với bản sao của khóa đối xứng
5. Trong một mạng lớn, số lƣơng khoá cần thiết ít hơn nhiều so với
trƣờng hợp dùng khóa đối xứng.
1.5.4 Điểm yếu của hệ mật khóa công khai
1. Tốc độ xử lý đối với hầu hết các phƣơng pháp mã hóa khóa công
khai chậm hơn so với mã hoá khóa đối xứng.
2. Kích thƣớc khoá lớn hơn khóa đối xứng rất nhiều
3. Không có lƣợc đồ khóa công khai nào đƣợc chứng minh là an toàn.
Lƣợc đồ mã hoá khoá công khai hiệu quả nhất đƣợc phát minh để
khẳng định tính an toàn của chúng dựa vào một tập hợp nhỏ các bài
toán lý thuyết số đƣợc thừa nhận là khó.
4. Hệ mật khoá công khai công không có bề dày lịch sử bằng hệ mật
khóa đối xứng. Nó đã đƣợc phát minh vào giữa thập niên 1970.


20
Bảng tổng kết sự so sánh giữa hệ mật khóa đối xứng và hệ mật khóa công khai
Đặc điểm
Hệ mật khoá đối xứng
Hệ mật khoá công khai

Phân phối
Khoá

Bí mật
Công khai
Khoá mã -
dịch
Khoá mã trùng với khoá dịch
Khoá mã khác với khoá dịch
Độ
bảo
mật
Hệ mật này có ƣu điểm lớn là
có thể dùng khoá ngẫu nhiên
vì thế mà có thể đạt tới độ
mật lý tƣởng. Hệ mật này
thƣờng đƣợc dùng để mã hoá
các thông tin đƣợc phân loại
là tuyệt mật và tối mật.
Hệ mật không đối xứng chủ yếu đƣợc
dùng trên các mạng thông tin công
cộng nhƣ Internet. ở đó sự phân phối
khoá bí mật là hết sức khó khăn. Hệ
mật này dùng để xác thực và chữ ký
số.
Lƣợng
khoá
Rất lớn
Không lớn
Phân phối
Phức tạp
Đơn giản (công khai hoá)
Đo độ mật

Không thể giải đƣợc bằng
tính toán (lý tƣởng)
Đo bằng độ phức tạp tính toán (thời
gian để giải bài toán ngƣợc của hàm
một chiều)
Dùng khoá
Một lần, không trùng
Nhiều lần
Khả năng
ứng dụng
Có thể dùng hệ mật này để
mã hoá các thông tin truyền
thông - mã hoá thông tin lƣu
trữ (Khi phân phối khoá
không trở thành vấn đề nan
giải)
- Xác thực và chữ ký số.
- Sử dụng để phân phối khoá khởi
điểm cho hệ mật khó đối xứng.
- Truyền thông.



21
1.6 Hệ chữ ký số
1.6.1 Định nghĩa hệ chữ ký số
Một sơ đồ chữ ký bao gồm các thành phần sau đây
1. M là một tập hữu hạn các thông báo có thể có
2. S là một tập hữu hạn các chữ ký có thể có
3. K là một tập hữu hạn các khoá ký và K' là tâp hữu hạn khoá kiểm thử

4. Một thuật sinh khoá hiêu quả Gen : N

K

K' trong đó K là khoá bí
mật, K' là khoá công khai
5. Thuật toán ký Sign : M

K

S
6. Thuật toán kiểm thử Ver : M

S

K'

{true, false}
Với mỗi sk

K và m

M nào đó, chúng ta biểu diễn phép toán ký bởi
s

Sign
sk
(m) với ý nghĩa " s là một chữ ký của m và đƣợc tạo ra bằng cách sử
dụng khoá sk"
Với mỗi khoá bí mật sk, gọi pk là khoá công khai tƣơng ứng với nó, và với mỗi m



M, s

S. điều cần thiết là: Verify
pk
(m, s) = true nếu Sign
sk
(m)

s (mod N) ngƣợc lại
trả về false.
Chữ ký số khóa công khai dựa trên nền tảng mật mã hóa khóa công khai. Để có thể
trao đổi thông tin trong môi trƣờng này, mỗi ngƣời sử dụng có một cặp khóa: một
công khai và một bí mật. Khóa công khai đƣợc công bố rộng rãi còn khóa bí mật phải
đƣợc giữ kín và không thể tìm đƣợc khóa bí mật nếu chỉ biết khóa công khai.
Với sơ đồ trên, mỗi chủ thể sở hữu một bộ khoá K và K', công bố công khai khoá để
mọi ngƣời có thể kiểm thử chữ ký của mình, và giữ bí mật khoá thực hiện chữ ký trên
các thông báo mà mình muốn gửi đi. Các hàm Ver và Sign phải tính đƣợc một cách dễ
dàng (trong thời gian đa thức), tuy nhiên hàm Sign là khó tính đƣợc nếu không biết
khoá bí mật, điều này đảm bảo bí mật cho việc ký, tức là đảm bảo chống giả mạo chữ
ký.


22
Sơ đồ tạo và kiểm thử chữ ký số đƣợc minh họa nhƣ sau:

Toàn bộ quá trình gồm 3 thuật toán: Thuật toán tạo khóa, thuật toán tạo chữ ký số,
thuật toán kiểm tra chữ ký số.




Hình 1.4 : Minh hoạ tiến trình ký và kiểm tra chữ ký
Xét ví dụ sau: Bob muốn gửi thông tin cho Alice và muốn Alice biết thông tin đó thực
sự do chính Bob gửi. Bob gửi cho Alice bản tin kèm với chữ ký số. Chữ ký này đƣợc
tạo ra với khóa bí mật của Bob. Khi nhận đƣợc bản tin, Alice kiểm tra sự thống nhất
giữa bản tin và chữ ký bằng thuật toán kiểm tra sử dụng khóa công cộng của Bob. Bản


23
chất của thuật toán tạo chữ ký đảm bảo nếu chỉ cho trƣớc bản tin, rất khó (gần nhƣ
không thể) tạo ra đƣợc chữ ký của Bob nếu không biết khóa bí mật của Bob. Nếu phép
thử cho kết quả đúng thì Alice có thể tin tƣởng rằng bản tin thực sự do Bob gửi.
Thông thƣờng, Bob không ký trên toàn bộ bản tin với khóa bí mật mà chỉ thực hiện
với giá trị băm của bản tin đó. Điều này khiến việc ký trở nên đơn giản hơn và chữ ký
ngắn hơn. Tuy nhiên nó cũng làm nảy sinh vấn đề khi 2 bản tin khác nhau lại cho ra
cùng một giá trị băm. Đây là điều có thể xảy ra mặc dù xác suất rất thấp.
1.6.2 Các ƣu điểm của chữ ký số
Việc sử dụng chữ ký số mang lại một số lợi ích sau:
1. Khả năng nhận thực
Các hệ thống mật mã hóa khóa công khai cho phép 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 không cần
phải đƣợc mã hóa mà chỉ cần mã hóa hàm băm của văn bản đó (thƣờng có độ dài cố
định và ngắn hơn văn bản). Khi cần kiểm tra, bên nhận tính lại giá trị băm và kiểm tra
với chữ ký của văn bản nhận đƣợc. Nếu 2 giá trị này phù hợp 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ất nhiên là chúng ta
không thể đảm bảo 100% là văn bản không bị giả mạo vì hệ thống vẫn có thể bị phá vỡ.
Vấn đề nhận thực đặc biệt quan trọng đối với các giao dịch tài chính. Chẳng
hạn một chi nhánh ngân hàng gửi một gói tin về trung tâm dƣới dạng (a, b), trong đó a
là số tài khoản và b là số tiền chuyển vào tài khoản đó. Một kẻ lừa đảo có thể gửi một

số tiền nào đó để lấy nội dung gói tin và truyền lại gói tin thu đƣợc nhiều lần để thu lợi
(tấn công truyền lại gói tin). Vì vậy, cần có biện pháp chống lại tấn công này.
2. 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 tức bị phát hiện. Quá trình mã hóa sẽ ẩn nội dung của gói tin đối với bên thứ
3 nhƣng không ngăn cản đƣợc việc thay đổi nội dung của nó. Một ví dụ cho trƣờng


24
hợp này là tấn công đồng cấu: tiếp tục ví dụ nhƣ ở trên, một kẻ lừa đảo gửi 1.000.000
đồng vào tài khoản của a, chặn gói tin (a, b) mà chi nhánh gửi về trung tâm rồi gửi gói
tin (a, b
3
) thay thế để lập tức trở thành tỷ phú!(nếu gói tin (a, b) không đƣợc ký).
3. 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. Tuy nhiên, khóa bí mật vẫn có thể bị lộ
và tính không thể phủ nhận cũng không thể đạt đƣợc hoàn toàn.
1.6.3 Ứng dụng của chữ ký số
Hiện nay, chữ ký điện tử có thể đƣợc sử dụng trong các lĩnh vực nhƣ: các cam kết gửi
bằng email, nhập các số định dạng cá nhân (PIN) vào các máy ATM, ký bằng bút điện
tử với thiết bị màn hình cảm ứng tại các quầy tính tiền, chấp nhận các điều khoản
ngƣời dùng (EULA) khi cài đặt phần mềm máy tính, ký các hợp đồng điện tử
online Sự cần thiết của chữ ký số, chứng chỉ số đối với giao dịch của Ngân hàng


25

Chƣơng 2
NGHIÊN CỨU HỆ MẬT VÀ CHỮ KÝ SỐ RSA
2.1 Tính an toàn các thuật toán mã hoá
Trong phạm vi của hệ mật khoá công khai, các thuật toán mã hoá giáo khoa thƣờng có
một tính chất không an toàn đuợc phát biểu ở tính chất sau:
Tính chất 1 -Tính không an toàn của các thuật toán mã hoá gíáo khoa
Trong pham vi của mục này, tính an toàn cho một hệ mật đƣợc xem xét theo hai nghĩa
sau đây:
1. An toàn All-or-nothing: Đối với một bản mã là kết quả của một thuật toán
mã hoá nào đó, nhiệm vụ của kẻ tấn công là lấy lại toàn bộ khối bản rõ có
kích thƣớc đƣợc qui định rõ bởi một tham số an toàn của hệ mật mã; hoặc
đối với một cặp bản rõ -bản mã có đƣợc qua một phép mã hoá đã cho,
nhiệm vụ của kẻ tấn công là phát hiện toàn bộ khoá bí mật cơ sở hoặc là thất
bại. Chúng ta nên chú ý đặc biệt đối với nghĩa của từ "nothing". Nó có
nghĩa là kẻ tấn công không có bất kỳ sự hiểu biết nào về sự bí mật đích
trƣớc hoặc sau khi tấn công.
2. Kẻ tấn công bị động: Kẻ tấn công không điều khiển hoặc sửa đổi bản mã khi
sử dụng dữ liệu anh ta đƣợc sở hữu, và không yêu cầu chủ sở hữu khoá
cung cấp dịch vụ mã hoá hoặc giải mã.
Đầu tiên chúng ta giải thích tại sao tính chất 1.1 là tính chất không an toàn. Cụ thể là,
dữ liệu thuần tuý có thông tin phụ không bí mật đối với kể tấn công. Chẳng hạn nhƣ
một số dữ liệu luôn ở trong một giới hạn nhỏ: đa số tiền lƣơng thƣờng là ít ỏi, hoặc
nếu có nhiều hơn thì cũng chỉ là một con số có ý nghĩa rất nhỏ trong mật mã. Một ví
dụ khác đó là một mật khẩu thƣờng là một xâu bit tạo thành tám ký tự. Thông thƣờng,
biết các thông tin phụ giúp kẻ giả mạo thành công và có đƣợc toàn bộ bản rõ.


26
Tính chất 1.2 cũng không an toàn bởi lý do sau đây. Chúng ta không nên mong đợi
một kẻ tấn công tốt bụng và luôn ở thế bị động. Hành vi điển hình của kẻ tấn công là

sẽ thử tất cả các cách mà anh ta có, bao gồm việc dàn xếp để liên hệ với ngƣời dùng
đích, gửi một bản mã tới ngƣời sau để đƣợc giải mã với bản rõ đƣợc trả về cho ngƣời
trƣớc đó. Cách tƣơng tác này đƣợc xem nhƣ là một ngƣời dùng (một sở hữu khoá công
khai) cung cấp một dịch vụ giải mã ngẫu nhiên cho kẻ tấn công [4]
2.2 Hệ mật RSA
Trong mật mã học, RSA là một thuật toán mật mã hóa khóa công khai. Đây là
thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa.
Nó đánh dấu một sự tiến bộ vƣợt bậc của lĩnh vực mật mã học trong việc sử dụng
khóa công cộng. RSA đang đƣợc sử dụng phổ biến trong thƣơng mại điện tử và đƣợc
cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn. Thuật toán đƣợc Ron Rivest,
Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ
Massachusetts (MIT). Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả.
Trƣớc đó, vào năm 1973, Clifford Cocks, một nhà toán học ngƣời Anh làm việc tại
GCHQ, đã mô tả một thuật toán tƣơng tự. Với khả năng tính toán tại thời điểm đó thì
thuật toán này không khả thi và chƣa bao giờ đƣợc thực nghiệm. Tuy nhiên, phát minh
này chỉ đƣợc công bố vào năm 1997 vì đƣợc xếp vào loại tuyệt mật.
Thuật toán RSA đƣợc MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số đăng
ký 4, 405, 829). Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuy nhiên,
do thuật toán đã đƣợc công bố trƣớc khi có đăng ký bảo hộ nên sự bảo hộ hầu nhƣ
không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu nhƣ công trình của Clifford Cocks
đã đƣợc công bố trƣớc đó thì bằng sáng chế RSA đã không thể đƣợc đăng ký
2.2.1 Quá trình tạo khóa
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không
an toàn (ví dụ nhƣ Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình
cặp khóa gồm khóa công khai và khóa bí mật theo các bƣớc sau:
Chọn 2 số nguyên tố lớn p và q với p ≠ q lựa chọn ngẫu nhiên và độc lập.

×