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

Hạ tầng cơ sở khóa công khai và ứng dụng trong giao dịch điện tử trên mạng : Luận văn ThS. Công nghệ thông tin: 1.01.10

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.92 MB, 96 trang )

MỤC LỤC
MỞ ĐẦU ………………………………………………………………………………3
Chương 1
LÝ THUYẾT CHUNG VỀ MÃ HOÁ KHÓA CÔNG KHAI..………………………..6
1.1 CÁC HỆ THỐNG MẬT MÃ KHÓA CÔNG KHAI…………………………… 7
1.2 CÁC ỨNG DỤNG HỆ THỐNG KHOÁ CÔNG KHAI……………………..... 11
1.3 CÁC YÊU CẦU ĐỐI VỚI MÃ HÓA KHÓA CÔNG KHAI…………………. 11
1.4 HỆ MẬT RSA…………………………………………………………………. 12
1.4.1 Tạo khoá……………………………………………………………………… 13
1.4.2 Mã hóa……………………………………………………………………….. 14
1.4.3 Giải mã………………………………………………………………………. 14
1.4.4 Độ an toàn…………………………………………………………………….. 15
1.5 CHỮ KÝ SỐ……………………………………………………………………..16
1.5.1 Định nghĩa sơ đồ chữ ký “số”……………………………………………..…...18
1.5.2 Hàm băm……………………………………………………………………….19
1.5.3 Sơ đồ chữ ký RSA……………………………………………………………...21
1.6 TÓM TẮT…………………………………………………………………………24
Chương 2
HẠ TẦNG CƠ SỞ KHOÁ CÔNG KHAI (PKI)
2.1 ĐỊNH NGHĨA PKI………………………………………………………………25
2.2 PHÂN PHỐI KHÓA CÔNG KHAI……………………………………………..25
2.2.1 Khai báo công khai các khoá công khai……………………………………….25
2.2.2 Danh bạ công khai………………………………………………………..……26
2.2.3 Trung tâm quản lý khoá công khai……………………………………….……27
2.2.4 Chứng chỉ khoá công khai……………………………………………………..29
2.3 CÁC THÀNH PHẦN CHÍNH CỦA PKI……………………………………..…33
2.3.1 End Entity………………………………………………………………….…...33
2.3.2 CA (Certification Authority)………………………………………………..…..33
2.3.3 RA (Registration Authority)……………………………………………………38
2.3.4 Repository:……………………………………………………………………..39
2.3.5 Bộ phận phát hành CRL………………………………………………………..42


2.4 CÁC CHỨC NĂNG CHUNG NHẤT CỦA PKI…......………………………..43
2.4.1 Quản lý cặp khoá công khai và khoá riêng…...………………………….…….43
2.4.2 Phát hành chứng chỉ……………………………...……………………………..47
2.4.3 Phân phối chứng chỉ…………………………………………………………… 51
2.4.4 Thu hồi chứng chỉ……………………………………………………………....53
2.4.5 Treo chứng chỉ…………………………………………………………….….…60
2.5 CẤU TRÚC PKI…………………………………………………………………61
2.6
1


CÁC YÊU CẦU VỀ PKI………………………………………………………...62
2.7 BAN HÀNH LUẬT………………………………………………………………63
2.7.1 Công nghệ………………………………………………………………………...63
2.7.2 Phạm vi và chi tiết……………………………………………………………...64
2.7.3 Các văn bản và chữ ký…………………………………………………………65
2.7.4 Chất lượng và các chuẩn của CA………………………………………………65
2.7.5 Các chuẩn về thuê bao………………………………………………………….66
2.7.6 Chia nhỏ trách nhiệm và pháp lý……………………………………………….66
2.8 MỘT MÔ HÌNH PKI………………………………………………………..…...67
2.9 THỰC TẾ TRIỂN KHAI PKI……………………………………………………70
2.10 TÓM TẮT………………………………………………………………………72
Chương 3
ỨNG DỤNG MÃ HOÁ KHOÁ CÔNG KHAI TRONG DỊCH VỤ NGÂN HÀNG
HOMEBANKING……………………………………………………………..……...73
3.1 BÀI TOÁN……………………………………………………………………….73
3.2 GIẢI PHÁP……………………………………………………………………....74
3.3 THIẾT KẾ HỆ THỐNG………………………………………………………… 74
3.3.1 Tổ chức mô hình CA…………………………………………………………...74
3.3.2 Các lớp bảo mật………………………………………………………………..76

3.3.3
.

2


Mô hình kiến trúc logic……………………………………………………….. 78
3.3.4 Mô hình kiến trúc mạng vật lý…………………………………………………79
3.3.5 Quy trình ký, mã hoá và giải mã dữ liệu giao dịch…………………………….80
3.4 QUY TRÌNH ĐĂNG KÝ VÀ QUẢN LÝ NGƯỜI SỬ DỤNG:………………..82
3.4.1 Sơ đồ phân nhóm…………………………………………………………….…82
3.4.2 Miêu tả………………………………………………………………………….83
3.4.3 Quy trình đăng ký và quản lý người sử dụng là cán bộ chi nhánh:……………84
3.4.4 Quy trình đăng ký thông tin khách hàng sử dụng BIDV HBK………………...87
3.4.5 Quy trình đăng ký và quản lý Người sử dụng là khách hàng…………….…… 88
3.4.6 Quy định về đóng gói, gửi thông báo mật khẩu và Ikey về CN ...…………..…92
KẾT LUẬN…………………………………………………………………………94
TÀI LIỆU THAM KHẢO………………… …………………………………………95
.

.

3


MỞ ĐẦU
Hạ tầng cơ sở khoá công khai (PKI) là một trong những ứng dụng quan
trọng phục vụ cho việc thực hiện các giao dịch điện tử trên mạng Internet đang
được quan tâm nghiên cứu và ứng dụng nhiều hiện nay trên thế giới cũng như ở
nước ta. Đây là một lĩnh vực khá mới mẻ đối với nước ta cả trên khía cạnh nghiên

cứu và ứng dụng.
Theo dự tính của các nhà chuyên môn, nhu cầu xác thực được đối tượng
cùng tham gia giao dịch và việc đảm bảo an toàn thông tin trong giao dịch thương
mại điện tử là rất lớn, chiếm đến 70% khối lượng giao dịch diễn ra trên mạng
Internet toàn cầu. Và kỹ thuật mật mã là một trong những công cụ quan trọng đảm
bảo an toàn thông tin trên mạng. Ba nội dung chính thường sử dụng kỹ thuật mật
mã bao gồm:
 Xác thực: Chữ ký điện tử đảm bảo chứng thực người ký, người tham gia
giao dịch chính là người xưng danh và nhờ vào chữ ký điện tử cùng với
tem thời gian họ không thể chối cãi chữ ký đó không phải là của họ, các
giao dịch, các văn bản điện tử đó không phải do họ gửi hoặc nhận, khiến
một trong các bên giao dịch không thể phủ nhận được nội dung đã giao
dịch;
 Toàn vẹn dữ liệu: Đảm bảo cho dữ liệu, tài liệu, văn bản điện tử không
thể bị sửa đổi một cách bất hợp pháp;
 Bảo mật: Bảo đảm rằng chỉ có người nhận hợp pháp mới có khả năng đọc
được nội dung thông tin;
Ba yếu tố trên hợp thành cơ chế đảm bảo tin cậy cho các các giao dịch điện tử. Ta
có thể phân chia mật mã thành hai loại hệ mật cơ bản sau:
 Hệ mật khoá bí mật hay còn gọi là hệ mật đối xứng,
 Hệ mật khoá công khai hay còn gọi là hệ mật phi đối xứng.
Đối với hệ mật khoá bí mật thì khoá để mã hoá và khoá để giải mã là như nhau.
Khoá này phải được giữ bí mật ở cả đầu mã hoá và đầu giải mã. Cho đến giữa
những năm 70 của thế kỷ 20, người ta vẫn chỉ mới biết đến hệ mật khoá đối xứng.
Mặc dù hệ mật này tính toán hiệu quả, song nó đã gặp khó khăn rất nhiều khi giải
quyết bài toán phân phối khoá. Mọi việc đã thay đổi khi W. Diffie và M. Hellman
đưa ra khái niệm mật mã khoá công khai vào năm 1976. Những vấn đề khó khăn
trong giải quyết vấn đề phân phối khoá mã trong các hệ mật khoá đối xứng đã được
4



giải quyết trong các hệ mật khoá công khai. Không giống như các hệ mật đối xứng,
các hệ mật khoá công khai sử dụng một cặp khoá trong đó một khoá được coi như
khoá riêng và được giữ bí mật bởi người sở hữu cặp khoá còn một khoá được công
bố công khai để mọi người có thể có được để có thể tham gia truyền thông bí mật
với người giữ khoá riêng. Điều này được thực hiện nhờ tính chất các khoá trong
cặp khoá có quan hệ toán học với nhau và không thể suy ra được khoá riêng từ
khoá công khai. Về lý thuyết thì bất kỳ một người nào cũng có thể gửi cho người
nắm giữ khoá riêng một thông báo được mã hoá bằng khoá công khai tương ứng và
chỉ có người nắm giữ khoá riêng mới có thể đọc được thông báo. Tương tự, người
nắm giữ khoá riêng có thể thiết lập tính toàn vẹn dữ liệu và tính nguyên thuỷ của
dữ liệu nhờ việc ký lên dữ liệu bằng khoá riêng của mình. Bất cứ người nào nhận
được dữ liệu có thể kiểm tra nguồn gốc và tính toàn vẹn của dữ liệu nhờ vào việc
sử dụng khoá công khai tương ứng với khoá riêng dùng để ký lên dữ liệu.
Việc phát minh ra các hệ mật khoá công khai đã tạo ra cuộc cách mạng trong khoa
học mật mã. Một trong những ứng dụng đầu tiên của nó là để giải quyết vấn đề
phân phối khoá trong các hệ mật khoá đối xứng. Đây là một vấn đề gặp rất nhiều
khó khăn khi chưa xuất hiện các hệ mật khoá công khai. Ứng dụng mật mã khoá
công khai cũng cho phép giảm số khoá cần thiết trong hệ thống. Đối với các hệ mật
khoá đối xứng thì để duy trì trao đổi bí mật giữa n thành viên cần tới n(n-1)/2 khoá
trong khi nếu sử dụng hệ mật khoá công khai thì chỉ cần n cặp khoá cho n thành
viên. Tuy nhiên khi ứng dụng mật mã khoá công khai thì một vấn đề nẩy sinh là
làm thế nào để phân phối khoá công khai một cách tin cậy. Đây là một vấn đề
không hề đơn giản và những nghiên cứu và phát triển Cơ sở hạ tầng khoá công khai
hay PKI là nhằm mục đích giải quyết vấn đề này.
Để xây dựng hạ tầng cơ sở khoá công khai có nhiều vấn đề cần phải giải quyết bao
gồm cả các vấn đề về công nghệ và các vấn đề về pháp lý. Nhiều vấn đề về công
nghệ và pháp lý được tập trung nghiên cứu nhiều trong một số năm gần đây. Các
nước phát triển như Mỹ, Canada, châu âu là những nước đi đầu trong lĩnh vực này.
Châu á cũng đã quan tâm chú ý tại một số nước như Nhật, Hàn quốc, Đài loan,

Singapore, Malaixia, Thái lan. Các hội thảo về PKI được tổ chức đều đặn hàng
năm. Việt nam đang trong giai đoạn đầu tìm hiểu và ứng dụng thử nghiệm.
Kể từ khi W. Diffie và M. Hellman lần đầu tiên đưa ra khái niệm mật mã
khoá công khai, mật mã khoá công khai đã có những phát triển mạnh mẽ. Nhiều
thuật toán mã công khai đã được xây dựng như RSA, DSA và lớp các thuật toán mã
dựa trên mật mã đường cong Elliptic. Nhiều chuẩn về mã hoá và chữ ký cũng đã
5


được xây dựng như chuẩn mã hoá dữ liệu DES của Mỹ. Tuy nhiên, hạ tầng cơ sở
khoá công khai - PKI mới chỉ được phát triển trong khoảng 10 năm trở lại đây. Đầu
tiên và trước hết PKI là công nghệ xác thực sử dụng tổ hợp cả mật mã khoá bí mật
và mật mã khoá công khai. PKI cho phép một số dịch vụ an toàn như mã hoá dữ
liệu, xác thực dữ liệu và quản lý khoá. Khung làm việc của PKI đã được định nghĩa
trong khuyến nghị ITU-T X.509.
Trong nội dung của luận văn tôi chỉ đề cập đến những vấn đề cơ bản về PKI
dưới góc độ công nghệ, những khía cạnh chính khi nghiên cứu phát triển các hệ
thống PKI, từ đó áp dụng vào bảo mật cho ứng dụng HomeBanking tại Ngân hàng
đầu tư và phát triển Việt Nam. Các nội dung chính trình bày gồm :
- Tổng quan về mật mã khóa công khai
- Hạ tầng cơ sở mật mã khoá công khai PKI
o Các thành phần của PKI
o Các cách thức quản lý và phân phối khoá công khai trong PKI
o Chứng chỉ khoá công khai
o Các chức năng của PKI
o Cấu trúc PKI
o Các yêu cầu về PKI
o Ban hành các luật về PKI
- Ứng dụng PKI trong hệ thống HomeBanking của Ngân hàng Đầu tư và
Phát triển Việt Nam


6


Chng 1
Lí THUYT CHUNG V M HO KHểA CễNG
KHAI
hiu c v h tng c s khúa cụng khai, chỳng ta cn tỡm hiu mt s kin
thc s lc v mt mó khoỏ cụng khai, ch ký s.
Khỏi nim mó hoỏ khoỏ cụng khai ny sinh khi gii quyt hai vn khú khn
trong mó hoỏ i xng, ú l vn phõn phi khoỏ v ch ký s.
Nh chỳng ta ó bit, vic phõn phi khoỏ trong mó hoỏ i xng yờu cu hai bờn
liờn lc phi:
1.
Dựng chung mt khoỏ c phõn phi theo cỏch no ú; hoc:
2.
S dng mt trung tõm phõn phi khoỏ.
Vòng khoá
công khai
của Alice
Joy
Ted
Mike

Bob

Khoá riêng
của Bob

Khoá công khai

của Bob

Đầu vào
bản rõ

Thuật toán mã
hoá

Bản mã đ-ợc
truyền đi

Thuật toán
giải mã

Đầu ra
bản rõ

(a) Mã hoá

Vòng khoá
công khai
của Bob

Joy

Ted

Mike

Khoá riêng

của Alice

Alice

Khoá công
khai của Alice

Bản mã đ-ợc
truyền đi

Đầu vào
bản rõ

Thuật toán
mã hoá

Thuật toán
giải mã

Đầu ra
bản rõ

(b) Xác thực

Hình 1.1 Mã hoá khoá công khai

7


Whitfield Diffie, một trong những người đã phát minh ra mã hoá khoá công khai

(cùng với Martin Hellman, trường Đại học Stanford) đã suy luận và cho rằng, yêu
cầu thứ hai phủ nhận bản chất của mật mã. Bản chất đó là đảm bảo tính bí mật
trong liên lạc. Khó có thể tồn tại các hệ thống mật mã không thể phá được nếu
người sử dụng của các hệ thống này bắt buộc phải dùng chung các khoá của một
trung tâm phân phối khoá (KDC), lý do là trung tâm này có thể để lộ khoá.
Vấn đề thứ hai mà Diffie đặt ra là "chữ ký số". Nếu việc sử dụng mật mã trở nên
phổ biến, không chỉ trong lĩnh vực quân sự mà còn được sử dụng cho các mục đích
thương mại và cá nhân, thì các thông báo và tài liệu điện tử cần có các chữ ký và
chúng có hiệu lực tương tự như các chữ ký trên giấy tờ.

1.1 CÁC HỆ THỐNG MẬT MÃ KHÓA CÔNG KHAI
Các thuật toán khoá công khai sử dụng một khoá để mã hoá và một khoá khác để
giải mã (tạo thành một cặp khoá). Chúng có tính chất quan trọng sau đây:
- Không thể xác định được khoá giải mã nếu chỉ căn cứ vào các thông tin về
thuật toán và khoá mã hoá.
Một số thuật toán, chẳng hạn như RSA, cũng có tính chất sau:
- Một trong hai khoá được sử dụng để mã hoá, khoá còn lại được sử dụng để
giải mã.
Hình 1.1 minh hoạ quá trình mã hoá khoá công khai. Các bước cơ bản gồm:
1. Mỗi thành viên sinh ra một cặp khóa, cặp khoá này được sử dụng để mã hoá
và giải mã các thông báo .
2. Mỗi thành viên công bố khóa mã hoá của mình bằng cách đặt khoá này vào
một địa chỉ được công bố công khai. Đây chính là khoá công khai. Khoá
cùng cặp được giữ bí mật.
3. Nếu A muốn gửi cho B một thông báo, A mã hoá thông báo bằng khoá công
khai của B.
4. Khi B nhận được thông báo, B giải mã thông báo bằng khoá riêng của B.
Không một người nhận nào khác có thể giải mã thông báo, bởi vì chỉ có B
mới biết khoá riêng của mình.
Với cách giải quyết này, tất cả các thành viên tham gia truyền thông đều có thể có

được các khoá công khai. Khoá riêng của mỗi thành viên được giữ bí mật. Quá
trình liên lạc chỉ an toàn chừng nào khoá riêng còn được giữ bí mật. Mỗi thành viên
có thể thay đổi các khoá riêng của mình bất cứ lúc nào, đồng thời công bố các khoá
công khai cùng cặp để thay thế khoá công khai cũ.
8


Bng 1.1 trỡnh by mt s c im quan trng ca mó hoỏ khoỏ cụng khai v mó
hoỏ khoỏ riờng (mó hoỏ i xng). phõn bit chỳng, ngi ta gi khoỏ c s
dng trong mó hoỏ i xng l khoỏ bớ mt. Hai khoỏ dựng trong mó hoỏ khoỏ cụng
khai l khoỏ cụng khai v khoỏ riờng.
Chỳng ta xem xột chi tit cỏc yu t cn thit trong lc mó hoỏ khoỏ cụng khai
(hỡnh 1.2).

X (X -ớc l-ợng)

Phân
tích mã


KRb(KRb -ớc l-ợng)

Nguồn A

Nguồn của
thông báo

Đích B

Y


X

X
Đích

Mã hoá

Giải mã

KRb

KUb
Nguồn
cặp
khoá

Hình 1.2 Hệ mật khoá công khai: Bí mật

Ngun A a ra mt thụng bỏo rừ v bn rừ ca thụng bỏo l X = [X 1, X2,...,XM].
Cỏc phn t Xi (i = 1M) ca X l cỏc ch cỏi trong bng ch cỏi hu hn no ú.
A d nh gi thụng bỏo cho ớch B. B sinh ra mt cp khoỏ l khoỏ cụng khai
KUb, khoỏ riờng KRb. Ch cú B bit KRb, cũn KUb c cụng b cụng khai, do vy
A cú th cú c khoỏ cụng khai ny.
Bng 1.1 Mó hoỏ khoỏ cụng khai v i xng
H mt i xng

H mt khoỏ cụng khai

Cỏc yờu cu khi s dng


Cỏc yờu cu khi s dng

Quỏ trỡnh mó hoỏ v gii mó s dng Mt thut toỏn s dng mt cp khoỏ khi
cựng mt thut toỏn vi cựng mt khoỏ. mó hoỏ v gii mó, mt khoỏ c s
Ngi gi v ngi nhn phi s dng dng khi mó húa, khoỏ cũn li c s
dng khi gii mó.
chung thut toỏn v khoỏ.
Ngi gi v ngi nhn, mi ngi cú
mt khoỏ trong cp khoỏ.

9


Cỏc yờu cu an ton

Cỏc yờu cu an ton

Khúa phi c gi bớ mt

Mt trong hai khúa phi c gi bớ mt.

Khụng th gii mó c thụng bỏo nu Khụng th gii mó c thụng bỏo nu
khụng cú cỏc thụng tin cú giỏ tr khỏc.
khụng cú cỏc thụng tin cú giỏ tr khỏc.
Cỏc thụng tin v thut toỏn, cỏc mu Cỏc thụng tin v thut toỏn, mt trong cỏc
bn mó khụng xỏc nh khoỏ.
khoỏ v cỏc mu bn mó khụng xỏc
nh khoỏ cũn li.


Vi u vo l thụng bỏo X v khoỏ mó hoỏ KUb, A to ra mt bn mó Y = [Y1, Y2,
..., YN ] vi Y = E KUb(X).
Ngi nhn hp l (ngi s hu khoỏ riờng) thu c X, qua phộp bin i ngc
X = DKRb(Y).
i phng (cú th cú c Y v KUb nhng khụng cú KRb hoc X) phi tỡm cỏch
khụi phc li X v/hoc KRb. Gi s rng, anh ta cú cỏc thụng tin v thut toỏn mó
hoỏ (E) v gii mó (D), anh ta cú th khụi phc thụng bỏo X, bng cỏch sinh ra mt
bn rừ X c lng. Tuy nhiờn, c c cỏc thụng bỏo mi, i phng phi
khụi phc c KRb bng cỏch sinh ra mt KRb c lng.
Chỳng ta ó bit, mt trong hai khoỏ trong cp khoỏ cú th c s dng mó
hoỏ, khoỏ cũn li c s dng gii mó. iu ny cho phộp thc hin mt lc
mó hi khỏc mt chỳt. Lc c minh ho trong hỡnh 1.2 cung cp tớnh bớ
mt. Hỡnh 1.1b v 1.3 minh ho vic s dng mó hoỏ khoỏ cụng khai cho xỏc thc:
Y = EKRa(X)
X = DKUa(Y)
Phân
tích mã


KRa(KRa -ớc l-ợng)

Nguồn A

Nguồn của
thông báo

X

Đích B


Mã hoá

KRa

Y

Giải mã

X

Đích

KUa

Nguồn
cặp
khoá

Hình 1.3 Hệ mật khoá công khai: Xác thực

10


Trong trng hp ny, A chun b mt thụng bỏo gi cho B v mó hoỏ thụng
bỏo bng khoỏ riờng ca A trc khi truyn i. B cú th gii mó thụng bỏo bng
khoỏ cụng khai ca A. Thụng bỏo c mó hoỏ bng khoỏ riờng ca A nờn cú th
xỏc nh ch cú A l ngi to ra thụng bỏo. Do vy, ton b thụng bỏo mó hoỏ
c s dng nh mt ch ký s. Hn na, khụng th sa i thụng bỏo nu khụng
cú khoỏ riờng ca A, chớnh vỡ vy thụng bỏo c xỏc thc c ngun gc ln tớnh
ton vn d liu.

Trong lc trc, ton b thụng bỏo c mó hoỏ, nú ũi hi kh nng lu gi
ln. Mi ti liu phi c lu gi dng rừ. Bn sao c lu gi dng mó, do
vy chỳng ta cú th kim tra c ngun gc v cỏc ni dung trong trng hp
tranh chp. Mt cỏch hiu qu hn cú c cỏc kt qu nh trờn l mó hoỏ mt
khi nh cỏc bit. Khi ny c gi l du xỏc thc. Nú phi cú tớnh cht l mi
thay i trờn ti liu dn n s thay i ca du xỏc thc. Nu du xỏc thc c
mó hoỏ bng khoỏ riờng ca ngi gi, nú c s dng nh mt ch ký. Ch ký
c s dng kim tra ngun gc, ni dung v trỡnh t.
Nguồn A

Nguồn
của XX Mã hoá
thông
báo

KRa

Đích B

Y

KUa
Cặp
khoá
của
ng-ời
gửi

Mã hoá


Z

Giải mã

KUb

Y

Giải mã

X Đích
của
thông
báo

KRb

Cặp
khoá của
ng-ời
nhận

Hình 1.4 Hệ mật khoá công khai: Bí mật và xác thực

Vic s dng lc khoỏ cụng khai cú th m bo tớnh xỏc thc v bớ mt (hỡnh
1.4):
Z = EKUb [EKRa(X)]
X = DKUa [DKRb(Z)]

Trc ht, chỳng ta mó hoỏ mt thụng bỏo bng khoỏ riờng ca ngi gi, a ra

mt ch ký s. Tip theo, mó hoỏ mt ln na bng khoỏ cụng khai ca ngi
nhn. Ch cú ngi nhn hp phỏp mi gii mó c bn mó cui cựng ny vỡ anh
11


ta có khoá riêng cùng cặp. Như vậy sẽ đảm bảo được tính bí mật. Khó khăn của
biện pháp này là thuật toán khoá công khai, nó thực sự phức tạp, phải tiến hành 4
lần (chứ không phải là 2 lần) cho mỗi cuộc truyền thông .

1.2 CÁC ỨNG DỤNG HỆ THỐNG KHOÁ CÔNG KHAI
Trước tiên, chúng ta cần làm rõ một khía cạnh của các hệ thống mật mã khoá công
khai. Việc sử dụng một kiểu thuật toán mật mã với 2 khoá (một khoá riêng, một
khoá công khai) là đặc trưng của các hệ thống khoá công khai.
Tuỳ thuộc vào ứng dụng, người gửi sử dụng khoá riêng của người gửi hoặc khoá
công khai của người nhận, hoặc cả hai.
Nói rộng hơn, chúng ta có thể phân loại việc sử dụng hệ mật khoá công khai thành
3 loại:
1. Mã hoá/giải mã: Người gửi mã hoá một thông báo bằng khoá công khai của
người nhận.
2. Chữ ký số: Người gửi "ký" thông báo bằng khoá riêng của mình. Quá trình ký
được thực hiện nhờ dùng một thuật toán mã đối với thông báo hoặc một khối dữ
liệu nhỏ.
3. Trao đổi khoá: Hai thành viên trao đổi khoá phiên. Có một vài hướng giải
quyết khác nhau, cần đến một (hoặc nhiều) khoá riêng của một hoặc hai thành viên.
Bảng 3.2 Các ứng dụng được các thuật toán hỗ trợ
Thuật toán

Mã hoá/Giải mã

Chữ ký số


Trao đổi khoá

RSA







Diffie-Hellman Không

Không



DSS



Không

Không

Một số thuật toán phù hợp cho tất cả các ứng dụng, còn một số thuật toán khác chỉ
được sử dụng cho một hoặc hai ứng dụng của chúng.

1.3 CÁC YÊU CẦU ĐỐI VỚI MÃ HÓA KHÓA CÔNG KHAI
Các ứng dụng hệ mật minh hoạ trong hình 1.2, 1.3 phụ thuộc vào một thuật toán mã

với hai khoá cùng cặp. Diffie và Hellman đưa ra các điều kiện mà các thuật toán
trên phải đáp ứng như sau:
1. Người nhận B có thể dễ dàng sinh ra được một cặp khoá (khoá công khai
KUb và khoá riêng KRb).

12


2. Người gửi A dễ dàng biết được khoá công khai của người nhận, mã hoá
thông báo M và tạo ra một bản mã tương ứng:
C = EKUb(M)
3. Người nhận B dễ dàng giải mã được bản mã bằng cách sử dụng khoá riêng
của mình để khôi phục lại thông báo ban đầu.
M = DKRb(C) = DKRb[EKUb(M)]
4. Đối phương khó có thể xác định được khoá riêng KRb, mặc dù biết khoá công
khai KUb.
5. Đối phương khó có thể khôi phục lại thông báo M ban đầu dù biết khoá công
khai KUb và bản mã C.
Chúng ta có thể bổ sung thêm yêu cầu thứ 6. Mặc dù nó hữu ích nhưng nó không
cần thiết cho tất cả các ứng dụng khoá công khai .
6. Các hàm mã hóa và giải mã có thể được áp dụng như sau:
M = EKUb[DKRb(M)]
ở đây có một vài yêu cầu khắt khe (đã kiểm nghiệm trong thực tế). Ví dụ, các yêu
cầu cần đáp ứng hàm cửa sập một chiều. Hàm một chiều là một hàm đơn trị hai
chiều, rất dễ dàng tính toán hàm nhưng tính toán hàm nghịch đảo rất khó.
Y = f(X) dễ dàng
X = f -1(Y) không thể
Chúng ta tiếp tục với định nghĩa hàm cửa sập một chiều, nó dễ dàng tính toán theo
một chiều, khó có thể tính toán theo chiều kia trừ khi biết thêm thông tin nào đó.
Với thông tin này, có thể tính toán được hàm nghịch đảo trong thời gian đa thức.

Tóm lại, hàm cửa sập một chiều là họ các hàm nghịch đảo fk, sao cho:
Y = fk(X) dễ dàng, nếu biết k và X
X = f -1k(Y) dễ dàng, nếu biết k và Y
X = f -1k(Y) khó có thể, nếu biết Y nhưng không biết k
Do vậy, việc phát triển một lược đồ khoá công khai thiết thực phụ thuộc vào việc
tìm ra một hàm cửa sập một chiều phù hợp.

1.4 HỆ MẬT RSA
Hầu hết các thuật toán mã sử dụng khoá công khai và khoá riêng đều dựa trên một
đặc tính rất quan trọng của các số nguyên tố lớn, đó là một khi nhân chúng với
nhau để tạo ra một số mới, chúng ta không thể hoặc mất rất nhiều thời gian để có
thể xác định được số nào trong hai số nguyên tố là số mới và là số lớn hơn. Trong
luận văn này tôi xin được trình bày về một hệ mật được sử dụng khá phổ biến là hệ
mật RSA.
13


Bài toán đặt ra : 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ở 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 (lúc này ngay cả Bob cũng không thể đọ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.

1.4.1 Tạo khoá
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:

1. Chọn 2 số nguyên tố lớn
2. Tính:
.

và với

3. Tính:

, lựa chọn ngẫu nhiên và độc lập.

.

4. Chọn một số tự nhiên e sao cho
với

.

5. Tính: d sao cho





và là số nguyên tố cùng nhau
.

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 thuật toán Euclid mở rộng(xem
thêm: số học môđun).
Bước 5 có thể viết cách khác: Tìm số tự nhiên

sao cho
cũng là số tự nhiên. Khi đó sử dụng giá trị
.



Từ bước 3, PKCS#1 v2.1 sử dụng

thay cho

).
Khóa công khai bao gồm:



n, môđun, và
e, số mũ công khai (cũng gọi là số mũ mã hóa).
14


Khóa bí mật bao gồm:



n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật, và
d, số mũ bí mật (cũng gọi là số mũ giải mã).

Một dạng khác của khóa bí mật bao gồm:





p and q, hai số nguyên tố chọn ban đầu,
d mod (p-1) và d mod (q-1) (thường được gọi là dmp1 và dmq1),
(1/q) mod p (thường được gọi là iqmp)

Dạng này cho phép thực hiện giải mã và ký nhanh hơn với việc sử dụng Định lý số
dư Trung quốc (tiếng Anh:Chinese Remainder Theorem - CRT). Ở dạng này, tất cả
thành phần của khóa bí mật phải được giữ bí mật.
Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình. Ở đây, p
và q giữ vai trò rất quan trọng. Chúng là các phân tố của n và cho phép tính d khi
biết e. Nếu không sử dụng dạng sau của khóa bí mật (dạng CRT) thì p và q sẽ được
xóa ngay sau khi thực hiện xong quá trình tạo khóa.
1.4.2 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:

Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (môđun) bằng
phương pháp bình phương (exponentiation by squaring). Cuối cùng Bob gửi c cho
Alice.
1.4.3 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:

15



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ó
.
Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nên:



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ó:
.
hay:
.
1.4.4 Độ 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 chuyển đổi bản rõ an toàn.
Bài toán RSA là bài toán tính căn bậc 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ị (p1)(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
16


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


1.5 CHỮ KÝ SỐ
Chữ ký điện tử là dãy các ký hiệu, âm thanh hay các hình thức điện tử khác
được tạo lập từ thông tin cá nhân của người ký bằng công nghệ, thuật toán tích
hợp với các phương tiện điện tử. Nó đảm bảo tính tương ứng duy nhất với người
ký. Hiện có nhiều công nghệ để tạo chữ ký điện tử như: sử dụng đặc tính của vân
tay, của giác mạc mắt, bản đồ tĩnh mạch bàn tay (ven), ADN, các yếu tố sinh học
khác của người ký, chữ ký số dựa trên công nghệ mật mã... Trên thế giới hiện nay,
phổ biến nhất là chữ ký số. Việt Nam trong tương lai gần cũng sử dụng công nghệ
này
Trong cách thức truyền thống, thông báo được truyền đi trong giao dịch
thường dưới dạng các văn bản viết tay hoặc đánh máy được kèm thêm chữ ký (viết
tay) của người gửi ở bên dưới văn bản. Chữ ký đó là bằng chứng xác nhận thông
báo đúng là của người ký, tức là của chủ thể giao dịch, và nếu tờ giấy mang văn
bản không bị cắt, dán, tẩy, xoá, thì tính toàn vẹn của thông báo cũng được chứng
thực bởi chữ ký đó. Chữ ký viết tay có nhiều ưu điểm quen thuộc như dễ kiểm thử,
không sao chép được, chữ ký của một người là giống nhau trên nhiều văn bản,
nhưng mỗi chữ ký gắn liền với một văn bản cụ thể, v.v...
Khi chuyển sang cách thức truyền tin bằng phương tiện hiện đại, các thông
báo được truyền đi trên các mạng truyền tin số hoá, bản thân các thông báo cũng
được biểu diễn dưới dạng số hoá, tức dưới dạng các đãy bit nhị phân, “chữ ký” nếu
có cũng ở dưới dạng các đãy bit, thì các mối quan hệ tự nhiên kể trên không còn
giữ được nữa. Chẳng hạn, “chữ ký” của một người gửi trên những văn bản khác
nhau phải thể hiện được sự gắn kết trách nhiệm của người gửi đối với từng văn bản
đó thì tất yếu phải khác nhau chứ không thể là những đoạn bit giống nhau như các
chữ ký giống nhau trên các văn bản thông thường. Chữ ký viết tay có thể được
kiểm thử bằng cách so sánh với nguyên mẫu, nhưng “chữ ký” điện tử thì không thể
có “nguyên mẫu” để mà so sánh, việc kiểm thử phải được thực hiện bằng những
thuật toán đặc biệt. Một vấn đề nữa là việc sao chép một văn bản cùng chữ ký. Nếu
là văn bản cùng chữ ký viết tay thì dễ phân biệt bản gốc với bản sao, do đó khó mà
dùng lại được một văn bản có chữ ký thật. Còn với văn bản điện tử cùng chữ ký

điện tử thì có thể nhân bản sao chép tuỳ thích, khó mà phân biệt được bản gốc với

17


bản sao, cho nên nguy cơ dùng lại nhiều lần là có thực, do đó cần có những biện
pháp để tránh nguy cơ đó.
Một “chữ ký”, nếu muốn thể hiện được trách nhiệm của người gửi trên toàn
văn bản, thì phải mang được một chút gắn bó nào đó với từng bit thông tin của văn
bản, vì vậy, theo hình dung ban đầu, độ dài của chữ ký cũng phải dài theo độ dài
của văn bản; để có được “chữ ký ngắn” như trong trường hợp viết tay người ta phải
dùng một kỹ thuật riêng gọi là hàm băm mà ta sẽ trình bày ở phần dưới.
Ngoài ra, để chống giả mạo chữ ký “số” thì thứ nhất thuật toán “ký số” phải
là “không nhìn thấy” bằng mắt thường trên bức điện. Thứ hai là vấn đề về kiểm
tra. Chữ ký thông thường được kiểm tra bằng cách so sánh nó với chữ ký đúng. Ví
dụ, ai đó ký một tấm séc để mua hàng, người bán hàng phải so sánh chữ ký trên
mảnh giấy với chữ ký nằm ở mặt sau của thẻ tín dụng để kiểm tra. Dĩ nhiên, đây
không phải là phương pháp an toàn vì người ta có thể giả mạo. Với chữ ký “số”,
người ta có thể kiểm tra nhờ dùng một thuật toán kiểm tra công khai. như vậy, bất
kỳ ai cũng có thể kiểm tra được chữ ký số. Việc dùng một sơ đồ chữ ký an toàn có
thể sẽ ngăn chặn được khả năng giả mạo.
Sự khác biệt cơ bản khác giữa chữ ký “số” và chữ ký thông thường là: bản
sao tài liệu được ký bằng chữ ký “số” đồng nhất với bản gốc, còn bản sao tài liệu
có chữ ký trên giấy thường có thể khác với bản gốc. Ðiều này có nghĩa là phải cẩn
thận ngăn chặn việc dùng lại một chữ ký “số”. Ví dụ, một lần Bob ký một bức điện
xác nhận Alice có khả năng làm điều đó. Vì thế, bản thân bức điện cần chứa thông
tin nào đó (chẳng hạn như ngày tháng) để ngăn nó khỏi bị dùng lại.
Sơ đồ chữ ký số: là phương pháp ký một bức điện lưu dưới dạng điện tử.
Điểm khác biệt với chữ ký thông thường là ở chỗ: chữ ký thông thường là một phần
vật lý của tài liệu, chữ ký số không gắn theo vật lí vào bức điện vì vậy thuật toán

phải “không nhìn thấy” theo cách nào đó trên bức điện. Đối với chữ ký thông
thường thì việc kiểm tra thực hiện bằng cách so sánh nó với các chữ ký xác thực
khác, còn chữ ký số thì có thể kiểm tra được nhờ dùng một thuật toán kiểm tra công
khai. Và việc dùng một chữ ký an toàn có thể ngăn chặn được khả năng giả mạo.
Sự khác biệt cơ bản giữa chữ ký số và chữ ký thông thường là bản copy tài
liệu được ký bằng chữ số đồng nhất với bản gốc. Điều này có nghĩa là phải cẩn
thận ngăn chặn một bức điện ký số khỏi bị dùng lại.
Mục đích: Sử dụng kĩ thuật số để mô phỏng / thay thế chữ ký tay “handwritten signature”.
18


Các yêu cầu khi sử dụng chữ ký số:
 Không thể giả mạo “unforgeability”.
 Không thể phủ nhận “undeniability”.
 Chữ ký phụ thuộc vào người ký và văn bản được ký.
 Dễ dàng tính toán: Người ký có thể dễ dàng ký trên văn bản cần ký.
 Dễ dàng kiểm định: Mọi người có thể kiểm tra xác định tính hợp lệ
của. chữ ký.
 Thuận tiện cho việc lưu trữ: Chữ ký cần ngắn vừa đủ.
1.5.1 Định nghĩa sơ đồ chữ ký “số”
Một sơ đồ chữ ký “số” gồm hai thành phần: thuật toán ký và thuật toán kiểm
tra chữ ký. Ðó là bộ 5 (P, A, K, S,V), trong đó:
1. P là tập hữu hạn các bức điện (thông điệp) có thể.
2. A là tập hữu hạn các chữ ký có thể.
3. K (không gian khoá) là tập hữu hạn các khoá có thể.
4. Với mỗi k thuộc K có thuật toán ký Sigk  S và thuật toán xác minh
Verk  V. Sigk : P ->A và Verk: P×A - > {true, false} là những hàm sao
cho mỗi thông điệp x  P và chữ ký y  A thoả mãn phương trình:
True


Verk =

nếu y = sig(x)

False nếu y ≠ sig(x)

Với mỗi k thuộc K, Sigk và Verk là các hàm có thời gian da thức. Verk là
hàm công khai, Sigk là hàm bí mật. Không thể “để dàng” tính toán để giả mạo chữ
ký của Bob trên thông điệp x. Nghĩa là x cho truớc, chỉ có Bob mới “dễ” tính được
y để Verk = True. Một sơ đồ chữ ký không thể an toàn vô Điều kiện vì Oscar có
thể kiểm tra tất cả các chữ số y có thể có trên thông điệp x nhờ dùng thuật toán
Verk công khai cho đến khi anh ta tìm thấy một chữ ký đúng. Vì thế, nếu có dủ
thời gian. Oscar luôn luôn có thể giả mạo chữ ký của Bob. như vậy, giống như
truờng hợp hệ thống mã khoá công khai, mục đích là tìm các sơ đồ chữ ký số “an
toàn” về mặt tính toán.

19


1.5.2 Hàm băm
Chúng ta có thể thấy rằng các sơ đồ chữ ký nói chung chỉ cho phép ký các
bức điện nhỏ. Thông thường khi sử dụng một sơ đồ chữ ký, chữ ký được sinh ra có
độ dài lớn hơn so với văn bản ký, do vậy kích thuớc văn bản sau khi ký sẽ tăng lên
rất nhiều. Và trên thực tế ta cần ký trên các bức điện rất dài, chẳng hạn, một tài liệu
về pháp luật có thể dài nhiều Megabyte.
Một cách đơn giản để giải bài toán này là chia các bức điện dài thành nhiều
đoạn sau đó ký lên các đoạn đó độc lập nhau. Ðiều này cũng tương tự như mã hóa
một chuỗi dài bản rõ bằng cách mã hóa mỗi ký tự bản rõ độc lập nhau sử dụng cùng
một bản khoá. (Ví dụ: chế độ ECB trong Mã hóa).
Biện pháp này có một số vấn đề trong việc tạo ra các chữ ký số. Truớc hết,

với một bức điện dài, ta kết thúc bằng một chữ ký rất lớn. nhược điểm khác là các
sơ đồ chữ ký “an toàn” lại chậm vì chúng dùng các phương pháp số học phức tạp
như số mũ modulo. Tuy nhiên, vấn đề nghiêm trọng hơn với phép toán này là bức
điện đã ký có thể bị sắp xếp lại các đoạn khác nhau,hoặc một số đoạn trong chúng
có thể bị loại bỏ và bức điện nhận được vẫn xác minh được. Ta cần bảo vệ sự
nguyên vẹn của toàn bộ bức điện và Điều này không thể thực hiện được bằng cách
ký độc lập từng mẩu nhỏ của chúng.
Giải pháp cho các vấn đề này là dùng hàm băm (Hash) nhanh. Từ bức điện
có độ dài tuỳ ý, hàm băm tạo ra một bản tóm luợc thông báo có kích thuớc qui định
(ví dụ 160 bit với DSS). Sau đó bản tóm luợc thông báo sẽ được ký, thay vì ký trực
tiếp trên văn bản gốc.
Khi Bob muốn ký bức điện x dài, truớc tiên anh ta tạo lập bản tóm luợc (đại
điện) thông điệp z = h(x) và sau đó tính y = sig K (z ). Bob có thể truyền cặp (x, y)
trên kênh công khai. Có thể thực hiện kiểm tra chữ ký bằng cách truớc hết khôi
phục bản tóm luợc thông báo z =h (x) nhờ hàm h công khai và sau đó kiểm tra
xem Verk (x,y) = true, hay không.

20


Ký một bản tóm luợc thông báo
Bản tóm luợc (giá trị của hàm băm) còn được gọi là đại diện văn bản
(message digest). Một message digest là có chiều dài cố định với các đặc điểm như
sau:
 Giá trị trả lại của hàm băm duy nhất đối với mỗi giá trị đầu vào. Bất
kỳ sự thay đổi nào của dữ liệu vào cũng đều dẫn đến một kết quả sai.
 Từ đại diện văn bản “khó thể” suy ra được dữ liệu gốc là gì, chính vì
Điều này mà người ta gọi là one-way.
Như đã đề cập trong phần mã hóa khóa công khai, có thể dùng khóa bí mật
cho việc mã hóa và khóa công khai cho việc giải mã. Cách sử dụng cặp khóa như

vậy không được dùng khi cần bí mật thông tin, mà chủ yếu dùng để “ký” trên dữ
liệu. Thay vào việc đi mã hóa dữ liệu, các phần mềm ký tạo ra đại diện văn bản
(message digest) của dữ liệu và sử dụng khóa bí mật để mã hóa đại diện đó. Hình
duới đưa ra mô hình đơn giản hóa việc chữ ký số được sử dụng như thế nào để
kiểm tra tính toàn vẹn của dữ liệu được ký.

Sử dụng chữ ký số để kiểm tra tính toàn vẹn của dữ liệu

21


Trong hình trên có hai phần được gửi cho người nhận: dữ liệu gốc và chữ ký
số. Ðể kiểm tra tính toàn vẹn dữ liệu, người nhận sử dụng khóa công khai của
người ký để giải mã đại diện bản tin (message disgest) đã mã hóa và khóa bí mật
của người ký. Dựa vào thông tin về thuật toán băm, người nhận tạo ra đại diện bản
tin gốc và bản tin mới. Nếu 2 đại diện này giống nhau tức là dữ liệu bản tin không
bị thay đổi từ lúc được ký. Nếu chúng không giống nhau có nghĩa là dữ liệu đã bị
giả mạo, Điều này cũng có thể xảy ra khi sử dụng hai khóa công khai và khóa bí
mật không tương ứng.
Trong một vài truờng hợp, chữ ký số được đánh giá là có thể thay thế chữ ký bằng
tay. Chữ ký số chỉ có thể đảm bảo khi khóa bí mật không bị lộ. Khi khóa bí mật bị
lộ thì người sở hữu chữ ký không thể ngăn chặn được việc bị giả mạo chữ ký.
1.5.3 Sơ đồ chữ ký RSA
Ðặc điểm của các sơ đồ chữ ký này là mức độ tính toán phụ thuộc vào độ lớn
của giải thuật giải quyết các bài toán nhân số nguyên – bài toán lũy thừa. Sơ đồ chữ
ký bao gồm cả hai loại kèm thông điệp và khôi phục thông điệp. Sơ đồ chữ ký RSA
được phát minh bởi 3 nhà nghiên cứu Rivest, Shamir, Adleman, đây là sơ đồ có
ứng dụng thực tế rộng rãi. Các phương pháp tấn công RSA đầu tiên (multicative
property) và các vấn đề khác liên quan tới chữ ký RSA được đưa ra bởi Davia và
Jonge và Chaum.

Sơ đồ chữ ký RSA được cho bởi bộ năm
S = (, , , ,  ),
trong đó  = =Zn , với n =p.q là tích của hai số nguyên tố lớn p,q,  là tập
các cặp khoá K =(K’,K''), với K’ = a và K'' = (n,b), a và b là hai số thuộc Z n thoả
mãn a.b  1(mod(n)). Các hàm sig K ' và verK " được xác định như sau:
sig K ' (x) = x a modn ,
verK  (x,y ) = đúng  x  yb (modn ).

Dễ chứng minh được rằng sơ đồ được định nghĩa như vậy là hợp thức, tức là
với mọi x và mọi chữ ký y:
verK " (x, y) = đúng  y = sig K ' (x ).

Chú ý rằng tuy hai vấn đề xác nhận và bảo mật theo sơ đồ RSA là có bề
ngoài giống nhau, nhưng nội dung của chúng là hoàn toàn khác nhau: Khi A gửi
22


thông báo x cho B, để B có căn cứ xác nhận đó đúng thực là thông báo do A gửi, A
phải gửi kèm theo chữ ký sig K ' (x), tức là A gửi cho B (x, sig K ' (x)), trong các thông
tin gửi đi đó, thông báo x hoàn toàn không được giữ bí mật. Cũng tương tự như
vậy, nếu dùng sơ đồ mật mã RSA, khi một chủ thể A nhận được một bản mật mã
eK  (x) từ B thì A chỉ biết rằng thông báo x được bảo mật, chứ không có gì để xác

nhận x là của B.
Nếu ta muốn hệ truyền tin của ta vừa có tính bảo mật vừa có tính xác nhận,
thì ta phải sử dụng đồng thời cả hai hệ mật mã và xác nhận (bằng chữ ký). Giả sử
trên mạng truyền tin công cộng, ta có cả hai hệ mật mã khoá công khai S1 và hệ xác
nhận bằng chữ ký S 2. Giả sử B có bộ khoá mật mã K = (K', K'') với K' = (n, e) và
K'' = d trong hệ S1, và A có bộ khoá chữ ký Ks  ( K s , K s ) với K s  a và
K s  (n, b) trong hệ S 2. A có thể gửi đến B một thông báo vừa bảo mật vừa có chữ


ký để xác nhận như sau: A ký trên thông báo x trước, rồi thay cho việc gửi đến B
văn bản cùng chữ ký (x, sig K  (x)) thì A sẽ gửi cho B bản mật mã của văn bản đó
s

được lập theo khoá công khai của B, tức là gửi cho B eK  ((x, sig K  (x)). Nhận được
s

văn bản mật mã đó B sẽ dùng thuật toán giải mã d K  của mình để thu được
(x, sig K  (x)), sau đó dùng thuật toán kiểm thử chữ ký công khai verK  của A để xác
s

s

nhận chữ ký sig K  (x) đúng là của A trên x.
s

a. Thuật toán sinh khoá
Thực thể A tạo khoá công khai và khoá riêng tương ứng theo phương thức
sau:
 Sinh ra hai số nguyên tố lớn ngẫu nhiên p và q cùng kích thuớc bit
 Tính n = pq và  = (p - 1)(q - 1 )
 Chọn một số tự nhiên ngẫu nhiên a thoả mãn Điều kiện sau: 1< a < 
và USCLN(a, ) = 1 hay a  Z*p .
 Sử dụng giải thuật mở rộng Euclidean để tính toán số tự nhiên duy
nhất b sao cho 1< b <  và ab  1 (mod )
 Khoá công khai của A là K‟ = (n, a), khoá riêng của A là K” = b
b. Thuật toán sinh chữ ký và xác nhận chữ ký
Thực thể A ký trên thông điệp m. Thực thể B có thể xác định được chữ ký
của A và khôi phục lại thông điệp từ chữ ký.

23


Sinh chữ ký:

Thực thể A làm theo các buớc sau:

 Tính m' = H(m), là một số nguyên trong khoảng [0, n-1]
 Tính s = m'a mod n
 Chữ ký của A cho m là s
Xác nhận chữ ký: Thực thể B làm theo các buớc sau:
 Nhận khoá công khai của A là (n, b)
 Tính m' = sb mod n
 Kiểm tra m'  MR nếu không sẽ không chấp nhận chữ ký
 Lấy lại thông điệp m từ m = H-1 (m')
c. Tóm tắt luợc đồ ký theo RSA
 Cho n = pq với p và q là các số nguyên tố.
 Cho P = A = Zn và định nghĩa
o p = {(n, p, q, a, b) || n = pq, p và q là nguyên tố, ab  1 mod
(n) } Các giá trị n, b là công khai. Ðịnh nghĩa
 Sigk(x) = xa mod n và
 Verk(x,y) = true x  yb (mod n) với x, y  Zn
 Nếu độ dài thông điệp x lớn, ta sử dụng hàm băm.
Ví dụ:
Sinh khoá:
Thực thể A chọn số nguyên tố p = 7927 và q = 6997. Tính n = pq =
5546521 và
 = 7926 x 6996 = 55450296.
A chọn a = 5 và giải ab = 5b 1 (mod 55450296) được b = 44360237.
Khoá công khai là (n = 55465219, a = 5) và khoá riêng là b = 44360237.


Sinh chữ ký:

24


Ðể ký thông
31229978. Chữ ký

điệp m

= 31229978, A tính m'1
= H(m) =
s = m1'b mod n = 312299784430237 mod 55465219 =

30729435.
Xác nhận chữ ký:
m'2 = sa mod n = 307294355 mod 55465219 = 31229978.
B chấp nhận chữ ký vì m‟2 = m‟1.
B tính

1.6 TÓM TẮT
Trong chương này giới thiệu hệ mật khoá công khai và các ứng dụng của mật mã
khoá công khai. Khác với hệ mật đối xứng, hệ mật khoá công khai sử dụng một cặp
khoá gồm 1 khoá riêng và 1 khoá công khai được sử dụng cho mục đích ký số, mã
hoá. Khoá riêng được giữ bí mật và khoá công khai được công bố rộng rãi.
Hệ mật khoá công khai đã giải quyết được hai vấn đề khó khăn trong hệ mật đối
xứng, đó là vấn đề phân phối khoá và chữ ký số. Ngoài việc mã hoá để đảm bảo
thông tin không bị chặn bắt và xem trộm trên đường truyền người ta còn thực hiện
ký lên văn bản truyền đi để đảm bảo nội dung bản tin xuất phát từ một nguồn tin

cậy, hợp lệ và không bị sửa đổi bằng cách sử dụng chữ ký số.
Trong chương này cũng trình bày chi tiết về các lược đồ chữ ký số RSA, thuật toán
mã hoá khoá công khai RSA và hàm băm được sử dụng trong quá trình tạo và kiểm
tra chữ ký số.

25


×