You are on page 1of 107

OAI HOC OUOC GIA HA NOI

TRU’ONG 0/jl H@C CONG NGH§

KHA0 SAT CAC CHY ICk SO DJJ’A TREN


HE RSA, NGHIEN CYU LY@C Dd KY
RSA- PSS VA NHYNG CHUAN HOA

LU¿tN VAN TH¿tC SI


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

1
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

2
4.2.2 Hàm chuyển đổi từ dạng Octet sang dạng số nguyên...........................................55
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

3
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

Bài toán phân tích số nguyên (Integer Factorization


IFP
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

6
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í

7
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ã

8
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

9
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]

10
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 ek: PC,
dk : : C  P là hai hàm cho bởi:

 x  P: ek(x) = E(k,x);  y  C: dk(y) = D(k,y);

ek và dk đƣợ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: dk(ek(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.

11
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=Ee(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.

12
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,A2,A3 là các thực thể khác
nhau. Chú ý rằng nếu thực thể A1, gửi thông điệp m1 sau khi mã hóa nó thành c1 thì A1
không thể khôi phục lại m1 từ c1

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 .

13
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)

14
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

15
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 đó

16
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.

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ể
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.

17
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

18
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.

19
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

Hệ mật khoá công khai


Đặc điểm Hệ mật khoá đối xứng

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

20
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 Signsk(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à: Verifypk(m, s) = true nếu Signsk(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ý.

21
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

22
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

23
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, b3) 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

24
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õ.

25
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.

26
Tính: n = p.q.
Tính: giá trị hàm số Ơle (n)  ( p 1)(q 1) .
Chọn một số tự nhiên e sao cho 1< e <  (n) và là số nguyên tố cùng nhau với  (n) .
Tính: d sao cho de  1(mod (n) )
Một số lƣu ý
Các số nguyên tố thƣờng đƣợc chọn bằng phƣơng pháp thử xác suất.
Các bƣớc 4 và 5 có thể đƣợc thực hiện bằng giải thuật Euclid mở
rộng.

Bƣớc 5 có thể viết cách khác: Tìm số tự nhiên x sao cho d = x( p 1)(q 1) 
1
cũng là
số tự nhiên. Khi đó sử dụng giá trị d mod (p-1)(q-1). e
Từ bƣớc 3, PKCS#1 v2.1 sử dụng λ = LCM(p-1, q-1) thay cho (n)  ( p 1)(q 1) .
Khóa công khai bao gồm: n, e- số mũ công khai (số mũ mã hóa).
Khóa bí mật bao gồm: n, d- số mũ bí mật (số mũ giải mã).
2.2.2 Quá trình mã hóa
Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob chuyển M
thành một số m < n theo một hàm có thể đảo ngƣợc (từ m có thể xác định lại M) đƣợc
thỏa thuận trƣớc.
Lúc này Bob có m và biết n cũng nhƣ e do Alice gửi. Bob sẽ tính c là bản mã hóa của
m theo công thức c = me mod n
Hàm trên có thể tính dễ dàng sử dụng phƣơng pháp tính hàm mũ (theo môđun) bằng
(thuật toán bình phƣơng và nhân) Cuối cùng Bob gửi c cho Alice.
2.2.3 Quá trình giải mã

Alice nhận c từ Bob và biết 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

Biết m, Alice tìm lại M theo phƣơng pháp đã thỏa thuận trƣớc. Quá trình giải mã hoạt động
vì ta có cd  (me)d  med (mod n)

Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nên:

27
med  m (mod p) và med  m (mod q)

Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý số dƣ Trung Quốc, ta có:

med  m (mod pq).

hay cd  m (mod n).

2.2.4 Chuyển đổi văn bản rõ

Trƣớc khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ
(chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không
an toàn. Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề sau:

Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tƣơng ứng

Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá trị me cũng
nhận giá trị nhỏ (so với n). Nhƣ vậy phép môđun không có tác dụng và có thể dễ dàng
tìm đƣợc m bằng cách khai căn bậc e của c (bỏ qua môđun).

RSA là phƣơng pháp mã hóa xác định (không có thành phần ngẫu nhiên) nên kẻ tấn
công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra giữa bản
rõ và bản mã. Khi gặp một bản mã, kẻ tấn công sử dụng bảng tra để tìm ra bản rõ
tƣơng ứng.

Trên thực tế, ta thƣờng gặp 2 vấn đề đầu khi gửi các bản tin ASCII ngắn với m là
nhóm vài ký tự ASCII. Một đoạn tin chỉ có 1 ký tự NUL sẽ đƣợc gán giá trị m = 0 và
cho ra bản mã là 0 bất kể giá trị của e và N. Tƣơng tự, một ký tự ASCII khác, SOH, có
giá trị 1 sẽ luôn cho ra bản mã là 1. Với các hệ thống dùng giá trị e nhỏ thì tất cả ký tự
ASCII đều cho kết quả mã hóa không an toàn vì giá trị lớn nhất của m chỉ là 255 và
2553 nhỏ hơn giá trị n chấp nhận đƣợc. Những bản mã này sẽ dễ dàng bị phá mã.

Để tránh gặp phải những vấn đề trên, trên thực tế RSA thƣờng bao gồm một hình thức
chuyển đổi ngẫu nhiên hóa m trƣớc khi mã hóa. Quá trình chuyển đổi này phải đảm
bảo rằng m không rơi vào các giá trị không an toàn. Sau khi chuyển đổi, mỗi bản rõ
khi mã hóa sẽ cho ra một trong số khả năng trong tập hợp bản mã. Điều này làm giảm

28
tính khả thi của phƣơng pháp tấn công lựa chọn bản rõ (một bản rõ sẽ có thể tƣơng
ứng với nhiều bản mã tuỳ thuộc vào cách chuyển đổi).

Một số tiêu chuẩn, chẳng hạn nhƣ PKCS, đã đƣợc thiết kế để chuyển đổi bản rõ trƣớc
khi mã hóa bằng RSA. Các phƣơng pháp chuyển đổi này bổ sung thêm bít vào M. Các
phƣơng pháp chuyển đổi cần đƣợc thiết kế cẩn thận để tránh những dạng tấn công
phức tạp tận dụng khả năng biết trƣớc đƣợc cấu trúc của bản rõ. Phiên bản ban đầu của
PKCS dùng một phƣơng pháp đặc ứng (ad-hoc) mà về sau đƣợc biết là không an toàn
trƣớc tấn công lựa chọn bản rõ thích ứng (adaptive chosen ciphertext attack). Các
phƣơng pháp chuyển đổi hiện đại sử dụng các kỹ thuật nhƣ chuyển đổi mã hóa bất đối
xứng tối ƣu (Optimal Asymmetric Encryption Padding - OAEP) để chống lại tấn công
dạng này. Tiêu chuẩn PKCS còn đƣợc bổ sung các tính năng khác để đảm bảo an toàn
cho chữ ký RSA (Probabilistic Signature Scheme for RSA - RSA-PSS).

2.2.5 Tính không an toàn của hệ mật RSA


Mục này khảo sát tính an toàn của thuật toán mã hoá RSA. Đối với trƣờng hợp khoá
ngẫu nhiên và thông điệp ngẫu nhiên, sự tồn tại của một CPA hiệu quả chống lại hệ
mật RSA có nghĩa là giả thuyết RSA phải thất bại.

Định nghĩa 1: Hệ mật RSA là an toàn "all-or-nothing" chống lại CPA nếu và chỉ nếu
giả thuyết RSA vững chắc.

Ở đây, ý nghĩa của "all-or-nothing" đã đƣợc giải thích ở phần 2.1 và CPA đã đƣợc
nhắc đến ở mục 1.4

Đầu tiên chúng ta hãy tìm hiểu an toàn kiểu "all-or-nothing". Từ "all" ở đây có nghĩa
là phải tìm toàn bộ khối bản rõ trong trƣờng hợp thông thƣờng: thông điệp có kích
thƣớc của modulo. Trong các ứng dụng thực tế, một bản rõ cụ thể chứa vài thông tin
phụ không bí mật. Hệ mật RSA không che giấu vài thông tin phụ về một bản rõ. Ví
dụ, nếu một bản rõ đƣợc biết nhƣ là một con số bé hơn 1.000.000 (ví dụ một cuộc đấu
giá bí mật hoặc là số tiền lƣơng), sau đó đƣợc cho một bản mã, một kẻ tấn công có thể
tìm ra bản

29
rõ trong quá trình mã hoá trial-and-error.

Thông thƣờng, cho một bản rõ m (< N), với một xác suất đáng kể, chỉ cần m lần thử
để xác định m nếu bộ nhớ đáp ứng đƣợc kích thƣớc m . Tính chất nhân của hàm
RSA nhƣ sau:
(m  m )e  me  me  c 
c (mod N)
1 2 1 2 1 2

Phân tích bản rõ thành thừa số có đƣợc các bản mã tƣơng ứng. Thƣờng một bài toán
phân tích thừa số của bản mã RSA là khó do tính chất biến đổi hỗn hợp của hàm mã
hoá sẽ là cách chung nhất làm cho một bản mã có kích thƣớc của modulo đó. Tuy
nhiên tính chất luỹ thừa cho thấy rằng nếu một bản rõ dễ dàng phân tích thành thừa số
thì bản mã cũng dễ dàng nhƣ thế. Tính lỏng lẻo của sự phân tích thành thừa số nguyên
tố dẫn đến một cuộc tấn công gặp ở giữa.[4]

Tấn công gặp ở giữa và tấn công tích cực vào hệ mã

RSA Điều kiện:

Đặt c = me (mod N) mà Malice biết m < 2 l . Với một xác suất đáng kể, m là một
tích số thoả mãn
l
m = m1  với m 1 , m 2 < 2 (1)
m2 2

Tính chất luỹ thừa của hàm RSA sinh ra c = me . (mod N) (2)
e
m
1 2

MALICE thực hiện nhƣ sau


l
...
1. Xây dựng bộ dữ liệu đƣợc sắp xếp {1 , 2 ,3
e e e
(2 2 ) e } (mod N)

2. Tìm kiếm trong bộ dữ liệu đƣợc sắp xếp để tìm c


 je (mod N) (
ie
l

cho i =1, 2,....2 2 ) ) (3)

30
l

Từ (1), (2), một tấn công vào ở giữa, điều kiện ở (3) sẽ chỉ ra trƣớc 2 2
bƣớc tính toán ie (mod N). Nhƣ vậy thì Malice biết bản rõ i, j và anh ta
khôi phục lại m = i.j.

Hãy làm một phép đo chi phí của Malice. Không gian lƣu trữ cho cơ sở dữ liệu là
l

2 .log N bit. Chi phí thời gian: tạo các phân tử trong cơ sở dữ liệu chi phí
2

l l
OB(2 2 .log 3N), sắp xếp dữ liệu mất OB( l
.2 2 ), cuối cùng, tìm kiếm trong danh sách
2
l l
đƣợc sắp xếp để tìm j (mod N) chi phí OB(2 (
e 2
+log 3 N)), công thức cuối cùng bao
2
gồm cả thời gian cho việc tìm kiếm nhị phân là hàm mũ của modulo. Vậy tổng thời
l
1 l
gian phải trả có độ phức tạp là OB(2 2
.(
2 +log3N)). Nếu chi phí cho không gian lƣu
l

trữ là 2 2 .log N bit, thì chi phí thời gian ít hơn chi phí về lƣu trữ là 2 l. Kiểu tấn công
này có độ phức tạp thời gian giảm đi căn bậc hai lần.

Ví dụ 1 Một ví dụ về tấn công trong thực tế.

Bây giờ chúng ta hãy nghĩ đến một tình huống sử dụng một khoá RSA 1024 bit để mã
hoá một khoá DES dài 56 bit. Đối với một khoá DES ngẫu nhiên, việc khôi phục khoá
có thể thực hiện với một xác suất đáng kể (để phân tích khoá DES thành hai số nguyên
28 bit), sử dụng không gian lƣu trữ 228.1024 = 238 bit =32 gigabit và tính toán đồng dƣ
thức luỹ thừa 229. Chi phí không gian lƣu trữ và thời gian có thể đáp ứng đƣợc bởi máy
tính cá nhân có cấu hình tốt, trong khi tìm kiếm khóa DES trực tiếp từ quá trình mã
hoá yêu cầu tính toán đồng dƣ thức luỹ thừa 256 có thể không thực hiện đƣợc thậm chí
sử dụng một thiết bị tốt.

Bây giờ chúng ta biết rằng chúng ta không nên sử dụng hệ mật RSA để mã hoá một
khoá hoặc mật khẩu ngắn hơn 264 bit. Điều gì xảy ra nếu trong một ứng dụng chúng ta
phải thực hiện mã hoá RSA cho các số nguyên bé, thậm chí là một thông điệp dài bằng

31
một bit. Nhƣ vậy chúng ta nên sử dụng các phƣơng pháp mã hoá.đƣợc giới thiệu ở
chƣơng 3.

2.2 Hệ chữ ký số RSA

2.2.1 Định nghĩa hệ chữ ký số RSA

Lƣợc đồ ký RSA đƣợc định nghĩa nhƣ sau

1. Sinh khoá

Thủ tục sinh khoá

- Chọn hai số nguyên tố ngẫu nhiên p và q thoả mãn |p|  |q|

- Tính N =p.q

- Tính  (N) = (p-1)(q-1)

- Chọn ngẫu nhiên số nguyên e <  (N) thoả mã gcd(e,  (N) ) =1 và tính số

nguyên d thoả mã ed  1 (mod  (N) )

( Do gcd(e,  (N) ) = 1 nên phép đồng dƣ này sẽ không có nghiệm d nếu


dùng phƣơng pháp Euclid mở rộng)

- Công khai khoá (N, e) và giữ bí mật khoá (N, d)

2. Sinh chữ ký

Để sinh chữ ký cho thông điệp m Z*N , Alice tạo ra

s = Signd(m) md (mod N)

3. Kiểm thử chữ ký

Bob là ngƣời muốn thẩm tra biết rằng khoá (N, e) thuộc về Alice. Cho một
cặp thông điệp - chữ ký (m, s). Thủ tục kiểm tra nhƣ sau

Verify(N, e) (m, s) = true nếu m = se (mod N)

32
Cần chú ý rằng các phƣơng pháp chuyển đổi bản rõ, chẳng hạn nhƣ lƣợc đồ ký RSA-
PSS giữ vai trò quan trọng đối với quá trình mã hóa cũng nhƣ chữ ký điện tử và không
đƣợc dùng khóa chung cho đồng thời cho cả hai mục đích trên.
2.2.2 Hệ thống ký hiệu an toàn cho lƣợc đồ ký số
Tính chất 1-Hệ thống ký hiệu an toàn cho lƣợc đồ ký

Chúng ta nói rằng một lược đồ ký là an toàn nếu một kẻ giả mạo không thể tính toán
được để đưa ra một cặp bản rõ-chữ ký hợp lệ. Nghĩa là, kẻ tấn công có được khóa
công khai và sự mô tả của lược đồ ký, được yêu cầu đưa ra một cặp bản rõ-chữ ký hợp
lệ không bao giờ được sử dụng bởi người ký đích. Kẻ tấn công là không hợp lệ nếu
không có gắng đưa ra sự giả mạo thông qua các nhiệm vụ, ví dụ sử dụng các cặp bản
rõ-chữ ký có sẵn khác hoặc liên lạc với người ký đích của quá trình ký để sử dụng các
chữ ký hợp lệ trên các bản rõ qua lựa chọn của anh ta.[4]
Hệ thống an toàn cho lƣợc đồ ký này không đầy đủ cho các ứng dụng bởi vì tính chất
này yêu cầu rằng kẻ tấn công quá yếu hoặc môi trƣờng ký cực kỳ khó để tấn công.
Trong thực tế, cặp bản rõ-chữ ký là riêng cho một khoá công khai và một lƣợc đồ ký
luôn dùng đƣợc vì chúng không có gì bí mật. Thƣờng thì kẻ tấn công có quyền yêu cầu
một ngƣời ký sử dụng các chữ ký trên các bản rõ qua lựa chọn của anh ta. Một kiểu tấn
công nhƣ thế là hợp lý vì nó có thể chọn các bản rõ phù hợp. Tấn công theo kiểu CPA,
kẻ tấn công đƣợc cho một bản rõ đích hoặc có thể chọn các thông điệp dựa vào bản rõ
đích (có thể thực hiện các phép biến đổi đại số trên bản rõ đích) và gửi thông điệp
chính anh ta chọn cho ngƣời ký đích để chúng đƣợc ký. Điều này dƣờng nhƣ ngƣời ký
trợ giúp kẻ tấn công sinh ra chữ ký giả mạo. Nhiệm vụ của kẻ giả mạo là giả mạo một
chữ ký trên bản rõ đích.
Chính bản thân một khoá công khai không cung cấp một "dịch vụ giải mã ngờ
nghệch" cho kẻ tấn công. Mức độ thận trọng có thể là hợp lý nếu việc sở hữu khoá
không đủ mạnh, thậm chí yêu cầu ngƣời dùng có tính thận trọng cao hơn không phải
là giải pháp đúng cho các tấn công thích hợp. Trong trƣờng hợp ký, chúng ta không
thể yêu cầu lâu hơn hoặc khuyến cáo ngƣời dùng cung cấp "các dịch vụ ký ngờ

33
nghệch". Các dịch vụ ký có lẽ không thể tránh đƣợc: Sử dụng các chữ ký của các bản
rõ đƣợc cho có thể là một dịch vụ thông thƣờng hoàn hảo trong nhiều ứng dụng.
2.2.3 Tính an toàn
Độ 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 biến đổi bản rõ an toàn.
Bài toán RSA là bài toán tính căn bậc e môđun n (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. 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 (polynomial-time). 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).
Số lớn nhất có thể đƣợc phân tích ra thừa số nguyên tố có độ dài 663 bít với phƣơng
pháp phân tán trong khi khóa của RSA có độ dài từ 1024 tới 2048 bít. Một số chuyên
gia cho rằng khóa 1024 bít có thể sớm bị phá vỡ (cũng có nhiều ngƣời phản đối việc
này). Với khóa 4096 bít thì hầu nhƣ không có khả năng bị phá vỡ trong tƣơng lai gần.
Do đó, ngƣời ta thƣờng cho rằng RSA đảm bảo an toàn với điều kiện n đƣợc chọn đủ
lớn. Nếu n có độ dài 256 bít hoặc ngắn hơn, nó có thể bị phân tích trong vài giờ với
máy tính cá nhân dùng các phần mềm có sẵn. Nếu n có độ dài 512 bít, nó có thể bị
phân tích bởi vài trăm máy tính tại thời điểm năm 1999. Vì vậy hiện nay ngƣời ta
khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bít.[12]

34
Chƣơng 3
CHỮ KÝ SỐ RSA-PSS

3.1 Tổng quan về sơ đồ chữ ký RSA-PSS


Mật mã xác suất là một ý tƣởng đƣợc đề xuất bởi Goldwasser và Micali từ năm
1984, xuất phát từ yêu cầu giải quyết một vấn đề sau đây: Giả thiết ta có một hệ mật
mã khoá công khai, và ta muốn lập mật mã cho bản rõ chỉ gồm một bit. Điều đó
thƣờng gặp khi ta muốn bí mật truyền đi một thông tin chỉ có nội dung là có hoặc
không, tức là một thông tin đặc biệt quan trọng nhƣng chỉ gồm một bit. Nếu ta dùng hệ
mật mã công khai thƣờng, thì một bản mật mã đã đƣợc truyền đi sẽ là e k(0) hoặc ek(1),
và khi lấy đƣợc bản mã truyền đi trên kênh truyền thông tin công cộng, chỉ cần so sánh
bản mã nhận đƣợc đó với hai bản ek(0) và ek(1) đã đƣợc tính sẵn là đủ biết đƣợc thông
tin mật đƣợc truyền đi là 0 hay 1. Các hệ mật khoá công khai sở dĩ có đƣợc tính bảo
mật là vì từ thông tin bản mã khó lòng khai thác đƣợc thông tin gì về bản rõ, nhƣng rõ
ràng điều đó không còn đƣợc đảm bảo nếu số các bản rõ là rất ít, chẳng hạn nhƣ khi
các bản rõ có độ dài cực ngắn, hay trong trƣờng hợp trên, số các bản rõ chỉ là hai, cụ
thể là 0 và 1.[2]

Mục đích của việc xây dựng mật mã xác suất là để đảm bảo không một thông tin nào
về bản rõ có thể khai thác đƣợc (trong thời gian đa thức) từ bản mã; điều này đối với
các hệ mật khoá công khai, có thể đƣợc thực hiện bằng cách tạo cho một bản rõ nhiều
bản mã khác nhau theo cách ngẫu nhiên với việc sử dụng các số ngẫu nhiên trong tiến
trình lập mã.

“PSS” ám chỉ tới lƣợc đồ chữ ký xác suất (Probabilistic Signature Scheme) khởi đầu
bởi Mihir Bellare và Phillip Rogaway. Công trình của Bellare và Rogaway đã nâng
mức trong cộng đồng nghiên cứu cho một lƣợc đồ chữ ký an toàn. Thực hành dựa trên
hệ chữ ký RSA. RSA-PSS là một cập nhập kết quả của họ dành cho các chuẩn công
nghiệp.

35
RSA-PSS gần đây đã đƣợc đƣa vào các công cụ phần mềm của hãng RSA Security là
RSA BSAFE Crypto-C và Crypto-J toolkits.[10]

3.1.1 RSA-PSS hoạt động nhƣ thế nào ?

RSA-PSS, giống nhƣ hầu hết các lƣợc đồ chữ ký số, tuân theo kiểu mẫu “băm-rồi-ký’.
Giả sử M là văn bản cần phải ký. Chữ ký đƣợc tính trên văn bản M theo 3 bƣớc:

1. Áp dụng hàm băm một chiều vào văn bản M để sinh ra giá trị băm mHash.

2. Biến đổi giá trị băm mHash thành văn bản đã mã hoá EM.

3. Áp dụng thành tố chữ ký vào văn bản đã mã hoá EM sử dụng khoá bí mật để
sinh ra chữ ký S.

Điều đó có thể đƣợc biểu diễn ở dạng công thức nhƣ sau:

S = SigPrim (khoá bí mật, Transform (Hash (M)))

Ở đây, SigPrim ký hiệu thành tố chữ ký. Với hệ mật RSA, đó là công thức kinh điển:

S = EMd mod n với (n, d) là khoá bí mật, còn EM và S đƣợc xem nhƣ các số nguyên.

Giả thiết rằng văn bản đã mã hoá có thể đƣợc khôi phục từ chữ ký, đó là trƣờng hợp
cho các lƣợc đồ đƣợc mô tả ở đây, chữ ký đƣợc kiểm tra trong 3 bƣớc:

1. Áp dụng hàm băm một chiều vào văn bản để sinh ra giá trị băm mHash.

2. Áp dụng thành tố kiểm định vào chữ ký S để khôi phục văn bản đã mã hoá
EM.

3. Xác định xem văn bản đã mã hoá EM có là biến đổi hợp lệ của giá trị băm
mHash. (Nếu chỉ có một biến đổi hợp lệ cho mỗi giá trị băm, thì ngƣời ta có
thể chỉ cần biến đổi mHash một lần và so sánh với EM; nhƣng nếu có hơn
một biến đổi hợp lệ, thì quá trình xử lý tiếp là cần thiết).

Trong lƣợc đồ chữ ký PKCS #1 v1.5, thao tác Transform bao gồm một phép đệm cố
định, giá trị băm đơn thuần đƣợc nối vào đầu bằng một chuỗi tiếp đầu ngữ có dạng 00
01 ff ff … ff ff 00 (theo dạng hex), sau đó là một chuỗi định ra hàm băm. Trong RSA-

36
PSS, thao tác Transform là ngẫu nhiên hơn nhiều. Thay cho một phép đệm cố định,
lƣợc đồ sinh ra một giá trị “salt” ngẫu nhiên, sau đó áp dụng hàm băm và hàm sinh
mặt nạ vào giá trị salt và giá trị băm để sinh ra văn bản mã hoá. Biến đổi đƣợc minh
hoạ ở dƣới đây, bao gồm các bƣớc sau:

1. Sinh ra một giá trị ngẫu nhiên salt.

2. Nối phần đệm cố định, giá trị băm mHash và salt để tạo ra chuỗi M’.

3. Áp dụng hàm băm vào chuỗi M’ để tính ra giá trị băm H.

4. Nối phần đệm cố định và giá trị salt để tạo ra khối dữ liệu DB

5. Áp dụng hàm sinh mặt nạ vào chuỗi H để tính ra giá trị mặt nạ dbMask.

6. Áp dụng phép toán XOR đối với giá trị mặt nạ dbMask với khối dữ liệu DB
để tính xâu mặt nạ maskedDB

7. Nối maskedDB, giá trị băm H và phầm đệm cố định để tính ra văn bản mã
hoá EM.

Để xác định xem văn bản đã mã hoá EM có phải là biến đổi hợp lệ của giá trị băm đã
cho mHash, ngƣời ta đơn thuần làm ngƣợc các bƣớc từ 7 đến 4 nhằm khôi phục giá trị
salt và giá trị băm ban đầu H, sau đó lặp lại các bƣớc 2 và 3 để thấy rằng giá trị băm có
đúng hay không.

Do có hàm băm và hàm sinh mặt nạ, văn bản đã đƣợc mã hoá EM hầu nhƣ hoàn toàn
ngẫu nhiên đến mức không có một cấu trúc đặc biệt có thể phân biệt nó với chuỗi ngẫu
nhiên có cùng độ dài với giả thiết rằng 2 hàm đƣợc xem nhƣ là các “hộp đen” (đó
chính là “các tiên đoán ngẫu nhiên”). Chỉ có các phần không ngẫu nhiên là phần đệm
bc ở cuối (đƣợc đƣa vào để tƣơng thích với các chuẩn khác) và có thể một số bit 0 ở
đầu (khi EM đƣợc xem nhƣ là số nguyên modulo n). Thêm vào đó, phép biến đổi là
đƣợc ngẫu nhiên hoá bởi vì giá trị salt ngẫu nhiên: có nhiều bản mã hoá có thể, cho
nên có nhiều chữ ký có thể cho một văn bản đã cho M. Điều này giúp đỡ cho phân tích
độ an toàn đƣợc mô tả về sau.

37
Hình 3.1. Minh hoạ hoạt động của lƣợc đồ ký RSA-PSS

3.1.2 Ƣu thế của RSA-PSS


Ƣu thế chính của RSA-PSS đối với lƣợc đồ chữ ký PKCS#1 v1.5 kinh điển ở
chỗ các phƣơng pháp hiện đại về phân tích độ an toàn có thể liên hệ độ an toàn của nó
với độ an toàn của bài toán RSA. Trong khi chƣa có tấn công nào đƣợc biết đối với
lƣợc đồ kinh điển và việc giải bài toán RSA cơ sở (tức là phân tích modulus) là
phƣơng pháp tốt nhất đƣợc biết để giả mạo chữ ký, thì không có một mối liên hệ nào
giữa lƣợc đồ chữ ký số PKCS#1 v1.5 với bài toán RSA đƣợc chứng minh. RSA-PSS,
ngƣợc lại, có một chứng minh nhƣ vậy nếu ngƣời ta mô hình hoá các hàm băm của nó
nhƣ là các “tiên đoán ngẫu nhiên” nhƣ vẫn thƣờng đƣợc làm.

Trong các năm gần đây có một xu hƣớng hƣớng tới các kỹ thuật mật mã đƣợc gọi là

38
“an toàn chứng minh đƣợc”. Nếu một lƣợc đồ chữ ký không có chứng minh an toàn,
thì có thể về mặt lý thuyết các chữ ký dễ bị giả mạo, trong khi bài toán nằm dƣới vẫn
là khó giải. Mặc dù theo lý thuyết độ phức tạp không cho phép chúng ta chứng minh
rằng bài toán cơ sở, tức là RSA, là chắc chắn khó giải, chúng ta sẽ có một sự tin tƣởng
rằng nếu bài toán đó là thực sự khó giải, thì các chữ ký cũng khó giả mạo nhƣ vậy.

RSA-PSS mang lại tin cậy cao độ vào việc thu gọn khoảng cách giữa giả thuyết bài
toán RSA là khó giải và khẳng định rằng các chữ ký là khó giả mạo. Thực ra, RSA-
PSS có một trong những khoảng cách nhỏ nhất nhƣ vậy trong số các kỹ thuật “an toàn
chứng minh đƣợc” hiện thời; theo cách nói thông thƣờng, phép chứng minh cho độ an
toàn của RSA-PSS là rất “chặt”. Việc ngẫu nhiên hoá trong lƣợc đồ chữ ký đóng một
vai trò quan trọng trong việc đạt đƣợc tính chặt và là một trong những đóng góp cơ
bản từ lƣợc đồ PSS của Bellare và Rogaway.

Một ƣu thế nữa của RSA-PSS là, do việc ngẫu nhiên hoá, kẻ tấn công không biết xem
trƣớc văn bản đã đƣợc mã hoá EM nhƣ thế nào. Điều này làm cho các tấn công “phân
tích lỗi” kiểu nhƣ đƣợc đề xuất bởi Bellcore một số năm trƣớc đây khó có thể thực
hiện đƣợc (xem RSA Laboratories’ [14])

3.1.3 Các công trình chuẩn

RSA-PSS đã đƣợc thêm vào phiên bản 2.1 của PKCS #1: RSA
Cryptography Standard, nó đã đƣợc công bố bởi RSA Laboratories vào tháng 6 năm
2002. Tài liệu này đã đƣợc công bố lại là IETF RFC 3447.

Lƣợc đồ chữ ký số này đã đƣợc khuyến cáo bởi dự án NESSIE của châu Âu, nó cũng
nhận đƣợc đánh giá đồng tình bởi dự án CRYPTREC của Nhật Bản. RSA-PSS cũng
có ở trong phiên bản dự thảo (gần nhƣ cuối) của IEEE P1363a. Một lƣợc đồ đồng hành
cung cấp khả năng “khôi phục văn bản” cũng đƣợc đƣa vào chuẩn quốc tế ISO/IEC
9796-2:2002.

RSA Laboratories cũng khuyến khích chuyển dần sang dùng RSA-PSS nhƣ là các
chuẩn khác nhƣ: SHA-256 hay AES. RSA Laboratories hoan nghênh các đề nghị cho

39
các tổ chức khác nhằm khuyến khích lƣợc đồ mới RSA-PSS.

3.1.4 Một số nhận xét về lƣợc đồ ký RSA-PSS

Mục “9.7 RSA-PSS” trong tài liệu CD18 của dự án số IST-2000-12324 của
NESSIE nhận xét về lƣợc đồ RSA-PSS nhƣ sau :

Không có một kẻ hở nào được tìm thấy trong chứng minh độ an toàn, nó cho một suy
dẫn hiệu quả. RSA-PSS dựa vào bài toán RSA đã được nghiên cứu kỹ và cho phép
kiểm tra chữ ký nhanh. Nó đã được lựa chọn.

Trang 68 báo cáo tổng kết của CRYPTREC 2003 có viết về độ an toàn của RSA-PSS
nhƣ sau:

PSS là lược đồ mã hoá chữ ký số được đề xuất bởi Bellare và Rogaway. Bằng cách
thêm một số thành phần các số ngẫu nhiên vào văn bản sẽ được ký, các lược đồ chữ
ký tất định giống như chữ ký RSA có sinh ra các chữ ký khác nhau. RSA-PSS không
chỉ thay đổi lược đồ chữ ký tất định thành xác suất mà còn cho phép độ an toàn của
nó là chứng minh được trong mô hình tiên đoán ngẫu nhiên .[14]

Đối với độ dài salt, một số tài liệu cho rằng kích thƣớc 30-bit là đủ để đảm bảo độ an
toàn mặc dù kích thƣớc salt 180-bit là cần thiết trong kỹ thuật chứng minh trƣớc đây.

3.2 Định nghĩa lƣợc đồ ký PSS2000


3.2.1 Lƣợc đồ ký điện tử PSS96
Lƣợc đồ ký PSS96 bao gồm một phép toán mã hóa PSS96-ENCODE và một
phép toán xác minh PSS96-VERIFY đƣợc tham số hóa bởi hai số nguyên dƣơng kr và
kh thỏa mãn kr+kh ≤ k -1, trong đó k là độ dài bit của modun phép toán xác minh RSA,
kr là độ dài bit của muối, một phần tử đƣợc sinh ngẫu nhiên trong quá trình mã hóa.
PSS96 dựa trên sự kết hợp giữa hai hàm

Hàm h : {0, 1}*  {0, 1} kh và hàm g : {0, 1}kh  {0, 1}kg

Trong đó kg = k -1 -kh . Kết quả hàm g trả về che giấu muối trong thông điệp
đƣợc mã hóa. Vì vậy g thƣờng đƣợc xem nhƣ là hàm sinh mặt nạ. Chúng ta xem g và

40
h nhƣ là hàm băm. Trong tài liệu này mỗi khi nhắc đến h(m) nghĩa là nói đến việc băm
chuỗi m.

Cho một tập hữu hạn S, chọn ngẫu nhiên một phần tử s từ tập S (ký hiệu là s
S). Phép toán mã hóa và phép toán xác minh PSS96 thực hiện nhƣ sau

PSS96-ENCODE(M)

(1) r ; /* Sinh ngẫu nhiên số r có độ dài bit là kr*/.


w ← h(M || r) ; /* Phép toán || là phép nối hai dãy bit */.
r* =g(w)  (|| r ); /* Phép là phép toán XOR bit */.
Return y = 0 || r* || w ;

PSS96-VERIFY(M,y)
(1) Viết y = b || r* || w ; (| b |=1, | r*| = kg , | w | = kh )
(2) Nếu b =1 trả về kết quả bằng 0 và dừng quá trình xác minh (3) Viết g(w)  r*=  || r ; (|  |=kg-k

(4) Nếu h(M || r) =w &  = trả về kết quả bằng 1 ngƣợc lại bằng 0

Phép toán ký đầy đủ RSA-PSS96-SIGN có đầu vào là thông điệp M, tính

y = PSS96-ENCODE(M), trả về x = f-1(y), trong đó f chính là phép toán xác minh của
hệ mật mã RSA. Phép toán xác minh RSA-PSS96-VERIFY có đầu vào là thông điệp
M và chữ ký x, tính y = f(x), sau đó xác minh kết quả trả về bằng cách áp dụng thuật
toán PSS96-VERIFY(M, y)

3.2.2 Lƣợc đồ ký điện tử PSS2000

41
Phép toán lập mã PSS2000 dựa trên PSS96, đƣợc đƣa vào trong bản thảo của
IEEE P1363a và PKCS #v2.1, đã đƣợc gửi tới NESSIE và dự án CRYPTREC Nhật
Bản. Những đặc tính mới của phiên bản PSS2000 so với PSS96 nhƣ sau :

1. Thay vì tính toán băm M||r, ngƣời ta tính toán chỉ băm một mình M , bƣớc
tiếp tính toán băm 0u||h(M)||r, trong đó u là một số nguyên ( chỉ định hiện tại
u =64). Sự thay đổi này tƣơng đƣơng với việc thay thế đầu vào là M trong
PSS96-ENCODE bằng 0u ||h(M). Chuỗi 0u đƣợc thêm vào thích hợp với
phép toán lập mã cho phép khôi phục lại thông điệp ban đầu.
2. Thông điệp đƣợc mã hóa bới PSS2000 có chín hoăc mƣời một bit cố định,
trong khi đó chỉ có một bit đầu tiên đƣợc cố định trong lƣợc đồ PSS96. Ở
lƣợc đồ PSS2000, bit đầu tiên là bit 0 và tám bit cuối cùng có giá trị hexa là
bc hoặc cc; trong trƣờng hợp nhận giá trị là cc thì thành phần kế tiếp tám bit
cuối cùng lập thành một định danh băm. Các bit cố định thêm vào này
tƣơng thích với lƣợc đồ chữ ký nguyên thủy Rabin-Williams IFSP-RW
trong IEEE std 1363-2000. Sự thay đổi này tƣơng đƣơng với việc thay thế
đầu ra là y thành y||bc và định nghĩa lại kg =k -1 - kh
3. Phần tử r* đƣợc định nghĩa bằng g(w) ( ||1||r). Phần tử phân định
1 quan trọng đối với lƣợc đồ RSA-PSS-R cho phép khôi phục lại thông
điệp. Đáng chú ý là ngƣời gửi và ngƣời nhận không cần phải đồng ý trƣớc
với nhau về độ dài bit của muối. Độ dài này tính toán đƣợc từ r* g(w).
Điều này không ảnh hƣởng đến tính an toàn của lƣợc đồ. Chúng ta sẽ chứng
minh rằng thật khó thám mã một chữ ký khi mà độ dài muối không đƣợc
thông báo bởi ngƣời ký.

Lƣợc đồ PSS2000 bao gồm một phép toán lập mã PSS2000-ENCODE và một phép
toán xác minh PSS2000-VERIFY. Để thuận tiện chúng ta xét giá trị băm của thông
điệp M là H=h(M) làm đầu vào thay vì thông điệp M. Đặt E là một chuỗi bit cố định
có độ dài bit kE, trong đó kE là số nguyên thỏa mãn rằng kr + kh + kE k -1. Cụ thể E là
chuỗi bc = 10111100 hoặc chuỗi HID||cc, trong đó HID là một bộ tám, do đó kE = 8 hoặc

42
16. Các ký hiệu đƣợc sử dụng nhƣ trong lƣợc đồ RSA-PSS96, ngoại trừ kg đƣợc định
nghĩa lại bằng k -1 – kh - kE

PSS2000-ENCODE(H)

(1) r ; /* Sinh ngẫu nhiên số r có độ dài bit là kr*/.

(2) w ← h(0u ||H||r) ; /* Phép toán || là phép nối hai dãy bit */.

(3) r* =g(w)  ( ||1|| r ); /* Phép là phép toán XOR bit */.

(4) Return y = 0 || r* || w ||E;

PSS2000-VERIFY(H,y)

(1) Viết y = b || r* || w ||E’ ; (| b |=1, | r*| = kg , | w | = kh, | E’ | = kE )


(2) Nếu b =1 hoặc E ≠ E’trả về kết quả bằng 0 và dừng quá trình xác minh (3) Viết g(w)  r*=  ||

(4) Nếu h(0u || H || r) =w &  = ||1 trả về kết quả bằng 1 ngƣợc lại
bằng 0

Phép toán ký đầy đủ RSA-PSS2000-SIGN nhận thông điệp M làm đầu vào, tính
H=h(M) và y = PSS2000-ENCODE(H) và trả về giá trị x =f--1(y).

3.2.3 Lƣợc đồ tổng quát hóa

Mục này chúng ta phân tích tính an toàn của lƣợc đồ RSA-PSS2000 từ những
khía cạnh khác nhau. Để có thể nghiên cứu một cách tổng quát, chúng ta giới thiệu
một lƣợc đồ lập mã GenPSS-ENCODE tổng quát mà lƣợc đồ PSS2000-ENCODE là
một trƣờng hợp cụ thể của lƣợc đồ này. Thay vì có một độ dài muối cố định, chúng ta
chấp nhận các độ dài muối đƣợc nhặt ra từ một tập hợp số nguyên không rỗng Ksig.
Tƣơng tự thế phép toán xác minh GenPSS-VERIFY chấp nhận các độ dài của muối từ

43
một tập hợp số nguyên không rỗng K ver. Theo cách này chúng ta có thể nghiên cứu hai
vấn đề sau đây:

1. Kẻ giả mạo cố gắng tạo ra một chữ ký với một độ dài muối không đƣợc cung
cấp bởi ngƣời ký. Điều này tƣơng ứng với trƣờng hợp Kver\Ksig khác rỗng.
2. Kẻ giả mạo cố gắng tạo ra một chữ ký với một độ dài muối thuộc tập hợp độ
dài muối đƣợc cung cấp bởi ngƣời ký. Điều này tƣơng ứng với trƣờng hợp Ksig\
Kver khác rỗng.

Đặt K = Ksig Kver

PSS2000-ENCODE bao gồm hai phép toán độn đơn giản, một phép toán biến đổi (H,
r) thành 0u || H || r và một phép toán biến đổi r thành ||1||r.

Để có một số điều chỉnh nhỏ các phép toán và đơn giản hóa các ký hiệu, chúng ta giới
thiệu hai hàm ánh xạ:

: {0, 1}K →{0, 1}*

: {0, 1}K →

Hàm có đầu vào là (H, r) (một giá trị và một muối). có đầu vào là muối r. Chúng
ta giả sử rằng , dễ dàng tính ngƣợc, nghĩa là dễ dàng tính đƣợc giá trị r từ (r), và
cũng tƣơng tự đối với .

3.2.4 Định nghĩa lƣợc đồ RSA-GENPSS

Sử dụng hệ thống ký hiệu giống nhƣ trong lƣợc đồ PSS2000-ENCODE. Các


tham số đầu cho lƣợc đồ này là chuỗi H có độ dài bit kh và độ dài bit của muối đƣợc
chọn từ tập Ksig là k0

GenPSS-Encode(H, k0) bao gồm các bƣớc nhƣ sau:

44
GENPSS- ENCODE(H,k0)

(1) r R {0,1}k 0

(2) w  h((H , r))

(3) r*  g(w)  (r)


Tham số đầu vào cho GENPSS-VERIFY là chuỗi H có độ dài kh , một chuỗi y có độ
(4)k Return
dài – 1, và ymột
= 0muối
|| r* ||w||E
có độ dài k0 đƣợc chọn từ tâp hợp Kver.
GenPSS-Verify (H, y, k0) được tiến hành theo các bước sau:

Mục đích ycủa


(1) Viết chúng
dƣới dạngta là định nghĩa hai lƣợc đồ ký dựa trên phƣơng pháp lập mã
GENPSS. Một lƣợc đồ thông thƣờng RSA-GENPSS và một lƣợc đồ ”rút gọn ” RSA-
y= b || r* ||w ||E’ (|b| = 1,|r*|=kg , |w|=kh , |E’| = kE)
PSS-REDUCED. Lƣợc đồ thông thƣờng là lƣợc đồ tổng quá hóa trực tiếp của RSA-
(2) Nếu trong
PSS2000, b = 1 hoặc
khi đóE lƣợc
# E’ cho ra làgọn
đồ rút 0 và dừng
nhận giákếttrịthúc
bămquá
củatrình xácđiệp
thông minh.
đƣợc ký làm
tham
(3) số
Nếuđầu
cóvào
thể thay vì chính
thì viết thông
g (w)  r* =điệp
 (r)đó.
vớiMục đíchngƣợc
| r|=k0, của việc
lạigiới
cho thiệu
ra là 0lƣợc
và đồ rút
gọn là cho phép chúng ta đƣa ra chứng minh tính an toàn của lƣợc đồ RSA-GENPSS
dừng quá trình xác minh
sau hai bƣớc.
(4) Nếu h( (H,r)) = w thì cho ra là 1, ngƣợc lại cho ra là 0.
1. Bƣớc thứ nhất chúng ta diễn đạt tính an toàn của RSA-GENPSS dƣới dạng
RSA-GENPSS-REDUCED.

2. Bƣớc thứ hai chúng ta biến đổi những chứng minh tính an toàn cho lƣợc đồ
RSA-PSS96 thành những chứng minh tính an toàn cho RSA-GENPSS-

45
REDUCED. Kết hợp hai bƣớc này chúng ta có đƣợc một bằng chứng cho lƣợc
đồ RSA-GENPSS.

Chúng ta đã định nghĩa RSA-GENPSS-REDUCED(Ksig, Kver). Tham số đầu vào cho


phép toán ký của lƣợc đồ ký thu gọn RSA-GENPSS-REDUCED_SIGN là một chuỗi
có độ dài kh và một muối có độ dài k0.

Phép toán ký RSA-GenPSS-Reduced-Sign(H, k0) đƣợc thực hiện nhƣ sau

(1) ysố
Tham GenPSS-Encode(H,k
 đầu 0) xác minh của lƣợc đồ ký thu gọn RSA-GENPSS-
vào cho phép toán
REDUCED_VERIFY
(2) x  f -1(y) là một chuỗi có độ dài kh, một chữ ký x và một muối có độ dài k0.

Phép
(3) toán
Cho ký RSA-GenPSS-Reduced-Verify(H,
ra kết quả là x. x, k0) đƣợc thực hiện nhƣ sau

(1) y  f(x)
Phép toán ký và xác minh chính của lƣợc đồ RSA-GENPSS-SIGN và RSA-GENPSS-
(2) b nhận
VERIFY GenPSS-Verify(H,y,k
chuỗi M có độ dài0)bất kỳ làm đầu vào thay vì chuỗi H có độ dài kh.

(3) Cho ra kết quả là b

RSA-GENPSS-SIGN(M,k0)

(1) H  h(M)

(2) x  RSA-GenPSS-REDUCED-SIGN(H,k0)

(3) Cho ra kết quả là x.

4
RSA-GENPSS-VERIFY(M,x,k0)

(1) H  h(M)

(2) x  RSA-GenPSS-REDUCED-VERIFY(H,x,k0)

(3) Cho ra kết quả là b

3.2.5 Các mô hình an toàn

Chúng ta muốn định nghĩa các mô hình an toàn cho RSA-GENPSS và RSA-
GENPSS-REDUCED. Trong mỗi một mô hình này ngƣời giả mạo biết khóa công khai
và đƣợc cho phép truy cập vào oracle ký và hai oracle băm mô phỏng g và h. Mô hình
có các tham số đầu vào là qsig, qhash và t. Tham số qsìg là giới hạn trên số các yêu cầu tới
oracle ký, qhash là giới hạn trên tổng số các yêu cầu tới oracle băm. Cuối cùng t là giới
hạn trên về độ phức tạp của phép giả mạo (gồm thời gian thực hiện và kích thƣớc mô
tả).

Mục đích của kẻ giả mạo là xây dựng một cặp (M, x), trong đó x là chữ ký hợp lệ của
M. Dĩ nhiên x không phải là đáp ứng của yêu cầu ký có đầu vào M, tuy nhiên có thể x
đáp ứng yêu cầu của phép toán ký với một tham số đầu vào khác và có thể có những
yêu cầu ký khác với đầu vào là M. Lược đồ ký (t, qsig, qhash,  )-an toàn nếu như không
có hoạt động giả mạo nào với độ phức tạp t và xác suất thành công là  thực hiện
được tối đa qsig phép toán ký và qhash hàm băm.[5]

Trƣớc tiên chúng ta định nghĩa một mô hình an toàn cho RSA-GENPSS-REDUCED.
Ngƣời giả mạo biết khóa công khai và đƣợc cho phép truy cập tới oracle ký và hai
oralce ngẫu nhiên độc lập mô phỏng g và h tƣơng ứng. Oralce đáp ứng ngẫu nhiên các
yêu cầu Q1, Q2, .. với các đáp ứng R1, R2…, trong đó mỗi Ri đƣợc chọn ngẫu nhiên

47
phân bổ đều từ một tập hợp cố định và độc lập với các đáp ứng khác. Để tính h(x),
ngƣời giả mạo gửi x tới oracle h, h yêu cầu x = (H , r) , trong đó |H| = kh và | r| Ksig
 Kver. Để tính g(w), ngƣời giả mạo gửi w đến hàm băm g và g yêu cầu |w|= kh.

Thứ hai, chúng ta định nghĩa một mô hình an toàn cho RSA-GENPSS. Mô hình này
tƣơng tự mô hình RSA-GENPSS-REDUCED. Một lần nữa chúng ta có oralce ký và
hai oracle ngẫu nhiên cho g và h. Miền đối với g tƣơng tự nhƣ trên, trong khi oracle h
chấp nhận các tham số đầu vào có độ dài bất kỳ. Tuy nhiên ở mô hình này có sự phụ
thuộc giữa hai oracle. Cụ thể trong đặc tả dự thảo gần đây của RSA-PSS2000, g(w)
đƣợc định nghĩa bằng kg = k – 1 - kh - kE bit đầu tiên của chuỗi

h( 0 (w))|| h( 1 (w))|| h( 2 (w))||… (1)

Ở đây i (w) = w|| (i)32, trong đó (i)32 là biểu diễn của i ở dạng 32 bit low-endian. Nói
một cách cụ thể có những tƣong tác giữa h và g. Những tƣong tác này không xuất hiện
trong lƣợc đồ rút gọn. Vì thế trong lƣợc đồ RSA-PSS2000 độ dài bit của (H , r) bằng
u +kh+ kr. Do u = 64 nên không bao giờ xảy ra trƣờng hợp (H , r) = | 1(w) | = kh+32.

Chúng ta giả sử rằng kẻ giả mạo của lƣợc đồ RSA-GENPSS đƣa ra một chữ ký (M, x),
thì kẻ giả mạo phải gửi tất cả yêu cầu h-oracle và g-oracle cần thiết để xác minh x.

3.2.6 Một số xem xét về vấn đề lƣu trữ

Một nhân tố quan trọng làm giảm tính an toàn là một phép toán giả mạo oracle
ngẫu nhiên, chẳng hạn nhƣ là một thuật toán mô phỏng các oracle ngẫu nhiên. Không
thể ngăn chặn ngƣời giả mạo gửi một yêu cầu oracle bất kỳ hơn một lần. Do các đáp
ứng và các yêu cầu phải đồng nhất với nhau nên phép toán giả mạo phải lƣu toàn bộ
lịch sử các yêu cầu và đáp ứng . Đây là một vấn đề bởi vì đầu vào của hàm h trong
lƣợc đồ RSA-GENPSS có độ dài tùy ý. Do đó các yêu cầu lƣu trữ đối với phép toán
giả mạo có lẽ không thể thực hiện đƣợc, trong khi đó ngƣời giả mạo có những cách
thức nhất định để xây dựng các yêu cầu mà không cần phải lƣu trữ chúng.

48
Có những cách thức để giải quyết vấn đề này. Cụ thể là sử dụng một hàm xác định
đuợc chọn ngẫu nhiên từ tập hợp H rộng lớn, là một thể hiện của h dành cho các yêu
cầu dài và sử dụng một thể hiện oracle ngẫu nhiên của h chỉ dành cho các yêu cầu
ngắn. Giả sử việc tìm ra xung đột trong một hàm đƣợc chọn ngẫu nhiên từ tập H là
khó, chúng ta có đƣợc sự bớt an toàn với giới hạn về các yêu lƣu trữ đối với hoạt động
giả mạo hợp lý. Tuy nhiên cách tiếp cận này cũng đã yêu cầu một vài định nghĩa mang
tính kỹ thuật. Hơn nữa xác suất để ngƣời giả mạo tìm ra một xung đột sẽ không chỉ
còn phụ thuộc vào số lƣợng các yêu cầu mà còn phụ thuộc vào thời gian thực hiện và
khả năng lƣu trữ của hoạt động thám mã. Điều này làm mờ đi sự rõ ràng của phép rút
gọn tính an toàn khá phức tạp.[4]

Giả định thời gian để hoạt động thám mã thực hiện tất cả các yêu cầu gần bằng tổng số
bit của các yêu cầu thay vì tổng số các yêu cầu. Theo cách này thì yêu cầu lƣu trữ của
hoạt động giả mạo có giới hạn trên bằng tổng thời gian thực hiện của phép giả mạo.

3.2.7 Phân tích cấu trúc hàm băm

Trong lƣợc đồ RSA-PSS2000 thông điệp M đƣợc băm qua hai bƣớc để đƣa ra
kết quả w. Bƣớc đầu tiên M đƣợc băm một mình cho kết quả là h(M), bƣớc thứ hai
h(M) đƣợc băm cùng với muối và một padding nào đó nữa. Ở lƣợc đồ RSA-PSS96 chỉ
thực hiện một lần băm. Điều này dẫn đến sự khác nhau về tính an toàn của hai lƣợc đồ.
Và điều này cũng tƣơng đƣơng với việc nghiên cứu sự khác nhau tƣơng ứng giữa hai
lƣợc đồ RSA-GENPSS và RSA-GENPSS-REDUCED.

Sử dụng hệ thống ký hiệu đƣợc nêu trong phần đầu của tài liệu. Ký hiệu  biểu thị số
lƣợng chuỗi y sao cho h(y) phụ thuộc vào g(w) với mỗi w đã cho. Chúng ta giả sử rằng
đối với mọi giá trị w thì  giống nhau. Chúng ta giả sử rằng nếu h(y) phụ thuộc vào
g(w) thì toàn bộ giá trị h(y) đƣợc trích trực tiếp từ g(w). (Ví dụ h(y) là một chuỗi con
của g(w)). Nếu g đƣợc định nghĩa nhƣ ở (1), thì  = [(k-1- kh – ke)/kh] (nếu g và h độc
lập với nhau thì  = 0). Nhƣ đã nói ở trên đặt  0(w), …, , 1 (w) biểu thị các chuỗi

49
thỏa mãn h( i (w)) đƣợc trích trực tiếp từ g(w). Giả sử rằng w đƣợc trích từ i (w) dễ
dàng. Điều này đúng với lƣợc đồ RSA-PSS2000
vì i (w) = w ||(i)32.

Bổ đề 1

Cho một phép giả mạo F trong mô hình an toàn của lƣợc đồ RSA-GENPSS với tối đa
qsig lần yêu cầu ký và qhash lần yêu cầu tiên đoán h và g, chúng ta định nghĩa một phép
giả mạo Fred trong mô hình an toàn RSA-GENPSS-REDUCED với tối đa qsig lần yêu
cầu ký và qhash+qsig lần yêu cầu tiên đoán h và g. Fred thành công nếu F thành công trừ
phi có va chạm của h trong số các giá trị thu đƣợc qua các yêu cầu tiên đoán h của F.
Số các giá trị nhƣ vậy nhiều nhất là

qtot= max{  , 1}.qhash + ( +2).qsign (2)

Nhận xét

1. Trong trƣờng hợp qhash lớn hơn qsig thì qtot xấp xỉ bằng max{  , 1}.qhash

2. Thời gian thực hiện phép giả mạo Fred lớn hơn nhiều thời gian thực hiện phép
giả mạo F cộng với thời gian cần thiết để thực hiện qsig lần yêu cầu băm..

Chứng minh

Cho F là phép giả mạo với mục đích đƣa ra một chữ ký trong mô hình an toàn RSA-
GENPSS. Chúng ta muốn định nghĩa một phép giả mạo Fred trong mô hình an toàn
RSA-GENPSS-REDUCED theo thuật ngữ của F. Để thỏa mãn điều đó Fred phải mô
phỏng các tiên đoán của F.

g-Oralce dễ mô phỏng bởi vì các g-oralce trong lƣợc đồ RSA-GENPSS và RSA-


GENPSS-REDUCED giống nhau. Oracle ký cũng dễ dàng mô phỏng. Khi F gửi một
yêu cầu Q tới oracle-ký, Fred giả mạo h- oracle của F theo cách đƣợc mô tả dƣới đây đối
với đầu vào Q, gửi chuỗi kết quả H tới oralce ký của mình và nhận đƣợc chữ ký x.

Giả sử F gửi một yêu cầu Q tới h-oracle. Khi đó có thể xảy ra một số khả năng sau

50
1. Trƣờng hợp Q có dạng Q = i (w) = (w) || (i)32, với | w| = kh và i{0, …,  -1}
Khi đó, w là một yêu cầu thƣờng gặp của g-oracle trong mô hình thu gọn. Do
đó ta chỉ việc lấy giá trị của g (trong lƣợc đồ thu gọn) tại điểm w, và từ xâu kết
quả nhận đƣợc g(w) có dạng (1), ta lấy đƣợc giá trị h(Q)=H chính là xâu con
thứ i – 1 (có độ dài kh). Trong trƣờng hợp này việc lấy giá trị h băm trong lƣợc
đồ tổng quát tƣơng ứng với việc lấy g băm trong lƣợc đồ thu gọn..

2. Q =  (H’, r) , trong đó | H’| = kh và r  Ksig  Kver. Khi đó, Q là một yêu cầu cụ
thể của h-oracle trong mô hình thu gọn. Trong trƣờng hợp này Fred gửi Q tới h-
oralce của nó và nhận giá trị trả về H = h(Q).

3. Nếu Q không có dạng nhƣ hai trƣờng hợp trên thì sinh ra một chuỗi ngẫu nhiên
H và H = h(Q) đã đƣợc định nghĩa.

Fred trả về chuỗi H cho F .Quay lại trƣờng hợp 1 và 2 với giả thiết độ dài của các yêu
cầu khác nhau, tức là cả 3 trƣờng hợp bị loại bỏ.

Việc mô phỏng các oralce ký có thể yêu cầu thêm qsig lần yêu cầu h-oracle trong lƣợc
đồ RSA-GENPSS, tƣơng ứng với nhiều nhất số các yêu cầu h-oralce hoặc g-oracle
trong lƣợc đồ thu gọn là qsìg. Trong các lƣợc đồ lớn số lƣợng yêu cầu từ F đến h-
oracle(trực tiếp hoặc gián tiếp qua g-oracle) tối đa là max{  , 1}.qhash. Ngoài ra có tối
đa (  +2).qsign yêu cầu từ oracle ký tới h-oracle.

Cuối cùng F kết thúc quá trình giả mạo và đƣa ra kết quả (M, x). Fred trả về (H, x),
trong đó H = h(M). (H, x) là một chữ ký hợp lệ của lƣợc đồ thu gọn nếu và chỉ nếu (M,
x) là chữ ký hợp lệ của lƣợc đồ tổng quát RSA-GENPSS. Fred sẽ thất bại nếu và chỉ
nếu ngƣời ta yêu cầu đúng chữ ký của H hoặc F thất bại. Trƣờng hợp đầu chỉ có thể
nếu và chỉ nếu F yêu cầu chữ ký của một thông điệp M’ thỏa mãn h(M) = h(M’). Điều
này chỉ xảy ra khi tồn tại va chạm của h.

3.2.8 Phân tích chuỗi cố định E (bc)

51
Kết quả trả về của lƣợc đồ RSA-PSS2000 luôn kết thúc bằng một chuỗi cố
định. Việc có đƣợc các phần của thông điệp mã hóa cố định là vấn đề khó. Việc chứng
minh tính an toàn liên quan đến việc sinh ngẫu nhiên số nguyên x mà bit đầu tiên của
f(x) là 0 và f(x) kết thúc bằng các bit của chuỗi cố định E. f là phép toán xác minh
nguyên thủy RSA. Chuỗi E càng dài thì phép toán f cần phải thực hiện nhiều để tìm ra
số nguyên x bằng cách thử và sai. Mục đích của phần này là đánh giá số lần thực hiện
hàm f cần thiết để sinh ra một số lƣợng nhất định các xâu với khuôn dạng thích hợp.

Đặt Y là tập hợp con của  N = {0, 1, ..., N-1}. Ví dụ Y có thể là tập hợp tất cả các số
nguyên có độ dài k bit có bit đầu bằng 0 và kết thúc bằng chuỗi cố định E. k là độ dài
bit của modulo N. Giả sử q là số nguyên dƣơng. Chúng ta muốn đƣa ra giới hạn thời
gian cần thiết để sinh ra q phần tử độc lập và ngẫu nhiên từ tập Y qua hàm f mà xác
suất thất bại là thấp nhất.

Bổ đề
2
N
 .(k0 .ln 2  q ) 2 (3)
Đặt T = | Y | 



Sinh các số nguyên độc lập ngẫu nhiên z1,...., zT ZN. Xác suất để có ít hơn q trong số

các số nguyên f(z1), …, f(zT) thuộc tập Y nhỏ hơn 2-k 0

Nhận xét

Đối với mỗi lựa chọn giá trị cụ thể cho k0 và q (ví dụ, k0 = 160 và q = 260) thì giá trị
|Y|
k0 .ln 2 nhỏ hơn q , nghĩa là .T gần bằng q. Theo bổ đề trên điều chúng ta cần
N
T
 |Y| |Y|  q.k .ln2. Giá trị này xấp xỉ bằng k .ln2 lần giới hạn
2
k0
là 1 
q

  .T 0 0
 N N

nếu ra. Thực tế k0 là độ dài của kh qua hàm băm h. Điều này có nghĩa khi T là giới hạn
trên trong việc đánh giá độ phức tạp của một lƣợc đổ rút gọn, thì cách tiếp cận mới sẽ
nhanh hơn 100 lần cách tiếp cận trƣớc đó.

52
Chứng minh

53
Chọn gía trị p nằm giữa 0 và 1. Đặt  = |Y|
. Xác suất để có tối đa q – 1 trong số T
q1 N
 tử
phần  f(z
T
 i (11),- …,
 ) f(z
T i T) thuộc
< T  T Y là i (1- ) T i p-q+ (i+1) <  T  i (1- ) T i p-q+ (i+1) =
q1

   
     
i0  i i0  i i0  i
 T i
-(q-1) T
 i (1- ) T .pi < (1 -  + p)T.p-(q-1)
p  
i0  i 

= exp(T.ln(1- (1-p)) – (q-1)lnp)

< exp(-T (1-p)+(q-1)(1/p-1))

Biểu thức cuối cùng có giá trị tối đa bằng 2-k 0 nếu và chỉ nếu
1 k .ln 2 q1
-T (1-p)+(q-1)(1/p-1)  -k0.ln2  T  ( 0 + )
 1 p p

q 1
Biểu thức này đƣợc cực tiểu khi p = k0 .ln 2 q 1 , khi đó biểu thức bên phải trở

thành
1
( k0 .ln 2 .( k0 .ln 2 + ) + .( k0 .ln 2 + q 1 ) ) =
 q 1 q 1

N
| Y |( k 0ln 2  q 1) 2 (3.1)

Dễ dàng thấy rằng T đƣợc định nghĩa nhƣ ở (3) có giá trị nhỏ nhất lớn hơn (3.1)

54
Chƣơng 4
SỰ CHUẨN HOÁ CỦA LƢỢC ĐỒ KÝ RSA-PSS

4.1 Nguyên lý chung


Trong phần này chỉ rõ 3 thuật toán cần thiết cho quá trình tạo và kiểm tra chữ
ký số. Thuật toán đầu tiên, thuật toán chữ ký số RSA, thuật toán thứ 2, thuật toán hàm
băm SHA - 256, và thuật toán thứ 3, thuật toán tạo số giả ngẫu nhiên dùng AES.
Ngoài ra còn có tiêu chuẩn về các tham số sử dụng trong thuật toán chữ ký số RSA-
PSS đã đƣợc đề xuất.

Khi nhận đƣợc một thông điệp, ngƣời nhận muốn xác minh đƣợc rằng thông điệp đó
không bị thay đổi trong quá trình truyền và xác định đƣợc danh tính của ngƣời gửi.
Các yêu cầu đó có thể đƣợc đáp ứng bởi thuật toán chữ ký số. Chữ ký số còn đƣợc gọi
là chữ ký điện tử, có thể đƣợc sử dụng để chứng minh với ngƣời nhận hoặc bên thứ ba
rằng thông điệp đó đƣợc ký bởi chính ngƣời gửi. Chữ ký số không những đƣợc tạo ra
cho dữ liệu đƣợc gửi đi, mà còn có thể đƣợc tạo ra cho dữ liệu đƣợc lƣu trữ, công bố
và các chƣơng trình máy tính, vì vậy mà tính toàn vẹn của dữ liệu và chƣơng trình máy
tính có thể đƣợc xác minh tại bất kỳ thời điểm nào.

Thuật toán chữ ký số là thuật toán cho phép ngƣời ký tạo ra đƣợc chữ ký số trên dữ
liệu và cho phép ngƣời xác minh kiểm tra đƣợc tính xác thực của chữ ký. Mỗi ngƣời
sử dụng có một cặp chìa khóa bao gồm chìa khoá bí mật và chìa khoá công khai. Chìa
khóa bí mật đƣợc sử dụng trong quá trình tạo chữ ký và chìa khóa công khai sử dụng
trong quá trình xác minh chữ ký. Cả trong quá trình tạo và xác minh chữ ký, thông
điệp M (dạng dữ liệu) đƣợc thu gọn nhờ áp dụng thuật toán băm an toàn (SHA-256).
Một ngƣời không biết chìa khóa bí mật của ngƣời ký thì không thể tạo ra một chữ ký
giống nhƣ của ngƣời ký. Nói cách khác, chữ ký không thể bị giả mạo. Khi sử dụng
chìa khóa công khai của ngƣời ký, bất kỳ ai cũng có thể xác minh đƣợc tính chân thực
của chữ ký số trên thông điệp đã đƣợc ký. Tuy nhiên, nếu chìa khoá công khai đƣợc
sử

55
dụng khi kiểm tra chữ ký số không tƣơng ứng với chìa khoá bí mật đã đƣợc sử dụng
khi tạo ra chữ ký (tình huống này xảy ra khi chìa khoá công khai bị giả mạo hay bị
thay đổi) thì không thể kết luận gì về tính chân thực của chữ ký số đã đƣợc tạo ra. Một
cơ chế cần đƣợc thiết lập để gắn kết chìa khoá công khai với danh tính của ngƣời sử
dụng nắm giữ chìa khoá bí mật tƣơng ứng. Cơ chế này có thể đạt đƣợc nhờ sự chứng
thực bởi bên thứ ba đƣợc tin cậy.

4.2 Các hàm chuyển đổi dữ liệu

4.2.1 Hàm cơ sở chuyển đổi từ dạng số sang dạng chuỗi Octet

I2OSP chuyển đổi một số nguyên không âm thành một xâu kiểu 8 bit có chiều dài xác
định.

I2OSP(x, xLen)

Input: Số nguyên không âm x cần đƣợc chuyển đổi

xLen là chiều dài byte dự định của xâu đƣợc chuyển đổi

Output: X là xâu tƣơng ứng có chiều dài xLen byte


Lỗi: Số nguyên quá lớn.

Các bƣớc thực hiện:

1. Nếu x  256xLen , đƣa ra thông báo "số nguyên quá lớn" và dừng lại

2.Biểu diễn x dƣới dạng xLen duy nhất theo cơ số 256

x = xxLen-1256xLen-1 +xxLen-2256xLen-2 +..................1256+x0

trong đó 0  xi < 256

3. Đặt byte Xi có giá trị nguyên bằng xxLen-i đối với 1  i  xLen. Đƣa ra xâu dạng
byte X=X1X2..XxLen

4.2.2 Hàm chuyển đổi từ dạng Octet sang dạng số nguyên

OS2IP chuyển đổi một xâu ra kiểu một số nguyên không âm.

56
OS2IP (X)

Input: X là xâu kiểu byte cần đƣợc chuyển đổi

Output: x là số nguyên không âm tƣơng ứng


Các bƣớc thực hiện:

1 Đặt X1X2..XxLen là các byte của X từ đầu cho đến cuối, và đặt xxLen-i là giá trị
nguyên của byte Xi cho 1  i  xLen

2 Đặt x = xxLen-1256xLen-1 +xxLen-2256xLen-2 +................+x1256+x0

trong đó 0  xi < 256

3 Trả về giá trị x

4.3 Các phép toán mật mã cơ sở

4 3.1 Phép toán cơ sở RSASP1

RSASP1(K, m)

Đầu vào K là khóa bí mật RSA, K thuộc một trong các dạng sau

- Một cặp (n, d)

- Bộ năm (p, q, dP, dQ, qInv) và một dãy bộ ba (ri, di, ti) i = 3. u,

trong đó

 p, q là hai thừa số nguyên tố của modulo n RSA

 dP là số mũ CRT của p, là một số nguyên dƣơng thoả


mãn e.dP  1 (mod (p-1))

 dQ là số mũ CRT của q, là một số nguyên dƣơng thoả


mãn e.dQ  1 (mod (q-1))

 qInv là hệ số CRT, là một số nguyên dƣơng bé hơn p


thoả mãn q.qInv  1 (mod p)

57
- m là biểu diễn thông điệp, là một số nguyên nằm giữa 0 và n -1

Đầu ra s là biểu diễn chữ ký , là số nguyên nằm giữa 0 và n-1

Lỗi “ biểu diễn thông điệp nằm ngoài giới hạn”

Giả thiết khoá bí mật K của RSA hợp lệ

Các bƣớc thực hiện:

1 . Nếu biểu diễn thông điệp m không nằm giữa 0 và n-1 thì đƣa ra thông báo “ biểu

diễn thông điệp nằm ngoài giới hạn” và dừng lại

2. Tính toán chữ ký s

a. Nếu khoá K có dạng (n, d) thì đặt s = md mod n

b. Nếu K có dạng (p, q, dP, dQ, qInv) và (ri, di, ti), xử lý nhƣ sau

i. Đặt s1 = mdP mod p và s2 = mdQ mod q

ii. Nếu u > 2, đặt si = md i mod ri i =3....u

iii. Đặt h = (s1-s2).qInv (mod p)

iv. Nếu u>2 Đặt R= ri và for i =3 to u do

1. Đặt R =R.ri-1

2. Đặt h = (si -s).ti (mod ri)

3. Đặt s= s +R.h

3 . Đƣa ra chữ ký s.

4.3.2 Phép toán cơ sở RSAVP1

RSAVP1((n, e), s)

Đầu vào (n, e) là khóa công khai RSA của ngƣời ký

s là biểu diễn chữ ký chữ ký (representative), là một số nguyên nằm giữa 0


và n -1

58
Đầu ra m là biểu diễn thông điệp , là số nguyên nằm giữa 0 và n-1

Lỗi “ biểu diễn chữ ký nằm ngoài giới hạn”

Giả thiết khoá công khai (n, e) của RSA hợp lệ

Các bƣớc thực hiện:

1 . Nếu biểu diễn chữ ký s không nằm giữa 0 và n-1 thì đƣa ra thông báo “ biểu diễn
chữ

ký nằm ngoài giới hạn” và dừng lại

2. Đặt m = se mod n

4. Trả về giá trị m

4.3.3 Phƣơng pháp định dạng cho cho chữ ký với phần nối thêm vào

1. Thao tác định dạng

Phƣơng pháp định dạng đƣợc tham số hoá bằng cách chọn:

hàm băm (cố định với khoá RSA đã cho),

hàm tạo mặt nạ (cố định với khoá RSA đã cho), và độ dài phần phụ thêm (có
thể thay đổi với khoá RSA đã cho).

59
2 M

Hash

padding1 = (0x)00 00 00 00 00 00 00 00

padding1 mHash salt

padding2 = PS ||0x01
PS gồm emLen-sLen-hLen-2 zero octets M

Hash
padding2 salt

DB
dbMa
MGF

EM= maskedDB bc
1 H

8emLen

0 emBits

Hình 4.1 Minh họa thao tác định dạng cho chữ ký nối thêm vào

60
Công thức để tính EM:

((PD2||r)  MGF(h(PD1||h(M)||r))) || h(PD1||h(M)||r)) || 0xbc

EMSA-PSS-ENCODE (M, emBits)

Lựa chọn : h hàm băm (độ dài đầu ra của nó theo octets là hLen)

MGF hàm tạo mặt nạ

sLen độ dài chủ định của phần phụ thêm theo octets

Đầu vào: M văn bản để mã hoá, là một chuỗi octet

emBits độ dài tối đa theo bit của số nguyên OS2IP (EM), ít nhất bằng
8hLen + 8sLen + 9

Đầu ra: EM văn bản đã đƣợc mã, đó là chuỗi octet có độ dài emLen =
emBits/8

Thông báo lỗi: “lỗi định dạng”; “văn bản quá dài”

Các bƣớc:

1. Nếu độ dài của M là lớn hơn giới hạn đầu vào hàm băm là (261-1) byte
đối với SHA-1) thì đƣa ra thông báo “thông điệp quá dài” và dừng lại.

2. Đặt mHash=Hash(M), một xâu có độ dài hLen byte

3. Nếu emLen < sLen+hLen+2 thì đƣa ra thông báo “ Lỗi lập mã” và dừng
lại

4. Sinh ra một xâu muối kiểu byte ngẫu nhiên có chiều dài sLen. Nếu sLen =
0 thì giá trị muối bằng rỗng

5. Đặt M’ = (0x)00 00 00 00 00 || mHash ||salt

M’ là một xâu có độ dài 8+sLen+hLen byte với phần khởi tạo là các byte

bằng 0

6. Đặt H = Hash(M’) là một xâu có độ dài hLen byte

61
M’ là một xâu có độ dài 8+sLen+hLen byte với phần khởi tạo là các byte

bằng 0

7. Sinh một xâu kiểu byte PS bao gồm emLen – sLen –hLen -2 byte 0. Độ

dài PS cũng có thể bằng 0.

8. Đặt DB = PS || 0x01||salt . DB là một xâu có chiều dài emLen-hLen-1


byte.

9. Đặt dbMask = MGF(H, emLen –hLen -1).

10. Đặt maskedDB = DB  dbMask

11. Đặt 8emLen-emBits bit ngoài cùng bên trái của byte ngoài cùng bên
trái maskedDB bằng 0.

12. Đặt EM = maskedDB||H||0xbc

13. Trả về giá trị EM.

2 Thao tác kiểm tra

EMSA-PSS-VERIFY(M, EM, emBits)

Chọn: Hàm băm Hash(hLen biểu thị độ dài byte của giá trị trả về của hàm băm)

MGF là hàm sinh mặt nạ

sLen biểu thị độ dài dạng byte của muối

Input : M là thông điệp cần đƣợc mã hóa, là xâu dạng byte

emBits là độ dài bit lớn nhất của số nguyên OS2IP(EM), tối thiểu là
8hLen+8sLen+9

Output :EM là thông điệp đƣợc mã hóa, là một xâu dạng byte có chiều dài
bằng

emLen= emBits / 8

Thông báo lỗi : “Phù hợp”, ”không phù hợp”

62
Các bƣớc thực hiện

1. Nếu độ dài của M là lớn hơn giới hạn đầu vào của của hàm băm là (261-1
byte đối với SHA-1) thì đƣa ra thông báo “không phù hợp” và dừng lại.

2. Đặt mHash=Hash(M), một xâu dạng byte có độ dài hLen

3. Nếu emLen < sLen+hLen+2 thì đƣa ra thông báo “ Không phù hợp” và
dừng lại

4. Nếu 8 byte tận cùng bên phải của EM không phải là giá trị hexa 0xbc
thì đƣa ra thông báo “ Không phù hợp” và dừng lại

5. Đặt maskedDB là emLen-hLen -1byte tân cùng bên trái của EM là đặt H
là hLen byte tiếp theo.

6. Nếu 8emLen-emBits bit tận cùng bên trái của byte tận cùng bên trái của
trong maskedDB tất cả không bằng 0 thì đƣa ra thông báo “ Không phù
hợp” và dừng lại

7. Đặt dbMask = MGF(H, emLen –hLen -1).

8. Đặt DB = maskedDB  dbMask

9. Đặt 8emLen-emBits bit ngoài cùng bên trái của byte ngoài cùng bên
trái

maskedDB bằng 0.

10. Nếu emLen – hLen –sLen -2 byte tận cùng bên trái của DB không bằng
0 hoặc nếu byte ở vị trí emLen-hLen –sLen – 1 (vị trí tận cùng bên trái
bằng 1) không phải là giá trị hexa 0x01, thì đƣa ra thông báo “ Không
hợp lệ” và dừng lại.

11. Đặt muối là sLen byte cuối cùng của DB.

12. Đặt M’ = (0x)00 00 00 00 00 || mHash ||salt

M’ là một xâu có chiều dài 8+hLen+sLen byte với

63
13. Đặt H’ = Hash(M’) là một xâu có chiều dài hLen byte.

14. Nếu H=H’ thì đƣa ra thông báo “hợp lệ”, ngƣợc lại là “không hợp lệ”

3. Hàm tạo mặt nạ MGF dựa vào hàm băm

MGF(mgfSeed, maskLen)
Lựa chọn: h hàm băm (hLen ký hiệu độ dài đầu ra của hàm băm theo

octet)

Đầu vào: mgfSeed mầm đƣợc dùng để tạo mặt nạ, là chuỗi octet

maskLen là độ dài chủ ý theo octet của mặt nạ, nhiều nhất là 232hLen

Đầu ra: mask mặt nạ, là chuỗi octet có độ dài maskLen

Thông báo lỗi: “mặt nạ quá dài”

Các bƣớc thực hiện:

1. Nếu maskLen > 232 hLen, cho ra thông báo lỗi “mặt nạ quá dài” và dừng lại

2. Lấy T là chuỗi octet rỗng

Với counter chạy từ 0 tới maskLen/hLen -1, thực hiện các bƣớc:

Chuyển counter thành một chuỗi octet C có độ dài 4 octet

C = I2OSP (counter, 4)

Nối mầm mgfSeed với C, tính hàm băm của chuỗi này. Sau đó nối chuỗi

octet T với giá trị băm vừa thu đƣợc

T = T || h(mgfSeed || C)

3. Cho ra maskLen octet đầu tiên của T nhƣ là chuỗi octet mask.

64
4.4 Lƣợc đồ ký với phần nối thêm vào
RSASSA-PSS kết hợp nguyên thuỷ RSASP1 và RSAVP1 với phƣơng pháp mã
hóa EMSA-PSS. Nó tƣơng thích với lƣợc đồ IFSSA đƣợc xác định trong bản nháp
P1363a., trong đó các nguyên thuỷ ký là IFSP-RSA1 và IFVP-RSA1 đƣợc xác định
trong IEEE std 1363-2000 và phƣơng pháp mã hoá là EMSA4. EMSA4 phổ biến hơn
EMSA-PSS vì nó thao tác với từng bit thay vì một byte. EMSA4 và EMSA-PSS đều
bị giới hạn trong trƣờng các toán hạng cũng nhƣ giá trị băm và giá trị muối là xâu dài
1 byte.Chiều dài các thông điệp mà RSASSA-PSS có thể thực hiện không bị giới hạn
hoặc ép buộc bởi số nguyên lớn, phụ thuộc vào hàm băm dựa vào phƣơng pháp mã
hóa EMSA-PSS .

Giả sử rằng việc tính toán nghiệm của eth modulo n là không thực hiện đƣợc và hàm
băm, hàm sinh mặt nạ trong RSASSA-PSS có những đặc điểm thích hợp thì RSASSA-
PSS cung cấp các lƣợc đồ ký an toàn. Tính đảm bảo là chứng minh đƣợc với nhận
thức rằng độ khó của việc giả mạo chữ ký liên quan trực tiếp với độ khó của bài toán
ngƣợc RSA, quy định rằng hàm sinh mặt nạ và hàm băm đƣợc xem nhƣ là hộp đen
hoặc là các oracle ngẫu nhiên. Giới hạn trong việc chứng minh tính an toàn là “chặt”,
có nghĩa rằng xác suất thành công và thời gian thực hiện dành cho phép giả mạo tốt
nhất để chống lại RSASSA-PSS là rất gần giống với các tham số tƣơng ứng với bài
toán ngƣợc RSA. Trái ngƣợc với lƣợc đồ ký RSASSA-PSS-PKCS1-v1_5, định danh
hàm băm không đƣợc nhúng vào trong thông điệp đƣợc mã hóa theo phƣơng pháp
EMSA-PSS, vì thế về mặt lý thuyết nó có thể đáp ứng đƣợc cho một phép giả mạo
thực hiện thay thế một hàm băm khác thay vì hàm băm của ngƣời ký. Do đó nó đƣợc
đề nghị rằng hàm sinh mặt nạ EMSA-PSS dựa trên hàm băm tƣơng tự. Theo cách này
toàn bộ thông điệp đƣợc mã hóa sẽ phụ thuộc vào hàm băm và nó sẽ khó đối với đối
thủ định thay thế một hàm băm khác cho hàm băm của ngƣời ký. Sự tƣơng thích hàm
băm đáp ứng mục đích duy nhất là ngăn chặn khả năng thay thế hàm băm, và nó sẽ
không cần thiết nếu sự thay thế hàm băm đuợc thực hiện theo cách khác. (ví dụ hàm
kiểm tra chấp nhận duy nhất một hàm băm chỉ rõ).

65
RSASSA-PSS khác với lƣợc đồ ký dựa vào RSA ở chỗ nó theo xác suất hơn là dựa
vào thuyết tất định, đƣợc kết hợp với một giá trị muối đƣợc sinh ngẫu nhiên. Giá trị
muối làm tăng tính an toàn cho lƣợc đồ bởi vì tạo ra đƣợc một bằng chứng an toàn
chặt hơn thuyết quyết định nhƣ Full Domain Hashing. Tuy nhiên tính ngẫu nhiên
không phải then chốt đối với tính an toàn. Trong các tình huống mà việc sinh ngẫu
nhiên là không thể, một giá trị muối cố định một dẫy số đƣợc sử dụng để thay thế với
kết quả tính an toàn chứng minh đƣợc ngang bằng với bài toán FDH

Các thao tác tạo chữ ký số áp dụng một thao tác định khuôn dạng vào một thông điệp
trƣớc khi nó đƣợc chuyển thành một biểu diễn thông điệp ở dạng số nguyên. Phép
toán cơ sở RSASP1 đƣợc áp dụng vào biểu diễn thông điệp này để tạo ra chữ ký số.
Đảo ngƣợc quá trình này, các thao tác kiểm tra chữ ký áp dụng một phép toán cơ sở
RSAVP1 vào một chữ ký để khôi phục một biểu diễn thông điệp, sau đó nó đƣợc
chuyển thành thông điệp đã đƣợc định dạng ở dạng chuỗi octet. Thao tác kiểm tra
đƣợc áp dụng vào thông điệp ban đầu và thông điệp đã đƣợc định dạng để xác định
xem chúng có tƣơng ứng nhau hay không

4.4.1 Thao tác sinh chữ ký

RSASSA-PSS-SIGN(K, M)

Đầu vào K là khóa bí mật RSA của ngƣời ký

M là thông điệp cần đƣợc ký, là một xâu kiểu byte

Đầu ra chữ ký S, một xâu kiểu byte có độ dài bằng k, trong đó k là

chiều dài ở dạng byte của modulo n RSA .


Lỗi “ Thông điệp quá dài”, “ lỗi lập mã”

Các bƣớc thực hiện

1. Lập mã EMSA-PSS : áp dụng thao tác mã hoá EMSA-PSS đối với thông điệp

M để đƣa ra thông điệp đƣợc mã hóa EM có độ dài (mod Bits 1) / 8 byte thoả

66
mãn độ dài bit của số nguyên OS2IP (EM) tối đa modBits-1, trong đó modBits
là độ dài bit của modulo n RSA

EM = EMSA-PSS –ENCODE(M, modBits-1)

Chú ý rằng độ dài byte của EM sẽ nhỏ hơn k nếu modBits-1 chia hết cho 8 và

bằng k trong trƣờng hợp ngƣợc lại Nếu đầu vào thao tác mã hoá là “thông

điệp quá dài”, đầu ra là “thông điệp quá dài” và dừng lại.

2. Ký RSA:

a. Chuyển đổi thông điệp đƣợc mã hóa EM thành một biểu diễn thông
điệp dƣới dạng số nguyên M

M = OS2IP(EM)

b. Áp dụng nguyên thuỷ ký RSASP1 với khoá ký bí mật RSA và


thông điệp m để đƣa ra một biểu diễn chữ ký số nguyên s

s = RSASP1(K, m)

c. Chuyển đổi chữ ký s thành một chữ ký S có độ dài k

S = I2OSP(s, k)

3. Trả về chữ ký S.

4.4.2 Thao tác kiểm tra chữ ký

RSASSA-PSS-VERIFY((n, e), M, S)

Đầu vào (n, e) là khóa công khai RSA của ngƣời ký

M là thông điệp mà chữ ký của nó cần phải đƣợc kiểm tra, là một

xâu kiểu byte.

S là chữ ký phải đƣợc kiểm tra, một xâu kiểu byte có độ dài

bằng k, trong đó k là chiều dài ở dạng byte của RSA modulo n.

67
Đầu ra “ chữ ký hợp lệ” hoặc “chữ ký không hợp lệ”.

Các bƣớc thực hiện


1. Kiểm tra chiều dài : Nếu chiều dài của chữ ký không phải là k byte, đƣa ra
thông báo “ chữ ký không hợp lệ và dừng lại”
2. Kiểm tra RSA:
a. Chuyển đổi chữ ký S thành chữ ký s dƣới dạng số nguyên
s = OS2IP(S)
b. Áp dụng nguyên thuỷ kiêm tra chữ ký RSAVP1 với khoá ký công
khai RSA (n, e) và biểu diễn chữ ký s để đƣa ra một biểu diễn thông
điệp m biểu diễn dƣới dạng số nguyên
m = RSAVP1((n, e), s)
nếu RSAVP1 thông báo “Biểu diễn chữ ký nằm ngoài giới hạn” thì
quá trình kiểm tra chữ ký trả lời “chữ ký không hợp lệ” và dừng lại.
c. Chuyển đổi biểu diễn thông điệp m thành thông điệp đƣợc mã hóa

EM có độ dài emLen = (mod Bits 1) / 8 byte


EM = I2OSP(m, emLen)
Chú ý rằng độ dài byte của EM sẽ nhỏ hơn k nếu modBits-1 chia hết
cho 8 và bằng k trong trƣờng hợp ngƣợc lại Nếu I2OSP thông báo
“số nguyên quá lớn “ thì trả lời “ chữ ký không hợp lệ” và dừng lại
3. Kiểm tra EMSA-PSS: Áp dụng thao tác kiểm tra EMSA-PSS đối với thông điệp
gốc và thông điệp đƣợc mã hoá EM để xác định xem chúng có bằng nhau
Result = EMSA-PSS-VERIFY(M, EM, modBits-1)
4. Nếu Result =”consistent”, trả về “chữ ký hợp lệ”, ngƣợc lại đƣa ra chữ ký
không hợp lệ.

4.5 Tiêu chuẩn tham số sử dụng trong chữ ký số RSA-PSS


Để sử dụng lƣợc đồ chữ ký số RSA-PSS an toàn cần phải tuân thủ các yêu cầu sau đây:

1. Các yêu cầu chung

68
Cặp khoá RSA dùng để ký thì không đƣợc dùng cho mục đích khác (ví dụ mã thông
điệp).

Hai số nguyên tố p và q, và số mũ bí mật d cần phải đƣợc giữ bí mật tránh việc bị truy
cập bất hợp pháp, làm lộ hoặc sửa đổi. Modulo n và số mũ công khai e phải đƣợc công
bố công khai.

Mỗi ngƣời sử dụng cần có modulo n riêng.

Độ dài của mođun n không đƣợc nhỏ hơn 1024 bit và phải đƣợc thay đổi theo thời
gian nhƣ sau:

Thời gian sử dụng độ an toàn tối thiểu nlen tối thiểu


Tới năm 2010 80 1024
Tới năm 2020 112 2048
Sau 2020 128 3072

Trong đó, độ an toàn tối thiểu là một số nguyên biểu thị lƣợng tính toán cần thiết để
phá hệ mã.

2 Yêu cầu đối với các khoá RSA

Số mũ công khai e cần phải đƣợc chọn với các ràng buộc sau:

Số mũ công khai e cần đƣợc chọn trƣớc khi tạo số mũ bí mật

d.

Số mũ công khai e cần phải là số nguyên dƣơng lẻ sao cho: 65, 537  e <
2nlen-2security_strength với nlen là độ dài của mođun n theo bit.

Chú ý rằng e có thể là giá trị bất kỳ mà thoả mãn ràng buộc 1(b); p và q sẽ đƣợc chọn
(trong mục 2) sao cho e là nguyên tố cùng nhau với cả (p-1) và (q-1).

Hai số nguyên tố p và q đƣợc tạo ngẫu nhiên và giữ bí mật cần phải đƣợc chọn với các
ràng buộc sau:

(p-1) và (q-1) cần phải nguyên tố cùng nhau với số mũ công khai e.

69
Mỗi một trong bốn số (p + 1), (p - 1) và (q + 1), (q - 1) cần phải có các nhân tử nguyên

tố lớn hơn 2security_strength+20

Nhân tử nguyên tố bí mật p, q cần phải đƣợc chọn ngẫu nhiên từ các số nguyên tố thoả
mãn (
2)(2 (nlen / 2)1 )  q  p  2 nlen / 2 1.

GCD(p-1, q-1) không đƣợc lớn

p - q cần phải lớn hơn 2(nlen/2)-(security_strength+20)

Số mũ bí mật d cần phải đƣợc lựa chọn sau khi tạo p và q với các ràng buộc:

Số mũ d cần phải lớn hơn 2nlen/2, và d = e-1 mod (LCM((p-1), (q-1)))

70
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

Trong chƣơng này chúng ta chứng minh tính an toàn cho PSS có sử dụng
“muối” ngẫu nhiên có độ dài bit ngắn hơn nhiều để có đƣợc độ an toàn tƣơng ứng. Cụ
thể chúng ta chỉ ra rằng log2qsig đáp ứng đƣợc, trong đó qsig là số lƣợng yêu cầu ký
đƣợc thực hiện bởi kẻ tấn công. Hơn nữa chúng ta chỉ ra rằng kích thƣớc nhƣ vạy là
tối ƣu: Nếu giá trị “muối” ngẫu nhiên có độ dài ít hơn log2qsig đƣợc sử dụng thì tính an
toàn của PSS vẫn chứng minh đƣợc nhƣng không có những bằng chứng về tính an
toàn "chặt". Kết quả này dựa vào các kỹ thuật mới chỉ ra rằng một số luợc đồ ký khác
nhƣ là Full Domain Hash và Gennaro-Halevi-Rabin có những bằng chứng an toàn tối
ƣu.[8]

5.1 Các định nghĩa


Định nghĩa 1-lƣợc đồ ký
Một lƣợc đồ ký (Gen, Sign, Verify) đƣợc định nghĩa nhƣ sau:

1. Thuật toán sinh khoá Gen là một thuật toán xác suất có đầu vào là 1 k cho
kết quả là một cặp khoá công khai và bí mật tƣơng ứng (pk, sk).

2. Thuật toán ký Sign có đầu vào là thông điệp M, khoá công khai pk và
khoá bí mật sk, trả về một chữ ký x = Signpk, sk(M). Thuật toán cũng có thể
là thuật toán xác suất.

3. Thuật toán kiểm tra Verify có đầu vào là thông điệp M, một chữ ký đại
diện x và khoá bí mật pk. Nó trả về một bit Verifypk(M, x) bằng 1 nếu chữ
ký đƣợc chấp nhận, ngƣợc lại bằng 0. Điều đó có nghĩa là nếu x  Signsk,
pk (M) thì Verify(M, x) = 1.

71
Với kiểu tấn công lựa chọn thông điệp thích hợp, ngƣời giả mạo có thể thu đƣợc một
chữ ký bất kỳ của thông điệp từ việc lựa chọn thông điệp của anh ta và cố gắng đƣa ra
một sự giả mạo hợp lý. Sự giả mạo hợp lý đó là cặp thông điệp/chữ ký (M, x) thoả
mãn Verify(M, x)=1, trong đó chữ ký của M ngƣời giả mạo chƣa bao giờ biết đến.
Một số định nghĩa trong mô hình tiên tri ngẫu nhiên:
Định nghĩa 2
Một ngƣời giả mạo F đƣợc phát biểu (t, qhash, qsign,  )-break lƣợc đồ ký (Gen, Sign,
Verify) nếu sau nhiều nhất qhash(k) yêu cầu tới oracle băm và qsign(k) lần yêu cầu ký và
sau thời gian thực hiện t(k) có đƣợc phép giả mạo hợp lệ với xác suất ít nhất là  (k)
với k  N.
Định nghĩa 3
Một lƣợc đồ ký (Gen, Sign, Verify) là (t, qsign, qhash,  )-secure nếu không có ngƣời giả
mạo nào (t, qhash, qsign,  )-break đƣợc lƣợc đồ đó.
Định nghĩa 4 (Hệ mật RSA)
Hệ mật RSA là một thành viên của phép hoán vị hàm cửa sập, đƣợc định nghĩa nhƣ sau:
- Bộ sinh RSA, đầu vào 1k , chọn ngẫu nhiên hai số nguyên tố p, q phân biệt có độ dài
k/2 bit và tính toán modulo N = p.q. Chọn ngẫu nhiên số mũ mã hoá e    ( N ) và tính

toán số mũ giải mã d tƣơng ứng thỏa mãn e.d  1 mod  (N ) . Bộ sinh trả về bộ giá trị
(N, d, e).
- Hàm mã hoá f * N  * N đƣợc định nghĩa f(x)  x mod N
e

:
N
- Hàm giải mã f -1
 N   đƣợc định nghĩa f (y)  y mod N
-1 d
* *
:
Định nghĩa 5
Thuật toán tìm giá trị nghịch đảo I gọi là (t', ε')−break RSA nếu nhƣ sau thời gian t'(k)
nó giải quyết đƣợc bài toán RSA với xác suất là ε'(k).
Định nghĩa 6
RSA đƣợc gọi là (t', ε')−secure nếu nhƣ không có thuật toán I nào là (t', ε')−break
RSA

72
5.2 Một biến thể của PSS
FDH là lƣợc đồ chữ ký an toàn chứng minh đƣợc và dựa trên RSA. Nó đƣợc định
nghĩa nhƣ sau: thuật toán sinh khoá, với đầu vào 1 k, thực hiện RSA(1k) để nhận đƣợc
bộ giá trị (N, e, d). Nó cho ra (pk, sk), với khoá công khai pk là (N, e) và khoá bí mật
sk là (N, d). Các thuật toán ký và kiểm tra sử dụng hàm băm H: {0, 1}*  Z * , nó ánh
N

xạ các chuỗi bit có độ dài bất kỳ vào tập các số nguyên có nghịch đảo theo modulo N.

SignFDHN, d(M):
y  H(M) VerifyFDHN, e(M, x):
trả về yd mod N y  xe mod N
nếu y = H(M) thì trả về 1
ngƣợc lại trả về 0
Trong phần này chúng ta giới thiệu một biến thể của PSS, đƣợc gọi là PFDH
(Probabilistic Full Domain Hash). Lƣợc đồ này tƣơng tự nhƣ lƣợc đồ Full Domain
Hash ngoại trừ một muối ngẫu nhiên có độ dài k0 bit đƣợc nối vào thông điệp M trƣớc
khi băm. Lƣợc đồ này khác với PSS ở chỗ muối ngẫu nhiên không đƣợc lấy lại khi
kiểm tra chữ ký. Giống nhƣ lƣợc đồ FDH, lƣợc đồ này sử dụng một hàm băm H: {0,
1}*  Z*
N

SignPFDHN, d(M): VerifyPFDHN, e(M, s, r):


r  0,1
k0
y  se mod N
y  H(M||r) nếu y = H(M||r) thì trả về 1
trả về (yd mod N, r) ngƣợc lại trả về 0
Định lý dƣới đây chứng minh tính an toàn của PFDH trong mô hình tiên đoán ngẫu
nhiên với giả thiết bài toán ngƣợc RSA là khó. Chúng ta chỉ ra rằng PFDH có bằng
chứng an toàn chặt với một muối ngẫu nhiên có độ dài k0 = log2qsig bit.

Định lý 1

Giả sử RSA là (t’,  ') -secure thì lƣợc đồ ký PFDH[k0] là (t, qhash, qsig,  ) -secure, trong
đó

t = t’ –(qhash+qsig).O(k3) (1)

73
 =  ’.(1+6.qsig.2-k 0 ) (2)

Chứng minh

Gọi F là ngƣời giả mạo muốn (t, qhash, qsig,  ) -break PFDH. Chúng ta muốn xây dựng
phép toán ngƣợc I thoả mãn (t’,  ') -breaks đƣợc bài toán RSA. Phép toán ngƣợc có
đầu vào là bộ giá trị (N, e,  ) và phải đƣa ra đƣợc  d mod N. Chúng ta giả sử rằng
ngƣời giả mạo không bao giờ lặp lại một yêu cầu băm. Tuy nhiên ngƣời giả mạo có
thể lặp lại một yêu cầu ký để có đƣợc chữ ký của thông điệp M với các số nguyên r
khác. Bộ nghịch đảo I duy trì con chạy i đƣợc khởi tạo giá trị ban đầu bằng 0. Lần đầu
tiên thông điệp M yêu cầu băm hoặc ký thì bộ nghịch đảo tăng con chạy i lên và gắn
Mi  M . Sau đó bộ nghịch đảo sinh ra một danh sách Li gồm qsig số nguyên ngẫu

nhiên thuộc tập 0,1 .


k0

Khi ngƣời giả mạo thực hiện một yêu cầu băm Mi||r thì xảy ra 2 khả năng sau:

1. Nếu r thuộc danh sách Li , bộ nghịch đảo sinh ra một số nguyên x  Z * và


N

đƣa ra kết quả H(Mi||r) = xe mod N.

2. Ngƣợc lại bộ nghịch đảo sinh ra một số ngẫu nhiên x  Z *


N và đƣa ra kết
quả  .xe mod N.

Do đó đối với mỗi thông điệp Mi , danh sách Li lƣu các số nguyên r 
0,1k
0 mà bộ

nghịch đảo biết đƣợc x tƣơng ứng với Mi || r.

Khi ngƣời giả mạo yêu cầu ký lên thông điệp Mi, bộ nghịch đảo nhặt ra một số ngẫu
nhiên r thuộc tập Li và loại nó ra khỏi danh sách. Do ban đầu danh sách chứa qsig số
nguyên và có tối đa qsig lần yêu cầu ký nên việc loại bỏ ra khỏi danh sách luôn luôn có
thể. Nếu đã có một yêu cầu băm đối với Mi||r , chúng ta có H(Mi||r) = xe mod N và trả
về chữ ký x. Ngƣợc lại bộ nghịch đảo sinh ra một số nguyên ngẫu nhiên x  Z * và gắn
N

H(Mi||r) = x mod N và trả về chữ ký x.


e

74
Khi ngƣời giả mạo đƣa ra một chữ ký giả mạo (M, s, r), chúng ta giả sử rằng luôn thực
hiện đƣợc phép băm lên thông điệp M, vì vậy M = Mi với giá trị i đã cho. Mặt khác bộ
nghịch đảo thực hiện phép băm lên (M||r), khi đó nếu r không thuộc danh sách Li thì
chúng ta có H(Mi||r) =  .xe mod N. Do s = H(Mi||r)d =  d.x mod N, nên  d = s/x mod
N và bộ nghịch đảo thành công trong việc đƣa ra  d mod N.

Khi ngƣời giả mạo không thực hiện bất kỳ yêu cầu ký nào lên thông điệp Mi của chữ
ký giả (Mi, s, r), ngƣời giả mạo sẽ không biết đến qsig số nguyên ngẫu nhiên của danh
sách Li. Do đó xác suất để r không thuộc danh sách Li là (1- 2-k 0 )q sig . Nếu k0 > log2qsig

và nếu qsig>2 chúng ta có (1- 2-k 0 )q sig  (1- 1 qsig 1


 .
qsig) 4

Do ngƣời giả mạo đƣa ra chữ ký giả mạovới xác suất là  , xác suất thành công  ’ của

bộ nghịch đảo là ít hơn . Điều này cho thấy rằng đối với k0  log2qsig xác suất để phá
4
vỡ PFDH giống với xác suất bài toán ngƣợc RSA.

Trong trƣờng hợp bình thƣờng, chẳng hạn nhƣ chúng ta không giả sử k0  log2qsig ,
chúng ta sinh danh sách Li ít hơn qsig số nguyên ngẫu nhiên nên phần tử r của chữ ký
giả mạo(Mi, s, r) thuộc danh sách Li với xác suất nhỏ hơn. Chính xác hơn từ một danh
sách rỗng Li, bộ nghịch đảo sinh ra môt phần tử r  với xác suất  , thêm nó
0,1k 0

vào danh sách Li và tiếp tục cho đến khi danh sách Li có qsig phần tử. Mặt khác với xác
suất 1 -  sẽ dừng lại quá trình thêm các số nguyên vào danh sách Li. Số lƣợng ai số
nguyên trong danh sách Li là một biến ngẫu nhiên tuân theo quy tắc sau đây:

(1  ). nếu j < qsig


 j

Pr[ai = j] = 
nếu j =
  q
sig
qsig

Bộ nghịch đảo trả lời một yêu cầu ký đối với thông điệp Mi danh sách Li tƣơng ứng
chứa đựng một hoặc nhiều hơn số nguyên, điều này xảy ra với xác suất  (ngƣợc lại

75
bộ nghịch đảo sẽ bỏ qua). Do vậy bộ nghịch đảo trả lời tất cả các yêu cầu ký với xác
suất lớn hơn  qsig
.

Xác suất để r của chữ ký giả mạo(Mi, s, r) không thuộc danh sách Li là (1- 2-k 0 )j khi số
phần tử của Li là ai bằng j. Xác suất để r không thuộc danh sách Li đƣợc xác định nhƣ
sau:
qsig

f(  ) =  Pr ai  j .1  2 (3)


k 0

j 0

j

Khi ngƣời giả mạo đƣa ra sự giả mạo với xác suất  , xác suất thành công của bộ
nghịch đảo ít nhất bằng  .  qsig
.f(  ) . Chúng ta chọn giá trị cho  để xác suất thành
công là lớn nhất.

Đặt g(  ) qsig

 Pr a  j .1  2 với
k 0
= i
j 0
 j

(1  ). nếu j < qsig


 j

Pr[ai = j] = 
nếu (j =
  q
sig

qsig

Đặt g0 = max {g(  );  [0, 1]} và chúng ta muốn chứng minh rằng g0  1
1 .2 k0
6.qsig

Đặt  qsig
 2 k0 , từ (3) và (4) chúng ta có g(  )  .(1     .(1   ) qsig
qsig 1
(5)
= 1  (1   . )
).
1
Từ đó chúng ta có g(  )   q . sig

1

1 
Nếu  .qsig  1 và gán  = 1 - thì thu đƣợc g0  1 
76
qsig
 . 1 1
  
2 2.qsig 2 1  2. .qsig
 sig 

Cho qsig  1 chúng ta có 1 qsig


1   1
 

 2 sig  2

77
Sử dụng điều kiện  1 1
.q  1 chúng ta có đƣợc g0  
sig
2 2.(1  2. sig )
1  6. sig
.q .q

Cho  1
.q sig
 1 và gán  = 1 từ (5) chúng ta có g0  (1   1 sig 1
2 ) qsig .q  1  6. sig
.q

đối với  1
 
.q sig
2

Qua phép chứng minh cho thấy rằng với bất kỳ (qsig, k0), tồn tại giá trị  thoả mãn
0

 qsig
. f ( ) 1
 .Từ công thức này suy ra đƣợc công thức ở (2)
0 0 1 .2 k0

6.qsig

Thời gian thực hiện bộ nghịch đảo I là thực gian thực hiện thực hiên của F cộng với
thời gian cần thiết để tính toán các số nguyên x e mod N, điều này suy ra đƣợc công
thức (1).

5.3 Áp dụng PSS


Lƣợc đồ ký PSS đƣợc tham số hoá bởi hai số nguyên k0 và k1. Việc sinh khoá tƣơng
tự giống nhƣ sơ đồ FDH. Thuật toán ký và kiểm tra sử dụng hai hàm băm
-1
H: {0, 1}* {0, 1}k1 và G: {0, 1}k1 {0, 1}k - k1 .

Gọi G1 là một hàm có đầu vào 


và trả về k0 bit đầu tiên của G( ), trong khi
 0,1 1
k

G2 trả về k-k0-k1-1 bit còn lại của G( ). Khi đó lƣợc đồ đƣợc minh hoạ nhƣ hình vẽ
sau

78
Hình 5.1. Minh hoạ PSS(trái) và PSS-R (phải)

79
SignPSS(M) VerifyPSS(M, x)
r R y  xe mod N
0,1k w 
0
Biểu diễn y dƣới dạng b||w||r*|| 
H(M||r) r* Đặt r r*  G1(w)
G1(w)  r nếu H(M||r) = w và G2(w) =  và b =1 thì
y0 || w ||r*||G2 (w) trả về 1ngƣợc lại trả về 0

Định lý dƣới đây chứng minh tính an toàn của PSS trong mô hình tiên đoán ngẫu
nhiên.
Định lý 3:
Giả sử rằng bài toán RSA là (t’,  ') -secure thì lƣợc đồ ký PSS[k0, k1] là (t, qsig, qhash,
 )-secure, trong đó
t = t’ – (qhash+qsig).k0.O(k3) (6)
 =  ’ +3. (qhash+qsig)2 .(2-k 0 +2-k 1 ) (7)
Định lý này chỉ ra rằng để PSS an toàn ngang bằng với RSA (chẳng hạn    ' ), nó
phải rơi vào trƣờng hợp (qhash+qsig)2 .(2-k 0 +2-k 1 ) <  ’, điều này dẫn đến k0> kmin và

k1>kmin, trong đó kmin = 2.log2(qhash+qsig) +log2 1


(8)
'
Cho qhash= 260, qsign = 230 và  = 2-60 [13], chúng ta thu đƣợc k0 và k1 phải lớn hơn kmin
phải lớn hơn 180 bits.
Định lý 4
Giả sử rằng RSA là (t’,  ' )-secure, lƣợc đồ ký PSS[k0, k1] là (t, qhash, qsig,  )-secure
trong đó

t = t’ – (qhash, qsig).k1.O(k3) (9)

 =  ' .(1+6.qsig.2-k 0 )+2(qhash+qsig) 2 .2-k 1 (10)

Định lý này chỉ ra rằng có thể chứng minh tính an toàn của lƣợc đồ RSA-PSS bằng
luợc đồ RSA với một muối ngẫu nhiên ngắn hơn nhiều, cụ thể là k0 = log2qsign bit. Khi
qsign = 230 thì k0 = 30 bits.

80
Chứng minh

Việc chứng minh tƣơng tự nhƣ ở định lý 2.

Gọi F là ngƣời giả mạo muốn (t, qhash, qsig,  ) -break PSS . Chúng ta xây dựng muốn
phép toán ngƣợc I mà nó thoả mãn (t’,  ) ’-break đƣợc bài toán RSA. Phép toán
ngƣợc nhận đầu vào là bộ giá trị (N, e,  ) và phải đƣa ra đƣợc  d mod N. Bộ nghịch
đảo I duy trì con chạy I đƣợc khởi tạo giá trị ban đầu bằng 0. Để trả lời một yêu
cầu băm
M||r trong định ký 2, chúng ta đã sinh ra một số nguyên x  Z * và y = xe b với b = 0
N

hoặc b = 1 và định nghĩa H(M||r) = y. Điểm khác duy nhất ở đây là chúng ta biểu diễn
y dƣới dạng 0||w||r*||  , trong đó w có độ dài k1 bit, kích thƣớc của r* là k0 bit, độ dài
của y là k-k1-k0-1 bit còn lại. Chúng ta định nghĩa H(M||r) = w và G(w) = r  r* ||  .
Hơn nữa chúng ta phải chắc chắn rằng giá trị w giống nhƣ thế không bao giờ xuất hiện
hai lần nếu không chúng ta sẽ phải định nghĩa lại G(w).

Khi thông điệp M xuất hiện lần đầu tiên trong yêu cầu băm hoặc yêu cầu ký, bộ nghịch
đảo tăng con chạy i lên và gán Mi  M. Sau đó bộ nghịch đảo sinh ra một danh sách Li

gồm qsig số nguyên ngẫu nhiên thuộc tập 0,1 .Khi ngƣời giả mạo thực hiện một yêu
k0

cầu H-oracle đối với Mi||r thì có 2 trƣờng hợp xảy ra. Nếu r thuộc danh sách Li , bộ
nghịch đảo sinh ra một số nguyên x  Z * và đƣa ra kết quả H(Mi||r) = xe mod N.
N

Ngƣợc lại bộ nghịch đảo gắn b = 0, ngƣợc lại gán b = 1. Sau đó bộ nghịch đảo sinh ra
một số ngẫu nhiên x  Z * cho đến khi bit đầu tiên của y=xe b mod N bằng 0. Khi đó
N

nó sẽ biểu diễn y dƣới dạng 0||w||r*||  và gán H(Mi||r) = w . Bộ nghịch đảo bỏ ngang
nếu w đã xuất hiện trƣớc đó. Cuối cùng bộ nghịch đảo gán G(w ) = r  r* ||  và trả về
w nhƣ là câu trả lời dành cho yêu cầu H-oracle đối với Mi||r.

Khi ngƣời giả mạo thực hiện yêu cầu oracle G đối với w, bộ nghịch đảo sẽ trả lại giá
trị G(w) nếu w đã xuất hiện trƣớc đó. Ngƣợc lại nó sẽ sinh ra một chuỗi ngẫu nhiên
-1
 {0, 1}k-k1 và gán G(w)= và trả về giá trị  .

81
Khi ngƣời giả mạo thực hiện yêu cầu ký đối với thông điệp Mi, bộ nghịch đảo nhặt ra
một giá trị r ngẫu nhiên từ danh sách Li và loại nó ra khỏi danh sách. Nếu đã có một
yêu cầu oracle H đối với Mi||r thì bộ nghịch đảo biết đƣợc giá trị x, y, w, r* và  thoả
mãn y = xe mod N và y = 0||w||r*||  trong đó H(Mi||r) = w và G(w) = r*  r|| , vì vậy
bộ nghịch đảo trả về giá trị x nhƣ là chữ ký của Mi. Ngƣợc lại bộ nghịch đảo sinh ra
một số ngẫu nhiên x  Z * cho đến khi bit đầu tiên của y = xe mod N bằng 0. Sau đó nó
N

biểu diễn y dƣới dạng 0||w||r*||  và gán H(Mi||r) = w. Bộ nghịch đảo bỏ qua nếu w đã
xuất hiện trƣớc đó. Sau đó bộ nghịch đảo gán G(w) = r*  r||  và trả về giá trị x nhƣ là
chữ ký của Mi.

Vì có tối đa qhash yêu cầu băm và qsig yêu cầu ký nên có ít hơn qhash+qsig giá trị w khác
nhau xuất hiện. Xác suất để bộ nghịch đảo bỏ ngang sau khi sinh ra một giá trị w nhỏ
hơn (qsig+qhash).2-k 1 . Do đó với giá trị xác suất ít nhất     2 k , ngƣời giả mạo đƣa ra
1

đƣợc sự giả mạo và tồn tại một số nguyên i sao cho có một yêu cầu oracle H đối với
Mi||r. Sau đó nếu r không thuộc vào danh sách Li , bộ nghịch đảo biết giá trị x sao cho
y=xe. với  thoả mãn  d =s/x mod N và bộ nghịch đảo thành công trong việc đƣa ra
 d mod N.

Nhƣ ở định lý 2, xác suất để ri không thuộc danh sách Li có qsig số nguyên ngẫu nhiên
qsig qsig
là (1-2-k 0 ) . Nếu k0  log2qsig và cho qsig  2 thì (1-2-k 0 ) 1 q 1
 (1- q ) sig  . 4
sig

Bởi vậy xác suất thành công  ’ của ngƣời giả mạo ít nhất là (     2 k )/4. Điều này 1

cho thấy rằng đối với k0


 log 2 xác suất phá vỡ bài toán PSS[k0, k1] hầu nhƣ là
qsig

giống với xác suất để phá vỡ bài toán RSA.

Đối với giá trị k0 nhỏ hơn, chúng ta áp dụng thủ thuật giống nhƣ ở định lý 2. Chúng ta
sinh ra ít hơn qsig số nguyên ngẫu nhiên trong danh sách Li, cùng với sự phân phối
giống nhƣ thế với tham số  . Giống nhƣ ở định lý 2, xác suất thanh công ít nhất là

(    2 k1 ). qsig . f ( ) trong f ( )


đó
82
đƣợc cho nhƣ ở công thức (3).
Nhƣ ở định lý 2

83
chúng ta chọn một giá trị  để xác suất thành công đạt giá trị lớn nhất. Xác suất thành

công của bộ nghich đảo ít nhất là     2


k 1

1  6.q sig .2 k0

Ngoài ra khi trả lời yêu cầu băm và ký, xác suất để bit đầu tiên của xe b mod N bằng 0
đối với giá trị x  Z * ít nhất là ½. Do chúng ta dƣng vòng lặp sau 1+k1 bƣớc, điều đó
N

làm tăng thêm một giá trị xác suất thất bại là 2 k cho mỗi lần băm hoặc ký. Cuối cùng
1

xác suất thành công  ' của ngƣời giả mạo ít nhất là :

 '   2.(q hash qsig ) 2 .2 k . Đây chính là công thức (10) cần đƣợc chứng minh.

1

1  6.q sig .2 k0

Thời gian thực hiện của phép nghịch đảo là thời gian của phép giả mạo cộng với thời
gian để sinh ra xe b mod N .Vậy công thức (9) đã đƣợc chứng minh.

5.4 Chứng minh tính an toàn tối ƣu cho PSS


Phần 5.3 đã cho chỉ ra rằng muối có độ dài bit bằng k 0 = log2qsig là đủ để PSS có độ an
toàn ngang bằng với bài toán RSA. Một câu hỏi thú vị đặt ra là : kích thƣớc này liệu có
tối ƣu hay không? Đối với k1 là kích thƣớc trả về của hàm băm H , giá trị cực tiêu kmin
đƣợc cho ở công thức (8) rõ ràng là tối ƣu, bởi vì một ngƣời giả mạo thực hiện qhash
yêu cầu băm có thể tìm ra đƣợc một sự xung đột. H(M||0)=H(M’||0) với xác suất là
(qhash)2.2-k1 /2 và sau đó giả mạo chữ ký của M’ bằng cách sử dụng chữ ký của M. Tuy
nhiên có thể có bằng chứng về tính an toàn tốt hơn đối với PSS, mà nó mang lại
tính chặt khi độ dài muối k0 ngắn hơn. Trong phần này chúng ta chỉ ra rằng nếu độ dài
muối ngắn hơn đƣợc sử dụng thì độ an toàn của PSS không thể chứng minh ngang
bằng với bài toán RSA đƣợc. Chính xác hơn chúng ta chỉ ra rằng : từ một phép suy
dẫn nghịch đảo RSA trong khoảng thời gian tR với xác suất  R khi thực hiện tối đa r
lần một phép giả mạo đã phá vỡ bài toán PSS[k0, k1] với xác suất  F , nó có thể
thực
hiện bài toán ngƣợc RSA mà không sử dụng phép giả mạo với xác suất
2
 I =  R -r.  F .2k 0 /qsig trong khoảng thời gian tI = (r+1).tR
84
Định lý 5
Cho R là phép suy dẫn (t, q hash, qsig,  F ,  R )-reduce bài toán ngƣợc RSA để phá vỡ bài
toán PSS[k0, k1] với qhash  qsig. Phép suy dẫn có thể thực thi hoặc thực hiện lại phép giả
mạo tối đa r lần . Từ R chúng ta có thể xây dựng một thuật toán nghịch đảo cho
RSA mà (tI,  I )-inverts RSA với
tI = (r+1).tR (10)
 =  - r. (11)
2 2k0 
I R  .
F qsig

Chứng minh
Chúng ta sử dụng phƣơng pháp sau đây
Chúng ta xét PSS với muối ngẫu nhiên có độ dài cố định là 0k 0 bit và biểu thị lƣợc đồ
ký này là PSS0[k0, k1]. Đầu tiên chúng ta chỉ ra cách để biến đổi phép giả mạo đối với
PSS0[k0, k1] thành PSS[k0, k1]. Sau đó với phép suy dẫn R nào đó từ việc thực hiện
bài toán ngƣợc RSA tới việc phá vỡ bài toán PSS[k0, k1] sẽ sử dụng phép giả mạo này
để đối với PSS[k0, k1] để tính ngƣợc RSA. Do đó từ một phép giả mạo đối với
PSS0[k0, k1], chúng ta có thể thực hiện bài toán ngƣợc RSA bằng cách sử dụng phép
suy dẫn R. Mặt khác
từ R xây dựng một phép suy dẫn R 0 phá vỡ bài toán PSS0[k0, k1] nhờ vào bài toán
ngƣợc RSA.
Bổ đề 1

Cho F0 là phép giả mạo mà nó (t 0 , q 0 , q 0 ,  0 )-breaks PSS[k0, k1]. Từ F0 chúng ta


F hash sig F

có thể xây dựng một phép giả mạo F mà (t F , q hash , q sig ,  F )-breaks PSS[k0, k1] với
qhash = q
0 k 0 +1
,0 qsig = 2 .q ,  =  0 /2
hash sig F F

Chứng minh bổ đề

Từ F0 chúng ta xây dựng phép giả mạo F cho PSS[k0, k1]. Khi ngƣời giả mạo F0 thực
hiên một yêu cầu băm ngƣời giả mạo F thực hiện một phép toán băm tƣơng tự và

85
hƣớng tới kết quả của F0. Khi ngƣời giả mạo F0 thực hiện một yêu cầu ký đối với
thông điệp M, ngƣòi giả mạo F thực hiện các yêu cầu ký đối với M cho đến khi muối
ngẫu nhiên đƣợc sử dụng để sinh ra chữ ký là 0k 0
. Sau đó nó chuyển chữ ký này tới
F0. Cuối cùng ngƣời giả mạo F0 đƣa ra một chữ ký giả mạocho PSS0[k0, k1], và đó
cũng là chữ ký giả mạođối với PSS[k0, k1].

Khi F thực hiện một yêu cầu ký, muối ngẫu nhiên đƣợc sử dụng để sinh một chữ ký
bằng 0k 0 với xác suất là 2-k 0 . Do đó F phải thực hiện trung bình 2k 0 lần yêu cầu ký
cho
mỗi yêu cầu ký của F0. Chính xác hơn gọi Yi là số lƣợng yêu cầu ký đƣợc thực hiện
bởi F đối với yêu cầu ký thứ i của F0, và gọi Y là tổng số yêu cầu ký đƣợc thực hiện
bởi F. Do F bị giới hạn bởi qsig lần ký và xác suất để tất cả các yêu cầu ký của F0 đƣợc
trả lời là Pr[Y  qsig ]. Trong trƣờng hợp này ngƣời giả mạo đƣa ra một chữ ký giả mạo

với xác suất ít nhất  0 . Do đó ngƣời giả mạo F đƣa ra chữ ký giả mạo với xác ít nhất
F
là Pr[Y  qsig ].  0.
F

Sự phân bổ của Yi kéo theo công thức có tham số 1-2-k 0 :

Pr[Yi=j] =2-k 0 .(1-2-k 0 ) j đối với j  1


1

Kỳ vọng và độ biến thiên của Yi đƣợc cho bởi

E[Yi] = 2k 0 và Var[Yi] = 2k 0 .(2k 0 -1)

Chúng ta giả sử rằng F0 thực hiện đủ q 0 yêu cầu ký . Do Y là tổng số của q 0 biến
s s

ngẫu nhiên độc lập, chúng ta thu đƣợc:

E[Y] = 2k 0 .q Var[Y] =q .2k 0 .(2k 0 -1)


0
s 0
s

Sử dụng bất đằng thức của Chebyshev, chúng ta cho một số  bất kỳ :

Var[Y ]
Pr[|Y-E[Y]|   ] 
2
86
Và gán  = E[Y] , chúng ta thu đƣợc kết quả đối với q 0  2
s

87
Pr[Y  2.E[Y]] 1 1
 0 
q
sig 2

Nếu q
= 1, Y=Y1 và Pr[Y>2.E[Y]] = Pr[Y >2k 0 1] =(1-2 k ) 2
k 0 1
1
0 0

1
1
Sử dụng bất đẳng thức (1- )x 1
x  đối với x  1, chúng ta thu đƣợc nhƣ ở phần trƣớc
2

k0 k0 1
Pr[Y  2.E[Y]]  (1-2 )2 
2

1
Vậy để qsig = 2k 0 .q 0s

1
Điều này dẫn đến Pr[Y  qsig]  1
2 và do Pr[Y  qsig]  .
2

Cuối cùng ngƣời giả mạo F đƣa ra một chữ ký giả mạo cho PSS[k 0, k1] với xác suất ít
nhất  =  0 /2. sau tối đa qsig lần yêu cầu ký.
F F

Bổ đề 2

Cho R là phép suy dẫn mà (tR, qhash, qsig,  F ,  R )-reduces từ bài toán ngƣợc RSA để
phá vỡ bài toán PSS[k0, k1] .Từ R chúng ta có thể xây dựng một phép suy dẫn R0 mà
nó (t 0 , q 0 , q 0 ,  0 ,  0 )-reduces từ bài toán ngƣợc RSA để phá vỡ bài PSS0[k0, k1]
R hash sig F R

với

q =q
0 sig 1
.2k 0 qhash = q 0  =  0 /2  =  (12)
0
sig hash F R R

t = t 0R (13)

Chứng minh
88
Gọi F0 là phép giả mạo thực hiện (t 0 , q 0 , q 0 ,  0 )-break PSS0[k0, k1] Sử dụng bổ
F hash sig F

đề 1 từ F0 chúng ta xây dựng F mà nó (t F , q hash , q sig ,  F )-break PSS0[k0, k1] trong đó

q hash, q sig ,  F đƣợc cho nhƣ ở công thức (12). Sau đó từ F sử dụng phép suy diễn R

chúng ta có thể thực hiện bài toán ngƣợc RSA với xác suất ít nhất là  R

Do đó từ F0 (t 0 , q 0 , q 0 ,  0 )-break PSS0[k0, k1] và sử dụng R chúng ta có thể thực


F hash sig F

hiện bài toán ngƣợc RSA với xác suất ít nhất là  R , vì vậy từ R chúng ta có thể xây
dựng một phép suy dẫn R0 (t 0 , q 0 , q 0 ,  0 ,  0 )-reduces bài toán ngƣợc RSA để phá
R hash sig F R

vỡ bài toán PSS0[k0, k1] trong đó  0 =  và t 0 = t •


R R R R

Gọi R là phép suy dẫn (tR, qhash, qsig,  F ,  R )-reduces thực hiện thành công bài toán
ngƣợc RSA để phá vỡ bài toán RSA. Từ bổ đề 2 và từ phép suy dẫn R chúng ta xây
dựng thuật toán R0 (t 0 , q 0 , q 0 ,  0 ,  0 )-reduces bài toán ngƣợc RSA để phá vỡ bài
R hash sig F R
0 0 0
toán PSS0[k0, k1] , trong đó t , q , q ,  0 ,  0 đƣợc cho nhƣ công thức (12), (13).
R hash sig F R

Phép suy dẫn R có thể thực thi hoặc lặp lại tối đa r lần, vì vậy R 0 thực thi hoặc lặp lại
phép giả mạo tối đa r lần. Từ R 0 sử dụng định lý 6 ở tài liệu [3] chúng ta xây dựng một
thuật toán I (tI,  I )-invert RSA với

tI = (r+1).t 0R

 1
 =  0 -r.  exp(1 .1
0
0
. qsig
)
I r F 0  q0 
qsig  hash 

Sử dụng công thức (12), (13) với qhash  2.qsig 1


và exp(-1)  , chúng ta thu đƣợc
2

 0 
r.  0 exp(1 . 1 0qsig   r.  2
1 k 0 2

F ) q q
. 0  F .
q
sig  hash 

89
sig

90
k0  2
2
điều này cho thấy rằng phép nghịch đảo thành công với xác suất ít nhất  -r.  .
R F
qsig

Từ đây ta có công thức (10), (11).

5.5 Bàn luận thêm



Chúng ta xây dựng đồ thị biểu diễn log2 nhƣ là một hàm của muối có độ dài
'
k0 bit. Biểu đồ miêu tả mối liên quan về tính an toàn của PSS với RSA, cho qsig = 230 và
k1 > kmin. Cho k0 = 0, chúng ta đạt đƣợc độ an toàn của FDH, trong đó xấp xỉ log2qsign
bit an toàn mất đi so với RSA. Cho k0 thuộc đoạn 0 và log2qsig, chúng ta tăng thêm
đƣợc một bit an toàn khi k0 tăng thêm một bit. Và nếu k0 lớn hơn log2qsig thì độ an toàn
của PSS hầu nhƣ giống với bài toán ngƣợc RSA. Điều này cho thấy rằng PSS có bằng
chứng an toàn chặt ngay cả khi kích thƣớc của muối đạt tới giá trị log2qsig, và nếu tăng
thêm độ dài bit của muối cũng chẳng cải thiện tính an toàn của PSS. Đối với ngƣời ký,
qsig biểu diễn số lƣợng chữ ký lớn nhất đƣợc sinh ra đối với một khoá công khai. Ví dụ
đối với những bài toán có tối đa một triệu chữ ký đƣợc sinh ra, độ dài của muối k0 = 30
bit thực sự đủ lớn để đảm bảo tính an toàn giống bài toán RSA, và nếu tăng thêm độ
dài của muối thì cũng không làm tăng tính an toàn.

Chính xác hơn cho k0 = log2qsig và k1 = kmin trong đó kmin đƣợc cho nhƣ ở công thức (8),
chúng ta có đƣợc xác suất để phá vỡ bài toán PSS trong khoảng thời gian nhỏ hơn t, là
nhỏ hơn   9. ' , trong đó  ' là xác suất của bài toán ngƣợc RSA trong khoảng thời
gian gần bằng t. Vì vậy với các tham số đó PSS an toàn nhƣ bài toán ngƣợc RSA.

91
Chƣơng 6
CHỨNG MINH TÍNH AN TOÀN CHO LƢỢC ĐỒ
KÝ RSA-PSS

6.1 Kết quả chính


Trong phần này chúng ta chứng minh tính an toàn cho RSA-GENPSS. Cơ bản
việc chứng minh giống nhƣ chứng minh tính an toàn cho RSA-PSS96 của Coron [10]
nhƣng có một số điều chỉnh nhỏ. Mục đích là xác định phép đảo ngƣợc của nguyên
thủy RSA f theo ngôn ngữ của ngƣời giả mạo đối với RSA-GENPSS. Đặc biệt một bộ
(t(k),  (k))-nghịch đảo của f là một thuật toán với độ phức tạp t(k) mà có thể tính toán
f -1(x) thành công với xác suất  (k), với x đƣợc chọn ngẫu nhiên từ tập ZN và N là
modulo k bit đƣợc sinh theo thủ tục sinh khóa. Chúng ra nói rằng f là (t(k),  (k))-khó
nếu không tồn tại (t(k),  (k))-nghịch đảo.

Nhắc lại rằng RSA-GENPSS(Ksig, Kver) biểu diễn lƣợc đồ ký trong đó Ksig là tập hợp độ
dài muối mà oracle ký chấp nhận, trong khi Kver là tập hợp độ dài muối mà ngƣời xác
minh mong đợi sẽ chấp nhận. Nhƣ vậy ngƣời giả mạo sẽ phải tìm một chữ ký với một
độ dài muối thuộc tập Kver. Nhắc lại rằng kE là độ dài của chuỗi bit thêm vào E.

Đặt kr = min { k0:k0 Ksig  Kver}.

Nếu hai tập hợp Ksig và Kver không giao nhau thì kr không xác định. Trƣờng hợp này sẽ
đƣợc xử lý riêng.

Gọi c(q, l) là xác suất xảy ra một xung đột giữa q phần tử độc lập và có độ dài bit bằng
 q  -l
l. Dễ dàng thấy rằng c(q, l)   2 2 .
 

Gọi qtot nhƣ công thức 2 đƣợc định nghĩa ở bổ đề 1 trong chƣơng 3. Cuối cùng, gọi Tf
=Tf(k) là thời gian cần thiết để đánh giá f với modulo của độ dài k.

92
Định lý 1

Phép toán tìm giá trị nghịch đảo RSA là (t’,  ' )-khó. Khi đó với bất kỳ qsig, và qhash sơ
đồ chữ ký RSA-GENPSS(Ksig, Kver) là (t, qsig, qhash,  )-an toàn, trong đó

t(k) = t’(k) - 2 k E 1  .O(T (k))


2

1  qtot 2 kh
. k h ln 2  qhash(k)  2qsig (k) f

và  (k) = 1
.  ’(k) + c(qtot, kh) + 2-k h (1)
 ( p, , qsig
)

Trong đó p có giá trị nằm giữa 0 và 1,

 (qhash  qsig , kr )  {(q  q )2 kr ,1}


min hash

qsig

Và  ( p, , qsig ) = (1-p)  p  


  .(1  p)  p

Giá trị tối ƣu cho p là

pmax = 2qsig
(2)
qsig 1 (q1)2sig 4q sig /

Nếu Ksig  Kver =  thì  (k) =  ’(k) + c(qtot, kh) + 2-k h

Chứng minh định lý

Gọi F là kẻ giả mạo của RSA-GENPSS với xác suất thành công là  . Theo bổ đề 1 ở
chƣơng 5, có một kẻ giả mạo Fred của RSA-GENPSS-REDUCED đƣợc định nghĩa
dƣới dạng của F với tối đa qsig yêu cầu ký và qsig+qhash yêu cầu h-oralce và g-oralce. Fred
sẽ thành công nếu F thành công trừ có va chạm của oralce h. Xác suất để xảy ra một
vam chạm của h tối đa là c(qtot, kh). Xác suất để xảy ra một va chạm của h trong lƣợc
đồ rút gọn là c(qred, kh), trong đó qred  qhash + 2qsig là giá trị thực sự các yêu của h trong
lƣợc đồ rút gọn đƣợc tạo ra bỏi Fred hoặc oracle ký của nó. Do đó với xác suất
  c(qtot , kh )
tối thiểu  ’’ = Fred sẽ thành công với điều kiện oralce h của lƣợc đổ rút
93
1  c(qred , kh )
gọn không xảy ra va chạm nào. Xét đến một mô hình mà ở đó oracle h đƣợc thay đổi

94
để nó không bao giờ phúc đáp các yêu cầu có đầu vào giống nhau. Chính xác hơn, mỗi
một phúc đáp đƣợc chọn phân bố đều một cách ngẫu nhiên từ một tập hợp các xâu có
độ dài kh mà nó không phải là một phúc đáp của h-oracle trƣớc đó.

Chúng ta xây dựng một bộ nghịch đảo I theo thuật ngữ của kẻ giả mạo Fred. Bộ nghịch
đảo duy trì một bộ đếm i đƣợc khởi tạo bằng 0 và một tập hợp R(H, k0) đƣợc khởi tạo
bằng {} cho mỗi H mà |H| = kh và k0 Ksig (Dĩ nhiên trong quá trình thực thi, bộ
nghịch đảo lƣu trữ các tập hợp không rỗng R(H, k0)). Mục tiêu đối với bộ nghịch đảo
là tính toán căn bậc e modulo N của một số nguyên  đƣợc chọn phân bố đều ngẫu
nhiên từ tập * .
N

Với mỗi yêu cầu ký và yêu cầu h, chúng ta lƣu giá trị Hi (giá trị băm của thông điệp),
ri ( muối), wi = h((Hi , ri )) , g(wi), và xi (đầu ra của sơ đồ ký RSA). Với các yêu cầu
của h chúng ta lƣu một bit bi và thêm ri vào tập R(Hi, |ri |). Điều này sẽ lên tới

(|Hi| +|ri| +|wi| +|g(wi)| +|xi| ) +(1+|Hi|+|ri|)  k +3kh+3kg+1 <4k bit bộ nhớ. Với mỗi yêu
cầu g chúng ta lƣu các giá trị wi, g(wi), yêu cầu này chiếm ít hơn 4k bit bộ nhớ.

Trả lời các yêu cầu h-oracle

Đầu vào : Chuỗi Q

H1 : Tăng i. Nếu Q là hợp lệ thì Q có dạng  (H i , ri ) , trong đó |Hi| = kh và ri = k0 Ksig

 Kver. Nếu không thì trả về kết quả “lỗi”

H2: Nếu (Hi, ri) = (Hj, rj) với j < i nào đó thì đặt wi = wj và thực hiện bƣớc 8

H3 : Đặt R(Hi, k0)  R(Hi, k0)  {ri}

H4: Đặt bi = 0 với xác pk và bi = 1 với xác suất 1- pk ; p sẽ đƣợc xác định sau
0k
suất 0

H5: Lặp lại quá trình xi R ZN ; yi R`  b . f(xi) đến khi yi có thể biểu diễn
i

dƣới
dạng 0||r * ||wi||E. (|r * | = kg, |wi| = kh ) và không tồn tại trƣờng hợp j < i thỏa mãn wj
i i

=wi)

H6: Định nghĩa h(  (H i , ri ))

95
= wi

96
H7: Đặt g(wi) = r   (r )
* i
i

H8: Trả về wi.

Trả lời các yêu cầu g-oralce

Đầu vào : Chuỗi Q

G1 : Tăng i và wi = Q .Nếu |wi|  kh thì trả về kết quả “lỗi”

G2: Nếu wi = wj với j < i nào đó thì trả về g(wj), ngƣợc lại trả về giá trị

kg
g(wi) R {0, 1}

H3 : Đặt R(Hi, k0)  R(Hi, k0)  {ri}

Trả lời các oralce-ký

Đầu vào : Chuỗi Q và một số nguyên k0

S1: Tăng i và đặt Hi = Q. Nếu |Hi|  kh trả về “lỗi”. Nếu k0  Ksig trả về lỗi”

S2: Đặt ci = 0 với xác suất  (|R(Hi, k0)|.2-l) và ci = 1 với xác suất

1 -  (|R(Hi, k0)|.2-l) ;  sẽ đƣợc xác định sau.

S3: Nếu ci = 0, chọn ri R R(Hi, k0) và chuyển đến bƣớc thứ 4. Nếu ci = 1, chọn ri
R {0, 1}k 0 \R(Hi, k0) và chuyển đến bƣớc thứ 5.

S4: Có một j < i thỏa mãn (Hj, rj) = (Hi, ri) và yêu cầu thứ j đối với hàm băm h. Nếu bj
= 0 thì đặt xi =xj và chuyển đến bƣớc 9. Ngƣợc lại thực hiện bƣớc tiếp theo.

S5: Nếu (Hj, rj) = (Hi, ri) với j < i nào đó, thì yêu cầu thứ j có một phép toán ký tuơng
ứng. Đặt xi = xj và chuyển đến bƣớc thứ 9. Ngƣợc lại thực hiện bƣớc tiếp theo.

S6: Lặp lại tiến trình xi R ZN; yi  f(xi) cho đến khi yi có thể biểu diễn dƣới dạng 0||
ri*||wi||E (|ri*| = kg và |wi | = kh) và không tồn tại giá trị j < i thỏa mãn

97
w j = w i.

S7: Định nghĩa h(  (H i , ri = wi


))

S8: Đặt g(wi) = ri*   (r )


i

S9: Trả về xi .

Phân tích

Với một xác suất nào đó, bộ nghịch đảo sẽ bị buộc phải ký văn bản Hi cùng với salt ri,
và trong trƣờng hợp này anh ta cần biết nghịch đảo của chuỗi y i đã đƣợc sinh ra trong
bƣớc H5, cái mà anh ta sẽ làm nếu bi = 0. Với một xác suất khác, kẻ giả mạo sẽ cho ra
nghịch đảo zi của yi đƣợc sinh ra trong bƣớc H5 nhƣ một chữ ký đƣợc giả mạo, và
trong trƣờng hợp này bộ nghịch đảo sẽ có thể xác định đƣợc nghịch đảo của  nếu bi
= 1;

zi = f-1(yi) = xi . f-1() mod N.

Bởi vì xác suất mà bộ nghịch đảo thoát ra có thể lớn hơn đáng kể so với ” nhƣ đã
đƣợc định nghĩa với các độ dài salt ngắn, chúng ta sẽ biểu thị ’ nhƣ là tích của ” và
một tham số chứ không phải ” trừ đi một tham số. Cái đó có sự liên quan sau: Dƣới
điều kiện mà bộ nghịch đảo không thoát ra trong bƣớc S4, tất cả salt đƣợc tạo ra trong
thuật toán yêu cầu ký cần phải phân phối đều và độc lập. Tuy nhiên, cái đó không đạt
đƣợc nếu salt là đƣợc sinh ra phân bố đều nhƣ trong bƣớc S2; xác suất mà chúng ta
không thoát ra trong trƣờng hợp ri R(Hi, k0) là p , trong khi chúng ta không bao giờ
0k

thoát ra trong trƣờng hợp ri R(Hi, k0), bởi vì bƣớc S4 không đƣợc sử dụng đến.

Vì lý do này, xác suất trong bƣớc S2 rằng một phần tử nào đó từ R(Hi, k0) đƣợc

chọn cần phải 1/ pk lần lớn hơn xác suất mà một phần tử nào đó ngoài R(Hi, k0)
0

đƣợc chọn. Điều đó có nghĩa rằng  có tính chất sao cho

98
 ( ) 1   ( ) 
 p (1    ( )  p (1
. )
 .2 k
0
0k
)2k0
0k

Với   R(H , k ) 2k , xác suất rằng bộ nghịch đảo sẽ không thoát ra trong bƣớc S4 là
0

 ( ) p p
 (1 ( )) (1 p )
0
0k

k p .

k0 k0

Khi k0  Kver, chúng ta có thể đặt p  1 , bởi vì kẻ giả mạo không đƣợc phép cho ra
0k

chữ ký với độ dài salt k0. Nếu k0  Kver, thì



min  qhash


qsig  2k0 ,1   .

Với k0  Kver, định nghĩa p  p  p với p nào đó p(0, 1); giá trị tối ƣu cho p đƣợc
0k r

đƣa ra trong (5). Chú ý rằng

p
0k

(1 p )  p  p
0k 0
(1 p)  p

với mọi k0  Ksig Kver.

Cuối cùng, Fred trả về cái giả mạo (H, x). Fred đƣợc định nghĩa theo ngôn từ của F, điều
đó có nghĩa rằng F trả về cái giả mạo (M, x) với H = h(M). Nếu cái giả mạo là hợp lệ,
thì chúng ta có thể viết y = f(x), y = 0|| r* ||w||E, và r = -1(g(w)) r*; |w| = kh. Theo
i

giả thiết, h((H, r)) là đã biết, điều đó có nghĩa là (H, r) =(Hi, ri) với i nào đó. Nếu (Hi,
ri) là một phần của yêu cầu ký của văn bản M’ nào đó, thì (H, x) không là giả mạo hợp
lý cho Fred. Nếu (Hi, ri) là yêu cầu h-oracle, thì bi = 1 với xác suất 1-p, trong trƣờng
hợp này bộ nghịch đảo sẽ có thể tính đƣợc f -1(). Cho nên xác suất thành công cho bộ
nghịch đảo với điều kiện rằng không có các h-va chạm trong mô hình thu gọn ít nhất
là:

99
qsig
 p 
(1 p)   . ''   ( p, , qsig ). "
(1 p)   p 

Hiệu ứng của việc thoát ra trong bƣớc S4 đƣợc xem xét. Thực vậy, vẫn có trƣờng hợp
khi bộ nghịch đảo sẽ thoát ra- các vòng lặp trong các bƣớc H5 và H6 không thể chạy
mãi. Giả sử tập Y trong Bổ đề 2 là tập của các chuỗi bắt đầu bởi 0, kết thúc với chuỗi
E và có chuỗi w đứng trƣớc E không bằng với wj với bất kỳ j < i (điều đó có nghĩa
rằng Y trở nên nhỏ hơn trong thuật toán, nhƣng điều này không ảnh hƣởng tới các kết
luận trong Bổ đề 2). Xác suất rằng số nguyên ngẫu nhiên từ ZN thuộc về Y là ít nhất
1
2kE .(1 qt 2kh ) . Cho phép chúng ta giả thiết rằng bộ nghịch đảo lặp lại thủ tục trong

các bƣớc H5 và H6
2kE 1 2

1 qtot 2kh 
. kh ln 2  qhash  2qsig 
lần trong toàn bộ thuật toán. Theo Bổ đề 2, xác suất rằng bộ nghịch đảo sẽ thoát ra
nhiều nhất là 2k (nhắc lại rằng kẻ giả mạo trong lƣợc đồ thu gọn đƣợc cho phép làm
h

(qhash+ qsig) h-yêu cầu.

Tổng kết lại, xác suất không điều kiện để bộ nghịch đảo sẽ thành công ít nhất là:

1
, k ).  p, ,  .( " 2kh )   ( p,  ).  , k )  2kh 
c(q
q ,q c(q
red h sig sig tot

( 2k có thể đặt bên trong dấu ngoặc, bởi vì xác suất không thành công trong bƣớc H5
h

hoặc H6 nhiều nhất là 2k không phụ thuộ vào các giá trị bi là nhƣ thế nào). Biểu thức
h

này đạt đƣợc cực đại cho p nhƣ đã đƣợc định nghĩa ở trên.

Cuối cùng, chú ý rằng nếu Ksig  Kver = , thì chúng ta có thể định nghĩa p  1 nếu
rk

kr Ksig và
p  0 nếu kr  Kver , cái này mang lại (p, , qsig) =1. Quá trình chứng
rk

minh kết thúc tại đây.

10
0
6.2 RSA-PSS với việc khôi phục thông điệp
Chúng ta có thể mở rộng lƣợc đồ RSA-PSS để thêm vào chức năng khôi phục thông
điệp. Chúng ta định nghĩa một lƣợc đồ ký RSA-GENPSS-R có đầu vào là một phần
thông điệp MR có khả năng khôi phục lại và một phần thông điệp MNR không thể khôi
phục đƣợc nhƣ dƣới đây. Thao tác mã hóa GENPSS-R-ENCODE nhận xâu H có độ
dài kh làm đầu vào, phần thông điệp khôi phục đƣợc MR và độ dài muối thỏa mãn k0
đƣợc chọn từ tập Ksig. Chúng ta yêu cầu rằng |MR|  kmr – k0, trong đó kmr là một số
nguyên cố định nhỏ hơn kg.

GENPSS-R-ENCODE(MR,H,k0)

(1) r R {0,1}k 0

(2) w  h((MR , H, r))

(3) r*  g(w)  (M R|| r)

(4) Return y = 0 || r* ||w||E

Ở đây:

 : {0, 1}
kmr k0
 Kver  {0,1}*
× {0, 1}k h × {0, 1}K sig

là một hàm thỏa mãn bộ ba (MR, H, r) dễ dàng tính đƣợc từ (MR , H , r) . Cụ thể

(MR , H , r) = (|MR|)64 ||MR||H||r) trong đó (i)64 là biểu diễn 64 bit thấp của số nguyên
i.  đƣợc định nghĩa nhƣ trong các lƣợc đồ trƣớc, ngoại trừ chúng ta cho phép bất kỳ
đầu vào có độ dài bit lên tới kmr. Nhƣ đã nói ở mục trƣớc x dễ dàng tính đƣợc từ  (x).
-|x|-1
Cụ thể  (x) = 0k g || 1 || x. ( trong trƣờng hợp này giá trị kmr = kg -1 )

Với mỗi một xâu MR và r dễ dàng trích ra từ (MR , H , r) , chỉ có phép nối của các xâu
có thể xác định từ  (MR||r). Còn độ dài muối là một đầu vào đối với thao tác xác
minh, điều này có nghĩa là các xâu tách biệt có thể suy ra từ phép nối.

10
1
Thủ tục xác minh khôi phục MR từ thông điệp đƣợc mã hóa nhƣ sau:

Cho k0 là một số nguyên thuộc tập Kver.

GENPSS-R-RECOVER(H,y,k0)

(1) Viết y dƣới dạng

y= b || r* ||w ||E’ (|b| = 1,|r*|=kg , |w|=kh , |E’| = kE)

(2) Nếu b = 1 hoặc E # E’ cho ra là 0 và dừng kết thúc quá trình xác minh

(3) Nếu có thể thì viết g(w)  r* =  (r) với |MR|  kmr – k0 và |r| = k0 ,nếu không trả

về “lỗi” và thoát ra.

(4) Nếu h((MR , H, r))  w thì trả về xâu MR, ngƣợc lại thông báo “lỗi”

Định nghĩa sơ đồ rút gọn RSA-GENPSS-R-REDUCED(Ksig, Kver) nhƣ sau. Thao tác
ký có đầu vào H 
{0,1}kh , MR {0,1}n , và một độ dài muối k0  K . Quá trình

v

thực thi nhƣ sau:

RSA-GENPSS-R-REDUCED-SIGN(MR,H,k0)
Thao tác khôi phục có đầu vào là thông điệp H {0, 1} k , chữ ký x, độ dài muối k0
h

(4) y  GENPSS-R-ENCODE(MR,H,k0)
 Kver và đƣợc thực thi nhƣ sau:
(5) x  f -1(y)
RSA-GENPSS-R-REDUCED-RECOVER(H,x,k0)
(6) return x.
(1) y  f (x)

(2) MR  GENPSS-R-RECOVER(H,y,k0)

(3) Nếu không có “lỗi” thì trả về giá trị MR , ngƣợc lại thông báo “lỗi”

10
2
Thao tác ký và khôi phục chính của lƣợc đồ RSA-GENPSS-R-SIGN và RSA-
GENPSS-R-RECOVER nhận xâu MNR có độ dài tùy ý làm đầu vào thay vì xâu H có
độ dài kh.

RSA-GENPSS-R-SIGN(MR,MNR, k0)

6.3 Các mô
(1) H  hình
h(MNR)an toàn của lƣợc đồ ký RSA-PSS với việc khôi

phục (2)
thông điệp
x  RSA-GENPSS-R-REDUCED-SIGN(M R,H,k0)

Các mô(3)hình
Trảan
vềtoàn
x đối với sơ đồ RSA-GENPSS-R và RSA-GENPSS-R-REDUCED
tƣơng tự các mô hình của RSA-GENPSS và RSA-GENPSS-REDUCED với một vài
điều chỉnh nhỏ:
RSA-GENPSS-R-RECOVER(MNR,x,k0)
1 Mục tiêu của ngƣời giả mạo trong lƣợc đồ RSA-GENPSS-R là phải
(1) H  h(MNR)
tìm ra một cặp (MNR, x) mà x là chữ ký hợp lệ của (MR, MNR) đối với MR
(2) MR 
nàoRSA-GENPSS-R-REDUCED-RECOVER(H,x,k
đó. 0)

(3) Nếu
2 không
Mục có
tiêu“lỗi”
củaxuất hiện thì
ngƣời giảtrảmạo
về Mtrong
R ngƣợc lại trả
lƣợc đồvềRSA-GENPSS-R-
“lỗi”
REDUCED là phải tìm ra một cặp (MNR, H, x) mà x là chữ ký hợp lệ
của (MR, H) đối với MR nào đó.

10
3
3 Các yêu cầu của oracle h đƣợc chấp nhận trong lƣợc đồ rút gọn là các
xâu x thỏa mãn x = (MR , H , r)
đối với |H| = kh, |r|  Ksig  Kver và
|MR|+|r|  kmr.

Cũng nhƣ ở phần trƣớc, chúng ta giả thiết rằng oracle g và oracle h trong lƣợc đồ rút
gọn là độc lập. Chúng ta cũng dễ dàng thấy đƣợc bổ đề 1 cũng đúng đối với lƣợc đồ
GENPSS-R.

Định lý 2

Cho hệ thống ký hiệu nhƣ ở định lý 1. Giả thiết rằng phép tính nghịch đảo RSA là (t’,
 ’ )-khó. Khi đó với bất kỳ qsig và qhash lƣợc đồ RSA-GENPSS-R(Ksig, Kver) là (t, qsig, qhash,
 )-an toàn, trong đó

t(k) = t’(k) - 2 k E 1  .O(T (k))


2

1  qtot 2 k h
. k h ln 2  qhash(k)  2qsig (k) f

và  (k) = 1
.  ’(k) + c(qtot, kh) + 2-k h (7)
 ( p, , qsig
)

Nếu Ksig  Kver =  thì  (k) =  ’(k) + c(qtot, kh) + 2-k h

Chứng minh

Việc chứng minh hoàn toàn giống nhƣ định lý 1. Thuận toán yêu cầu oracle giống
chính xác nhƣ ở định lý 1, ngoại trừ H, Hi và Hj đƣợc thay thế bằng (M, H), (Mi, Hi) và
(Mj, Hj) ở những nơi thích hợp. Ví dụ, chúng ta cần một tập R(M, H, k0) cho mỗi (M,
H) và k0 thay vì một tập R(H, k0) cho mỗi H và k0. Ngoài ra  (r) phải đƣợc thay thế
bằng  (M || r) ở bƣớc H7 và S8.

Lƣu ý

Điều quan trọng là mỗi một xâu MR, H và r có thể đƣợc trích ra theo một cách duy
nhất từ (MR , H , r) . Ví dụ (MR , H , r) =H||MR||r sẽ là một lựa chọn tồi bởi vì chữ ký
của (MR, MNR) với muối r cũng sẽ là một chữ ký của (M’R, MNR) với muối r’ khi mà
MR||r= M’R||r’.
10
4
KẾT LUẬN

Trong các năm gần đây có một xu hƣớng hƣớng tới các kỹ thuật mật mã đƣợc gọi là
“an toàn chứng minh đƣợc”. Nếu một lƣợc đồ chữ ký không có chứng minh an toàn,
thì có thể về mặt lý thuyết các chữ ký dễ bị giả mạo, trong khi bài toán nằm dƣới vẫn
là khó giải. Một cách lý tƣởng, ngƣời ta mong muốn có sự đảm bảo rằng các bài toán
là cùng cần một lƣợng thời gian xử lý nhƣ nhau. Mặc dù theo lý thuyết độ phức tạp
không cho phép chúng ta chứng minh rằng bài toán cơ sở, tức là RSA, là chắc chắn
khó giải, chúng ta sẽ có một sự tin tƣởng rằng nếu bài toán đó là thực sự khó giải, thì
các chữ ký cũng khó giả mạo nhƣ vậy.

RSA-PSS mang lại lợi ích lâu dài là sự tin cậy cao độ vào việc thu gọn khoảng cách
giữa giả thuyết đƣợc duy trì rộng rãi rằng bài toán RSA là khó giải và khẳng định rằng
các chữ ký là khó giả mạo. Thực ra, RSA-PSS có một trong những khoảng cách nhỏ
nhất nhƣ vậy trong số các kỹ thuật “an toàn chứng minh đƣợc” hiện thời; theo cách nói
thông thƣờng, phép chứng minh cho độ an toàn của RSA-PSS là rất “chặt”. Việc ngẫu
nhiên hoá trong lƣợc đồ chữ ký đóng một vai trò quan trọng trong việc đạt đƣợc tính
chặt và là một trong những đóng góp cơ bản từ lƣợc đồ PSS của Bellare và Rogaway.
Không có một kẻ hở nào đƣợc tìm thấy trong chứng minh độ an toàn, nó cho một suy
dẫn hiệu quả. RSA-PSS dựa vào bài toán RSA đã đƣợc nghiên cứu kỹ và cho phép
kiểm tra chữ ký nhanh. Nó đã đƣợc lựa chọn.

Kết quả chính của luận văn gồm có:

1. Tìm hiểu, nghiên cứu các đặc điểm, tính chất, tính hiệu quả và cách sử dụng của
lƣợc đồ ký dựa vào phƣơng pháp xác suất, đặc biệt là các chuẩn chữ ký số.

2. Nghiên cứu những bằng chứng an toàn tối ƣu cho lƣợc đồ ký dựa vào phƣơng
pháp PSS.

3. Chứng minh tính an toàn chặt của lƣợc đồ ký RSA-PSS.

Hƣớng phát triển của luận văn

10
5
Quan nội dung nghiên cứu của luận văn, rút ra kết luận sau

1. Hiện chữ ký số RSA-PSS an toàn cả về mặt lý thuyết và thực hành.

2. Hệ chữ ký số này đã đƣợc chuẩn hóa của nhiều tổ chức chuan hóa c ó uy tín của
thế giới nhƣ: ISO,PKCS.

3. Hệ chữ ký RSA đã đƣợc sử dụng rộng rãi nhất trên thế giới

Tuy vậy hiện nay ngoài hệ chữ ký RSA-PSS còn nhiều hệ chữ ký khác đáng tin cậy.
Trong số đó nổi lên là hệ chữ ký số dựa trên đƣờng hệ mật dựa vào đƣờng cong
Elliptic. Theo quan điểm nghiên cứu ứng dụng thì chúng ta cần nghiên cứu ứng dụng
của nhiều hệ chữ ký số tin cậy để có thể sử dụng thích hợp trong từng điều kiện cụ thể.

10
6
TÀI LIỆU THAM KHẢO

[1] Bùi Văn Phát, Phạm Huy Điển Viện Toán học, viện Khoa học và Công nghệ Việt
Nam, Về độ an toàn của một số lược đồ tạo chữ ký điện tử

[2] Phan Đình Diệu, Lý thuyết mật mã và An toàn thông tin.

[3] A. Menezes, P. van, Oorschot, and S. Vanstone, CRC Press 1996. Handbook of
Applied Cryptography

[4] D.StinSon, Cryptography: Theory and Practice

[5] Jakob Jonsson, Security Proofs for the RSA-PSS Signature Scheme and Its
Variants- Draft 1.1

[6] Jean-Sébastien Coron, Optimal security proofs for PSS and other signature
schemes

[7] RSA Laboratories, June 14, 2002.PKCS #1 v2.1: RSA Cryptography Standard
[8] Jean-Sébastien, Advances in Cryptology-CRYPTO 2000, pp. 229-235 Springer-
Verlag On the Exa Security of Full Domain

[9] Wenbo Mao, Modern Cryptography : Theory and Practice.

[10] Raising the Standard for RSA Signatures: RSA-PSS của Burt Kaliski đăng trên trang
web http://www.rsasecurity.com/rsalabs/

[11] http://www.rsasecurity.com/rsalabs/node.koasp?id=2125,
PKCS#1:RSACryptography Standard

[12] Bellare và P. Rogaway. The exact Security of Digital Signatures-How to sign with
RSA and Rabin M. Proceedings

10
7
Thank you for evaluating AnyBizSoft
PDF Merger! To remove this page,
please register your program!
Go to Purchase Now>>

AnyBizSoft

PDF Merger
 Merge multiple PDF files into one
 Select page range of PDF to merge
 Select specific page(s) to merge
Extract page(s) from different PDF
files and merge into one

You might also like