Tải bản đầy đủ (.docx) (71 trang)

nghiên cứu về Chữ ký số trên đường cong Elliptic(ECDSA)

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

Contents
MỞ ĐẦU
Ngày nay với sự phát triển mạnh mẽ của công nghệ thông tin, truyền thông nói
chung và Internet nói riêng đã giúp cho việc trao đổi thông tin nhanh chóng, dễ dàng, E-
mail cho phép người ta nhận hay gửi thư ngay trên máy tính của mình, E-business cho
phép thực hiện các giao dịch trên mạng. Do vậy một vấn đề phát sinh là thông tin có thể
bị trộm cắp, có thể là sai lệch, có thể giả mạo. Điều đó có thể ảnh hưởng tới các tổ chứa,
các công ty hay cả một quốc gia. Những bí mật kinh doanh, tài chính là mục tiêu của các
đối thủ cạnh tranh. Những tin tức về an ninh quốc gia là mục tiêu của các tổ chức tình
báo trong và ngoài nước.
Để giải quyết tình hình trên an toàn thông tin được đặt ra cấp thiết. Kỹ thuật mật
mã là một trong những giải pháp của an toàn truyền thông. Kỹ thuật này có từ ngàn xưa
nhưng nó đơn giản, ngày nay khi có mạng máy tính người ta dùng mật mã hiện đại. Các
nhà khoa học đã phát minh ra những hệ mật mã nhằm che dấu thông tin cũng như là làm
rõ chúng để tránh sự dòm ngó của những kẻ cố tình phá hoại như các hệ mật: RSA,
Elgamal… mặc dù cũng rất an toàn nhưng có độ dài khoá lớn nên trong một số lĩnh vực
không thể ứng dụng được.
Chính vì vậy người ta đã phát minh một hệ mật đó là hệ mật trên đường cong
elliptic, hệ mật này được đánh giá là hệ mật có độ bảo mật an toàn cao và hiệu quả hơn
1
nhiều so với hệ mật công khai khác, nó đã được ứng dụng trên nhiều lĩnh vực và được sử
dụng nhiều nơi trên thế giới tuy nhiên còn mới mẻ ở Việt Nam. Trong tương lai gần Hệ
mật trên đường cong Elliptic sẽ được sử dụng một cách phổ biến và thay thế những hệ
mật trước nó.
Đồ án tốt nghiệp của em nghiên cứu về Chữ ký số trên đường cong Elliptic
(ECDSA). Qua thời gian thực tập tại Bộ môn An ninh mạng, dưới sự của thầy giáo, và
xem thêm qua một số tài liệu tham khảo, em đã có cái nhìn khái quát về vấn đề mình
đang tìm hiểu. Dưới đây là báo cáo thực tập của em về những gì em đã tìm hiểu được và
đang tìm hiểu. Mong thầy giáo có những nhận xét để em có thể hiểu sâu hơn về lĩnh vực
này, và có thể bổ sung vào đồ án tốt nghiệp.
Chương I: TỔNG QUAN VỀ MẬT MÃ


1. Hệ mật nói chung.
Thay cho dùng các quy tắc, các quy định của luật lệ, mã hoá dựa trên một nghành
toán học, được gọi là mật mã để bảo vệ tính riêng tư của thông tin cho mỗi người. Mặc
dù toán học làm cho mật mã phức tạp, nhưng nguyên lý mật mã rất đơn giản. Mỗi một hệ
mật mã đều bao gồm 4 phần cơ bản sau:
- Bản tin ta muốn viết thành mật mã (được gọi là bản rõ - Plaintext).
- Bản tin sau khi đã mã hoá (được gọi là bản mã - Ciphertext).
- Thuật toán mã hoá, đó là một hàm toán học được dùng để mã hoá bản tin.
- Khoá (hoặc các khoá - Keys), có thể là một số, một từ hoặc một câu được sử
dụng trong thuật toán mã hoá.
2
Hình 1.1:Quá trình mã hoá và giải mã
Bản rõ
Mã hoá
Bản mã
Giải mã
Bản rõ
Mục đích của mật mã làm cho con người không có khả năng tái tạo lại bản rõ từ
bản mã mà không có khoá tương ứng.
Trên hình 1.1 minh hoạ quá trình mã hoá và giải mã.
Như vậy đầu ra là bản mã tuỳ thuộc vào khoá và bản rõ. Bản rõ sẽ được bên gửi
mã hoá (encryption) thành bản mã gửi qua kênh liên lạc, tới người nhận. Bên nhận sẽ làm
ngược lại, nhận bản mã rồi giải mã (decryption) thành bản rõ để đọc được nội dung.
Hệ mật mã có khoá dùng chung cho cả thuật toán mã hoá và giải mã gọi là hệ mật
mã khoá đối xứng (bí mật), còn hệ mật mã khoá dùng cho thuật toán mã hoá khác với
khoá dùng cho giải mã gọi là hệ mật mã khoá công khai (không đối xứng). Sau đây
chúng ta sẽ xem xét hai loại mật mã trên.
2. Hệ mật mã khoá đối xứng.
2.1. Khái niệm cơ bản.
Đây là kiểu mật mã được sử dụng từ nhiều thế kỷ. Tên của nó bắt nguồn từ sự thật

là người gửi và người nhận dùng chung một khoá, và khoá này phải được giữ bí mật.
Như vậy là trước khi trao đổi bản tin cho nhau, phải có kênh liên lạc mật để chuyền cho
nhau khoá mật. Quá trình này gọi là phân phối khoá. Thực hiện quá trình này rất khó
khăn, vì nếu đã bảo đảm có kênh liên lạc mật để truyền khoá, thì tại sao lại không truyền
trực tiếp bản tin?.
3
K
K
X
X
Y
Mã hoá Giả mã Người nhận B
Thám mã
Kênh an toàn
Nguồn khoá
Hình 1.2: Hệ mật mã khoá đối xứng
Người gửi A
Mật mã khoá bí mật còn được gọi là mật mã đối xứng, bởi vì cùng một khoá được
sử dụng cho cả hai đầu của kênh liên lạc. Trên hình 1.2 minh hoạ mô hình hệ mật mã
khoá bí mật.
Tại
nơi gửi, tạo ra một tập hợp các bản rõ X=[X
1
, X
2
,…,X
M
]
Nguồn khoá tạo ra một tập hợp khoá K=[K
1

, K
2
,….,K
L
]. Nếu khoá được tạo ra tại
nơi gửi, thì nó phải được truyền đến nơi nhận theo một kênh an toàn.
Bản rõ X, khoá K là đầu vào, Bộ mã dùng thuật toán mã hoá tạo ra được bản mã
Y=[Y
1,
Y
2
,….,Y
N
]. Ta có:
Y=E
k
(X)
Y được tạo ra bằng cách sử dụng thuật toán mã hoá E một hàm của X và được xác định
nhờ khoá K.
Nơi nhận, nhận lại thông tin nhờ “bộ giả mã”, với hàm giải mã D
X=D
k
(Y)
4
Mô hình trên bảo đảm cả tính tin cậy (bảo mật) và xác thực vì chỉ có người gửi và
nhận có khoá K, nhưng không làm chữ ký số được vì người nhận có thể giả mạo bản tin
và người gửi có thể chối bỏ bản tin.
2.2. Các thuật toán dùng trong hệ mật mã khoá đối xứng.
Có nhiều thuật toán khoá bí mật, sau đây chỉ liệt kê một số loại thông dụng nhất:
• DES (Data Encryption Standard) chuẩn mã hoá dữ liệu, được chấp nhận như là

chuẩn của chính phủ Hoa kỳ năm 1977. DES dùng khoá 56bits, được coi là một
thuật toán mạnh. Nhược điểm của DES là độ dài khoá ngắn 56bits.
• Triple DES làm cho DES an toàn hơn, bằng cách dùng thuật toán DES 3 lần với 2
khoá khác nhau.
• IDEA(International Data Encryption Algorithm) được Jane L.Masey và Xuejia Lai
xây dựng tại Thụy Sĩ và được công bố năm 1990. IDEA sử dụng khoá 128 bits.
IDEA cũng được coi như một thuật toán mạnh, dùng thay cho DES.
2.3. Những vấn đề cần giải quyết trong hệ mật mã khoá đối xứng.
Hệ mật mã này có những vấn đề khó khăn sau:
- Phân phối khoá.
- Không thể gửi bản mã cho một người nào đó nếu bạn không có khả năng gửi cho
họ khoá bí mật.
3. Hệ mật mã khoá công khai.
3.1. Ý tưởng xây dựng hệ mật mã khoá công khai:
Trong mô hình mật mã cổ điển mà cho tới tận ngày nay vẫn đang được nghiên cứu:
A (người gửi) và B (người nhận) cùng chọn một khoá k bí mật. Sau đó A và B dùng khoá
5
k, luật mã hoá e
k
và luật giải mã d
k
để chuyển đổi bản tin rõ M thành bản tin mã C. Trong
đó d
k
giống như e
k
hoặc dễ dàng nhận được từ e
k
(ví dụ như hệ mật DES có quá trình giải
mã hoàn toàn tương tự như quá trình mã hoá nhưng thủ tục khoá thì ngược lại). Các hệ

mật này được gọi là các hệ mật mã khoá bí mật. Một nhược điểm của hệ mật loại này là
giữa A và B phải có một kênh an toàn để trao đổi thông tin trước về khoá, trước khi gửi
một bản tin bất kỳ. Hơn nữa để bảo đảm tính mật thì sự phân phối khoá cho A và B
(trong khi đó khoá chỉ dùng một lần, không được trùng lặp khoá) là rất cồng kềnh. Hơn
nữa một kênh truyền riêng để phân phối khoá bí mật sẽ dẫn đến tốn kém về mặt kinh tế
và tổ chức kênh truyền (đặc biệt tốn kém khi A và B ở quá xa). Chính vì vậy mà ý tưởng
xây dựng một hệ mật mà khoá mã có thể được công khai (khoá công khai của từng người
có thể được quản lý chung bởi một Server quản lý khoá công cộng). Như vậy khi A gửi
tin cho B thì A không cần thông tin trước về khoá mà A chỉ việc lấy khoá công khai của
B về và dùng luật mã hoá e
k
mã hoá bản tin và gửi cho B. Để giải mã thì B dùng luật giải
mã d
k
và khoá bí mật của riêng mình giải mã bản tin đó. Đây chính là ý tưởng xây dựng
một hệ mật mã khoá công khai (khoá dùng chung) làm cho việc sử dụng trở nên thuận
tiện, giảm chi phí kênh truyền và khắc phục sự cồng kềnh trong phân phối khoá.
3.2. Hệ mật mã khoá công khai.
Ý tưởng về hệ mật mã khoá công khai đã được Difie và Hellman đưa ra vào năm
1976 đó là hệ mật mã bất đối xứng. Hay nói cách khác hệ mật mã khoá công khai có tính
chất bất đối xứng, nó bao gồm việc sử dụng hai khoá riêng biệt tương phản với mã hoá
quy ước có tính chất đối xứng là chỉ sử dụng một khoá. Việc sử dụng hai khoá có tầm
quan trọng sâu sắc trong lĩnh vực cần tính bí mật phân bố khoá và sự chứng thực. Sự phát
triển của mật mã khoá công khai đóng một vai trò rất lớn và tạo ra cuộc cách mạng trong
toàn bộ lịch sử của mật mã. Trong đó những giải thuật khoá công khai đều dựa trên
những hàm toán học hơn là những phép thay thế và chuyển vị trong những hệ mật mã cổ
điển. Quan trọng hơn là mật mã khoá công khai có tính chất bất đối xứng bao gồm việc
sử dụng hai khoá riêng biệt. Khái niệm mật mã khoá công khai đã tạo ra sự cố gắng để
6
giải quyết hai vấn đề khó khăn nhất trong mã hoá quy ước đó là sự phân bố khoá và chữ

ký số:
+ Trong mã hoá quy ước sự phân bố khoá yêu cầu hai hoặc nhiều người truyền
thông cùng (share) tham gia một khoá mà bằng cách nào đó đã được phân bố tới
họ hoặc sử dụng một trung tâm phân bố khoá.
+ Nếu mật mã đã chở nên phổ biến (không chỉ trong Quân đội, Công an, Đảng
chính mà còn dùng trong thương mại.v.v ) thì những bản tin và tài liệu điện tử
sẽ cần những chữ ký tương đương mà đã sử dụng trong các tài liệu giấy. Tức là
một phương pháp có thể được nghĩ ra có quy định làm hài lòng tất cả những user
tham gia khi mã một đoạn tin số được gửi bởi một cá nhân đặc biệt hay không?
Trong sơ đồ mã hoá quy ước, các khoá được dùng cho mã hoá và giải mã một đoạn
tin là giống nhau. Thay vì điều đó có thể phát triển giải thuật mã hoá dựa trên một khoá
cho mã hoá, một khoá khác (có liên quan tới khoá trên) cho giải mã. Hơn nữa các giải
thuật này có những đặc điểm quan trọng sau:
+ Việc tính toán một cách không khả thi để xác định khoá giải mã trong khi chỉ
biết giải thuật mật mã và khoá mã hoá (khoá công khai).
+ Trong RSA (sẽ nói ở chương sau) còn có đặc điểm hoặc một trong hai khoá
quan hệ có thể được sử dụng cho mã hoá còn khoá kia được dùng cho giải mã.
Các bước tiến hành trong quá trình mã hoá công khai:
+ Mỗi user tạo ra một cặp khoá để dùng cho mã hoá và giải mã bản tin mà sẽ
nhận.
+ Mỗi hệ thống công bố rộng rãi khoá mã hoá bằng cách đặt khoá vào một thanh
ghi hay một file công khai. Đây chính là khoá công khai, khoá còn lại được giữ
riêng và bí mật.
7
USER A USER B
Giải thuật mã hóa
Giải thuật giải mã
Hình 1.3: Sơ đồ mã hoá và giải mã
+ A muốn gửi bản tin cho B thì A mã hoá bản tin bằng khoá công khai của B rồi
gửi cho B.

+ Khi B nhận được bản tin mã hoá, B giải bản mã bằng khoá bí mật của mình.
Không một người nào có thể giải mã bản mã này bởi chỉ có B mới có khoá bí
mật.
Ta có sơ đồ mã hoá và giải mã sau:


Với cách tiếp cận trên, tất cả những người tham gia có thể truy xuất khoá công khai.
Khoá bí mật được tạo bởi từng cá nhân vì vậy không bao giờ được phân bố. Ở bất kỳ thời
điểm nào, hệ thống cũng có thể chuyển đổi cặp khoá để đảm bảo tính bí mật. Bảng tóm
tắt một số khía cạnh quan trọng về mã hoá quy ước và mã hoá công khai: để phân biệt
giữa hai loại, chúng ta sẽ tổng quát hoá liên hệ khoá sử dụng trong mã hoá công khai là
khoá công khai và khoá bí mật.
• Bảng tóm tắt:
Mã hoá quy ước Mã hoá công khai
8
*Yêu cầu:
Giải thuật tương tự cho mã hoá
và giải mã.
Người gửi và người nhận phải
tham gia cùng giải thuật và
cùng khoá.
*Tính bảo mật:
Khoá phải được giữ bí mật.
Không thể hay ít nhất không có
tính thực tế để giải mã bản mã
nếu thông tin “khác” không có
sẵn.
Kiến thức về giải thuật cộng với
các mẫu về mật mã không đủ để
xác định khoá.

*Yêu cầu:
Một giải thuật cho mã hoá và một
giải thuật cho giải mã.
Người gửi và người nhận mỗi người
phải có cặp khoá riêng cho mình.
*Tính bảo mật:
Một trong hai khoá phải được giữ bí
mật.
Không thể hay ít nhất không có tính
thực tế để giải mã đoạn tin nếu thông
tin “khác” không có sẵn.
Kiến thức về giải thuật cộng với một
trong các khoá, cộng với các mẫu về
mật mã không đủ để xác định khoá
kia.
Tùy thuộc vào cách sử dụng chúng ta có các mô hình khác nhau.
Trong mô hình đảm bảo tin cậy (Confidentially), người nhận B phát sinh ra một
cặp khoá: khoá công khai KU
b
và khoá cá nhân KR
b
. Khoá công khai KU
b
được công bố
cho tất cả mọi người, còn khoá cá nhân KR
b
chỉ có người B biết. Khi người gửi A muốn
gửi bản tin cho người nhận B, sẽ dùng khoá công khai của người nhận B để mã hoá. Chỉ
có người nhận B sử dụng khoá cá nhân của mình KR
b

mới giải mã được bản tin.
Với bản tin X và khoá KU
b
ở đầu vào, người gửi A dùng thuật toán mã hoá E để
tạo ra bản mã Y=[Y
1
,Y
2
,…Y
N
]:
9
X
Hình 1.4: Hệ mật mã khoá công khai bảo đảm tin cậy
Thám mã
Y
KUb
KRb
Nơi gửi Nơi nhận
Người gửi A
Y=E
KUb
(X)
Người nhận B dùng thuật toán giải mã D để tạo lại bản tin X:
X=D
KRb
(Y)
Mô hình hệ mật mã khoá công khai dùng để bảo đảm độ tin cậy được minh hoạ
trên hình 1.4.
Trong mô hình bảo đảm tính xác thực (Authentication), A chuẩn bị gửi bản tin cho

B, dùng khoá cá nhân của mình là KR
a
để mã hoá.
B có thể giải mã dùng khoá công khai của A là KU
a
. Chỉ có A mới tạo được bản
mã, nó sử dụng làm chữ ký số.
Với bản tin X và khoá KR
a
ở đầu vào, người gửi A dùng thuật toán mã hoá E để
tạo ra bản mã Y=[Y
1
,Y
2
,…,Y
N
]:
Y=E
KRa
(X)
Người nhận B dùng thuật toán giải mã D để tạo lại bản tin X
X=D
KUa
(X)
10
Mã hoá
Nguồn khoá
của B
Người
nhận B

Giải mã
Hình 1.5: Hệ mật mã khoá công khai bảo đảm tính xác thực
KUa
Người nhận B
Thám mã
KRa
X Y X
Người gửi
A Mã hoá Giải mã
Nguồn khóa của A
Nơi gửi Nơi nhận
Mô hình hệ mật mã khoá công khai để bảo đảm tính xác thực được minh hoạ trên hình
1.5.

Hệ mật mã này không bảo đảm được tính tin cậy, bản tin được truyền đi không thể
bị thay thế, nhưng bất kỳ ai dùng khoá công khai của A đều đọc được bản tin này.
Để bảo đảm cả tính tin cậy và xác thực, phải sử dụng hai lần mã hoá. Người gửi A
mã bản tin dùng khóa cá nhân của mình là KR
a
(tạo ra chữ ký số). Sau đó lại mã hoá lần
hai dùng khoá công khai của người nhận B là KU
b
. Quá trình giải mã tại nơi nhận sẽ xảy
ra ngược lại với quá trình trên. Người nhận sẽ giải mã bản mã dùng khoá cá nhân của
mình là KR
b
. Sau đó lại giải mã lần hai dùng khoá công khai của người gửi A là KU
a
:
Z=E

KUb
(E
KRa
(X))
X=D
KUa
(D
KRb
(Z))
Mô hình hệ mật mã khoá công khai bảo đảm tính tin cậy và xác thực được minh
hoạ trên hình 1.6.
11
X
Người gửi
A
KUb
KRa
KRb
KUa
Y Z Y X
Mã Hóa Mã Hóa Giải Mã Giải Mã
Người nhận
B
Nguồn khoá của A
Nguồn khoá của B
Nơi gửi Nơi nhận
Hình 1.6: Hệ mật mã khoá công khai bảo đảm tính xác thực và tin cậy
3.3. Các thuật toán dùng trong hệ mật mã khoá công khai.
Hệ mật mã công khai đầu tiên được Whitfeild Diffie và Martin Hellman mô tả
vào năm 1976. Sau đó một thời gian ngắn hai hệ mật mã công khai khác nhau đã đựơc

xây dựng: một là của Diffie và Hellman hai là của Ronald Rivers, Adi Shannir và Len
Adleman. Một hệ mật mã khác là xếp ba lô, được phát triển bởi Ralph Merkfe và
Martin Hellman.
Difie – Hellman: Trước khi hai đối tác liên lạc với nhau, mỗi bên tạo ra một khoá
bí mật, rồi trao đổi thông tin dựa trên khoá bí mật đó. Dựa trên thông tin này, hai đối tác
sẽ tạo ra khoá phiên dùng chung, chỉ có hai người biết để mã hoá các bản tin. Đối phương
không tham dự vào cuộc trao đổi thông tin này, nên anh ta không thể biết được khoá
phiên này.
RSA: Thuật toán RSA là một trong những thuật toán của mật mã công khai mạnh
nhất cho đến nay. Sẽ được nghiên cứu trong chương sau.
Elgamal: Thuật toán Elgamal được xây dựng trên tính khó giải của bài toán
logarit rời rạc trên các trường hữu hạn.
12
ECDSA: Thuật toán bảo mật cơ bản trên độ khó của vấn đề Logarithm rời rạc
trong đường cong Elliptic.
3.4. Yêu cầu đối với hệ mật mã khoá công khai.
Hệ mật mã khoá công khai dựa trên các khoá công khai/cá nhân có liên hệ toán
học với nhau và thoả mãn các điều kiện sau:
- Yêu cầu 1:
Công việc tính toán dễ dàng cho người nhận B → Tạo cặp khoá (khoá công khai
và khoá bí mật).
- Yêu cầu 2:
Công việc tính toán dễ dàng cho người gửi A → Biết khoá công khai KU của B
và bản tin cần mã hoá M để tạo ra bản tin mã tương ứng C cần gửi cho B: C=E
KUB
(M).
- Yêu cầu 3:
Công việc tính toán dễ dàng cho người nhận B để gải mã → Sử dụng khoá bí
mật KR của mình để giải mã bản mã C mà A gửi cho, khôi phục lại bản tin rõ ban đầu
M: M=D

KRB
(C) = D
KRB
[E
KUB
(M)].
- Yêu cầu 4:
Công việc tính toán khi biết KU để xác định KR đối với mã thám ngay cả khi thu
được bản mã C thì cũng không thể tìm được M.
- Yêu cầu 5:
Chức năng mã hoá và giải mã có thể được áp dụng:
M= D
KRB
[E
KUB
(M)]. (A gửi tin cho B).
M= E
KUB
[D
KRB
(M)]. (B gửi chữ ký cho A).
13
Ta có thể nhận thấy rằng việc tính Y=f(X) thì dễ dàng trong khi việc tính ngược
)(
1
YfX

=
lại là vô cùng khó. Nói cách khác là từ “dễ dàng” ở đây được xác định bởi
một bài toán là nó có thể được giải quyết trong một thời gian nhất định (có tính khả thi).

Nếu hàm chiều dài input là n bits thì thời gian để tính tỷ lệ với
a
n
(a = const). Nhằm bảo
đảm tính bảo mật người ta sử dụng khoá có kích thước đủ lớn (thường hàng trăm chữ số
thập phân). Ví dụ kích thước khoá và thời gian bẻ khoá trong các giải thuật RSA và ECC
(Elliptic Cuves Cryptogarphy) như sau:
RSA(bits) ECC (bits) Năm
512 106 10
4
768 132 10
8
1024 160 10
12

Đây là số liệu được lấy từ năm 1999 dùng để tham khảo. Chương sau ta sẽ chỉ ra tại
sao RSA lại dùng khoá có kích thước lớn.
3.5. Các ứng dụng sử dụng hệ mật mã khoá công khai.
Tuỳ thuộc vào từng ứng dụng mà user có thể sử dụng hoặc khoá bí mật hoặc khoá
công khai của người nhận hoặc cả hai mà hình thành một số kiểu chức năng sau đây:
+ Mã hoá / Giải mã: Người gửi mã hoá bản tin bằng khoá công khai của người
nhận, người nhận giải mã bằng khoá bí mật của mình.
+ Chữ ký số: Người gửi mã hoá đoạn tin (ký tên) bằng khoá bí mật của mình,
người nhận giải mã bằng khoá công khai của người gửi. Chữ ký được áp dụng
14
tới đoạn tin hay tới một khối dữ liệu nhỏ mà được liên kết trong một số phương
thức tới đoạn tin.
+ Chuyển đổi khoá: Người gửi mã hoá bản tin hai lần. Lần một mã hoá bản tin
bằng khoá bí mật của mình, lần hai mã hoá tiếp bản mã đã được mã trong lần
một bằng khoá công khai của người nhận. Người nhận giải mã bản mã bằng

cách dùng khoá bí mật của mình và tiếp đó dùng khoá công khai của người gửi
để giải mã.
Trên thế giới hiện nay có một số giải thuật cho mật mã khoá công khai như: ECC,
RSA, LUC, DSS….
3.6. Ưu điểm của hệ mật mã khoá công khai.
Ưu điểm nổi bật của hệ mật mã công khai so với hệ mật mã khoá bí mật là khoá có
thể công bố công khai, không cần phải có một kênh liên lạc bí mật để truyền khoá. Bạn
có thể công bố khoá công khai của mình trong danh mục điện thoại, cùng với hàng nghìn
các khoá công khai trên toàn thế giới, bạn có thể công bố nó trong cuốn sách mà bạn
viết…Bất kỳ một người nào cũng có thể dùng khoá công khai của bạn để mã bản tin gửi
cho bạn. Chỉ có bạn mới có thể đọc được nó, vì chỉ có bạn có khoá cá nhân của bạn. Hệ
mật mã khoá công khai ngoài việc mã hoá bản tin, xác thực, còn dùng làm chữ ký số và
trao đổi khoá.
CHƯƠNG II: TỔNG QUAN VỀ CHỮ KÝ SỐ
1. Lý thuyết về chữ ký số.
1.1. Mở đầu.
Một yếu tố gốc trong mật mã (cryptographic primitive) là nền tảng trong xác thực,
chứng thực, và chống chối bỏ đó là chữ ký số. Mục đích của một chữ ký số là để cung
15
(m1, s1) o
(m1, s2) o
(m1, s3) o
(m2, s1) o
(m2, s2) o
(m2, s3) o
(m3, s1) o
(m3, s2) o
(m3, s3) o
o True
o False

VA
m1
m2
m3
s3
s1
s2
SA
Hình 3.1: Hàm ký và kiểm tra của lược đồ chữ ký số.
cấp phương tiện cho một thực thể để gắn kết định danh của nó với một thông tin. Quá
trình ký gây ra sự biến đổi thông điệp và một số thông tin bí mật được giữ bởi thực thể
thành một cái được gọi là chữ ký. Mô tả chung của nó như sau.
Thuật ngữ và các ký hiệu
- M là tập các thông điệp mà có thể được ký.
- S là một tập các phần tử gọi là các chữ ký, có thể là các chuỗi nhị phân
với độ dài xác định.
- S
A
là một phép ánh xạ từ tập thông điệp M tới tập chữ ký S, và được gọi là
phép ánh xạ ký (signing transformation) cho thực thể A (Alice). Phép ánh xạ S
A
được giữ bí mật bởi A, và sẽ được sử dụng để tạo các chữ ký số cho các thông
điệp từ tập M.
- V
A
là một phép ánh xạ từ tập M x S tới tập {true, false}. V
A
được gọi là
phép ánh xạ kiểm tra (verification transformation) các chữ ký của A, đã được
công bố công khai, và được sử dụng bởi các thực thể khác để kiểm tra các chữ ký

đã tạo bởi A.
Định nghĩa: Các phép ánh xạ S
A
và V
A
cung cấp một lược đồ chữ ký số (digital
signature scheme) cho thực thể A. Đôi khi thuật ngữ kỹ thuật chữ ký số (digital signature
mechanism) được sử dụng.
Ví dụ: (digital signature scheme) M = {m
1
, m
2
, m
3
} và S = {s
1
, s
2
, s
3
}. Hình ở bên
trái dưới đây biểu diễn một hàm ký S
A
từ tập M và hình ở bên phải biểu diễn hàm kiểm
tra V
A
tương ứng.
16
Thủ tục ký:
Thực thể A (signer) tạo một chữ ký cho một thông điệp m ∈ M bằng cách thực

hiện như sau:
- Tính s = S
A
(m).
- Chuyển giao cặp (m, s). s được gọi là chữ ký của thông điệp m.
Thủ tục kiểm tra:
Để kiểm tra rằng một chữ ký s trên một thông điệp m đã được tạo bởi A, một thực
thể B (verifier) thực hiện các bước sau:
- Lấy hàm kiểm tra ký V
A
của A.
- Tính u = V
A
(m, s).
Chấp nhận chữ ký đã được tạo bởi A nếu u= true, và bác bỏ chữ ký nếu u= false.
Nhận xét:
- Các phép ánh xạ S
A
và V
A
thường được đặc trưng một cách gọn hơn bởi một
khoá; tức là, có một lớp các thuật toán ký và kiểm tra ký được công bố công khai, và từng
thuật toán đó được định danh bởi một khoá. Do vậy, thuật toán ký S
A
của A được xác
17
định bởi một khoá k
A
và yêu cầu A phải giữ bí mật khoá k
A

. Tương tự, thuật kiểm tra ký
V
A
của A được xác định bởi khoá l
A
được đưa ra công khai.
- Các chữ ký viết tay được coi như một lớp đặc biệt của các chữ ký số. Trường
hợp này, tập các chữ ký S chỉ bao gồm một phần tử đó là chữ ký viết tay của A, gọi là s
A
.
Hàm kiểm tra chữ ký đơn giản kiểm tra xem chữ ký trên thông điệp được ký một cách có
chủ ý bởi A là s
A
.
Một đặc trưng không mong muốn, đó là chữ ký viết tay không phụ thuộc vào
thông điệp (message-dependent). Do đó, cần có các bắt buộc thêm được áp đặt lên các kỹ
thuật chữ ký số như ở dưới đây:
Các tính chất yêu cầu đối với các hàm ký và kiểm tra ký:
Có một vài tính chất mà các ánh xạ ký và kiểm tra ký phải thoả mãn.
(i) s là một chữ đúng của A trên thông điệp m nếu và chỉ nếu V
A
(m, s) = true.
(ii) Nó là không thể tính toán được đối với thực thể khác A để tìm một s

S mà
V
A
(m, s) = true, với m

M.

Hình (3.1) trên thể hiện tính chất (i). Có một đường mũi tên trong biểu đồ cho V
A
từ (m
j
, s
j
) đến true tương ứng với một đường mũi tên từ m
j
tới s
j
trong biểu đồ S
A
. Tính
chất (ii) đảm bảo tính an toàn cho phương pháp - chữ ký ràng buộc A duy nhất với thông
điệp đã được ký.
Chữ ký số trong thực tế.
Với các chữ ký số thực sự có tác dụng trong thực tế, các phương án cụ thể của các
khái niệm trước đó chắc chắn phải có thêm các tính chất khác. Một chữ ký số phải:
1. Dễ dàng tính toán bởi người ký (hàm ký là dễ dàng áp dụng);
2. Dễ dàng kiểm tra bởi người khác (hàm kiểm tra ký là dễ dàng áp dụng);
18
3. Có khoảng thời gian phù hợp, ví dụ, an toàn về phương diện tính toán tránh
được giả mạo cho đến khi chữ ký không cần thiết cho mục đích của nó.
Giải quyết tranh chấp.
Mục đích của một chữ ký số (hoặc phương pháp ký bất kỳ) là để cho phép giải
quyết các trạnh chấp. Ví dụ, một thực thể A phủ nhận đã ký lên một bản rõ hoặc thực thể
B khẳng định sai một chữ ký trên một bản rõ là được tạo ra bởi A. Để khắc phục các vấn
đề như vậy thì một Tổ chức tin cậy thứ ba (Trusted Third Party, TTP) hoặc quan toà
(judge) được yêu cầu. TTP cần phải là một thực thể mà tất cả các bên tham gia đồng ý
công nhận từ trước.

Nếu A phủ nhận rằng bản rõ m đang lưu giữ ở B là đã được ký bởi A, thì B có thể
đưa ra chữ ký s
A
trên m tới TTP cùng với m. Các quyết định của TTP sẽ ủng hộ B nếu
V
A
(m, s
A
)=true và ủng hộ A nếu ngược lại. B sẽ chấp nhận quyết định đó nếu B tin cậy
rằng TTP có cùng phép ánh xạ kiểm tra ký V
A
như A đã có. A sẽ chấp nhận quyết định
đó nếu A tin cậy rằng TTP đã sử dụng V
A
và tin rằng S
A
không bị phá. Do vậy, việc giải
quyết hợp lý tranh chấp yêu cầu các tiêu chuẩn sau phải được thoả mãn.
Những yêu cầu để giải quyết các chữ ký bị tranh chấp.
1. S
A
và V
A
có các tính chất (a) và (b) đã nói trên.
2. TTP có bản sao đúng của V
A
.
3. Phép ánh xạ ký S
A
phải được giữ bí mật và vẫn còn an toàn.

Các tính chất này là cần thiết nhưng trong thực tế thì có thể không đảm bảo được
chúng. Ví dụ, giả thiết cho rằng S
A
và V
A
có các đặc điểm như yêu cầu trong tính chất 1
có thể là không cho một lược đồ chữ ký đặc biệt. Một khả năng khác đó là A khẳng định
19
sai rằng S
A
đã bị phá. Để vượt qua các vấn đề này yêu cầu một phương pháp thoả thuận
để phê chuẩn chu kỳ thời gian mà A sẽ chấp nhận trách nhiệm đối với ánh xạ kiểm tra.
Một hoàn cảnh tương tự có thể xảy ra đối với việc huỷ bỏ thẻ tín dụng. Người sử dụng
card chịu trách nhiệm đến tận khi thông báo với công ty phát hành card rằng card đã bị
mất hoặc đã bị đánh cắp.
1.2. Các định nghĩa và phân loại.
Các định nghĩa:
1. Chữ ký số (digital signature) là một chuỗi dữ liệu làm nhiệm vụ liên kết một
thông điệp (ở dạng số) với thực thể tạo ra nó.
2. Thuật toán sinh chữ ký số (digital signature generation algorithm hoặc
signature generation algorithm) là một phương pháp tạo ra một chữ ký số.
3. Thuật toán kiểm tra chữ ký số (digital signature verification algorithm hoặc
verification algorithm) là phương pháp để kiểm tra rằng một chữ ký số là đáng tin (tức là
thực sự đã được tạo bởi thực thể đã được chỉ ra).
4. Lược đồ chữ ký số (digital signature scheme hoặc mechanism) bao gồm thuật
toán sinh chữ ký và thuật toán kiểm tra chữ ký đi kèm.
5. Quy trình sinh chữ ký số (digital signature signing process hoặc procedure)
bao gồm một thuật toán sinh chữ ký số (toán học), đi cùng với một phương pháp định
khuôn dạng dữ liệu cho thông điệp để có thể ký được.
6. Tiến trình kiểm tra chữ ký số (digital signature verification process hoặc

procedure) bao gồm một thuật toán kiểm tra ký, đi cùng với một phương pháp khôi phục
dữ liệu từ thông điệp.
Để sử dụng được một lược đồ chữ ký số trong thực tế thì chỉ có lược đồ chữ ký
thôi thì chưa đủ, có nghĩa là cần đến quy trình sinh chữ ký số (thêm vào cách padding
chẳng hạn). Có nhiều quy trình liên quan đến rất nhiều lược đồ khác nhau đã nổi lên như
20
là các chuẩn thương mại thực sự; 2 quy trình như vậy, đó là ISO 9796 và PKCS #1 được
trình bày trong riêng cho hệ chữ ký số RSA. Ký hiệu sử dụng cho phần còn lại của
chương này được cung cấp trong bảng sau. Các tập và các hàm đã liệt kê trong bảng này
là được công bố công khai.
Ký hiệu ý nghĩa
M
M
S
S
R
M
R
R
-1
R
h
M
h
tập các phần tử được gọi là không gian bản rõ.
tập các phần tử được gọi là không gian ký.
tập các phần tử được gọi là không gian chữ ký.
ánh xạ 1-1 từ M tới M
S
gọi là hàm phần dư.

ảnh của R (tức là, M
R
=Im(R)).
nghịch ảnh của R (tức là, R
-1
: M
R
->M).
tập các phần tử gọi là tập chỉ số chữ ký (indexing
set for signing).
hàm một chiều trên miền M.
ảnh của h (tức là, h: M->M
h
); M
h

M
S
được gọi là
không gian giá trị băm.
Ký hiệu cho các kỹ thuật chữ ký số.
Chú ý (giải thích bảng trên):
- M (không gian bản rõ) là tập các phần tử mà từ đó một người ký có thể thêm vào
chữ ký số.
21
Digital Signature Schemes
Message Recovery
Appendix
Randomized
Deterministic

Randomized
Deterministic
one-time
multiple-use
one-time
multiple-use
Hình 3.2: Phân loại các lược đồ chữ ký số.
- M
S
(không gian ký) là tập các phần tử mà từ đó các phép ánh xạ chữ ký (sẽ được
trình bày sau này) được áp dụng. Các phép ánh xạ chữ ký không được áp dụng trực tiếp
vào tập M.
- S (không gian chữ ký) là tập các phần tử tương ứng với các bản rõ trong M.
Những phần tử này được sử dụng để ràng buộc người ký với bản rõ.
- R (tập chỉ số) được sử dụng để định danh các phép ánh xạ ký cụ thể.
Phân loại các lược đồ chữ ký số:
Trong hai mục sau sẽ trình bày 2 lớp tổng quát của các lược đồ chữ ký số, mà có thể tổng
kết ngắn gọn như sau:
(i) Các lược đồ chữ ký số có phần phụ lục (digital signature scheme with
appendix) yêu cầu bản rõ gốc có ở đầu vào của thuật toán kiểm tra chữ ký.
(ii) Các lược đồ chữ ký khôi phục bản rõ (digital signature scheme with message
recovery) không yêu cầu bản rõ gốc trong đầu vào cho thuật toán kiểm tra chữ ký. Trong
trường hợp này, bản rõ gốc tự được khôi phục lại từ chữ ký.
Định nghĩa: Lược đồ chữ ký (khôi phục bản rõ hoặc có phần phụ lục) được gọi là
lược đồ chữ ký số có tính ngẫu nhiên (randomized digital signature scheme) nếu | R | >
1; và ngược lại, lược đồ chữ ký được gọi là tất định (deterministic).
Hình 3.2 sau minh hoạ sự phân loại này. Kỹ thuật chữ ký số tất định có thể bị chia
nhỏ hơn thành các lược đồ: one-time signature schemes và multiple-use schemes.

22

1.3. Lược đồ chữ ký số cùng phụ lục
Lược đồ chữ ký số có phần phụ lục, như đã trình bày ở trên, được sử dụng phổ
biến trong thực tế. Chúng dựa trên các hàm hash mật mã hơn là trên các hàm phần dư, và
ít bị nguy hiểm hơn đối với các tấn công existenial forgery.
Định nghĩa: Các lược đồ chữ ký số mà yêu cầu bản rõ là đầu vào của thuật toán
kiểm tra ký được gọi là lược đồ chữ ký số có phần phụ lục (digital signature schemes
with appendix).
Thuật toán
Tóm tắt: từng thực thể tạo một khoá bí mật để ký các thông điệp, và tương ứng là
một khoá công khai được sử dụng để các thực thể khác kiểm tra chữ ký.
23
1. Thực thể A lựa chọn một khoá bí mật, khoá này xác định tập S
A
={S
A,k
: k

R} của
các phép ánh xạ. Mỗi S
A,k
là ánh xạ 1-1 từ M
h
vào S và được gọi là một ánh xạ ký.
2. S
A
định ra ánh xạ tương ứng V
A
từ M
h
x S vào {true, false} như sau:

( )
( )



=
=
, ,
*,
~
S,
*,
~
k A,
l¹i cßn hîp tr êng
nÕu
false
smtrue
smV
A
với ∀
M.m h(m) m
~
;* ,
~
∈=∈∈ víiSsMm
h
V
A
được gọi là ánh xạ kiểm tra ký và được tạo

ra sao cho nó có thể tính được mà không cần biết gì về khoá bí mật của người ký.
3. Khoá công khai của A là V
A
và khoá bí mật của A là tập S
A
.
Thực hiện thuật toán:
Tóm tắt: thực thể A tạo ra một chữ ký s

S cho thông điệp m

M, chữ ký này được
kiểm tra bởi thực thể B về sau này.
1. Sinh chữ ký. Thực thể A thực hiện như sau;
- Chọn một phần tử k

R.
- Tính
( )
.
~
Ss* )(
~
kA,
mmhm
==

- Chữ ký của A trên m là s*. Cả m và s* là có thể tiếp cận được bởi các
thực thể khác muốn kiểm tra chữ ký.
2. Kiểm tra ký. Thực thể B thực hiện như sau:

- Nhận được khoá công khai V
A
của A (có xác thực)
- Tính
( )
.*s ,m
~
Vu )(
~
A
==
vµ mhm
- Chấp nhận chữ ký nếu và chỉ nếu u=true.
24
M
m
m
~
SA, k
h
Mh x S
True
False
VA
( )
mSs
kA
~
*
,

=
Hình 3.3: Lược đồ chữ ký số cùng phụ lục.
Hình 3.3 sau đưa ra biểu đồ của một lược đồ chữ ký số có phần phụ lục. Các tính
chất dưới đây được yêu cầu đối với các ánh xạ ký và kiểm tra:
(i) với mỗi k ∈ R, S
A,k
có thể tính được một cách hiệu quả;
(ii) V
A
tính được có hiệu quả; và
(i) nó không thể tính toán được đối với các thực thể khác A để tìm m ∈ M và
s* ∈ S thoả mãn
( )
,*s ,m
~
V
A
true=
với
).(
~
mhm
=
25

×