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

Nghiên cứu giải pháp xây dựng và phát triển chữ ký số dùng trong các cơ quan tỉnh Thái Nguyên

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.37 MB, 69 trang )


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

i
ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG


DƢƠNG THỊ HOÀI THU


NGHIÊN CỨU GIẢI PHÁP XÂY DỰNG VÀ PHÁT
TRIỂN CHỮ KÝ SỐ DÙNG TRONG CÁC CƠ QUAN
TỈNH THÁI NGUYÊN



LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH




Thái Nguyên, 2012

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

ii


LỜI CẢM ƠN


Để hoàn thành chƣơng trình cao học và viết luận văn này, tôi đã nhận
đƣợc sự hƣớng dẫn, giúp đỡ và góp ý nhiệt tình của quý thầy cô trƣờng Đại
học Công nghệ thông tin - Truyền thông, Đại học Thái Nguyên.
Trƣớc hết, tôi xin chân thành cảm ơn đến quí thầy cô trƣờng Đại học
Công nghệ thông tin - Truyền thông, đặc biệt là những thầy cô đã tận tình dạy
bảo cho tôi suốt thời gian học tập tại trƣờng.
Tôi xin gửi lời biết ơn sâu sắc đến thầy giáo TS. Nguyễn Văn Tảo ngƣời
đã dành rất nhiều thời gian, tâm huyết và sự tận tình giúp đỡ, hƣớng dẫn cho tôi
trong suốt quá trình nghiên cứu và giúp tôi hoàn thành luận văn.
Tôi xin bày tỏ lòng biết ơn tới gia đình, bạn bè và những ngƣời thân đã
động viên khích lệ tinh thần và giúp đỡ để tôi hoàn thành luận văn này.
Mặc dù tôi đã có nhiều cố gắng hoàn thiện luận văn bằng tất cả sự nhiệt
tình và năng lực của mình, tuy nhiên không thể tránh khỏi những thiếu sót, rất
mong nhận đƣợc những đóng góp quí báu của quí thầy cô và các bạn.
Thái Nguyên, ngày 20 tháng 9 năm 2012
Học viên


Dƣơng Thị Hoài Thu



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

iii
LỜI CAM ĐOAN

Tôi xin cam đoan, toàn bộ nội dung liên quan tới đề tài đƣợc trình bày
trong luận văn là bản thân tôi tự tìm hiểu và nghiên cứu, dƣới sự hƣớng dẫn
khoa học của Thầy giáo TS. Nguyễn Văn Tảo.

Các tài liệu, số liệu tham khảo đƣợc trích dẫn đầy đủ nguồn gốc. Tôi
xin chịu trách nhiệm về lời cam đoan của mình.

Học viên thực hiện



Dương Thị Hoài Thu

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

iv
MỤC LỤC
MỞ ĐẦU 1
1.1 CÁC KHÁI NIỆM CƠ BẢN 2
1.2 MỘT SỐ KHÁI NIỆM TOÁN HỌC CƠ SỞ 3
1.2.1 Phép đồng dƣ 3
1.2.2 Hàm phi-Euler 3
1.2.3 Định lý Femat và các mở rộng 4
1.2.4 Định lý Trung Quốc về phần dƣ 4
1.3 GIỚI THIỆU HỆ MÃ KHÓA CÔNG KHAI 5
1.4 HỆ MẬT MÃ RSA 7
1.4.1 Quá trình tạo khóa, mã hóa và giải mã 8
1.4.2 Độ an toàn của hệ RSA 9
1.5 HỆ MẬT MÃ ELGAMAL 10
1.5.1 Quá trình tạo khóa, mã hóa, giải mã 11
1.5.2 Độ an toàn của mật mã ElGamal: 12
CHƢƠNG 2 - CHỮ KÝ SỐ 13
2.1 GIỚI THIỆU CHUNG VỀ CHỮ KÝ SỐ 13
2.1.1 Khái niệm về chữ ký số: 13

2.1.2 Các ƣu điểm của chữ ký số: 13
2.1.3 Phân loại chữ ký số: 15
2.1.4 Sơ đồ tổng quan của một hệ thống chữ ký số 16
2.2 CHỮ KÝ SỐ VÀ HÀM BĂM 17
2.2.1 Khái niệm về hàm băm: 17
2.2.2 Hàm băm MD5 (Message-Digest algorithm 5) 17
2.3 CHỮ KÝ SỐ DÙNG MẬT MÃ KHÓA CÔNG KHAI 20
2.3.1 Sơ đồ chữ ký số RSA 20
2.3.2 Sơ đồ chữ ký ElGamal 22

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

v
2.3.3 Chuẩn chữ ký số 25
2.4 XÁC THỰC VÀ CÁC PHƢƠNG PHÁP XÁC THỰC 28
2.4.1 Vấn đề xác thực: 28
2.4.2 Các phƣơng pháp xác thực: 29
2.5 TRIỂN KHAI CHỮ KÝ SỐ TRONG THỰC TẾ 31
CHƢƠNG 3. ỨNG DỤNG MÃ HÓA VÀ CHỮ KÝ SỐ TRONG TRAO
ĐỔI VĂN BẢN 35
3.1. MÔ HÌNH HỆ THỐNG 35
3.2 XÂY DỰNG CÁC MÔĐUN 36
3.2.1 Tạo khóa: 36
3.2.2 Mã hóa và tạo chữ ký cho file tài liệu: 37
3.2.3 Giải mã và xác thực chữ ký: 39
3.3 GIAO DIỆN MỘT SỐ CHỨC NĂNG CHÍNH CỦA CHƢƠNG TRÌNH .
41


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


vi
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT


CA: Certificate Authority
FIPS: Federal information Processing Standard
MAC: Message Digest
NIST: National Institute Of Standards Anh Technology
RSA: Rivest, Shamir, Adleman

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

vii
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ


Hình 1.1 : Mô hình mật mã khóa công khai
Hình 2.1: Hàm MAC
Hình 3.1: Sơ đồ quá trình tạo khóa
Hình 3.2 : Sơ đồ quá trình ký và mã hóa file dữ liệu
Hình 3.3: Sơ đồ quá trình xác thực chữ ký và giải mã file dữ liệu

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

1
MỞ ĐẦU

Trong sự phát triển của xã hội loài ngƣời, kể từ khi có sự trao đổi thông
tin, an toàn thông tin trở thành một nhu cầu gắn liền với nó nhƣ hình với

bóng. Đặc biệt trong thời đại mà thƣơng mại điện tử đang lên ngôi thì việc có
đƣợc các công cụ đầy đủ để đảm bảo cho sự an toàn trao đổi thông tin liên lạc
là vô cùng cần thiết. Chính vì vậy mà chữ ký số ra đời với nhiều tính năng ƣu
việt, chữ ký số sẽ giải quyết vấn đề toàn vẹn dữ liệu và là bằng chứng chống
chối bỏ trách nhiệm trên nội dung đã ký, giúp cho các doanh nghiệp, tổ chức
cá nhân yên tâm với các giao dịch điện tử của mình trong môi trƣờng internet.
Việc ứng dụng chữ ký số sẽ đem lại cho doanh nghiệp, tổ chức rất nhiều lợi
ích nhƣ: Tiết kiệm chi phí giấy tờ, thời gian luân chuyển trong hoạt động quản
lý công văn, giấy tờ, thƣ điện tử; giúp thúc đẩy nhanh các giao dịch qua mạng
trong khi vẫn đảm bảo độ an toàn và bảo mật thông tin. Ngày nay, chữ ký số
đóng một vai trò quan trọng trong kế hoạch phát triển Thƣơng mại điện tử và
Chính phủ điện tử ở nƣớc ta.
Tại tỉnh Thái Nguyên việc áp dụng chữ ký số trong các giao dịch điện
tử, các dịch vụ hành chính công chƣa đƣợc triển khai thực hiện do còn gặp
nhiều khó khăn, đặc biệt trong việc trong việc xây dựng cơ sở hạ tầng để phù
hợp với tình hình thực tế tại tỉnh. Với mục đích nghiên cứu, tìm hiểu và vận
dụng các kiến thức đã học đƣợc trong chƣơng trình cao học để giải quyết một
số vấn đề thực tiễn, tôi chọn đề tài "Nghiên cứu giải pháp xây dựng và phát
triển chữ ký số dùng trong các cơ quan tỉnh Thái Nguyên"



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

2
CHƢƠNG 1 –HỆ MẬT MÃ KHOÁ CÔNG KHAI
1.1 CÁC KHÁI NIỆM CƠ BẢN
*Khái niệm chung về mật mã
Hệ mật mã hiện đại thƣờng gồm 5 thành phần (P,C, K, E, D) trong đó:
P: tập hợp hữu hạn các bản rõ có thể

C: tập hợp hữu hạn các bản mã có thể
K: tập hợp các bản khóa có thể
E: tập hợp các qui tắc mã hóa có thể
D: tập hợp ác qui tắc giải mã có thể
Nội dung cần mã hóa thể hiện dƣới dạng bản rõ (P). Ngƣời sử dụng qui tắc
(E) và khóa (K) mã hóa bản rõ (P), kết quả thu đƣợc gọi là bản mã (E
K
(P) =
C). Bản mã này đƣợc gửi đi trên một đƣờng truyền tới ngƣời nhận, sau khi
nhận đƣợc mã (C) ngƣời nhận sử dụng qui tắc (D) và khóa (K) giải mã để có
thể biết đƣợc nội dung thông điệp gốc (D
K
(C) = P).
*Hàm một chiều:
Cho các tập hữu hạn S và T. Hàm một chiều:
f : S→T hàm khả nghịch thỏa:
1. f dễ thực hiện, nghĩa là cho x  S, có thể dễ dàng tính đƣợc y = f(x)
2. f
-1
, hàm ngƣợc của f, khó thực hiện nghĩa là cho y  T, rất khó tính
đƣợc x = f
-1
(y).
3. f
-1
có thể dễ tính đƣợc khi có thêm một số thông tin
- Một số ví dụ về hàm một chiều
+ Ví dụ 1: f: pq →n, là hàm một chiều với p và q là các số nguyên tố
lớn. Thực vậy, ta có thể dễ thực hiện phép nhân p*q (độ phức tạp đa thức);
nhƣng tính f

-1
thì lại là bài toán cực khó (đây chính là bài toán nổi tiếng phân
tích ra thừa số nguyên tố - độ phức tạp mũ).

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

3
+ Ví dụ 2: f
g.N
: x→ g
x
mod N là hàm một chiều. Thực vậy, phép tính g
x

mod N có độ phức tạp đa thức; nhƣng tính f
-1
lại là bài toán cực khó (đây
chính là bài toán nổi tiếng: Bài toán logarithm rời rạc).
+ Ví dụ 3: f
k,N
: x → x
k
mod N là hàm một chiều, với N = p*q , p và q là
các số nguyên tố lớn, kk‟ ≡ 1( mod Φ(N)). Thực vậy, phép tính x
k
mod N có
độ phức tạp đa thức, nhƣng tính f
-1
lại cực khó. Tuy nhiên, nếu biết k


thì có
thể dễ dàng tính đƣợc f từ công thức (x
k
)
k‟
= x [3].
1.2 MỘT SỐ KHÁI NIỆM TOÁN HỌC CƠ SỞ
1.2.1 Phép đồng dƣ
- Định nghĩa: Cho a và b là các số nguyên, a đƣợc gọi là đồng dƣ với b
theo modulo n, ký hiệu a ≡ b (mod n) nếu số dƣ tìm đƣợc cho phép chia a và b
cho n là bằng nhau. Số nguyên n đƣợc gọi là modulo của đồng dƣ.
- Một số tính chất của phép đồng dƣ:
 a ≡ a (mod n)
 Nếu a ≡ b (mod n) thì b ≡ a (mod n)
 Nếu a ≡ b (mod n) và b ≡ c (mod n) thì a ≡ c (mod n)
 Nếu a ≡ b (mod n), c ≡ d (mod n) thì a ± c ≡ b ± d (mod n), a.c ≡ b.d
(mod n).
Nhƣ vậy, ta có khái niệm lớp tƣơng đƣơng nhƣ sau: Lớp tƣơng đƣơng
của một số nguyên a là tập hợp các số nguyên đồng dƣ với a theo modulo n.
Theo các tính chất 1,2,3 trên ta thấy: cho n cố định, các số đồng dƣ theo
modulo n trong không gian Z đƣợc xếp vào một lớp đƣơng đƣơng.
1.2.2 Hàm phi-Euler
Định nghĩa: Cho n ≥1, đặt Φ(n) là tập các số nguyên trong khoảng [1,n]
nguyên tố cùng nhau với n. Hàm  nhƣ thế đƣợc gọi là hàm phi Euler.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

4
* Tính chất của phi – hàm Euler
1. Nếu p là nguyên tố thì (p) = p-1 Thật vậy, khi p là số nguyên tố thì

mọi số tự nhiên bé hơn nó đều là số nguyên tố cùng nhau với nó và do đó ta
có có (p) = p-1.
2. Hàm phi Euler là hàm có tính nhân:
Nếu UCLN(m,n)=1 thì (m.n) = (m). (n) (Trong đó UCLN(m,n) là
ký hiệu ƣớc chung lớn nhất của m và n) [2][3].
1.2.3 Định lý Femat và các mở rộng
* Định lý Femat (bé): Cho p là số nguyên tố, mọi số nguyên a thỏa
mãn: UCLN(a, p) = 1 thì a
p-1
≡ 1(mod p).
* Định lý mở rộng (Euler): Nếu UCLN (a, m) =1 thì a
Φ(m)
≡ 1(mod m)
Trong trƣờng hợp riêng, khi m là số nguyên tố thì (m) = m-1 và ta có
định lý Fermat.
+ Hệ quả 1: Nếu UCLN(c, m) =1 và a ≡ b(mod (m)) với a, b là các số
tự nhiên, thì c
a
≡ c
b
(mod m) và suy ra ta có c
a
mod m = c
a mod Φ(m)
mod m
+ Hệ quả 2: Nếu e, d nguyên dƣơng thỏa mãn điều kiện e
*
d ≡ 1(mod
p) thì với mọi số c nguyên tố cùng nhau với m ta có (c
e

)
d
= c (mod m)
Hệ quả này đóng vai trò then chốt trong việc thiết lập các hệ mã mũ sau
này (kể cả hệ mã RSA) [2][3].
1.2.4 Định lý Trung Quốc về phần dƣ
Định lý: cho tập số nguyên tố cùng nhau từ đôi một: m
1
, m
2,
, ,m
r
,
với mỗi bộ số nguyên bất kỳ a
1
, a
2,
, ,a
r
, , hệ phƣơng trình đồng dƣ
x ≡ a
i
(mod m
i
), i= 1,2, ,r, luôn có nghiệm và là duy nhất theo
modulo m = m
1
, m
2,
, ,m

r
, Nghiệm này có thể tính đƣợc trực tiếp theo
công thức: x = a
1
m
2
m
3
m
r
b
1
+ m
1
a
2
m
3
m
r
b
2
+ m
1
m
2
a
3
m
r

b
3
+
+ m
1
m
2
m
r-1
a
r
b
r
(mod m
1
m
2
m
3
m
r
)
Trong đó bi = (m
1
.

m
2
.


m
3
m
i-1
.m
i+1
m
r
)
-1
(mod m
i
), với mọi i =1, , r.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

5
Định lý trung Quốc cho phép ta tính toán đồng dƣ theo modulo của một
số lớn (tích của nhiều số nguyên tố cùng nhau) thông qua tính toán đồng dƣ theo
modulo các số nhỏ (từng thừa số), điều này sẽ hỗ trợ cho việc tham mã [2].
1.3 GIỚI THIỆU HỆ MÃ KHÓA CÔNG KHAI
Năm 1976, Whitfield Diffie và Martin Hellman công bố một phát kiến
mang tên “các phƣơng hƣớng mới trong mật mã”. Công trình đề xuất một
dạng mới của hệ thống mật mã, trong đó ngƣời gửi và ngƣời nhận sử dụng
các khóa mã khác nhau nhƣng có mối liên hệ với nhau, một trong hai khóa đó
đƣợc giữ bí mật.
Các thuật toán với mật mã khóa công khai (Mật mã bất đối xứng) dựa
trên một lớp các bài toán gọi là hàm một chiều. Các hàm này có đặc tính là rất
dễ dàng thực hiện theo chiều xuôi nhƣng lại rất khó (về khối lƣợng tính toán)
để thực hiện theo chiều ngƣợc lại. Một ví dụ kinh điển cho lớp bài toán này là

hàm nhân hai số nguyên tố rất lớn, ta có thể tính tích số của 2 số nguyên tố
này một cách khá dễ dàng nhƣng nếu chỉ cho biết tích số thì rất khó để tìm ra
2 thừa số ban đầu. Do những đặc tính của hàm một chiều, hầu hết các khóa có
thể lại là những khóa yếu và chỉ còn lại một phần nhỏ có thể dùng để làm
khóa. Vì thế, các thuật toán khóa bất đối xứng đòi hỏi độ dài khóa lớn hơn rất
nhiều so với các thuật toán khóa đối xứng để đạt đƣợc độ an toàn tƣơng đƣơng.
Ngoài ra, việc thực hiện thuật toán khóa bất đối xứng đòi hỏi khối
lƣợng tính toán lớn hơn nhiều lần so với thuật toán khóa đối xứng. Bên cạnh
đó, đối với các hệ thống khóa đối xứng, việc tạo ra một khóa ngẫu nhiên để
làm khóa phiên chỉ dùng trong một phiên giao dịch là khá dễ dàng. Vì thế,
trong thực tế ngƣời ta thƣờng dùng kết hợp: Hệ thống mật mã khóa bất đối
xứng đƣợc dùng để trao đổi khóa phiên còn hệ thống mật mã khóa đối xứng
dùng khóa phiên có đƣợc để trao đổi các bản tin thực sự.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

6
Trong một hệ mã khóa công khai (mã không đối xứng), khóa mã hóa
sử dụng khóa công khai khắc phục điểm yếu của mã hóa khóa đối xứng với
những đặc điểm, giải thuật khóa công khai sử dụng 2 khóa khác nhau:
 Một khóa công khai: Ai cũng có thể biết, dùng để mã hóa thông báo
và thẩm tra chữ ký.
 Một khóa riêng: Chỉ ngƣời giữ đƣợc biết, dùng để giải mã thông báo
và ký chữ ký
 Có tính chất bất đối xứng
 Bên mã hóa không thể giải mã thông báo (nếu dùng để mã hóa
thông báo)
 Bên thẩm tra không thể tạo chữ ký (nếu dùng để ký)








Hình 1.1 : Mô hình hoạt động của mật mã khóa công khai

Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai nhƣ sau:
ngƣời B muốn gửi cho ngƣời A một thông tin mật mà B muốn duy nhất A có
thể đọc đƣợc. Để làm đƣợc điều này, A gửi cho B một chiếc hộp có khóa đã
mở sẵn và giữ lại chìa khóa. B 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ả B 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 đó, B gửi chiếc hộp lại cho A. A
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,
Mã hóa
Giả mã
Khóa bí
mật
Khóa công
khai
Bản rõ
Bản rõ

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

7
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.
* Nguyên tắc chung của mã hóa với khóa công khai

Giả sử trong hệ thống có n cá thể cùng trao đổi các thông tin mật. Mỗi
cá thể chọn cho mình một khóa công khai k và một công thức mã hóa E
k
đƣợc
thông báo công khai cho mọi ngƣời biết. Nhƣ vậy, có n khóa công khai
n
1
,n
2
,…,n
k
. Khi các thể thứ i muốn gửi thông báo cho cá thể j, mỗi chữ trong
thông báo đƣợc chuyển thành số, nhóm thành từng “khối” với độ dài nào đó.
Sau đó, mỗi khối P trong văn bản đƣợc mã hóa công thức mã hóa E
kj
của cá
thể thứ j (đã thông báo công khai), và gửi đi dƣới dạng:
C = E
kj
(P)
Để giải mã thông báo này, cá thể thứ j chỉ cần dùng khóa giải mã (khóa
bí mật của riêng mình) D
kj

D
kj
(C) = D
kj
E
kj

(P) = P
Các cá thể khác trong hệ thống, nếu nhận đƣợc văn bản mật, cùng
không thể nào giải mã đƣợc, vì việc lập mã E
kj
không cho phép tìm ra khóa
D
kj
trong thời gian chấp nhận đƣợc [2].
Các nguyên tắc trên sẽ đƣợc cụ thể hóa bởi hệ mã RSA dƣới đây.
1.4 HỆ MẬT MÃ RSA
RSA là tên viết tắt của ba tác giả Ronald Rivest, Adi Shamir, Leonard
Adleman. 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ý số đồ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 RSA có hai khóa: khóa công khai (hay khóa công cộng) và
khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong
quá trình mã hóa và giải mã. Khóa công khai đƣợc công bố rộng rãi cho mọi

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

8
ngƣời và đƣợc dùng để mã hóa. Những thông tin đƣợc mã hóa bằng khóa
công khai chỉ có thể đƣợc giải mã bằng khóa bí mật tƣơng ứng. Nói cách
khác, mọi ngƣời đều có thể mã hóa nhƣng chỉ có ngƣời biết khóa cá nhân (bí
mật) mới có thể giải mã đƣợc.
1.4.1 Quá trình tạo khóa, mã hóa và giải mã
* Định nghĩa:
- Tập các bản rõ : P =Z

N
= { 0, 1, , n-1}
- Tập các bản mã : C = Z
N
= { 0, 1, , n-1}
- Tập các khóa: K={n, p, q, e, d}: N= p
*
q , e
*
d  1(mod (N))}
Quá trình Tạo khóa
Giả sử A và B 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, A đầ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 nhƣ sau:
Bƣớc 1: Tạo hai số nguyên tố phân biệt p và q lớn, sao cho bài toán
phân tích ra thừa số nguyên tố là khó giải (kích cỡ mỗi số khoảng 512 bits đến
1024 bits).
Bƣớc 2: Tính N = p
*
q và (N) = (p-1)(q-1)
Bƣớc 3: Chọn một số tự nhiên e sao cho 1< e < (N) và (e,(N)) =1
Bƣớc 4: Sử dụng thuật toán Euclid mở rộng, để tính số nguyên d duy
nhất sao cho 0 < d < (n) và d
*
e 1(mod (N)) (d là nghịch đảo của e
modulo N).
Khi đó ta có:
+ Khóa công khai: (e, N)
+ Khóa bí mật: (d, N)
Ngƣời A gửi khóa công khai cho ngƣời B, 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 số của n
và cho phép tính d khi biết e. Hai số nguyên tố p, q sẽ bị xóa khi kết thúc quá
trình tạo khóa.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

9
Quá trình mã hóa:
Giả sử ngƣời B muốn gửi đoạn thông tin M cho ngƣời A. Ngƣời B làm
nhƣ sau:
Bƣớc 1: Chọn khóa bí mật của ngƣời nhận
Bƣớc 1: Lấy khóa công khai của ngƣời nhận A: (e, N)
Bƣớc 2: Biến đổi thông điệp M thành những số nguyên Mi tƣơng ứng
sao cho Mi < N, (i= 1,…, k) theo phép biến đổi sau:
- Biến đổi các ký tự trong thông điệp M thành các số nguyên tƣơng ứng
theo một quy tắc nào đó
- Chia thông điệp vừa biến đổi thành k nhóm có chiều dài bằng nhau,
mỗi nhóm biểu diễn một số nguyên M
i
Є { 0,…, N-1) (với 1≤ i≤ k)
Bƣớc 3: Thực hiện mã hóa lần lƣợt cho từng số M
i
→C
i
bằng cách:
C
i
= E
ke
(M

i
) =M
i
e
(mod N)
Tập hợp các số nguyên {C
1,
C
2
, ,

C
k
) là bản mã để gửi đến ngƣời nhận A
Quá trình giải mã
Ngƣời nhận A dùng khóa bí mật d của mình để thực hiện giải mã bằng
các bƣớc sau:
Bƣớc 1: Chọn khóa bí mật của ngƣời nhận
Bƣớc 2: Thực hiện giải mã lần lƣợt từng số nguyên C
i
→ M
i
bằng cách
M
i
= D(C
i)
=C
i
d

(mod N) với 0 ≤ M
i
≤ N
Bƣớc 3: Thực hiện phép biến đổi ngƣợc lại từ các số Mi thành chuỗi
các ký tự tƣơng ứng để khôi phục lại nội dung thông điệp M ban đầu.

1.4.2 Độ an toàn của hệ RSA
Độ 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

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

10
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: Cho số nguyên dƣơng N là tích của hai số nguyên tố
phân biệt p và q (N = p
*
q), số nguyên e sao cho thỏa mãn :
UCLN(e, (p-1)
*
(q-1))=1 và số nguyên c.
Tìm số nguyên m sao cho m
e
≡ c (mod N).
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 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=p*q 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ó
phƣơng pháp nào đƣợc tìm ra trên máy tính để giải bài toán này trong thời
gian đa thức. Tuy nhiên ngƣời ta cũng chƣa chứng minh đƣợc điều ngƣợc lại
(sự không tồn tại thuật toán).
Do tính đơn giản trong thiết kế nên RSA đƣợc ứng dụng rộng rãi và
dùng nhiều nhất trong số các thuật toán với khóa công khai và chính vì thế nó
đã trải qua nhiều thử thách, xem xét, kiểm chứng của cộng đồng về độ an toàn
của nó. Tuy nhiên khi dùng RSA thì tốc độ mã hóa chậm, vì thế để mã hóa
khối dữ liệu lớn là không khả thi. Ngƣời ta đã tìm ra ứng dụng quan trong độc
đáo khác của RSA hơn là dùng nó để mã hóa: Tạo vỏ bọc an toàn cho văn bản
mật và vấn đề xác nhận chủ thể [2].
1.5 HỆ MẬT MÃ ELGAMAL
Hệ mật mã khóa công khai ElGamal đƣợc giới thiệu bởi T. ELGamal
vào năm 1985. Độ an toàn của hệ này phụ thuộc vào độ khó giải bài toán
lograrithm rời rạc trong trƣờng số hữu hạn Z
p.
Vì vậy, số nguyên tố p cần
phải đƣợc chọn sao cho bài toán logratithm là khó tính toán. Trƣờng hợp đặc
biệt để ngăn ngừa sự tấn công, thì nguyên tố p cần phải đƣợc lựa chọn sao cho
số (p-1) có ít nhất một thừa số nguyên tố lớn q.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

11
1.5.1 Quá trình tạo khóa, mã hóa, giải mã
* Định nghĩa
- Tập các bản rõ M =Z
p
*
={1,2, ,p-1}

- Tập các bản mã C = Z
p
*

X
Z
p
*
- Tập các khóa công khai K
e
= {p}
X
P
X
Z
p
*
(với p là tập các phần tử sinh)
- Tập các khóa riêng K
d
= Z
p -1
= {1,2,3, , p-2}
Quá trình tạo khóa:
Bƣớc 1: Tạo số nguyên tố p lớn sao cho bài toán logarithm rời rạc trong
Z
p
là khó giải và số p – 1 có ít nhất một thừa số nguyên tố q lớn.
Bƣớc 2: Chọn số g Є Z
p

*
là phần tử sinh. Các giá trị p và g thƣờng đƣợc
sử dụng nhƣ những tham số chung trong nhóm.
Bƣớc 3: Ngƣời sử dụng chọn ngẫu nhiên số x sao cho 0 < x < p-2, và
định nghĩa K={(p,g,x,y): y = g
x
( mod p)}
Khi đó ta có
+ Khóa công khai: (p, g, y)
+Khóa bí mật: x
Quá trình mã hóa:
Để mã hóa thông điệp M gửi cho A, thì ngƣời B phải thực hiện các
bƣớc sau:
Bƣớc 1: Dùng thuật toán để chia thông điệp M ra nhiều khối có chiều
dài cố định và mỗi khối đƣợc biến đổi thành một số nguyên tƣơng ứng M
i
< p,
(i = 1, ,k).
- Biến đổi các ký tự của thông điệp thành các số tƣơng ứng, theo một
quy tắc nào đó.
- Chia thông điệp số vừa biến đổi thành r nhóm số có chiều dài bằng
nhau, mỗi nhóm biểu diễn một số nguyên M
i
<p với (1≤ i ≤ r)
Bƣớc 2: Lấy khóa công khai của ngƣời nhận (p,g, y)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

12
Bƣớc 3: Chọn ngẫu nhiên một số nguyên k sao cho 0 ≤ k ≤ (p-2)

Bƣớc 4: Mã hóa lần lƣợt từng số M
i
với khóa công khai của ngƣời
nhận, bằng cách tính C
i
= E
ke
(M
i
) = (C
i1,
C
i2
) với C
i1
=g
k
mod p và
C
i2
= M
i *
y
k
mod p
Tập số {C
1,
C
2
,…,Cr


} với C
i
= (Ci
1,
C
12
), i = 1,…,r là bản mã gửi cho B
Quá trình giải mã:
Ngƣời nhận A giải mã bản mã {C
1,
C
2
,…,Cr

} bằng cách sau:
Bƣớc1: Giải mã lần lƣợt cặp số C
i
= (C
i1,
C
i2
) với 1≤ i≤ r
Tính M
i
= D
kd
(C
i1,
C

i2
) = C
i2 *
(C
i1
)
-1
mod p. Kết quả thu đƣợc là tập
các số nguyên tố lớn {M
1
, M
2
, ,M
r
}
Bƣớc 2: Biến đổi các số nguyên Mi trở lại các chuỗi ký tự tƣơng ứng và
khôi phục lại thông điệp M.
1.5.2 Độ an toàn của mật mã ElGamal:
Hệ mã hóa ElGamal là không tất định tức là với một bản rõ M và một
khóa bí mật x, thì có thể có nhiều hơn một bản mã y, vì trong công thức lập
mã có thành phần ngẫu nhiên k.
Độ an toàn của hệ mật mã ElGamal dựa vào khả năng giải bải toán
logarit rời rạc trong Zp. Theo giải thiết trong sơ đồ, thì bài toán này là khó
giải. Từ bản mã C =(C1, C2), trong đó C
1
= a
k
mod p, C
2
= k. M mod p

Nhƣ vậy muốn xác định bản rõ M từ công thức C
2
thám mã phải biết
đƣợc k. Giá trị này có thể tính đƣợc từ công thức C
1
nhƣng lại gặp bài toán
logarit rời rạc.
Phƣơng pháp tính toán của hệ ELGamal rất phức tạp vì đòi hỏi nhiều
phép tính lũy thừa modulo trong quá trình mã hóa và giải mã, nên có hiệu suất
thực hiện kém. Do đó thƣờng không đƣợc ứng dụng trong những trƣờng hợp
mã hóa khối lƣợng lớn dữ liệu. Hệ mã ElGamal đƣợc ứng dụng trong việc xây
dựng lƣợc đồ chữ ký số (phiên bản sửa đổi của lƣợc đồ chữ ký ElGmal là chữ
ký DSA đƣợc dùng trong chuẩn chữ ký điện tử của NIST ở Mỹ và cả thế giới).

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

13
CHƢƠNG 2 - CHỮ KÝ SỐ
2.1 GIỚI THIỆU CHUNG VỀ CHỮ KÝ SỐ
2.1.1 Khái niệm về chữ ký số:
Chữ ký số (một dạng chữ ký điện tử) là thông tin đƣợc mã hóa bằng
khóa riêng (tƣơng ứng với một khóa công khai) của ngƣời gửi, đƣợc đính kèm
theo văn bản nhằm đảm bảo cho ngƣời nhận định danh và xác thực đúng
nguồn gốc, tính toàn vẹn của dữ liệu nhận đƣợc.
- Chữ ký số ra đời để khắc phục các thiếu sót của những hệ thống xác
thực ra đời trƣớc đó. Cùng với sự phát triển của thƣơng mại điện tử, ngoài
nhu cầu xác thực, các nhu cầu khác về bảo mật nhƣ toàn vẹn dữ liệu và chống
từ chối cũng đều hết sức cấp thiết.
- Chữ ký số đóng một vai trò rất quan trọng trong trƣờng hợp xảy ra
tranh chấp vì chữ ký số đƣợc cung cấp bởi hệ thống CA (Certificate authority-

Nhà cung cấp chứng thực số), CA là một tổ chức chuyên đƣa ra và quản lý
các nội dung xác thực bảo mật trên một mạng máy tính, cùng các khoá công
khai để mã hoá thông tin) công cộng nhƣ FPT có giá trị pháp lý tƣơng đƣơng
nhƣ chữ ký tay trong các giao dịch điện tử.
Chữ ký số là một tập con của chữ ký điện tử. Khái niệm chữ ký điện tử-
mặc dù thƣờng đƣợc sử dụng cùng nghĩa với chữ ký số nhƣng thực sự có
nghĩa rộng hơn. Chữ ký điện tử chỉ đến bất kỳ phƣơng pháp nào (không nhất
thiết là mật mã) để xác định ngƣời chủ của văn bản điện tử. Chữ ký điện tử
bao gồm cả địa chỉ telex và chữ ký trên giấy đƣợc truyền bằng fax.[9][10]
2.1.2 Các ƣu điểm của chữ ký số:
* Khả năng xác định nguồn gố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ố hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

14
- Để sử dụng Chữ ký số thì văn bản cần phải đƣợc mã hóa qua hàm
băm (là giải thuật nhằm sinh ra các giá trị băm tƣơng ứng với mỗi khối dữ
liệu: Có thể là một chuỗi ký tự, một đối tƣợng trong lập trình hƣớng đối
tƣợng, v.v Giá trị băm đóng vai gần nhƣ một khóa để phân biệt các khối dữ
liệu). Sau đó dùng khoá bí mật của ngƣời chủ khóa để mã hóa, khi đó ta đƣợc
Chữ ký số. Khi cần kiểm tra, bên nhận giải mã với khóa công khai để lấy lại
hàm băm và kiểm tra với hàm băm của văn bản nhận đƣợc. Nếu hai giá trị này
khớp nhau 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ính toàn vẹn
Cả hai bên tham gia vào quá trình trao đổi 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 thức bị phát hiện. Quy trình mã hóa sẽ ẩn

nội dung đối với bên thứ ba.
* 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.
Với công nghệ hạ tầng mã hóa công khai sẽ đảm bảo chữ ký số khi
đƣợc một ngƣời dùng nào đó tạo ra là duy nhất, không thể giả mạo đƣợc và
chỉ có ngƣời sở hữu khóa bí mật mới có thể tạo ra đƣợc chữ ký số đó (đã đƣợc
chứng minh về mặt kỹ thuật mã hóa).
2.1.3 Điểm khác biệt cơ bản giữa chữ ký thông thƣờng (chữ ký viết
tay) và chữ ký số:
- Đầu tiên là vấn đề ký một tài liệu: Với chữ ký thông thƣờng, nó là
một phần vật lý của tài liệu. Tuy nhiên, một chữ ký số không gắn theo kiểu

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

15
vật lý vào bức điện nên thuật toán đƣợc dùng phải “ không nhìn thấy” theo
cách nào đó trên bức điện.
- Thứ hai là vấn đề kiểm tra: Chữ ký thông thƣờng đƣợc kiểm tra bằng
cách so sánh nó với các chữ ký xác thực khác. Ví dụ, ai đó ký một tấm séc để
mua hàng, ngƣời bán phải so sánh chữ ký trên mảnh giấy với chữ ký nằm ở
mặt sau thẻ tín dụng để kiểm tra. Mặt khác, các chữ ký số có thể đƣợc 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 giữa chữ ký số và chữ ký thông thƣờng là ở chỗ:
Một bản copy tài liệu có chữ ký đƣợc đồng nhất với văn bản gốc, còn copy 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 một bức ký số khỏi dùng lại. Vì thế bản thân bức điện
cần chứa thông tin (chẳng hạn nhƣ ngày tháng) để ngăn nó khỏi bị dùng lại.
2.1.3 Phân loại chữ ký số:
Theo tiêu chí: Từ chữ ký có thể khôi phục thông điệp đƣợc ký thông
điệp gốc, chữ ký số có thể chia làm 2 loại: Chữ ký khôi phục thông điệp và
chữ ký số không khôi phục đƣợc thông điệp gốc (Chữ ký kèm thông điệp).
- Chữ ký kèm thông điệp: Thông điệp ban đầu không thể khôi phục
đƣợc từ chữ ký, do đó thông điệp đi kèm chữ ký, mặt khác thông điệp gốc còn
dùng để kiểm tra tính đúng của chữ ký. Chữ ký kèm thông điệp đƣợc sử dụng
nhiều nhất trong thực tế, nó dựa trên các hàm băm mã hóa hơn là dựa trên
hàm băm bất kỳ, ít bị lỗi khi bị tấn công theo kiểu giả mạo. Ví dụ chữ ký
không khôi phục đƣợc thông điệp: Chữ ký Elgamal, DSS.
- Chữ ký khôi phục thông điệp: Thông điệp ban đầu có thể khôi phục từ
bản thân chữ ký. Nó dùng để ký trên các thông điệp ngắn. Ví dụ chữ ký khôi
phục thông điệp gốc: Chữ ký RSA, Rabin [9]

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

16
2.1.4 Sơ đồ tổng quan của một hệ thống chữ ký số
Một sơ đồ chữ ký số thƣờng bao gồm hai thành phần chủ chốt là thuật
toán ký và thuật toán xác minh. Một sơ đồ chữ ký số là một bộ 5 (P, A, K, S,
V) thỏa mãn các điều kiện sau:
P là một tập hợp các bức điện (thông điệp) có thể
A là tập hữu hạn các chữ ký có thể
S là tập các thuật toán ký
V là tập các thuật toán xác minh
K là tập hữu hạn các khóa có thể, với mỗi k ЄK gồm 2 thành phần
k =(k‟, k‟‟), trong đó k‟ là khóa bí mật dành cho việc ký, k‟‟ là khóa
công khai dành cho việc kiểm thử chữ ký.

Với mỗi k =(k‟, k‟‟), trong S có một thuật toán ký Sig
k‟
: P→A và trong
V có một thuật toán kiểm thử Ver
k‟‟
: P x A→ {đúng, sai} thỏa mãn điều kiện
sau đối với mọi thông báo x Є P và mọi chữ ký y Є A:
Ver
k‟‟
(x,y) = đúng ⇔ y = Sig
k‟
(x)
Với sơ đồ trên, mỗi chủ thể sở hữu một bộ hóa k =(k‟, k‟‟), thông báo
khóa k‟‟ để mọi ngƣời có thể kiểm thử chữ ký của mình và giữ bí mật khóa k‟
để thực hiện ký lên thông báo mà mình muốn gửi đi, các hàm Ver
k‟‟
và Sig
k‟
(khi biết k‟) phải tính đƣợc một cách dễ dàng (trong thời gian đa thức) tuy
nhiên hàm y = Sig
k‟
(x) là khó tính đƣợc nếu không biết k‟ điều đó đảm bảo
cho việc ký, tức là bảo đảm chống giả mạo chữ ký [1].


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

17
2.2 CHỮ KÝ SỐ VÀ HÀM BĂM
2.2.1 Khái niệm về hàm băm:

Thông thƣờng chữ ký số có độ dài lớn hơn văn bản ký, nhƣ vậy, thời
gian ký khá lâu, mặt khác tốn bộ nhớ để lƣu giữ chữ ký, hay tốn thời gian và
băng thông để truyền chữ ký trên mạng máy tính. Nhƣ vậy, hiện nay sơ đồ ký
“số” chỉ cho phép ký trên các bức điện nhỏ. Nhƣng 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 có thể dài nhiều Megabyte.
Một cách đơn giản để giải bài toán trên là chia bức điện thành nhiều
đoạn sau đó ký lên từng đoạn. Với cách “ký” này, một bức điện dài vẫn phải
có một chữ ký rất lớn. Nhƣợc điểm khác là tốc độ “ký” chậm vì các sơ đồ ký
hiện nay phải tính các số mũ modulo rất lớn. Nhƣng khó khăn hơn là bức điện
có thể bị sắp xếp lại các đoạn khác nhau. Ta cần bảo vệ sự nguyên vẹn của
bức điện, điều này không thể thực hiện đƣợc bằng cách ký độc lập từng đoạn
nhỏ của chúng. Giải pháp cho vấn đề này là dùng hàm băm (Hash). Từ bức
điện với độ dài tùy ý, hàm băm tạo ra một tóm lƣợc thông báo có kích thƣớc
qui định (ví dụ 128 bit). Sau đó “ký” trên tóm lƣợc thông báo, thay vì ký trực
tiếp trên tài liệu gốc.
Cần ký bức điện dài x, trƣớc tiên ta tạo lập bản tóm lƣợc thông điệp
(message digest) z =h(x), sau đó ký trên z, tức là tính y =sig
k
(z).
Kiểm tra chữ ký: Đầu tiên tạo lập tóm lƣợc thông điệp z =h(x) nhờ hàm
băm h công khai, sau đó kiểm tra điều kiện Ver
k
(x, y)= true hay không ?
2.2.2 Hàm băm MD5 (Message-Digest algorithm 5)
* Hàm băm MD5 là một hàm băm mật mã đƣợc sử dụng phổ biến,
đƣợc thiết kể bởi Giáo sƣ Ronald L. Rivest tại trƣờng MIT vào năm 1991 để
thay thế cho hàm băm trƣớc đó là MD4 (1990). Là một chuẩn Internet , MD5
đã đƣợc dùng trong nhiều ứng dụng bảo mật và cũng đƣợc dùng phổ biến để
kiểm tra tính toàn vẹn của tập tin. Cũng nhƣ các hàm băm khác nhƣ MD4 và


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

18
SHS (Secure Hash Standard), MD5 là phƣơng pháp có ƣu điểm tốc độ xử lý
rất nhanh, thích hợp với các thông điệp dài và cho ra giá trị băm dài 128 bit.
Thuật toán số hóa thông điệp MD5 nhận vào 1 thông điệp độ dài tùy ý
và tạo ra một số 128 bit, là một dạng “vân tay” hay “mã số thông điệp”
(message digest) của đầu vào. Ngƣời ta cho rằng sẽ không khả thi về mặt tính
toán để tạo ra 2 thông điệp có cùng mã số thông điệp, hoặc tạo ra một thông
điệp với mã số cho trƣớc. Thuật toán MD5 đƣợc dự tính áp dụng cho những
ứng dụng chữ ký điện tử, ở đó một file lớn phải đƣợc “nén” một cách an toàn
trƣớc khi mã hóa với một khóa cá nhân (private key) dƣới một hệ mã hóa
công khai nhƣ RSA.
Giả sử chúng ta có thông điệp b bit ở đầu vào, và ta muốn tìm mã số
của thông điệp. Ở đây b là số không âm bất kỳ; b có thể bằng 0 và không cần
chia hết cho 8, độ lớn có thể bất kỳ. Tƣởng tƣợng rằng các bit của thông điệp
đƣợc viết nhƣ sau: m_0 m_1 m_2 … m_{b-1}
Mã số thông điệp đƣợc tính qua 5 bƣớc sau:
- Bƣớc 1: Các bit gắn thêm
Thông điệp đƣợc mở rộng, thêm bit vào phía sau sao cho độ dài của nó
(tính theo bit) đồng dƣ với 448 theo môđun 512. Nghĩa là thông điệp đƣợc mở
rộng sao cho nó còn thiếu 64 bit nữa thì sẽ có một độ dài chia hết cho 512.
Việc này luôn đƣợc thực hiện ngay cả khi bản thân độ dài thông điệp đã đồng
dƣ với 448 theo môđun 512.
Việc thêm bit này thực hiện nhƣ sau: một bit “1” đƣợc thêm vào sau
thông điệp, sau đó các bit “0” đƣợc thêm vào để có một độ dài đồng dƣ với
448 môđun 512. Trong tất cả các trƣờng hợp, có ít nhất 1 và nhiều nhất 512
bit đƣợc thêm vào.
– Bƣớc 2 : Gắn thêm độ dài
Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu đƣợc thêm vào phía

sau kết quả của bƣớc 1. Trong trƣờng hợp b lớn hơn 264 thì chỉ có 64 bit thấp

×