Tải bản đầy đủ (.doc) (54 trang)

TỔNG QUAN VỀ HÀM BĂM VÀ THUẬT TOÁN HÀM BĂM MD5

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 (815.14 KB, 54 trang )

MỤC LỤC
Lời cảm ơn
Lời cam đoan
PHẦN I: GIỚI THIỆU VỀ ĐỀ TÀI.....................................................................5
1.1.Mục đích...............................................................................................................5
1.2 Đối tượng nghiên cứu...........................................................................................5
1.2 Phạm vi nghiện cứu...............................................................................................5
1.4 Ý nghĩa đề tài........................................................................................................5
PHẦN II: NỘI DUNG..........................................................................................6
CHƯƠNG 1 :TỔNG QUAN VỀ MẬT MÃ HÓA...............................................6
2.1.1 Khái niệm về mã hóa.........................................................................................6
2.1.2 Các thuật toán mã hóa........................................................................................7
2.1.2.1 Mã hóa đối xứng..................................................................................7
2.1.2.2 Mã hoá bất đối xứng............................................................................8
2.1.4 Phương pháp RSA..............................................................................................9
2.1.4.1 Khái niệm hệ mật mã RSA..................................................................9
2.1.4.2. Độ an toàn của hệ RSA...................................................................11
2.1.4.3. Một số tính chất của hệ RSA.........................................................12
2.1.4.4 Một số phương pháp tấn công giải thuật RSA...................................13
CHƯƠNG 2 CHỮ KÝ ĐIỆN TỬ.......................................................................15
2.2.1Giới thiệu..........................................................................................................15
2.2.2 Khái niệm về chữ ký điện tử............................................................................15
2.2.3 Thuật toán chữ ký điện tử................................................................................17
2.2.4 Chứng nhận chữ ký điện tử..............................................................................19
2.2.5 Chuẩn chữ ký điện tử (Digital Signature Standard)........................................ 19
2.2.6 Giải pháp ứng dụng chữ ký điện tử..................................................................22
2.2.6.1 Quá trình ký và gửi các tệp văn bản..................................................22
2.2.6.2 Quá trình nhận các tệp văn bản..........................................................23
2.2.7 Vận dụng vào hệ thống...................................................................................24
2.2.8 Kết luận............................................................................................................25
CHƯƠNG 3 : TỔNG QUAN VỀ HÀM BĂM VÀ THUẬT TOÁN HÀM


BĂM MD5...........................................................................................................26
2.3.1 Đăt vấn đề........................................................................................................26
2.3.2 giới thiệu về hàm băm mật mã.........................................................................26
2.3.2.1 Tính chất............................................................................................27
2.3.2.2 Ứng dụng...........................................................................................28
2.3.3 Hàm băm dựa trên mã khối..............................................................................29
2.3.4 Cấu trúc Merkle-Damgård...............................................................................29
2.3.5 Birthday attack.................................................................................................30
2.3.6 Hàm băm mật mã...........................................................................................31
2.3.7 Cấu trúc của hàm băm...................................................................................32
2.3.8 Tính an toàn của hàm băm đối với hiện tượng đụng độ ................................32
2.3.9 Tính một chiều................................................................................................33
2.3.10. Sử dụng cho các nguyên thủy mật mã khác..................................................33
2.3.11 Ghép các hàm băm mật mã............................................................................34
2.3.12 Thuật toán băm mật mã..................................................................................34
2.3.13 Phương pháp Secure Hash Standard (SHS).................................................. 35
2.3.14 Một số hàm băm nổi tiếng.............................................................................35
2.3.15 Hàm băm MD5...............................................................................................35
2.3.15.1 Giới thiệu......................................................................................35
2.3.15.2 Khái niệm......................................................................................36
2.3.15.3 Ứng dụng......................................................................................36
2.3.15.4 Thuật giải.....................................................................................36
2.3.16 MD5 (Message Digest)..................................................................................37
2.3.16.1 Mô tả...................................................................................................37
2.3.16.2 Cách thực hiện....................................................................................40
2.3.17 Sự khác nhau giữa MD4 và MD5................................................................42
CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN
MD5......................................................................................................................43
2.4.1 Nhiệm vụ của chương trình..............................................................................43
2.4.2 Thuật toán MD5 và sơ đồ khối........................................................................43

2.4.2.1 Thuật toán.........................................................................................43
2.4.2.2 Sơ đồ khối thuật toán MD5...............................................................46
2.4.3 Kết quả chương trình mô phỏng thuật toán băm MD5...................................49
2.4.3.1 Giao diện chương trình mô phỏng.....................................................49
2.4.3.2 Các bước thực hiện chương trình.......................................................49
2.4.3.3 Kết quả thực nghiệm..........................................................................50
PHẦN III: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN......................................53
Danh mục tài liệu tham khảo..............................................................................54
DANH MỤC HÌNH VẼ:
Hình 1.1 Mô hình hệ thống mã hóa quy ước..............................................................7
Hình 1.2 Nguyên lý của hệ thống mã hoá đối xứng....................................................7
Hình 1.3 Kênh nguyên lý trong hệ thống mã hoá đối xứng........................................8
Hình 1.4 Nguyên lý cơ bản của mã hoá khoá công khai và thuật toán RSA..............9
Hình 1.5 Sơ đồ các bước thực hiện mã hoá theo thuật toán RSA.............................11
Hình 2.1 Kiểm tra chữ ký điện tử.............................................................................17
Hình 2.2 Thủ tục ký và kiểm tra chữ ký..................................................................19
Hình 2.3 Sơ đồ mô tả quá trình ký và gửi các tệp văn bản......................................24
Hình 2.4 Sơ đồ mô tả quá trình nhận các tệp văn bản.............................................25
Hình 3.1 Cấu trúc băm Merkle-Damgård.................................................................30
Hình 3.2 Sơ đồ vòng lặp
chí
nh của MD5.................................................................38
Hình 3.3 Sơ đồ 1 vòng lặp của MD5........................................................................39
LỜI MỞ ĐẦU
Ngày nay, các ứng dụng Công nghệ thông tin đã và đang ngày càng phổ biến
rộng rãi đã ảnh hưởng rất lớn đến diện mạo của đời sống, kinh tế, xã hội. Mọi công
việc hàng ngày của chúng ta đều có thể thực hiện được từ xa với sự hổ trợ của máy
vi tính và mạng internet (từ việc học tập, giao dịch,… đến việc gửi thư). Tất cả thông
tin liên quan đến những công việc này đều do máy vi tính quản lý và truyền đi trên hệ
thống mạng. Đối với những thông tin bình thường thì không có ai chú ý đến, nhưng

đối với những thông tin mang tính chất sống còn đối với một số cá nhân (hay tổ chức)
thì vấn đề bảo mật thật sự rất quan trọng, vấn đề khó khăn đặt ra là làm sao giữ được
thông tin bí mật và giữ cho đến đúng được địa chỉ cần đến. Nhiều tổ chức, cá nhân đã
tìm kiếm và đưa ra nhiều giải pháp bảo mật phương pháp mã hóa khóa công khai
được xem là phương pháp có tính an toàn khá cao. Như vậy việc đảm bảo an toàn
thông tin, tránh mọi nguy cơ bị thay đổi, sao chép hoặc mất mát dữ liệu trong các ứng
dụng trên mạng luôn là vấn đề bức xúc, được nhiều người quan tâm. Trong bài báo
cáo này, em trình bày những vấn đề liên quan về mã hóa thông tin, thuật toán băm
MD5, thuật toán mã hóa RSA và chữ ký điện tử. Từ đó, ứng dụng thuật toán MD5
và RSA để phân tích quá trình hoạt động của chữ ký điện tử. Trên cở sở đó, em xin
được đề ra giải pháp ứng dụng chữ ký điện tử trên cơ sở kết hợp giữa thuật toán băm
MD5 và thuật toán mã hóa RSA trong quá trình gửi và nhận các văn bản.
PHẦN I GIỚI THIỆU ĐỀ TÀI
1.1 MỤC ĐÍCH
 Tìm hiểu chung về kỹ thuật nhận thực (chữ ký điện tử)
Chữ ký điện tử không được sử dụng nhằm bảo mật thông tin mà nhằm bảo vệ
thông tin không bị người khác cố tình thay đổi để tạo ra thông tin sai lệch. Nói cách
khác, chữ ký điện tử giúp xác định được người đã tạo ra hay chịu trách nhiệm đối với
một thông điệp.
 Tìm hiểu hàm băm, đi sâu vào thuật toán MD5
Hàm băm (Hash Function): Cho đầu vào là một thông báo có kích thước thay
đổi, đầu ra là một mã băm có kích thước cố định.
Giải thuật băm MD5 (Message Digest 5): được sử dụng để kiểm tra tính toàn
vẹn của khối dữ liệu lớn. Thuật toán nhận đầu vào là một đoạn tin có chiều dài bất kỳ,
băm nó thành các khối 512 bit và tạo đầu ra là một đoạn tin 128 bit.
 Xây dựng chương trình mô phỏng hàm băm MD5
Đưa ra kết quả chương trình mô phỏng và các kết quả thu được đúng với các
tài liệu tiêu chuẩn về thuật toán MD5
1.2ĐỐI TƯỢNG NGHIÊN CỨU
- các phương pháp mật mã hóa

- Chữ ký điện tử và ứng dụng
- Thuật toán RSA
- Các thuật toán hàm băm
1.3 PHẠM VI NGHIÊN CỨU
Bài báo cáo này tập trung nghiên cứu các thuật toán băm MD5 và ứng dụng
hàm băm trong chữ ký điện tử
1.4 Ý NGHĨA ĐỀ TÀI
Chữ ký điện tử là lĩnh vực được sử dụng rộng rải trong thực tế, nhận thực các
bản tin, file văn bản trong vấn đề truyền thông tin trên mạng, xây dụng các giải pháp
về giao dịch điện tử và chính phủ điện tử.
Nghiên cứu về chữ ký điện tử và tìm hiểu những lĩnh vực ứng dụng của nó có
ý nghĩa rất quan trọng trong thực tế
PHẦN II NỘI DUNG
CHƯƠNG 1 TỔNG QUAN VỀ MẬT MÃ HÓA
2.1.1 KHÁI NIỆM VỀ MÃ HÓA
Mã hoá là một tiến trình biến đổi thông tin, sử dụng các thuật toán nhằm mục
đích không cho người khác có thể nắm bắt được nếu thiếu một vốn thông số nhất định
(key) để dịch ngược.
Đi kèm với mã hoá là giải mã.
Có rất nhiều loại thuật toán mã hoá cho dữ liệu máy tính, chúng được gọi tên theo
thuật toán và có thể so sánh trực tiếp với nhau, ví dụ mã hoá 128-bit, Triple-DES,
2048-bit RSA.
Trong cùng một loại, dĩ nhiên một phép mã hoá 2048-bit RSA sẽ mạnh mẽ hơn
phép mã hoá 1024-bit RSA.Nhưng như vậy không có nghĩa là một phép mã hoá với
độ dài dãy bit lớn được xem là an toàn. Thử liên tưởng đến ngôi biệt thự của bạn, với
chiếc cổng được khoá bằng ổ khoá 4 chân, mỗi chân như vậy có thể nằm trong 10 vị
trí, ổ khoá chỉ mở được khi 4 chân được sắp theo mã khoá của chủ nhà, và để vượt
qua, 1 tên trộm cần phải dùng tối đa 10.000 phép thử (brute-force attack). Nhưng nếu
tăng ổ khoá lên 10 chân, sẽ tạo nên 10 triệu khe cắm khoá hợp lệ, thì không ai đủ sự
thông minh (hay sự ngu dốt) để mở chiếc khoá bằng cách tấn công thuật toán này. Họ

có thể phá cửa sổ, hay thậm chí là phá chiếc cổng, giả danh chính quyền, thợ nước…
để đột nhập vào căn nhà của bạn. Một ổ khoá tốt không thể chống lại những kiểu tấn
công như thế được.
Điều đó cho thấy một thuật toán mã hoá cực mạnh sẽ chỉ hữu ít nếu được sử dụng
ở đúng những nơi cần thiết, không phải lúc nào cũng là tối ưu. Cái cần bảo vệ ở trên
chính là ngôi nhà của bạn chứ không phải là đặt một hàng rào bẫy và hi vọng kẻ trộm
sẽ dính vào cái bẫy đó.
Với sự phát triển mạnh mẽ của mình, hầu hết các kênh thông tin đều lấy Internet
làm nền tảng để phát triển. Điều tất yếu sẽ nảy sinh là vấn đề An toàn thông tin, một
ngày nào đó, bạn bỗng nhận ra rằng, thông tin của bạn đang bị theo dõi.
Để vừa đảm bảo thông tin luôn kết nối, vừa đảm bảo yếu tố bảo mật của thông tin
thì phương pháp tốt nhất là mã hoá thông tin.
Ngày nay việc mã hoá đã trở nên phổ cập, các quốc gia hay là các công ty lớn đều
có chính sách phát triển công cụ mã hoá riêng biệt để bảo vệ cho chính thông tin của
họ.
Trên thế giới hiện có rất nhiều các loại thuật toán, trong khuôn khổ bài báo cáo,
chúng ta chỉ tìm hiểu về các thuật toán được ứng dụng phổ biển trong Internet.
Hình 1.1 Mô hình hệ thống mã hóa quy ước
Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc. Các
thuộc tính được yêu cầu là:
 Bí mật: Chỉ có người nhận đã xác thực có thể lấy ra được nội dung của thông
tin chứa đựng trong dạng đã mật mã hóa của nó. Nói khác đi, nó không thể cho phép
thu lượm được bất kỳ thông tin đáng kể nào về nội dung của thông điệp.
 Nguyên vẹn: Người nhận cần có khả năng xác định được thông tin có bị thay
đổi trong quá trình truyền thông hay không.
 Xác thực: Người nhận cần có khả năng xác định người gửi và kiểm tra xem
người gửi đó có thực sự gửi thông tin đi hay không.
2.1.2 CÁC THUẬT TOÁN MÃ HÓA
2.1.2.1 Mã hóa đối xứng
Hình 1.2: Nguyên lý của hệ thống mã hoá đối xứng.

Nguyên lý cơ bản của hệ thống mã hoá khoá đối xứng được chỉ ra trong (hình
1.2) Có thể thấy rằng bản chất của mã hoá đối xứng là cả phía thu và phía phát đều sử
dụng cùng một khoá bí mật (SK), và thuật toán ở cả hai phía cũng đều giống nhau.
Mã hoá đối xứng như trên dựa vào việc phân phối khoá một cách bảo mật giữa cả hai
phía. Nhưng thực tế là khoá chung đó lại phân phối tới tất cả mọi người trong mạng,
và vấn đề “kênh bảo mật” đã làm đau đầu những nhà quản trị mạng. Điều nguy hiểm
nhất là bất cứ ai chiếm được khoá trong quá trình phân phối cũng có toàn quyền truy
nhập tới dữ liệu do khoá đó bảo vệ. Do đó, quá trình phân phối khoá phải trên “kênh
bảo mật”, bất kể là kênh logic hay kênh vật lý (hình 1.4).
Hình 1.3: Kênh nguyên lý trong hệ thống mã hoá đối xứng.
2.1.2.2 Mã hoá bất đối xứng
Ngược lại với mã hoá đối xứng, thuật toán bất đối xứng hoạt động theo ít nhất
là hai khoá, hay chính xác hơn là một cặp khoá (hình 1.2). Khoá sử dụng được biết
đến như là khoá bí mật và khoá công khai và do đó có khái niệm mã hoá khoá công
khai. Mỗi khoá được sử dụng để mã hoá hay giải mã, nhưng khác với thuật toán đối
xứng, giá trị của khoá ở mỗi phía là khác nhau.
Trong hệ thống RSA, dữ liệu được mã hoá bằng khoá bí mật (KX
u
) và chỉ có
thể giải mã được bằng khoá công khai của cặp khoá đó. Cặp khoá này được tạo ra
cùng nhau và do đó có liên quan trực tiếp với nhau. Mặc dù có quan hệ với nhau
nhưng nếu biết hay truy nhập được khoá công khai thì cũng không thể tính toán được
giá trị của khoá bí mật. Do đó, công khai khoá mã cũng không làm ảnh hưởng tới tính
bảo mật của hệ thống, nó cũng chỉ như một địa chỉ thư tín còn khoá bí mật vẫn luôn
được giữ kín. Bản chất của mã hoá khoá công khai RSA là bất cứ bản tin mật mã nào
đều có thể được nhận thực nếu như nó được mã hoá bằng khoá bí mật còn giải mã
bằng khoá công khai. Từ đó, phía thu còn xác định được cả nguồn gốc của bản tin.
Bất cứ người nào giữ khoá công khai đều có thể nghe trộm bản tin mật mã bằng cách
tính toán với kho bí mật, không chỉ đảm bảo tính tin cậy của bản tin (trong một nhóm)
mà còn được nhận thực, hay còn gọi là không thể từ chối, ví dụ như người gửi không

thể từ chối rằng chính họ là tác giả của bản tin đó. Nó hoàn toàn trái ngược với hoạt
động của khoá đối xứng, trong đó bản tin mật mã được đảm bảo tính toàn vẹn giữa
phía mã hoá và giải mã, nhưng bất kỳ ai có được khoá chung đều có thể phát bản tin
và từ chối rằng chính mình đã phát nó, còn phía thu thì không thể biết được đâu là tác
giả của bản tin đó. Thuật toán đối xứng yêu cầu khả năng tính toán lớn hơn và do đó,
tốc độ quá trình mã hoá chậm hơn so với mã hoá đối xứng. Đó cũng là trở ngại chính
trong các hệ thống cho phép tỷ lệ lỗi lớn như trong truyền thông thoại. Do đó, mã hoá
khoá công khai không phù hợp với các bản tin có chiều dài thông thường, tuy nhiên
khi kết hợp cả hai chế độ với nhau lại có thể đảm bảo tính nhận thực, tin cậy và toàn
vẹn của bản tin. Nói chung, các ứng dụng sử dụng thuật toán bất đối xứng là:
• Sử dụng một giá trị “băm” nhỏ làm chữ ký điện tử.
• Mã hoá các khoá bí mật được sử dụng trong thuật toán đối xứng.
• Thỏa thuận khóa mã bí mật giữa các phía trong truyền thông.
Hình 1.4: Nguyên lý cơ bản của mã hoá khoá công khai và thuật toán RSA.
2.1.3 HỆ MÃ HÓA RSA
2.1.3.1 Khái niệm hệ mật mã RSA
Khái niệm hệ mật mã RSA đã được ra đời năm 1976 bởi các tác giả R.Rivets,
A.Shamir, và L.Adleman. Hệ mã hoá này dựa trên cơ sở của hai bài toán
+ Bài toán Logarithm rời rạc (Discrete logarith)
+ Bài toán phân tích thành thừa số.
Trong hệ mã hoá RSA các bản rõ, các bản mã và các khoá (public key và
private key) là thuộc tập số nguyên ZN = {1, . . . , N-1}.Trong đó tập ZN với N=p×q
là các số nguyên tố khác nhau cùng với phép cộng và phép nhân Modulo N tạo ra
modulo số học N.
Khoá mã hoá EKB là cặp số nguyên (N,KB) và khoá giải mã D kb là cặp số
nguyên (N,kB), các số là rất lớn, số N có thể lên tới hàng trăm chữ số.
Các phương pháp mã hoá và giải mã là rất dễ dàng.
Công việc mã hoá là sự biến đổi bản rõ P(Plaintext) thành bản mã C (Ciphertext) dựa
trên cặp khoá công khai KB và bản rõ P theo công thức sau đây :
C = E

KB
(P) = E
B
(P) = P
KB
(mod N) . (1.1)
Công việc giải mã là sự biến đổi ngược lại bản mã C thành bản rõ P dựa trên
cặp khoá bí mật kB , modulo N theo công thức sau :
P = D
KB
(C) = D
B
(C) = C
KB
(mod N) . (1.2)
Dễ thấy rằng, bản rõ ban đầu cần được biến đổi một cách thích hợp thành bản mã, sau
đó để có thể tái tạo lại bản rõ ban đầu từ chính bản mã đó :
P = D
B
(E
B
(P)) (1.3) Thay thế (1.1) vào (1.2) ta có :
(P
KB
)
KB
= P (mod N ) (1.4)
Trong toán học đã chứng minh được rằng, nếu N là số nguyên tố thì công thức
(4) sẽ có lời giải khi và chỉ khi KB.kB = (mod N-1), áp dụng thuật toán ta thấy
N=p×q với p, q là số nguyên tố, do vậy (4) sẽ có lời giải khi và chỉ khi :

K
B
.k
B
≡ 1 (mod γ(N)) (1.5)
trong đó γ(N) = LCM(p-1,q-1) .
LCM (Lest Common Multiple) là bội số chung nhỏ nhất.
Nói một cách khác, đầu tiên người nhận B lựa chọn một khoá công khai KB
một cách ngẫu nhiên. Khi đó khoá bí mật kB được tính ra bằng công thức
(1.5). Điều này hoàn toàn tính được vì khi B biết được cặp số nguyên tố (p,q) thì sẽ
tính được γ(N).
k
B
Bản mã C
Chọn p và q
C=P
KB
(mod N)
P=C
KB
(mod N)
Chọn khóa K
B
Chọn khóa K
B
Tính γ(N)
Tính N=p*q
k
B
Bản rõ gốc P

.
Hình 1.5 Sơ đồ các bước thực hiện mã hoá theo thuật toán RSA
2.1.3.2. Độ an toàn của hệ RSA
Một nhận định chung là tất cả các cuộc tấn công giải mã đều mang mục
đích không tốt. Trong phần độ an toàn của hệ mã hoá RSA sẽ đề cập đến một vài
phương thức tấn công điển hình của kẻ địch nhằm giải mã trong thuật toán này.
Chúng ta xét đến trường hợp khi kẻ địch nào đó biết được modulo N, khoá
công khai KB và bản tin mã hoá C, khi đó kẻ địch sẽ tìm ra bản tin gốc (Plaintext)
như thế nào. Để làm được điều đó kẻ địch thường tấn vào hệ thống mật mã bằng hai
phương thức sau đây:
 Phương thức thứ nhất :
Trước tiên dựa vào phân tích thừa số modulo N. Tiếp theo sau chúng sẽ tìm cách tính
toán ra hai số nguyên tố p và q, và có khả năng thành công khi đó sẽ tính được λ(N)
và khoá bí mật k B. Ta thấy N cần phải là tích của hai số nguyên tố, vì nếu N là tích
của hai số nguyên tố thì thuật toán phân tích thừa số đơn giản cần tối đa N bước, bởi
vì có một số nguyên tố nhỏ hơn N .
Mặt khác, nếu N là tích của n số nguyên tố, thì thuật toán phân tích thừa số đơn giản
cần tối đa N1/n bước.
Một thuật toán phân tích thừa số có thể thành phức tạp hơn, cho phép phân tích
một số N ra thành thừa số trong O( P )bước, trong đó p là số chia nhỏ nhất của N,
việc chọn hai số nguyên tố là cho thuật toán tăng hiệu quả.
 Phương thức thứ hai :
Phương thức tấn công thứ hai vào hệ mã hoá RSA là có thể khởi đầu bằng cách
giải quyết trường hợp thích hợp của bài toán logarit rời rạc. Trường hợp này kẻ địch
đã có trong tay bản mã C và khoá công khai KB tức là có cặp (KB,C)
Cả hai phương thức tấn công đều cần một số bước cơ bản, đó là :
O(exp √ lnNln(lnN)), trong đó N là số modulo.
2.1.3.3. Một số tính chất của hệ RSA
 Trong các hệ mật mã RSA, một bản tin có thể được mã hoá trong thời
gian tuyến tính.

Đối với các bản tin dài, độ dài của các số được dùng cho các khoá có thể được
coi như là hằng. Tương tự như vậy, nâng một số lên luỹ thừa được thực hiện trong
thời gian hằng, các số không được phép dài hơn một độ dài hằng. Thực ra tham số
này che dấu nhiều chi tiết cài đặt có liên quan đến việc tính toán với các con số dài,
chi phí của các phép toán thực sự là một yếu tố ngăn cản sự phổ biến ứng dụng của
phương pháp này. Phần quan trọng nhất của việc tính toán có liên quan đến việc mã
hoá bản tin. Nhưng chắc chắn là sẽ không có hệ mã hoá nào hết nếu không tính ra
được các khoá của chúng là các số lớn.
 Các khoá cho hệ mã hoá RSA có thể được tạo ra mà không phải tính toán quá
nhiều.
Một lần nữa, ta lại nói đến các phương pháp kiểm tra số nguyên tố. Mỗi số
nguyên tố lớn có thể được phát sinh bằng cách đầu tiên tạo ra một số ngẫu nhiên lớn,
sau đó kiểm tra các số kế tiếp cho tới khi tìm được một số nguyên tố.Một phương
pháp đơn giản thực hiện một phép tính trên một con số ngấu nhiên, với xác suất 1/2
sẽ chứng minh rằng số được kiểm tra không phải nguyên tố. Bước cuối cùng là tính
p dựa vào thuật toán Euclid.
Như phần trên đã trình bày trong hệ mã hoá công khai thì khoá giải mã (private
key) kB và các thừa số p,q là được giữ bí mật và sự thành công của phương pháp là
tuỳ thuộc vào kẻ địch có khả năng tìm ra được giá trị của kB hay không nếu cho trước
N và KB. Rất khó có thể tìm ra được kB từ KB cần biết về p và q, như vậy cần phân
tích N ra thành thừa số để tính p và q. Nhưng việc phân tích ra thừa số là một việc
làm tốn rất nhiều thời gian, với kỹ thuật hiện đại ngày nay thì cần tới hàng triệu năm
để phân tích một số có 200 chữ số ra thừa số.
Độ an toàn của thuật toán RSA dựa trên cơ sở những khó khăn của việc xác
định các thừa số nguyên tố của một số lớn. Bảng dưới đây cho biết các thời gian dự
đoán, giả sử rằng mỗi phép toán thực hiện trong một micro giây.
Số các chữ số trong số được phân
tích
Thời gian phân tích
50 4 giờ

75 104 giờ
100 74 năm
200 4.000.000 năm
300 5×10
15
năm
500 4×10
25
năm
2.1.4 MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG GIẢI THUẬT RSA
Tính chất an toàn của phương pháp RSA dựa trên cơ sở chi phí cho việc giải
mã bất hợp lệ thông tin đã được mã hóa sẽ quá lớn nên xem như không thể thực hiện
được.
Vì khóa là công cộng nên việc tấn công bẻ khóa phương pháp RSA thường
dựa vào khóa công cộng để xác định được khóa riêng tương ứng. Điều quan trọng là
dựa vào n để tính p, q của n, từ đó tính được d.
 Phương pháp sử dụng φ(n)
Giả sử người tấn công biết được giá trị φ(n). Khi đó việc xác định giá trị p, q
được đưa về việc giải hai phương trình sau: n=p*q
φ (n) = (p-1 )(q-1 ) (1.6)
Thay q = n/p, ta được phương trình bậc hai:
p (n- φ(n)+1)p+n=0 (1.7)
p, q chính là hai nghiệm của phương trình bậc hai này. Tuy nhiên vấn đề phát hiện
được giá trị φ(n) còn khó hơn việc xác định hai thừa số nguyên tố của n.
 Sự che dấu thông tin trong hệ thống RSA
Hệ thống RSA có đặc điểm là thông tin không phải luôn được che dấu. Giả sử người
gởi có e = 17, n = 35. Nếu anh ta muốn gởi bất cứ dữ liệu nào thuộc tập sau:
{1, 6, 7, 8, 13, 14, 15, 20, 21, 22, 27, 28, 29, 34}
thì kết quả của việc mã hóa lại chính là dữ liệu ban đầu. Nghĩa là, M = Me mod n.
Còn khi p = 109, q = 97, e = 865 thì hệ thống hoàn toàn không có sự che dấu thông

tin, bởi vì: ∀M, M = M865 mod (109*97),
Với mỗi giá trị n, có ít nhất 9 trường hợp kết quả mã hóa chính là dữ liệu nguồn ban
đầu. Thật vậy, M = Me mod n (1.8)
hay: M = Me mod p và M = Me modq (1.9)
Với mỗi e, có ít nhất ba giải pháp thuộc tập {0, 1, -1}. Để xác định chính xác số thông
điệp không được che dấu (không bị thay đổi sau khi mã hóa) ta sử dụng định lý sau:
“Nếu các thông điệp được mã hóa trong hệ thống RSA được xác định bởi số modulus
n = p.q (p,q là số nguyên tố) và khóa công cộng e thì có:
m = [1+gcd(e-1, p-1)][1+gcd(e-1), q-1] thông điệp không bị che dấu.
Mấu chốt để có thể giải mã được thông tin là có được giá trị p và q tạo nên giá trị n.
Khi có được hai giá trị này, ta có thể dễ dàng tính ra được
φ(n) =(p – 1)(q – 1) và giá trị a = b–1
mod φ(n) theo thuật toán Euclide mở rộng. Nếu số nguyên n có thể được phân tích ra
thừa số nguyên tố, tức là giá trị p và q có thể được xác định thì xem như tính an toàn
của phương pháp RSA không còn được bảo đảm nữa. Như vậy, tính an toàn của
phương pháp RSA dựa trên cơ sở các máy tính tại thời điểm hiện tại chưa đủ khả
năng giải quyết việc phân tích các số nguyên rất lớn ra thừa số nguyên tố. Tuy nhiên,
với sự phát triển ngày càng nhanh chóng của máy tính cũng như những bước đột phá
trong lĩnh vực toán học, phương pháp RSA sẽ gạp phải những khó khăn trong việc
bảo mật thông tin. Năm 1994, Peter Shor, một nhà khoa học tại phòng thí nghiệm
AT&T, đã đưa ra một thuật toáncó thể phân tích một cách hiệu quả các số nguyên rất
lớn trên máy tính lượng tử. Mặc dù máy tính lượng tử hiện chưa thể chế tạo được
nhưng rõ ràng phương pháp RSA sẽ gặp phải nhiều thách thức lớn trong tương lai
CHƯƠNG 2 CHỮ KÝ ĐIỆN TỬ
2.2.1 GIỚI THIỆU
Chữ ký điện tử không được sử dụng nhằm bảo mật thông tin mà nhằm bảo vệ
thông tin không bị người khác cố tình thay đổi để tạo ra thông tin sai lệch. Nói cách
khác, chữ ký điện tử giúp xác định được người đã tạo ra hay chịu trách nhiệm đối
với một thông điệp.
2.2.2 KHÁI NIỆM VỀ CHỮ KÝ ĐIỆN TỬ

Kể từ khi con ng
ười
phát minh ra chữ viết, các chữ ký th
ường
luôn đ
ư
ợc sử
dụng hàng ngày, chẳng hạn
như
ký một biên nhận trên một bức th
ư
nhận tiền từ ngân
hàng ký hợp đồng hay một văn bản bất kỳ nào đó. Chữ ký viết tay thông
t
hườn
g trên tài liệu t
hườn
g
đư
ợc dùng để xác định n

ời ký nó.
Sơ đồ chữ ký điện tử là một ph
ươ
ng pháp ký một văn bản hay l
ưu
bức điện
dưới dạng điện tử. Chẳng hạn một bức điện có chữ ký
được lưu hành
trên mạng

máy tính. Chữ ký điện tử từ khi ra đơì đã có nhiều ứng dụng rộng rãi trong các
giao dịch t

ơng mại, từ việc xác minh chữ ký cho đến các thẻ t

n dụng, các sơ đồ
định danh và các sơ đồ chia se
bí
mật ... Sau đây, chúng ta sẽ tìm hiểu một số sơ
đồ chữ ký quan trọng. Song trước hết, chúng ta sẽ thảo luận một vài điểm khác biệt
cơ bản giữa chữ ký thông th
ườ
ng và chữ ký điện tử.
Đầ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ý điện tử không gán theo kiểu vật lý vào bức
điện nên thuật toán được dung là 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 chữ ký xác thực khác. Ví dụ, ai đó ký một tấm sec để mua hàng, người
bán sẽ 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, chữ ký số có thể kiểm tra bằng một thuật toán kiểm tra một cách
công khai. Như vậy, bất kỳ ai cũng có thể kiểm tra được chữ ký điện tử. Việc sử dụng
một sơ đồ 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ý điện tử 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 bản gốc. Nói cách khác, tài liệu có
chữ ký trên giấy thường có thể khác biệt với bản gốc điều này để ngăn chặn một bức
điện được ký khỏi bị dừng lại. Ví dụ, nếu B ký một bức điện xác minh cho A rút 100$
từ tài khoản của mình, anh ta chỉ muốn A có khả năng làm điều đó một lần.Vì thế,
bẩn thân bức điện phải chứa thông tin để khỏi bị dừng lại, chẳng hạn như dùng dịch
vụ gán nhãn thời gian (Time Stamping Service).

Một sơ đồ chữ ký điện tử thường chứa hai thành phần :thuật toán ký sig() và
thuật toán xác minh ver(). B có thể ký một buwccs điện x dùng thuật toán ký an
toàn(bí mật).kết quả chữ ký y= sig(x)nhận được có thể kiểm tra bằng thuật toán xác
minh công khai ver(y). Khi cho trước cặp (x,y),thuật toán xác minh cho giá trị True
hay False tùy thuộc vào chữ ký được xác thực như thế nào.
Vậy thế nào là chữ ký điện tử ? Chúng ta có một số định nghã như sau :
 Là một định danh điện tử được tạo ra bởi máy tính được các tổ chức sử dụng
nhằm đạt được tính hiệu quả và có hiệu lực như chữ ký tay.
 Là một cơ chế xác thực hóa cho phép người tạo ra thông điệp đính kèm một
mã số vào thông điệp giống như là việc ký một chữ ký lên một văn bản bình thường.
Các chữ ký điện tử được sinh ra và sử dụng bởi các hệ chữ ký(sơ đồ) điện tử, dưới
đây là một định nghĩa một hệ chữ ký điện tử.
Định nghĩa :
Một sơ đồ chữ ký điện tử là bộ 5 (P, A, K,S, V) thỏa mãn các điều kiện dưới đây.
1) P là tập hữu hạn các bức điện (thông điêp, bản rõ) có thể.
2) A là tập hữu hạn các chữ ký có thể.
3) K là tập không gian khoá (tập hữu hạn các khóa có thể).
4) Với mỗi khoá K € k tồn tại một thuật toán ḱý sig
k
€ s và một thuật toán xác
minh ver
k
€ V. Mỗi sig
k
: p → A và ver
k
: P x A → {TRUE, FALSE} là những hàm
sao cho mỗi bức điện x € p và mỗi chữ ký y € A thoả mãn phương trình dưới đây:
Ver (x, y) =
TRUE nếu y = sig(x)

FALSE nếu y ≠ sig(x). [5]
Với mỗi K

k, hàm sig
k

và ver
k

là các hàm đa thức thời gian. Hàm ver
k

sẽ là
hàm
công khai còn hàm sig
k

là
bí
mật. Không thể dễ dàng t
ính
toán để giả mạo chữ
ký của B trên bức điện x, nghĩa là với x cho tr
ướ
c chỉ có B mới có thể t

nh
đư
ợc y
để ver(x, y) = TRUE. Một sơ đồ chữ ký không thể an toàn vô điều kiện vì một

người C nào đó có thể kiểm tra tất cả chữ số y trên bức điện x nhờ dùng thuật toán
ver() công khai cho tới khi anh ta tìm thấy chữ ký đúng. Vì thế, nếu có đủ thời
gian, C luôn có thể giả mạo chữ ký của B. N

vậy mục đ

ch của chúng ta là tìm
các sơ đồ chữ ký điện tử an toàn về mặt tính toán.
Chú ý rằng ai đó có thể giả mạo chữ ký của B trên một bức điện “ngẫu
nhiên” x bằng cách
tí
nh x = e
k
(y) với y nào đó, khi đó y = sig
k
(x). Một biện pháp
xung quanh vấn đề khó khăn này là yêu cầu các bức điện chứa đủ phần d
ư
để chữ
ký giả mạo kiểu này không phù hợp với toàn bộ nội dung của bức điện x trừ một
xác suất rất nhỏ. Có thể dùng các hàm Băm (hash function) nh
ư
MD4, MD5 trong
việc
tí
nh kết nối các sơ đồ chữ ký điện tử sẽ loại trừ ph
ươ
ng pháp giả mạo này (sẽ
trình bày trong các phần sau của tài liệu).
2.2.3 THUẬT TOÁN CHỮ KÝ ĐIỆN TỬ

Thuật toán chữ ký điện tử sử dụng khoá công khai để ký lên tài liệu phía phát
bản tin sử dụng hàm băm trong phần dữ liệu gốc của bản tin cùng với ngày giờ tạo
bản tin đó để tạo thành bản tin hoàn chỉnh. Khi sử dụng chữ ký theo thuật toán RSA,
hàm băm tạo ra một giá trị băm rồi được mã hoá bằng khoá bí mật của tác giả để tạo
thành một chữ ký số duy nhất để đính kèm với bản tin.
Phía thu kiểm tra tính nhận thực và toàn vẹn của bản tin bằng cách chạy thuật
toán kiểm tra với các đầu vào là bản tin nhận được, chữ ký điện tử cùng với khoá
công khai. Đầu ra thuật toán chỉ ra rằng bản tin là hợp lệ nếu vẫn giữ nguyên gốc hay
không hợp lệ nếu bản tin đã bị sửa đổi.
Hình 2.1: Kiểm tra chữ ký điện tử.
Chữ ký điện tử được sử dụng để kiểm tra một bản tin có thực sự đến từ người
gửi được mong đợi hay không, hình thành dựa trên quan điểm rằng chỉ người tạo ra
chữ ký mới có khoá riêng và nó có thể được kiểm tra bằng cách sử dụng khoá công
cộng tương ứng. Chữ ký điện tử được tạo bằng cách tính toán tóm tắt bản tin (MD:
Message Degest) của một tài liệu, sau đó kết hợp với các thông tin về người ký, tem
thời gian và một vài các thông tin cần thiết khác. Mỗi MD là một hàm lấy số liệu đầu
vào có kích cỡ tuỳ ý (bản tin) và tạo thành đầu ra có kích cỡ cố định gọi là bản tóm
tắt. Tập hợp thông tin này sau đó được mật mã hoá sử dụng khoá bí mật của người
gửi có sử dụng một thuật toán không đối xứng thích hợp. Kết quả sau khi mật mã hoá
khối thông tin là chữ ký điện tử.
MD được tính toán là một giá trị bit nhằm để mô tả tình trạng hiện thời của tài
liệu. Nếu tài liệu thay đổi, MD cũng sẽ thay đổi. Bằng cách hợp nhất MD vào chữ ký
điện tử, khi chữ kýđiện tử đã được tạo thành nó cho phép người nhận tài liệu có thể
dễ dàng phát hiện ra tài liệu có bị biến đổi hay không.
Mục đích sử dụng của chữ ký điện tử cũng tương tự như chữ ký thông thường,
bao gồm:
Nhận thực: Nếu người nhận thành công trong việc giải mã thông tin với một
khóa công cộng xác định thì người đó có thể chắc chắn rằng bản tin đó đã được ký
bởi chính người sử dụng khoá bí mật tương ứng. Một vấn đề nữa là phải kiểm tra xem
khoá công cộng này có thực sự là của người gửi đích thực hay không. Vấn đề này có

thể được giải quyết bằng cách sử dụng các chứng nhận chữ ký điện tử.
Tính toàn vẹn: Nếu một bản tin đã được ký mà thay đổi trong quá trình
truyền dẫn, người nhận sẽ không thể giải mã được với khoá công cộng. Đây là một
cách dễ dàng để phát hiện ra những thay đổi cố ý hoặc vô ý trong thông tin được phát.
Tính không thể phủ nhận: Trong các phiên giao dịch điện tử, một yêu cầu
rất quan trọng đối với mỗi bên tham gia là phải đảm bảo rằng bên còn lại không thể từ
chối việc phải thực thi một số hành động nào đó. Chữ ký điện tử cũng rất thích hợp
với yêu cầu này do một tài liệu điện tử chỉ có thể được ký bởi chính người sở hữu
khoá bí mật.
Thủ tục ký và kiểm tra: Các bước cần thiết để ký và kiểm tra một mẫu thông
tin được mô tả ở (hình 2.1). Các thành phần cần thiết của một hệ thống như vậy là các
thuật toán khoá công cộng và thuật toán Hash mà sẽ được lựa chọn một cách cẩn thận
theo yêu cầu. Số liệu gốc trước tiên sẽ được làm mới lại bằng cách sử dụng hàm một
chiều Hash, sau đó được mật mã hoá bằng khoá bí mật của người gửi. Mục đích của
thủ tục này là giảm thời gian mật mã hoá do các thuật toán không đối xứng thực thi
chậm hơn nhiều các thuật toán đối xứng. Cả số liệu gốc lẫn chữ ký đều được gửi qua
kênh thông tin không an toàn đến người nhận.
Hình 2.2: Thủ tục ký và kiểm tra chữ ký.
Để kiểm tra tính toàn vẹn của số liệu, người nhận rút khoá công cộng của
người gửi từ chứng nhận điện tử của nó và sử dụng khoá công cộng này để giải mật
mã chữ ký điện tử. Sau đó áp dụng hàm Hash mà đã được người gửi sử dụng cho số
liệu gốc nhận được. Các tóm tắt bản tin thu được sẽ được so sánh với nhau để thẩm
định rằng bản tin không bị sửa đổi trong quá trình truyền dẫn và nó thực sự được gửi
từ người gửi mong đợi. Chú ý rằng người nhận phải lấy chứng nhận số của người gửi
từ một server chứng nhận, đây chính là bước kiểm tra giá trị chứng nhận
2.2.4 CHỨNG NHẬN CHỮ KÝ ĐIỆN TỬ
Các khóa công cộng đã được mô tả trong phần trước và được sử dụng trong
nối mạng số liệu để kiểm tra các chữ ký điện tử, bản thân chúng không mang bất cứ
thông tin nào về các thực thể cung cấp các chữ ký. Công nghệ nối mạng số liệu thừa
nhận vấn đề này và tiếp nhận các chứng nhận an ninh để ràng buộc khóa công cộng

và nhận dạng thực thể phát hành khóa. Chứng nhận chữ ký điện tử đảm bảo rằng một
khoá công cộng là sở hữu của thực thể mà nó thể hiện. Để thực hiện được điều này,
thì chính chứng nhận này cũng phải được kiểm tra để đảm bảo rằng nó đại diện cho
đối tượng cần mong muốn (đối tượng này có thể là một cá nhân hoặc một tổ chức).
Điều này được thực hiện bằng cách sử dụng một tổ chức thứ ba đáng tin cậy được gọi
là thẩm quyền chứng nhận (CA - Certificate Authority) gồm có VeriSign, Entrust, và
Certicom. Các thẩm quyền này được phép cung cấp các dịch vụ này cho các thực thể
được nhận dạng hợp lệ khi chúng yêu cầu. Để thực hiện chức năng của mình, một CA
phải được tin tưởng bởi các thực thể dựa trên các dịch vụ của nó. Người dùng có thể
mua chứng nhận số từ CA và sử dụng chứng nhận này để nhận thực và để lưu hành
khoá riêng của họ. Một chứng nhận số điển hình chứa những thông tin sau:
• Tên của người đang nắm giữ chứng nhận chữ ký điện tử, cũng như thông tin
khác mà có thể nhận dạng duy nhất người này, thông tin phụ thêm có thể là URL của
một Web Server đang sử dụng chứng nhận hay một địa chỉ email.
• Khoá công cộng của người đang nắm giữ chứng nhận chữ ký điện tử.
• Tên của CA lưu hành chứng nhận này.
• Thời hạn sử dụng của chứng nhận(thường là ngày bắt đầu và ngày hết hạn).
• Một chữ ký số của CA để có thể nhận ra chứng nhậnchữ ký điện tử đề phòng
trường hợp phiên truyền dẫn bị phá rối.
Tất cả các chứng nhận được ký bằng một khóa riêng của CA. Người sử dụng
chứng nhận có thể xem kiểm tra thông tin của chứng nhận có hợp lệ không bằng cách
giải mật mã chữ ký bằng một khoá kiểm tra công cộng nhận được từ chứng nhận phát
đi từ thẩm quyền mức phân cấp cao hơn và kiểm tra xem nó có phù hợp với MD
(Message Digest) của nội dung nhận được trong chứng nhận hay không. Chữ ký
thường là một MD được mật mã hóa.
Dạng chính của chứng nhận số là X.509, một tiêu chuẩn công nghiệp cho nhận
thực. Những chứng nhận này là rất thông dụng trong các ứng dụng Internet. Trong
lĩnh vực vô tuyến có loại chứng nhận số khác gọi là chứng nhận WTLS Server WAP
(WAP Server WTLS Certificate), các chứng nhận này thường được gọi ngắn gọn là
chứng nhận WTLS, đây là phiên bản đơn giản hơn của X.509 được tạo ra do chứng

nhận X.509 quá lớn đối với các ứng dụng vô tuyến. Các chứng nhận WTLS chủ yếu
được sử dụng trong các ứng dụng WAP nơi mà các trình duyệt muốn nhận thực nhận
dạng của một Server WAP và mật mã hoá thông tin bằng cách sử dụng giao thức an
ninh lớp truyền tải vô tuyến (WTLS - Wireless Transport Layer Security).
2.2.5 CHUẨN CHỮ KÝ ĐIỆN TỬ (Digital Signature Standard)
Chuẩn chữ ký điện tử (DSS)
đư
ợc sửa đổi từ hệ chữ ký ElGammal. Nó
đư
ợc
công bố tại hội nghị Tiêu chuẩn xử lý thông tin Liên Bang (FIPS) vào 19/05/1994
và trở thành chuẩn vào 01/12/1994. DSS sử dụng một khoá công khai để kiểm tra
tính toàn vẹn của dữ liệu nhận
đư
ợc và đồng nhất với dữ liệu của ng
ư
ời gửi. DSS
cũng có thể sử dụng bởi ng
ư
ời thứ ba để xác định t

nh xác thực của chữ ký và dữ
liệu trong nó. Đầu tiên chúng ta hãy tìm hiểu động cơ của sự thay đổi này, sau đó sẽ
tìm hiểu thuật toán của DSS.Trong rất nhiều tr
ường
hợp, một bức điện có thể
đư
ợc
mã hoá và giải mã một lần, vì vậy nó đáp ứng cho việc sử dụng của bất kỳ hệ
thống bảo mật nào

được
biết là an toàn lúc bức điện
đư
ợc mã hoá. Nói cách khác,
một bức điện
đư
ợc ký đảm nhiệm chức năng nh
ư
một văn bản hợp pháp, chẳng
hạn nh
ư
các bản hợp đồng, vì vậy nó cũng giống nh
ư
việc cần thiết để xác minh
chữ ký sau rất nhiều năm bức điện
đư
ợc ký. Điều này rất quan trọng cho việc
phòng ngừa về độ an toàn của chữ ký
đư
ợc
đư
a ra bởi một hệ thống bảo mật. Vì hệ
chữ ký ElGammal không đảm nhận đ
ư
ợc điều này, việc thực hiện này cần một giá
trị lớn modulo p. Tất nhiên p nên có

t nhất 512-bit, và nhiều ng
ư
ời cho rằng độ dài

của p nên là 1024-bit nhằm chống lại việc giả mạo trong t
ư
ơng lai.Tuy nhiên, ngay cả
một thuật toán modulo 512-bit dùng để ký cũng phải thực hiện việc t

nh toán đến
1024-bit. Cho ứng dụng tiềm năng này, có rất nhiều card thông minh
đư
ợc đ
ư
a ra,
nhằm thực hiện một chữ ký ngắn hơn nh
ư
mong muốn. DSS đã sửa đổi hệ chữ ký
ElGammal cho phù hợp theo cách này một cách khéo léo, để mỗi 160-bit bức điện
đư
ợc ký sử dụng một chữ ký 320-bit, nh
ư
ng việc t

nh toán
đư
ợc thực hiện với
512-bit
modulo p. Cách này
đư
ợc thực hiện nhờ việc chia nhỏ Z
*
p
thành các

trương có kích

thước 2
160
. Việc thay đổi này sẽ làm thay đổi giá trị δ
δ = (x+αy) k
-1
mod(p-1)
Điều này cũng làm cho giá trị kiểm tra cũng thay đổi:
Α
x
β
y

≡ y
δ

(mod p).

Nếu UCLN(x + αy, p - 1) = 1 thì sẽ tồn tại
δ

-1

mod (p - 1), do đó sẽ biến đổi
thành: α
x
α
-1


β
yδ -1
≡(mod p)
Đây ch
ính
là sự đổi mới của DSS. Chúng ta cho q là một số nguyên tố 160-
bit sao cho q | (p-1), và α là một số thứ q của 1 mod p, thì β và y cũng là số thứ q
của 1 mod p. Do đó α, β và y có thể đ
ượ
c tối giản trong modulo p mà không ảnh

ởng gì đến việc xác minh chữ ký.
Cho p là một số nguyên tố 512-bit trong trường logarit rời rạc Z
p
, q là một số
nguyên
tố 160-bit và q chia hết (p-1). Cho α

Z
p

; P = Z
p

, A = Z
q
*Z
q
, và định
ng


a:
K = {(p, q, α, a, β) : β ≡ α
a

(mod p)}
Tìm Hiểu Thuật Toán MD5 Và Ứng Dụng Trong Chữ Ký Điện Tử
trong đó giá trị p, q, α và β là công khai, còn a là b

mật.
Với K = (p, α, a, β) và chọn một số ngẫu nhiên k (1 ≤ k ≤ q-1), định ng

a:
Sig
k
(x, k) = (
y
,
δ
)
Chú ý rằng, với DSS thì
δ
≠ 0 (mod q) vì giá trị:
δ

-1

mod q cần cho việc
xác minh chữ ký (điều này cũng t
ư

ơng tự nh
ư
việc yêu cầu UCLN(,
δ
p-1) = Khi B
t

nh một giá trị
δ
≡ 0 (mod q) trong thuật toán ký, anh ta nên bỏ nó đi và chọn một
số ngẫu nhiên k mới.
V

dụ: Chúng ta chọn q = 101 và p = 78*q + 1 = 7879 và g = 3 là một
nguyên tố trong Z
7879
. Vì vậy, ta có thể t

nh: α = 3
78

mod 7879 = 170.
Chọn a = 75, do đó: β = α
a

mod 7879 = 4567.
Bây giờ, B muốn ký một bức điện x = 1234, anh ta chọn một số ngẫu nhiên k = 50.
Vì vậy: K
-1
mod 101 = 99.

Tiếp đó: y = (170
50
mod 7879) mod 101 = 2518 mod 101 = 94
δ = (1234 + 75*94)99 mod 101 = 97.
Cặp chữ ký (94, 97) cho bức điện 1234 đ
ư
ợc xác thực như sau:
δ
-1

= 97
-1

mod 101 = 25
e
1

= 1234*25 mod 101 = 45
e
2

= 94*25 mod 101 = 27
(170
45
4567
27

mod 7879) mod 101 = 2518 mod 101 = 94.
Kể từ khi DSS
đư

ợc đề xuất vào năm 1991, đã có nhiều phê bình
đư
a ra.
Chẳng hạn nh
ư
k

ch cỡ của moduloe p bị cố định 512-bit, điều mà nhiều ng
ười
không muốn. Vì vậy, NIST đã thay đổi chuẩn này để có thể thay đổi k

ch t
hước
moduloe (chia bởi 64) thành một dãy từ 512 đến 1024-bit.
Ngoài ra, một sự phê bình khác về DSS là chữ ký
đư
ợc tạo ra nhanh hơn so
với việc xác minh nó. Trái n

ợc với hệ chữ ký RSA thì việc xác minh công khai
là rất nhanh chóng (mà ta biết trong t

ơng mại điện tử việc xác minh là rất quan
trọng và đòi hỏi thời gian thực hiện phải nhanh chóng).
2.2.6 GIẢI PHÁP ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ
Phần này, em xin được đề xuất giải pháp ứng dụng chữ ký điện tử trong hệ
thống quản lý. Quá trình gửi và nhận các tệp văn bản phục vụ quản lý dựa vào thuật
toán băm MD5 và thuật toán mã hóa RSA.
2.2.6.1 Quá trình ký và gửi các tệp văn bản
Lê Thị Kim Vui-Lớp T13TVT Trang 22

Tìm Hiểu Thuật Toán MD5 Và Ứng Dụng Trong Chữ Ký Điện Tử
- Từ file cần gửi ban đầu, chương trình sẽ sử dụng hàm băm MD5 để mã hóa
thành chuỗi ký tự dài 128 bit, hash value (gọi là bản tóm lược).
- Chương trình sử dụng thuật toán RSA để mã hóa khóa riêng (private key) của
người gửi và bản tóm lược hash value thành một dạng khác (giá trị băm ở dạng mật
mã) gọi là chữ ký điện tử.
- Kết hợp file ban đầu với chữ ký điện tử thành một thông điệp đã ký và gửi đi
cho người nhận
Hình 2.3. Sơ đồ mô tả quá trình ký và gửi các tệp văn bản
2.2.6.2 Quá trình nhận các tệp văn bản
Sau khi người nhận đăng nhập vào hệ thống và thực hiện việc nhận các tệp văn
bản. Hệ thống sẽ tách thông điệp đã ký thành ra file và chữ ký điện tử. Đến giai đoạn
này sẽ có 2 quá trình kiểm tra :
 Kiểm tra file có đúng người gửi hay không?
- Sử dụng thuật toán RSA để giải mã chữ ký điện tử bằng khóa công khai
(username) của người gửi.
- Nếu giải mã không được thì file nhận được không đúng người gửi.
- Nếu giải mã thành công thì file nhận được đúng người gửi và có được Bản tóm
lược 1
Kiểm tra file có bị thay đổi hay không?
- Từ file được tách ra ta sử dụng hàm băm MD5 mã hóa thành Bản tóm lược 2.
Lê Thị Kim Vui-Lớp T13TVT Trang 23
Tìm Hiểu Thuật Toán MD5 Và Ứng Dụng Trong Chữ Ký Điện Tử
- Kiểm tra Bản tóm lược 1 và Bản tóm lược 2 có giống nhau hay không? Nếu
giống nhau thì file nhận được là vẹn toàn (không bị thay đổi hay tác động), ngược
lại là file đã bị thay đổi
Hình 2.4. Sơ đồ mô tả quá trình nhận các tệp văn bản
2.2.7 VẬN DỤNG VÀO HỆ THỐNG
Để vận dụng giải pháp này trong hệ thống gửi và nhận tệp văn bản chúng ta
cần tìm hiểu thêm trong các tài liệu tham khảo, từ đó có thể lựa chọn, sử dụng

các thuật toán, ngôn ngữ để xây dựng chương trình. Trong khuôn khổ một bài báo,
chúng tôi giới thiệu tổng quan một số bước để xây dựng các hàm và thuật toán
chính như sau:
- Do sử dụng hàm băm MD5 để mã hóa văn bản gốc thành 32 kí tự nên kích thuớc
của khóa có độ đài phải đủ lớn và trong thuật toán RSA có cả hàm mũ... nên ta cần
xây dựng các hàm xử lý số có kích thước lớn với các phép toán cơ bản: cộng, trừ,
nhân, chia, modulo…
- Xây dựng thuật toán phát sinh số nguyên tố;
- Xây dựng thuật toán chọn e, thuật toán chọn d;
- Sử dụng khóa riêng (n, d) để tính toán chữ ký S = Md
Lê Thị Kim Vui-Lớp T13TVT Trang 24
Tìm Hiểu Thuật Toán MD5 Và Ứng Dụng Trong Chữ Ký Điện Tử
- Sử dụng khóa công khai của người gửi (n, e) để tính toán lại M = S mod n;
- Xây dựng các hàm gửi và nhận file...
2.2.8 KẾT LUẬN
Chữ ký điện tử là nền tảng để bảo đảm an ninh trong lĩnh vực thương mại điện
tử, các phần mềm quản lý có kiến trúc kiểu Client/Server. Chúng tôi đã nêu được
quy trình ứng dụng chữ ký điện tử trên cơ sở kết hợp giữa thuật toán băm MD5 và
thuật toán mã hóa RSA. Từ đó, chúng tôi đã đề ra giải pháp ứng dụng chữ ký điện
tử trong phần mềm quản lý cụ thể là quá trình gửi và nhận các tệp văn bản.
Từ giải pháp này, ta có thể xây dựng và cài đặt các hàm sử dụng tính năng
của chữ ký điện tử trong quá trình gửi và nhận các tệp văn bản ứng dụng cho các
hệ thống quản lý nhằm đảm bảo tính bảo mật của hệ thống.
Lê Thị Kim Vui-Lớp T13TVT Trang 25

×