You are on page 1of 49

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN I

BÁO CÁO THỰC TẬP TỐT NGHIỆP

Đề tài : Hệ mã hóa đối xứng và bất đối xứng, các thuật toán DES,
AES, RSA. Chữ ký số và ứng dụng.

Giảng viên hướng dẫn : DƯƠNG TRẦN ĐỨC

Lớp : D07HTTT1

Hà Nội , ngày 27 tháng 7 năm 2011.


BÁO CÁO THỰC TẬP TỐT NGHIỆP

LỜI MỞ ĐẦU

Sự phát triển nhanh chóng của Internet đã tác động đến cả công việc kinh doanh và người
tiêu dùng với sự hứa hẹn về việc thay đổi cách mà con người sống và làm việc. Nhưng
mối lo ngại lớn nhất được đề cập đến là việc bảo mật trên Internet, đặc biệt khi các thông
tin mang tính nhạy cảm và riêng tư được gửi đi trên mạng.
Quá trình mã hoá trong máy tính dựa vào khoa học về mật mã (Cryptography) đã được
con người sử dụng từ lâu đời. Trước thời đại số hoá, người sử dụng mật mã nhiều nhất
vẫn là chính phủ, chủ yếu trong mục đích quân sự. Hầu hết các phương pháp mã hoá
được dùng hiện nay dựa vào các máy tính, đơn giản là do các mã do con người sinh ra rất
dễ bị phá bởi công cụ máy tính.

Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hóa và giải mã thông tin mà
còn bao gồm nhiều vấn đề khác cần được nghiên cứu và giải quyết như chứng thực nguồn
gốc nội dung thông tin (kỹ thuật chữ ký số ), chứng nhận xác thực về người sở hữu mã
khóa ( chứng nhận khóa công cộng), các qui trình trao đổi thông tin và thực hiện giao
dịch điện tử an toàn trên mạng. ….
Khi chọn đề tài này , em mong muốn được tìm hiểu những kiến thức tổng quan về mã
hóa ,đồng thời trình bày và phân tích một số thuật toán về mã hóa và ứng dụng của nó
vào kỹ thuật chữ ký số.
Nội dung báo cáo gồm 2 phần chính :
Phần I : Mã hóa.
Phần II: Chữ ký số.

Mặc dù đã cố gắng hoàn thành bản báo cáo với tất cả nỗ lực nhưng chắc chắn em vẫn còn
những thiếu sót nhất định. Kính mong sự thông cảm và sự góp ý của thầy và các bạn.
Em xin chân thành cảm ơn !

Hà Nội, ngày 23 tháng 7 năm 2011.


Sinh viên

SVTH: D07HTTT1 1
BÁO CÁO THỰC TẬP TỐT NGHIỆP

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

…………………………………………………………………………………………..
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
………………………………………………………………………………………….
…………………………………………………………………………………………..
……………………………………………………………
Điểm: …………………………………………………(bằng chữ: …..…………… ….)

…………, ngày …. tháng … năm 2011

GIẢNG VIÊN HƯỚNG DẪN

(ký, họ tên)

SVTH: D07HTTT1 2
BÁO CÁO THỰC TẬP TỐT NGHIỆP

MỤC LỤC

A. MÃ HÓA.................................................................................................................................5
I. Tổng quan về mã hóa.................................................................................................6
II. Mã hóa đối xứng và các thuật toán........................................................................7
2.1. Khái niệm mã hóa đối xứng................................................................................7
2.2. Các kiểu tấn công hệ mã hóa đối xứng...............................................................8
2.3. Thuật toán DES ( Data Encryption Standard)..................................................10
2.4. Thuật toán AES (Advanced Encryption Standard)...........................................21
III. Mã hóa bất đối xứng.............................................................................................26
3.1. Khái niệm mã hóa bất đối xứng, cơ chế, các thành phần của hệ mã hóa bất đối
xứng. 26
3.2. Các đặc điểm và yêu cầu của hệ mã hóa bất đối xứng.....................................27
IV. Thuật toán mã hóa khóa công khai RSA..............................................................28
4.1. Ý tưởng và yêu cầu của thuật toán....................................................................28
4.2. Chi tiết về tạo khóa và quá trình mã hóa, giải mã............................................29
4.3. Đặc điểm của thuật toán....................................................................................34
B. CHỮ KÝ SỐ VÀ ỨNG DỤNG............................................................................................38
I. Chữ ký số.................................................................................................................38
1.1. Khái niệm..........................................................................................................38
1.2. Tạo và sử dụng chữ ký số bằng kỹ thuật mã hóa bất đối xứng.........................38
II. Chứng chỉ số.........................................................................................................41
2.1. Khái niệm chứng chỉ số (Digital Certificate)....................................................41
2.2. Quá trình xác minh chữ ký số thông qua chứng chỉ số.....................................41
III. Giải pháp ứng dụng chữ ký số.............................................................................42
KẾT LUẬN...................................................................................................................................46
TÀI LIỆU THAM KHẢO...........................................................................................................47

SVTH: D07HTTT1 3
BÁO CÁO THỰC TẬP TỐT NGHIỆP

DANH MỤC CÁC HÌNH VẼ

Hình 1 : Mô hình trao đổi thông tin qua mạng thông thường..............................................6
Hình 2 : Quy trình mã hóa thông tin....................................................................................7
Hình 3 : Mô hình mã hóa đối xứng......................................................................................8
Hình 4 : Cấu trúc thuật toán Feistel dùng trong DES........................................................12
Hình 5 : Hàm F (F-function) dùng trong DES...................................................................13
Hình 6 : Quá trình tạo khóa con trong DES.......................................................................14
Hình 7 : Sơ đồ Rijndael.....................................................................................................22
Hình 8 : Sơ đồ biểu diễn thuật toán mã hóa RSA..............................................................31
Hình 9 : Sơ đồ tạo và kiểm tra chữ ký số..........................................................................39
Hình 10 : Mô tả giải thuật MD5........................................................................................43
Hình 11 : Sơ đồ mô tả quá trình ký và gửi các tệp văn bản...............................................44
Hình 12 : Sơ đồ mô tả quá trình nhận các tệp văn bản....................................................45

SVTH: D07HTTT1 4
BÁO CÁO THỰC TẬP TỐT NGHIỆP

DANH MỤC THUẬT NGỮ VIẾT TẮT

Thuật ngữ Viết tắt Ý nghĩa


AES Advanced Encryption Tiêu chuẩn mã hóa tiên tiến
Standard
CA Certificate Authority Chứng thực số
CFB Cipher FeedBack Mã phản hồi ngược
CTR Counter Bộ đếm CTR
CBC Cipher Block Chaining Dây chuyền mã khối
DES Data Encryption Standard Tiêu chuẩn mã hóa dữ liệu
IDEA International Data Thuậ t toá n mã hó a dữ liệu quố c tế
Encryption Algorithm
ECB Electronic Codebook Book Sách mật mã điện tử
MD5 Message Digest 5 Giải thuật MD5
OFB Output FeedBack Phản hồi ngược đầu ra
FIPS Tiêu chuẩn Xử lý Thông tin Liên
bang Hoa Kỳ
RSA Algorithm Thuật toán mật mã hóa khóa công
khai.

A. MÃ HÓA.
SVTH: D07HTTT1 5
BÁO CÁO THỰC TẬP TỐT NGHIỆP

I. Tổng quan về mã hóa.


Mã hóa là quá trình biến đổi thông tin sang một dạng khác nhưng có thể biến đổi ngược
về dạng ban đầu. Giải mã là quá trình biến đổi ngược lại của mã hóa.

Tại sao cần mã hóa thông tin?

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, đi mua sắm, gửi thư… đến việc đi chợ của
một cô đầu bếp). 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. Do đó mà cần
phả mã hõa thông tin lại trước khi gửi đi. Cụ thể:

Hình 1 : Mô hình trao đổi thông tin qua mạng thông thường
Thông thường việc trao đổi thông tin giữa hai người được mô tả ở hình 1, các bước thực
hiện như sau:

- Tạo ra thông tin cần gửi đi.


- Gửi thông tin này cho các đối tác.

Theo cách này thì chúng ta sẽ không thể quản lý được sự bí mật của thông tin và người
thứ ba không mong muốn nào đó có thể đón được thông tin trên. Vì vậy ta có thể xây
dựng một mô hình trao đổi thông tin bảo mật như ở hình 2, các bước thực hiện như sau:

- Tạo ra thông tin cần gửi đi.


- Mã hóa và gửi thông tin đã được mã hóa đi.
- Đối tác giải mã thông tin nhận được.
- Đối tác có được thông tin ban đầu của người gởi

SVTH: D07HTTT1 6
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 2 : Quy trình mã hóa thông tin


Hơn nữa, mã hóa dữ liệu ngăn chặn được các việc sau :

 Nghe trộm và xem lén dữ liệu.


 Chỉnh sữa và đánh cắp lén dữ liệu.
 Giả mạo thông tin.
 Data non-repudiation.
 Sự gián đoạn các dịch vụ mạng.

Khi nhận được gói tin, người nhận sẽ giải mã dữ liệu lại dạng cơ bản ban đầu. Cho dù dữ
liệu có bị chặn trong suốt quá trình trao đổi dữ liệu.

II. Mã hóa đối xứng và các thuật toán


II.1. Khái niệm mã hóa đối xứng.
Mã hóa đối xứng là kiểu mã hóa hai bên tham gia truyền dữ liệu sử dụng chung một
khóa để mã hóa và giải mã.

Một khoá có thể là một con số, một từ, hoặc một cụm từ được dùng vào mục đích mã hóa
và giải mã dữ liệu.

Trước khi hai bên trao đổi dữ liệu, khóa phải được chia sẽ dùng chung cho cả 2 bên.
Người gửi sẽ mã hóa thông tin bằng khóa riêng và gửi thông tin đến người. Trong quá
trình nhận thông tin, người nhận sủ dụng cùng một khóa để giải mã thông điệp.

SVTH: D07HTTT1 7
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 3 : Mô hình mã hóa đối xứng

 Các thành phần của thuật toán (5 thành phần):

 Plaintext: bản tin (dữ liệu) gốc


 Encryption algorithm: Thuật toán mã hóa – thực hiện thay thế và biến đổi dữ liệu
gốc
 Secret key: khóa bí mật- đầu vào của thuật toán. Sự xáo trộn, thay thế được thực
hiện phụ thuộc vào khóa này
 Ciphertext: Bản tin đã bị biến đổi sau khi áp dụng thuật toán, nó phụ thuộc vào
plaintext và khóa bí mật
 Decryption algorithm: Thuật toán giải mã (phép biến đổi ngược). Sử dụng ciphertext
và khóa bí mật để đưa ra bản tin gốc
Cụ thể hơn:

 Plaintext: M
 Hàm biến đổi mã hóa: Ek : :M  C, where kK (tập khóa K- vô hạn).
 Ciphertext: C
 Hàm biến đổi ngược giải mã: Dk: CM (kK)
M  E k  C  Dk  M

Ek được định nghĩa bởi thuật toán mã hóa E, Dk được định nghĩa bởi thuật toán
giải mã D

Với mỗi K, Dk là nghịch đảo của Ek : DK(EK(M))=M , với mọi M

SVTH: D07HTTT1 8
BÁO CÁO THỰC TẬP TỐT NGHIỆP

II.2. Các kiểu tấn công hệ mã hóa đối xứng


Có 2 kiểu tấn công hệ mã hóa đối xứng: Phân tích mã hóa và Tấn công vét cạn

- Phân tích mã hóa: là quá trình cố gắng phát hiện bản tin gốc hoặc khóa. Có cách
kiểu tấn công phân tích là:

 Ciphertext only- chỉ dùng bản mã: đối phương chỉ có bản tin gốc đã mã hóa,
dùng phương pháp thống kê, xác định bản gốc p
 Known plaintext- biết bản tin gốc: đối phương có ciphertext và 1 số cặp p và c

khác
 Chosen plaintext: c và một engine biến đổi p-c, Đột nhập được vào máy mã

hoá. Tự chọn văn bản p và mã hoá lấy được văn bản mã c tương ứng.
 Chosen ciphertext: đối phương có c +một engine biến đổi c-p, Đột nhập được

vào máy giải mã. Tự chọn văn bản mã c và giải mã lấy được văn bản p tương ứng

SVTH: D07HTTT1 9
BÁO CÁO THỰC TẬP TỐT NGHIỆP

- Tấn công vét cạn: thử với mọi trường hợp có thể. Phần lớn công sức của các tấn
công đều tỉ lệ với kích thước khóa

Giả thiết là biết hoặc nhận biết được các bản tin gốc p:

Key size Thời gian vét Thời gian (106


(bit) cạn encrypt/Ms)

32 231 Ms= 35p 2 Ms

56 255= 1142 năm 10h

128 2127= 5,4.1024 5,4.108


năm

SVTH: D07HTTT1 10
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Như vậy, thuật toán này an toàn về mặt tính toán nhưng giá để phá khóa có khi vượt quá
giá trị tính toán thu được.

Kết luận:

Hệ thống mã hóa đồng bộ đưa ra 2 vấn đề chính. Đầu tiên, bởi vì một khóa vừa được
dùng để mã hóa vừa dùng để giả mã, nếu nó bắt đầu trở thành kẻ xâm nhập, thì tất cả
những thông tin sữ dụng khóa này sẽ bị huỷ. Vì thế, khóa nên thường xuyên thay đổi theo
định kỳ.

Một vấn đề khác là khi hệ thống mã hóa đồng bộ xữ lý một lượng thông tin lớn, việc quả
lý các khóa sẽ trở thành một công việc vô cùng khó khăn. Kết hợp với việc thiết lặp các
cặp khóa, phân phối, và thay đổi theo định kỳ đều đòi hỏi thời gian và tiền bạc.

Hệ hống mã hóa đối xứng đã giải quyết vấn đề đó bằng việc đưa ra hệ thống mã hóa đối
xứng. Đồng thời, họ cũng tăng tính năng bảo mật trong suốt quá trình chuyển vận. Chúng
ta sẽ được tham khảo thêm về hệ thống mã hóa bất đối xứng ở phần sau.

II.3. Thuật toán DES ( Data Encryption Standard).


II.3.1. Lịch sử của thuật toán DES

DES (viết tắt của Data Encryption Standard, hay Tiêu chuẩn Mã hóa Dữ liệu) là một
phương pháp mật mã hóa được FIPS (Tiêu chuẩn Xử lý Thông tin Liên bang Hoa Kỳ)
chọn làm chuẩn chính thức vào năm 1976. Sau đó chuẩn này được sử dụng rộng rãi trên
phạm vi thế giới. Ngay từ đầu, thuật toán của nó đã gây ra rất nhiều tranh cãi, do nó bao
gồm các thành phần thiết kế mật, độ dài khóa tương đối ngắn, và các nghi ngờ về cửa sau
để Cơ quan An ninh quốc gia Hoa Kỳ (NSA) có thể bẻ khóa. Do đó, DES đã được giới
nghiên cứu xem xét rất kỹ lưỡng, việc này đã thúc đẩy hiểu biết hiện đại về mật mã khối
(block cipher) và các phương pháp thám mã tương ứng.

Từ cuối thập niên 1980, đầu thập niên 1990, xuất phát từ những lo ngại về độ an toàn và
tốc độ thấp khi áp dụng bằng phần mềm, giới nghiên cứu đã đề xuất khá nhiều thuật toán
mã hóa khối để thay thế DES. Những ví dụ tiêu biểu bao gồm: RC5, Blowfish, IDEA,
NewDES, SAFER, CAST5 và FEAL. Hầu hết những thuật toán này có thể sử dụng từ
khóa 64 bit của DES mặc dù chúng thường được thiết kế hoạt động với từ khóa 64 bit
hay 128 bit.

SVTH: D07HTTT1 11
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hiện nay DES được xem là không đủ an toàn cho nhiều ứng dụng. Nguyên nhân chủ yếu
là độ dài 56 bit của khóa là quá nhỏ. Khóa DES đã từng bị phá trong vòng chưa đầy 24
giờ. Đã có rất nhiều kết quả phân tích cho thấy những điểm yếu về mặt lý thuyết của mã
hóa có thể dẫn đến phá khóa, tuy chúng không khả thi trong thực tiễn. Thuật toán được
tin tưởng là an toàn trong thực tiễn có dạng Triple DES (thực hiện DES ba lần), mặc dù
trên lý thuyết phương pháp này vẫn có thể bị phá. Triple DES được xem là an toàn mặc
dù tốc độ thực hiện khá chậm. Một phương pháp khác ít đòi hỏi khả năng tính toán hơn là
DES-X với việc tăng độ dài từ khóa bằng cách thực hiện phép XOR từ khóa với phần
thêm trước và sau khi thực hiện DES. Một phương pháp nữa là GDES được đề xuất làm
tăng tốc độ mã hóa nhưng nó được chứng tỏ là không an toàn trước tấn công vi sai
(differential cryptanalysis).

Năm 2001, sau một cuộc thi quốc tế, NIST đã chọn ra một thuật toán mới, AES, để thay
thế cho DES. Thuật toán được trình diện dưới tên là Rijndael. Những thuật toán khác có
tên trong danh sách cuối cùng của cuộc thi AES bao gồm: RC6, Serpent, MARS và
Twofish.

II.3.2. Mô tả thuật toán.

DES là thuật toán mã hóa khối: nó xử lý từng khối thông tin của bản rõ có độ dài xác
định và biến đổi theo những quá trình phức tạp để trở thành khối thông tin của bản mã có
độ dài không thay đổi. Trong trường hợp của DES, độ dài mỗi khối là 64 bit. DES cũng
sử dụng khóa để cá biệt hóa quá trình chuyển đổi. Nhờ vậy, chỉ khi biết khóa mới có thể
giải mã được văn bản mã. Khóa dùng trong DES có độ dài toàn bộ là 64 bit. Tuy nhiên
chỉ có 56 bit thực sự được sử dụng; 8 bit còn lại chỉ dùng cho việc kiểm tra. Vì thế, độ dài
thực tế của khóa chỉ là 56 bit.

Giống như các thuật toán mã hóa khối khác, khi áp dụng cho các văn bản dài hơn 64 bit,
DES phải được dùng theo một phương pháp nào đó.

Tổng thể

Cấu trúc tổng thể của thuật toán được thể hiện ở Hình 2.2:

SVTH: D07HTTT1 12
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 4 : Cấu trúc thuật toán Feistel dùng trong DES

Có 16 chu trình giống nhau trong quá trình xử lý. Ngoài ra còn có hai lần hoán vị đầu và
cuối (Initial and final permutation - IP & FP). Hai quá trình này có tính chất đối nhau
(Trong quá trình mã hóa thì IP trước FP, khi giải mã thì ngược lại). IP và FP không có vai
trò xét về mật mã học và việc sử dụng chúng chỉ có ý nghĩa đáp ứng cho quá trình đưa

SVTH: D07HTTT1 13
BÁO CÁO THỰC TẬP TỐT NGHIỆP

thông tin vào và lấy thông tin ra từ các khối phần cứng có từ thập niên 1970. Trước khi đi
vào 16 chu trình chính, khối thông tin 64 bit được tách làm hai phần 32 bit và mỗi phần
sẽ được xử lý tuần tự (quá trình này còn được gọi là mạng Feistel).

Cấu trúc của thuật toán (mạng Feistel) đảm bảo rằng quá trình mã hóa và giải mã diễn ra
tương tự. Điểm khác nhau chỉ ở chỗ các khóa con được sử dụng theo trình tự ngược nhau.
Điều này giúp cho việc thực hiện thuật toán trở nên đơn giản, đặc biệt là khi thực hiện
bằng phần cứng.

Ký hiệu sau: thể hiện phép toán XOR. Hàm F làm biến đổi một nửa của khối đang xử
lý với một khóa con. Đầu ra sau hàm F được kết hợp với nửa còn lại của khối và hai phần
được tráo đổi để xử lý trong chu trình kế tiếp. Sau chu trình cuối cùng thì 2 nửa không bị
tráo đổi; đây là đặc điểm của cấu trúc Feistel khiến cho quá trình mã hóa và giải mã trở
nên giống nhau.

Hàm Feistel (F)

Hàm F, như được miêu tả ở Hình 5 , hoạt động trên khối 32 bit và bao gồm bốn giai
đoạn:

Hình 5 : Hàm F (F-function) dùng trong DES

1. Mở rộng: 32 bit đầu vào được mở rộng thành 48 bit sử dụng thuật toán hoán vị mở
rộng (expansion permutation) với việc nhân đôi một số bit. Giai đoạn này được ký
hiệu là E trong sơ đồ.

SVTH: D07HTTT1 14
BÁO CÁO THỰC TẬP TỐT NGHIỆP

2. Trộn khóa: 48 bit thu được sau quá trình mở rộng được XOR với khóa con. Mười
sáu khóa con 48 bit được tạo ra từ khóa chính 56 bit theo một chu trình tạo khóa
con (key schedule) miêu tả ở phần sau.
3. Thay thế: 48 bit sau khi trộn được chia làm 8 khối con 6 bit và được xử lý qua hộp
thay thế S-box. Đầu ra của mỗi khối 6 bit là một khối 4 bit theo một chuyển đổi
phi tuyến được thực hiện bẳng một bảng tra. Khối S-box đảm bảo phần quan trọng
cho độ an toàn của DES. Nếu không có S-box thì quá trình sẽ là tuyến tính và việc
thám mã sẽ rất đơn giản.
4. Hoán vị: Cuối cùng, 32 bit thu được sau S-box sẽ được sắp xếp lại theo một thứ tự
cho trước (còn gọi là P-box).

Quá trình luân phiên sử dụng S-box và sự hoán vị các bít cũng như quá trình mở rộng đã
thực hiện được tính chất gọi là sự xáo trộn và khuyếch tán (confusion and diffusion). Đây
là yêu cầu cần có của một thuật toán mã hoá được Claude Shannon phát hiện trong những
năm 1940.

Quá trình tạo khóa con

Hình 6 : Quá trình tạo khóa con trong DES


Hình 6 mô tả thuật toán tạo khóa con cho các chu trình. Đầu tiên, từ 64 bit ban đầu của
khóa, 56 bit được chọn (Permuted Choice 1, hay PC-1); 8 bit còn lại bị loại bỏ. 56 bit thu

SVTH: D07HTTT1 15
BÁO CÁO THỰC TẬP TỐT NGHIỆP

được được chia làm hai phần bằng nhau, mỗi phần được xử lý độc lập. Sau mỗi chu trình,
mỗi phần được dịch đi 1 hoặc 2 bit (tùy thuộc từng chu trình). Các khóa con 48 bit được
tạo thành bởi thuật toán lựa chọn 2 (Permuted Choice 2, hay PC-2) gồm 24 bit từ mỗi
phần. Quá trình dịch bit (được ký hiệu là "<<<" trong sơ đồ) khiến cho các khóa con sử
dụng các bit khác nhau của khóa chính; mỗi bit được sử dụng trung bình ở 14 trong tổng
số 16 khóa con.

Quá trình tạo khóa con khi thực hiện giải mã cũng diễn ra tương tự nhưng các khóa con
được tạo theo thứ tự ngược lại. Ngoài ra sau mỗi chu trình, khóa sẽ được dịch phải thay
vì dịch trái như khi mã hóa

Giải mã DES

Giải mã làm ngược lại quá trình mã hoá. Với thiết kế Fiestel thực hiện mã hoá tiếp với
các khoá con từ SK16 ngược lại về SK1. Nhận thấy rằng hoán vị ban đầu IP sẽ trả lại tác
dụng của hoán vị cuối FP. Vòng đầu với SK16 sẽ trả lại tác dụng của vòng mã thứ 16.
Vòng thứ 16 với SK1 sẽ trả lại tác dụng của vòng mã đầu tiên. Hoán vị cuối FP trả lại
tác dụng hoán vị ban đầu IP. Như vậy đã khôi phục lại được dữ liệu ban đầu.

Một số đặc điểm của giải mã DES

- DES có tính chất bù:

trong đó là phần bù của x theo từng bít (1 thay bằng 0 và ngược lại). EK là bản mã hóa
của E với khóa K. P và C là văn bản rõ (trước khi mã hóa) và văn bản mã (sau khi mã
hóa). Do tính bù, ta có thể giảm độ phức tạp của tấn công bạo lực xuống 2 lần (tương ứng
với 1 bít) với điều kiện là ta có thể lựa chọn bản rõ.

- Ngoài ra DES còn có 4 khóa yếu (weak keys). Khi sử dụng khóa yếu thì mã hóa
(E) và giải mã (D) sẽ cho ra cùng kết quả:

EK(EK(P)) = P or equivalently, EK = DK

- Bên cạnh đó, còn có 6 cặp khóa nửa yếu (semi-weak keys). Mã hóa với một khóa
trong cặp, K1, tương đương với giải mã với khóa còn lại, K2:

or equivalently,

SVTH: D07HTTT1 16
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Tuy nhiên có thể dễ dàng tránh được những khóa này khi thực hiện thuật toán, có thể
bằng cách thử hoặc chọn khóa một cách ngẫu nhiên. Khi đó khả năng chọn phải khóa yếu
là rất nhỏ.

DES đã được chứng minh là không tạo thành nhóm. Nói một cách khác, tập hợp {EK}
(cho tất cả các khóa có thể) theo phép hợp thành không tạo thành một nhóm hay gần với
một nhóm (Campbell and Wiener, 1992). Vấn đề này đã từng là một câu hỏi mở trong
khá lâu và nếu như tạo thành nhóm thì DES có thể bị phá vỡ dễ dàng hơn bởi vì việc áp
dụng DES nhiều lần (ví dụ như trong Triple DES) sẽ không làm tăng thêm độ an toàn của
DES

II.3.3. Các kiểu tấn công

Hiện nay có 3 kiểu tấn công có khả năng phá vỡ DES (với đủ 16 chu trình) với độ phức
tạp thấp hơn phương pháp bạo lực: phá mã vi sai (differential cryptanalysis - DC), phá
mã tuyến tính (linear cryptanalysis - LC) và phá mã Davies (Davies' attack). Tuy nhiên
các dạng tấn công này chưa thực hiện được trong thực tế.

 Phá mã vi sai được Eli Biham và Adi Shamir tìm ra vào cuối những năm 1980
mặc dù nó đã được IBM và NSA biết đến trước đó. Để phá mã DES với đủ 16 chu
trình, phá mã vi sai cần đến 247 văn bản rõ. DES đã được thiết kế để chống lại tấn
công dạng này.
 Phá mã tuyến tính được tìm ra bởi Mitsuru Matsui và nó đòi hỏi 243 văn bản rõ
(Matsui, 1993). Phương pháp này đã được Matsui thực hiện và là thực nghiệm phá
mã đầu tiên được công bố. Không có bằng chứng chứng tỏ DES có khả năng
chống lại tấn công dạng này. Một phương pháp tổng quát hơn, phá mã tuyến tính
đa chiều (multiple linear cryptanalysis), được Kaliski và Robshaw nêu ra vào năm
1994, Biryukov và cộng sự tiếp tục cải tiến vào năm 2004. Nghiên cứu của họ cho
thấy mô phỏng tuyến tính đa chiều có thể sử dụng để giảm độ phức tạp của quá
trình phá mã tới 4 lần (chỉ còn 241 văn bản rõ). Kết quả tương tự cũng có thể đạt
được với kiểu tấn công tuyến tính kết hợp với lựa chọn bản rõ (Knudsen and
Mathiassen, 2000). Junod (2001) đã thực hiện một số thực nghiệm để tìm ra độ
phức tạp thực tế của phá mã tuyến tính và thấy rằng quá trình thực tế nhanh hơn
dự đoán: 239×241.
 Phá mã Davies: trong khi phá mã vi sai và phá mã tuyến tính là các kỹ thuật phá
mã tổng quát, có thể áp dụng cho các thuật toán khác nhau, phá mã Davies là một
kỹ thuật dành riêng cho DES. Dạng tấn công này được đề xuất lần đầu bởi Davies
vào cuối những năm 1980 và cải tiến bởi Biham và Biryukov (1997). Dạng tấn

SVTH: D07HTTT1 17
BÁO CÁO THỰC TẬP TỐT NGHIỆP

công mạnh nhất đòi hỏi 250 văn bản rõ, độ phức tạp là 250 và có tỷ lệ thành công là
51%.

1. Ngoài ra còn có những kiểu tấn công dựa trên bản thu gọn của DES - DES với ít
hơn 16 chu trình. Những nghiên cứu này cho chúng ta biết số lượng chu trình cần
có và ranh giới an toàn của hệ thống. Năm 1994, Langford và Hellman đề xuất phá
mã vi sai - tuyến tính (differential-linear cryptanalysis) kết hợp giữa phá mã vi sai
và tuyến tính. Một dạng cải tiến của phương pháp này có thể phá vỡ DES 9 chu
trình với 215.8 văn bản rõ và có độ phức tạp là 229.2 (Biham et al, 2002).

II.3.4. Vấn đề về mã hóa khối


Mã khối mã các block có kích thước cố định. Chẳng hạn DES mã các block 64 bít
với khoá 56 bít Cần phải có cách áp dụng vào thực tế vì các thông tin cần mã có kích
thước tùy ý. Trwosc kia có 4 kiểu thao tác được định nghĩa cho DES theo chuẩn ANSI:
ANSI X3.106-1983 Modes of Use. Bây giờ mở rộng them có 5 cách cho DES và chuẩn
mã nâng cao (AES – Advanced Encryption Standards). Trong đó có kiểu áp dụng cho
khối và có kiểu áp dụng cho mã dòng.
2.3.4.1. Sách mật mã điện tử (Electronic Codebook Book - ECB)
- Mẫu tin được chia thành các khối độc lập, sau đó mã từng khối
- Mỗi khối là giá trị cần thay thế như dùng sách mã, do đó có tên như vậy
- Mỗi khối được mã độc lập với các mã khác Ci = DESK1 (Pi)
- Khi dùng: truyền an toàn từng giá trị riêng lẻ

- Ưu và nhược của ECB


 Lặp trên bản mã được chỉ rõ lặp trên bản tin
 Nếu dóng đúng khối.
 Đặc biệt với hình ảnh
SVTH: D07HTTT1 18
BÁO CÁO THỰC TẬP TỐT NGHIỆP

 Hoặc với bản tin mà thay đổi rất ít sẽ trở thành đối tượng để thám mã
- Nhược điểm là các khối được mã độc lập
- Được sử dụng chủ yếu khi gửi một ít dữ liệu

2.3.4.2. Dây chuyền mã khối (Cipher Block Chaining - CBC)


- Các mẫu tin được chia thành các khối
- Nhưng chúng được liên kết với nhau trong quá trình mã hoá
- Các block được sắp thành dãy, vì vậy có tên như vậy
- Sử dụng véctơ ban đầu IV để bắt đầu quá trình
Ci = DESK1(Pi XOR Ci-1)
C-1 = IV
Dùng khi: mã dữ liệu lớn, xác thực

- Ưu và nhược của CBC


 Mỗi khối mã phụ thuộc vào tất cả các khối bản rõ
 Sự thay đổi của bản tin ở đâu đó sẽ kéo theo sự thay đổi của mọi khối mã
 Cần giá trị véc tơ ban đầu IV được biết trước bởi người gửi và người nhận
Tuy nhiên nếu IV được gửi công khai, kẻ tấn công có thể thay đổi bít đầu tiên và thay
đổi cả IV để bù trừ. Vậy IV cần phải có giá trị cố định trước hoặc mã hoá trong chế độ
ECB và gửi trước phần còn lại của mẩu tin. Ở cuối bản tin, để kiểm soát các block ngắn
còn lại
 Có thể bổ sung các giá trị không phải dữ liệu như NULL
 Hoặc dùng bộ đệm cuối với số byte đếm kích thước của nó.
Ví dụ
[ b1 b2 b3 0 0 0 0 5] <- 3 data bytes,

SVTH: D07HTTT1 19
BÁO CÁO THỰC TẬP TỐT NGHIỆP

vậy có 5 bytes dành cho đệm và đếm.


2.3.4.3. Mã phản hồi ngược (Cipher FeedBack - CFB)
- Bản tin coi như dòng các bít
- Bổ sung vào đầu ra của mã khối
- Kết quả phản hồi trở lại cho giai đoạn tiếp theo, vì vậy có tên như vậy.
- Nói chung cho phép số bít phản hồi là 1, 8, 64, hoặc tuỳ ý: ký hiệu tương ứng là
CFB1, CFB8, CFB64,…
- Thường hiệu quả sử dụng cả 64 bít
Ci = Pi XOR DESK1(Ci-1)
C-1 = IV
- Được dùng cho mã dữ liệu dòng, xác thực

- Ưu và nhược điểm của mã phản hồi ngược


 Được dùng khi dữ liệu đến theo byte/bit
 Chế độ dòng thường gặp nhất
 Hạn chế là cần ngăn chuồng khi mã khối sau mỗi n bit
 Nhận xét là mã khối được dùng ở chế độ mã ở cả hai đầu
- Lỗi sẽ lan ra một vài block sau lỗi
2.3.4.4. Phản hồi ngược đầu ra (Output FeedBack - OFB)
- Mẩu tin xem như dòng bit
- Đầu ra của mã được bổ sung cho mẩu tin
- Đầu ra do đó là phản hồi, do đó có tên như vậy
- Phản hồi ngược là độc lập đối với bản tin
- Có thể được tính trước
Ci = Pi XOR Oi

SVTH: D07HTTT1 20
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Oi = DESK1(Oi-1)
-1 = IV
Được dùng cho mã dòng trên các kênh âm thanh

- Ưu điểm và nhược điểm của OFB


 Được dùng khi lỗi phản hồi ngược lại hoặc ở nơi cần mã trước khi mẩu tin sẵn
sang
 Rất giống CFB
 Nhưng phản hồi là từ đầu ra của mã và độc lập với mẩu tin
 Là biến thể của mã Vernam, suy ra không sử dụng lại với cùng một dãy (Key +
IV)
 Người gửi và người nhận phải đồng bộ, có phương pháp khôi phục nào đó là cần
thiết để đảm bảo việc đó.
 Nguyên bản chỉ rõ m bit phản hồi ngược theo các chuẩn
 Các nghiên cứu tiếp theo chỉ ra rằng chỉ có OFB64 là dùng được
2.3.4.5. Bộ đếm CTR (Counter)
- Là chế độ mới, tuy đã được đề xuất từ lâu
- Giống như OFB, nhưng mã giá trị đếm thay vì giá trị phản hồi tuỳ ý.
- Cần phải có khoá khác và giá trị đếm cho mỗi khối bản rõ (không bao giờ dùng
lại)
Ci = Pi XOR Oi
i = DESK1(i)
Được dùng mã trên mạng với tốc độ cao
- Ưu và nhược điểm của CTR
 Hiệu quả

SVTH: D07HTTT1 21
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Do có thể mã song song


Chuẩn bị trước nếu cần
 Tốt cho các kết nối với tốc độ rất cao
 Truy cập ngẫu nhiên đến các khối dữ liệu mã
 Tính an toàn có thể chứng minh được
 Nhưng phải tin tưởng không bao giờ dùng lại khoá/đếm, nếu không có
thể bẻ.

II.4. Thuật toán AES (Advanced Encryption Standard).

AES được dựa trên một nguyên tắc thiết kế được biết đến như là một mạng hoán vị thay
thế . Đó là nhanh chóng ở cả hai phần mềm và phần cứng . Không giống như thuật toán
tiền nhiệm của nó, DES, AES không sử dụng mạng Feistel .

AES có một cố định kích thước khối là 128 bit và kích thước khóa 128, 192, hoặc 256
bit, trong khi Rijndael có thể được chỉ định với khối và kích thước quan trọng trong bất
kỳ bội số của 32 bit, với tối thiểu là 128 bit. Kích cỡ khối có tối đa là 256 bit, nhưng
keysize không có lý thuyết tối đa.

AES hoạt động trên một ma trận 4 × 4 byte, gọi là nhà nước (các phiên bản của Rijndael
với một kích thước khối lớn hơn có các cột bổ sung trong tiểu bang). Hầu hết các tính
toán AES được thực hiện trong một đặc biệt lĩnh vực hữu hạn .

Các thuật toán mã hóa AES được quy định như một số lần lặp lại của vòng chuyển đổi
mà chuyển đổi các chữ thô đầu vào vào đầu ra cuối cùng của bản mã. Mỗi vòng bao gồm
nhiều bước xử lý, trong đó có một phụ thuộc vào khóa mã hóa. Một tập hợp các vòng đảo
SVTH: D07HTTT1 22
BÁO CÁO THỰC TẬP TỐT NGHIỆP

ngược được áp dụng để biến đổi bản mã trở lại bản rõ ban đầu bằng cách sử dụng cùng
một khóa mã hóa.

II.4.1. Mô tả của thuật toán

Sơ đồ Rijndael

Hình 7 : Sơ đồ Rijndael

SVTH: D07HTTT1 23
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Sau đây ta xét chi tiết hơn các quá trình mã hoá, sinh khoá và giải mã AES. Xét cụ thể
quá trình mã hóa bao gồm 4 bước:
1. AddRoundKey - mỗi byte của khối được kết hợp với khóa con, các khóa con này
được tạo ra từ quá trình tạo khóa con Rijndael.

Hình 2.5: Mô tả hoạt động bước AddRoundKey

2. SubBytes - đây là quá trình thay thế (phi tuyến) trong đó mỗi byte sẽ được thay thế
bằng một byte khác theo bảng tra (Tìm trong tài liệu tương ứng).

SVTH: D07HTTT1 24
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 2.6: Mô tả hoạt động bước SubBytes

3. ShiftRows - đổi chỗ, các hàng trong khối được dịch vòng.

Hình 2.7: Mô tả hoạt động bước ShiftRows

4. MixColumns - quá trình trộn làm việc theo các cột trong khối theo một chuyển đổi
tuyến tính.

Hình 2.8: Mô tả hoạt động bước MixColumns


Tại chu trình cuối thì bước MixColumns được thay thế bằng bước AddRoundKey.

Thuật toán mã hoá


INPUT: M 128 bit, w[Nb*(Nr+1)] --- w là mảng khoá , M là khối dữ liệu rõ
OUTPUT: Y 128 bit -- Khối dữ liệu đã được mã hoá
TIẾN TRÌNH XỬ LÝ:
State:=in;
AddRoundKey(State,w[0,Nb-1]);
for i in 1..Nr-1 loop
SubByte(state);

SVTH: D07HTTT1 25
BÁO CÁO THỰC TẬP TỐT NGHIỆP

ShiftRows(state);
MixColums(state);
AddRoundKey(state,w[i*Nb],(i+1)*Nb-1);
end loop;
SubByte(state);
ShiftRows(state);
AddRoundKey(state,w[i*Nb],(i+1)*Nb-1);
Y:=state;

Thuật toán sinh khoá con sử dụng ba hàm:


SubWord(): Là một hàm đưa 4 từ đầu vào qua S-box để được 4 từ đầu ra
RotWord(): Biến đổi một từ [a0a1a2a3] thành một từ [a1a2a3a0]
Rcon(i): Chứa các giá trị [xi-1,{00},{00},{00}] với x={02} và i>=1.
Trường hợp Nk=8 (độ dài khoá =256) và i-4 là bội số của Nk thì SubWord() được tính
toán với w[i-1] trứơc khi XOR

Thuật toán:
INPUT: Khoá đầu vào K, Nk
OUTPUT: Mảng khoá con
TIẾN TRÌNH XỬ LÝ:
 Tách khoá K thành Nk khối 4 byte w[i] i=0..Nk-1
i:=Nk;
while (i<Nb*(Nr+1)) loop
temp:=w[i-1];
if (i mod Nk = 0);
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk];
else if (Nk > 6 and i mod Nk = 4);
temp = SubWord(temp);
end if;
w[i] = w[i-Nk] xor temp;
i = i + 1;
end loop;
Thuật toán giải mã sử dụng 4 biến đổi trong đó có 1 biến đổi AddRoundKey và 3
biến đổi đảo ngược.
Biến đổi InvShiftRows(): tương tự biến đổi ShiftRows thay vì dịch trái thì trong
biến đổi này là dịch phải.

SVTH: D07HTTT1 26
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Bứơc InvSubBytes(): Phép biến đổi này tương tự như SubBytes() thay vì dùng S-box thì
sử dụng InvS-box .
Bứơc InvMixColums(): Tương tự như phép MixColums thay vì a XOR với c(x)
thì là a-1 XOR c(x).
Thuật toán giải mã
INPUT: M 128 bit, w[Nb*(Nr+1)] --- w là mảng khoá , M là bản mã
OUTPUT: Y 128 bit -- Khối dữ liệu đã được giải mã
TIẾN TRÌNH XỬ LÝ:
state = M
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 step -1 downto 1
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
InvMixColumns(state)
end for
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[0, Nb-1])
Y = state.
III. Mã hóa bất đối xứng.
III.1. Khái niệm mã hóa bất đối xứng, cơ chế, các thành phần của hệ mã hóa bất
đối xứng.

Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng trao đổi các
thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều này được
thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công
khai và khóa cá nhân (hay khóa bí mật).

Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật mã hóa
khóa công khai mặc dù hai khái niệm không hoàn toàn tương đương. Có những thuật toán
mật mã khóa bất đối xứng không có tính chất khóa công khai và bí mật như đề cập ở trên
mà cả hai khóa (cho mã hóa và giải mã) đều cần phải giữ bí mật.

Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa
công khai được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại
dùng để giải mã. Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu
chỉ biết khóa công khai.

SVTH: D07HTTT1 27
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:

 Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được.
 Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa
bí mật nào đó hay không.
 Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2
bên.

Thay vì sử dụng một khóa đơn trong hệ thống mã hóa đối xứng, hệ thống mã hóa bất đối
xứng sử dụng một cặp khóa có quan hệ toán học. Một khóa là riêng tư, chỉ được dùng bởi
chính chủ nhân. Khóa thứ hai thì được phổ biến, công cộng và phân phối tự do. Khóa
công cộng thì được dùng để mã hóa và ngược lại khóa riêng thì được dùng để giải thông
tin.

- Các thành phần:

 Plaintext: bản tin gốc


 Encryption Algrothm: phép biến đổi xuôi, thực hiện biến đổi bản tin gốc
 Public/Private keys: cặp khóa công khai/bí mật
 Ciphertext: bản tin đã biến đổi
 Decryption Algrothm: phép biến đổi ngược, khôi phục bản tin gốc
- Các bước thực hiện:
 User tạo ra 1 cặp khóa
 Công bố công khai khóa PU (Publish)
 Giữ bí mật khóa PR (private)
 Dữ liệu truyền từ A B nghĩa là A mã hóa dữ liệu bằng PU của B; B giải mã bằng
khóa PR của A.

III.2. Các đặc điểm và yêu cầu của hệ mã hóa bất đối xứng.
 Thuận tiện cho người dùng có thể tạo khóa PU/PR
 Cho phép bên gửi dễ dàng thực hiện mã hóa bằng PU
C= EPU (M)

 Cho phép bên nhận dễ dàng thực hiện giải mã


M= DPR (C) = DPR (EPU(M))

 Không cho phép tính ngược PR từ PU


 Không cho phép thực hiện giải mã khi có c và PU
 Một trong hai khóa có thể dùng để mã hóa và khóa còn lại để giải mã.

SVTH: D07HTTT1 28
BÁO CÁO THỰC TẬP TỐT NGHIỆP

IV. Thuật toán mã hóa khóa công khai RSA.


IV.1. Ý tưởng và yêu cầu của thuật toán
Thuật toán RSA được phát minh năm 1978. 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 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.

Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau : Bob muốn gửi
cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được. Để làm được
điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob
nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá
thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở
lại được-không đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bob gửi chiếc hộp
lại cho Alice. Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư. Trong ví
dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là
khóa bí mật.

Thuật toán sử dụng chế độ mã hóa khối M, C là một số nguyên ∈ (0, n)

Nhắc lại: C= EPU (M) : mã hóa khóa PU

M= DPR(EPU (M)) : giải mã khóa PR (ko cho phép tính được PR từ


PU)

- Dạng mã hóa / giải mã:

C= Me mod n

M= cd mod n = Med mod n

PU = {e, u} -> Public

PR = {d, n} -> Private

- Người gửi và người nhận biết giá trị của n và e, nhưng chỉ người nhận biết gtrị
của d
- Mục đích: tìm các giá trị e, d, n (chọn) để tính M và C

Nhận xét:

SVTH: D07HTTT1 29
BÁO CÁO THỰC TẬP TỐT NGHIỆP

- Có thể tìm giá trị của e, d, n sao cho Med = M mod n với M < n
- Không thể xác định d nếu biết e và n

IV.2. Chi tiết về tạo khóa và quá trình mã hóa, giải mã.
Tạo khóa

Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví
dụ như Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm
khóa công khai và khóa bí mật theo các bước sau:

1. Chọn 2 số nguyên tố lớn và với , lựa chọn ngẫu nhiên và độc lập.
2. Tính: .
3. Tính: giá trị hàm số Ơle .
4. Chọn một số tự nhiên e sao cho và là số nguyên tố cùng nhau với
.
5. Tính: d sao cho .

Một số lưu ý:

 Các số nguyên tố thường được chọn bằng phương pháp thử xác suất.

SVTH: D07HTTT1 30
BÁO CÁO THỰC TẬP TỐT NGHIỆP

 Các bước 4 và 5 có thể được thực hiện bằng giải thuật 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).

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.

Mã hóa

SVTH: D07HTTT1 31
BÁO CÁO THỰC TẬP TỐT NGHIỆP

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. Quá trình này được mô tả ở phần #Chuyển đổi văn bản rõ.

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ũ (theo môđun) bằng
(thuật toán bình phương và nhân) Cuối cùng Bob gửi c cho Alice.

Hình 8 : Sơ đồ biểu diễn thuật toán mã hóa RSA


Giải mã

Alice nhận c từ Bob và biết khóa bí mật d. Alice có thể tìm được m từ c theo công thức
sau:

m = c d mod n

SVTH: D07HTTT1 32
BÁO CÁO THỰC TẬP TỐT NGHIỆP

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:

Ví dụ

Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng những số nhỏ để tiện
tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn.

Lấy:

p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)

q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)

n = pq =
— môđun (công bố công khai)
3233

e = 17 — số mũ công khai

d = 2753 — số mũ bí mật

Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là:

SVTH: D07HTTT1 33
BÁO CÁO THỰC TẬP TỐT NGHIỆP

encrypt(m) = me mod n = m17 mod 3233

với m là văn bản rõ. Hàm giải mã là:

decrypt(c) = cd mod n = c2753 mod 3233

với c là văn bản mã.

Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:

encrypt(123) = 12317 mod 3233 = 855

Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:

decrypt(855) = 8552753 mod 3233 = 123

Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ giải thuật bình phương và
nhân.

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

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

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


 Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá trị me
cũng nhận giá trị nhỏ (so với n). Như vậy phép môđun không có tác dụng và có
thể dễ dàng tìm được m bằng cách khai căn bậc e của c (bỏ qua môđun).
 RSA là phương pháp mã hóa xác định (không có thành phần ngẫu nhiên) nên kẻ
tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra
giữa bản rõ và bản mã. Khi gặp một bản mã, kẻ tấn công sử dụng bảng tra để tìm
ra bản rõ tương ứng.

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

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

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

IV.3. Đặc điểm của thuật toán.


IV.3.1. Vấn đề an ninh.

Độ 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ị (p-1)(q-1) và qua đó xác định d từ e. Chưa có một
phương pháp nào được tìm ra trên máy tính để giải bài toán này trong thời gian đa thức
(polynomial-time). Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại (sự
không tồn tại của thuật toán). Xem thêm phân tích ra thừa số nguyên tố về vấn đề này.

SVTH: D07HTTT1 35
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số nguyên tố có độ dài
663 bít với phương pháp phân tán trong khi khóa của RSA có độ dài từ 1024 tới 2048 bít.
Một số chuyên gia cho rằng khóa 1024 bít có thể sớm bị phá vỡ (cũng có nhiều người
phản đối việc này). Với khóa 4096 bít thì hầu như không có khả năng bị phá vỡ trong
tương lai gần. Do đó, người ta thường cho rằng RSA đảm bảo an toàn với điều kiện n
được chọn đủ lớn. Nếu n có độ dài 256 bít hoặc ngắn hơn, nó có thể bị phân tích trong vài
giờ với máy tính cá nhân dùng các phần mềm có sẵn. Nếu n có độ dài 512 bít, nó có thể
bị phân tích bởi vài trăm máy tính tại thời điểm năm 1999. Một thiết bị lý thuyết có tên là
TWIRL do Shamir và Tromer mô tả năm 2003 đã đặt ra câu hỏi về độ an toàn của khóa
1024 bít. Vì vậy hiện nay người ta khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bít.

Năm 1993, Peter Shor công bố thuật toán Shor chỉ ra rằng: máy tính lượng tử (trên lý
thuyết) có thể giải bài toán phân tích ra thừa số trong thời gian đa thức. Tuy nhiên, máy
tính lượng tử vẫn chưa thể phát triển được tới mức độ này trong nhiều năm nữa.

Năm 2010, các nhà khoa học thuộc Đại học Michigan đã công bố phát hiện một kẽ hở
trong hệ thống mật mã hoá RSA. Cách phá vỡ hệ thống, lấy khoá bí mật RSA 1024 bit
chỉ trong vài ngày thay vì vài năm nếu tấn công theo cách thông thường - tấn công bằng
brute force (dò tìm lần lượt). Các nhà khoa học tạo một điện thế lớn để gây lỗi hệ thống,
từ đó giúp tìm ra khoá bí mật. Việc tấn công được thực hiện trên một FPGA. Báo cáo
được trình bày tại hội nghị DATE 2010 diễn ra tại Dresden, Đức tháng 3 năm 2010.

IV.3.2. Tốc độ

RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật toán mã hóa đối
xứng khác. Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để mã hóa
văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn
hơn nhiều so với văn bản).

Phương thức này cũng tạo ra những vấn đề an ninh mới. Một ví dụ là cần phải tạo ra khóa
đối xứng thật sự ngẫu nhiên. Nếu không, kẻ tấn công (thường ký hiệu là Eve) sẽ bỏ qua
RSA và tập trung vào việc đoán khóa đối xứng.

IV.3.3. Phân phối khóa

Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai là một
trong những yếu tố quyết định đối với độ an toàn của RSA. Quá trình phân phối khóa cần
chống lại được tấn công đứng giữa (man-in-the-middle attack). Giả sử Eve có thể gửi cho
Bob một khóa bất kỳ và khiến Bob tin rằng đó là khóa (công khai) của Alice. Đồng thời
SVTH: D07HTTT1 36
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Eve có khả năng đọc được thông tin trao đổi giữa Bob và Alice. Khi đó, Eve sẽ gửi cho
Bob khóa công khai của chính mình (mà Bob nghĩ rằng đó là khóa của Alice). Sau đó,
Eve đọc tất cả văn bản mã hóa do Bob gửi, giải mã với khóa bí mật của mình, giữ 1 bản
copy đồng thời mã hóa bằng khóa công khai của Alice và gửi cho Alice. Về nguyên tắc,
cả Bob và Alice đều không phát hiện ra sự can thiệp của người thứ ba. Các phương pháp
chống lại dạng tấn công này thường dựa trên các chứng thực khóa công khai (digital
certificate) hoặc các thành phần của hạ tầng khóa công khai (public key infrastructure -
PKI).

IV.3.4. Tấn công dựa trên thời gian

Vào năm 1995, Paul Kocher mô tả một dạng tấn công mới lên RSA: nếu kẻ tấn công nắm
đủ thông tin về phần cứng thực hiện mã hóa và xác định được thời gian giải mã đối với
một số bản mã lựa chọn thì có thể nhanh chóng tìm ra khóa d. Dạng tấn công này có thể
áp dụng đối với hệ thống chữ ký điện tử sử dụng RSA. Năm 2003, Dan Boneh và David
Brumley chứng minh một dạng tấn công thực tế hơn: phân tích thừa số RSA dùng mạng
máy tính (Máy chủ web dùng SSL). Tấn công đã khai thác thông tin rò rỉ của việc tối ưu
hóa định lý số dư Trung quốc mà nhiều ứng dụng đã thực hiện.

Để chống lại tấn công dựa trên thời gian là đảm bảo quá trình giải mã luôn diễn ra trong
thời gian không đổi bất kể văn bản mã. Tuy nhiên, cách này có thể làm giảm hiệu suất
tính toán. Thay vào đó, hầu hết các ứng dụng RSA sử dụng một kỹ thuật gọi là che mắt.
Kỹ thuật này dựa trên tính nhân của RSA: thay vì tính cd mod n, Alice đầu tiên chọn một
số ngẫu nhiên r và tính (rec)d mod n. Kết quả của phép tính này là rm mod n và tác động
của r sẽ được loại bỏ bằng cách nhân kết quả với nghịch đảo của r. Đỗi với mỗi văn bản
mã, người ta chọn một giá trị của r. Vì vậy, thời gian giải mã sẽ không còn phụ thuộc vào
giá trị của văn bản mã.

IV.3.5. Tấn công lựa chọn thích nghi bản mã

Năm 1981, Daniel Bleichenbacher mô tả dạng tấn công lựa chọn thích nghi bản mã
(adaptive chosen ciphertext attack) đầu tiên có thể thực hiện trên thực tế đối với một văn
bản mã hóa bằng RSA. Văn bản này được mã hóa dựa trên tiêu chuẩn PKCS #1 v1, một
tiêu chuẩn chuyển đổi bản rõ có khả năng kiểm tra tính hợp lệ của văn bản sau khi giải
mã. Do những khiếm khuyết của PKCS #1, Bleichenbacher có thể thực hiện một tấn công
lên bản RSA dùng cho giao thức SSL (tìm được khóa phiên). Do phát hiện này, các mô
hình chuyển đổi an toàn hơn như chuyển đổi mã hóa bất đối xứng tối ưu (Optimal

SVTH: D07HTTT1 37
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Asymmetric Encryption Padding) được khuyến cáo sử dụng. Đồng thời phòng nghiên
cứu của RSA cũng đưa ra phiên bản mới của PKCS #1 có khả năng chống lại dạng tấn
công nói trên.

B. CHỮ KÝ SỐ VÀ ỨNG DỤNG.


I. Chữ ký số
I.1. Khái niệm.
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 hay đá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 cắt, dán, tẩy, xóa , 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ó

SVTH: D07HTTT1 38
BÁO CÁO THỰC TẬP TỐT NGHIỆP

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ố hóa, bản thân các thông báo cũng được biểu diễn
dưới dạng số hóa , tức dưới dạng các dãy bit nhị phân ,’’chữ ký’’ nếu có cũng ở dưới
dạng các dãy bít, 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.

- Chữ ký số : Là một thể chứng thực được mã hóa bởi khoá bí mật của người gửi.
Chữ ký số là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video...) nhằm mục
đích xác định người chủ của dữ liệu đó.
- Chữ ký số khóa công khai (hay hạ tầng khóa công khai) là mô hình sử dụng các kỹ
thuật mật mã để gắn với mỗi người sử dụng một cặp khóa công khai - bí mật và
qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật. Khóa
công khai thường được phân phối thông qua chứng thực khóa công khai. Quá trình
sử dụng chữ ký số bao gồm 2 quá trình: tạo chữ ký và kiểm tra chữ ký.

I.2. Tạo và sử dụng chữ ký số bằng kỹ thuật mã hóa bất đối xứng.

Chữ ký số khóa công khai dựa trên nền tảng mật mã hóa khóa công khai. Để có thể trao
đổi thông tin trong môi trường này, mỗi người sử dụng có một cặp khóa: một công khai
và một bí mật. Khóa công khai được công bố rộng rãi còn khóa bí mật phải được giữ kín
và không thể tìm được khóa bí mật nếu chỉ biết khóa công khai.

SVTH: D07HTTT1 39
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 9 : Sơ đồ tạo và kiểm tra chữ ký số

Toàn bộ quá trình gồm 3 thuật toán:

 Thuật toán tạo khóa


 Thuật toán tạo chữ ký số
 Thuật toán kiểm tra chữ ký số

Xét ví dụ sau: Bob muốn gửi thông tin cho Alice và muốn Alice biết thông tin đó thực sự
do chính Bob gửi. Bob gửi cho Alice bản tin kèm với chữ ký số. Chữ ký này được tạo ra
với khóa bí mật của Bob. Khi nhận được bản tin, Alice kiểm tra sự thống nhất giữa bản
tin và chữ ký bằng thuật toán kiểm tra sử dụng khóa công cộng của Bob. Bản chất của
thuật toán tạo chữ ký đảm bảo nếu chỉ cho trước bản tin, rất khó (gần như không thể) tạo
ra được chữ ký của Bob nếu không biết khóa bí mật của Bob. Nếu phép thử cho kết quả
đúng thì Alice có thể tin tưởng rằng bản tin thực sự do Bob gửi.

Thông thường, Bob không mật mã hóa toàn bộ bản tin với khóa bí mật mà chỉ thực hiện
với giá trị băm của bản tin đó. Điều này khiến việc ký trở nên đơn giản hơn và chữ ký
ngắn hơn. Tuy nhiên nó cũng làm nảy sinh vấn đề khi 2 bản tin khác nhau lại cho ra cùng
một giá trị băm. Đây là điều có thể xảy ra mặc dù xác suất rất thấp.

SVTH: D07HTTT1 40
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Tạo chữ ký số: bằng kỹ thuật mã hóa bất đối xứng (kỹ thuật mã hóa khóa công khai):
Chữ ký điện tử được tạo ra bằng cách áp dụng thuật toán băm một chiều trên văn bản gốc
để tạo ra bản phân tích văn bản (message digest) hay còn gọi là fingerprint, sau đó mã
hóa bằng private key tạo ra chữ ký số đính kèm với văn bản gốc để gửi đi. Khi nhận, văn
bản được tách làm 2 phần, phần văn bản gốc được tính lại fingerprint để so sánh với
fingerprint cũ cũng được phục hồi từ việc giải mã chữ ký số

Các bước mã hóa:

1. Dùng giải thuật băm để thay đổi thông điệp cần truyền đi. Kết quả ta được một
message digest. Dùng giải thuật MD5 (Message Digest 5) ta được digest có chiều dài
128-bit, dùng giải thuật SHA (Secure Hash Algorithm) ta có chiều dài 160-bit.
2. Sử dụng khóa private key của người gửi để mã hóa message digest thu được ở bước
1. Thông thường ở bước này ta dùng giải thuật RSA. Kết quả thu được gọi là digital
signature của message ban đầu.
3. Gộp digital signature vào message ban đầu. Công việc này gọi là “ký nhận” vào
message. Sau khi đã ký nhận vào message, mọi sự thay đổi trên message sẽ bị phát
hiện trong giai đoạn kiểm tra. Ngoài ra, việc ký nhận này đảm bảo người nhận tin
tưởng message này xuất phát từ người gửi chứ không phải là ai khác.

Các bước kiểm tra:

SVTH: D07HTTT1 41
BÁO CÁO THỰC TẬP TỐT NGHIỆP

1. Dùng public key của người gửi (khóa này được thông báo đến mọi người) để giải
mã chữ ký số của message.
2. Dùng giải thuật (MD5 hoặc SHA) băm message đính kèm.
3. So sánh kết quả thu được ở bước 1 và 2. Nếu trùng nhau, ta kết luận message này
không bị thay đổi trong quá trình truyền và message này là của người gửi.

II. Chứng chỉ số


II.1. Khái niệm chứng chỉ số (Digital Certificate).
Chứng nhận khóa public thuộc về chủ nhân của khóa. Chứng chỉ số bao gồm khóa
public, thông tin người sử dụng (mã số, tin), và chữ ký của bên thứ 3 tin cậy.

- Chứng chỉ số (digital certificate): Đoạn nội dung (chứa thông tin cá nhân và khoá
công khai của người sở hữu) có đính kèm chữ ký số của hệ thống phát hành cặp
khoá được gọi là chứng chỉ số (digital certificate) của người sở hữu cặp khoá
- Chứng thực số (certificate authority - CA): Hệ thống cấp khoá và chứng thực rằng
cặp khoá đó đại diện cho người tham gia giao dịch được gọi là hệ thống chứng
thực số (Certificate Authority - CA)

Để giải quyết câu hỏi "khoá công khai có đúng là của người gửi văn bản không và khoá
công khai này lấy ở đâu để có thể tin cậy được?", về mặt công nghệ, vấn đề được giải
quyết như sau:

- Xây dựng một hệ thống tập trung có thể cấp phát cặp khoá bí mật - công khai cho
toàn bộ người tham gia giao dịch
- Chuyển giao phần khoá bí mật cho người sở hữu và đảm bảo rằng chỉ duy nhất
anh ta biết được khoá này.
- Gắn liền thông tin cá nhân (tên, số nhân dạng có nhân, chức vụ, đơn vị công tác, ...
và một số thông tin khác) của người sở hữu cặp khoá vào phần khoá công khai để
tạo thành một file dữ liệu – đây chính là phần nội dung của chứng chỉ số
- Để đảm bảo tính toàn vẹn và có thể tin cậy vào file dữ liệu này, hệ thống phát
hành sử dụng khoá bí mật của mình tạo và đính kèm một chữ ký điện tử lên file dữ
liệu nói trên. Đoạn nội dung (chứa thông tin cá nhân và khoá công khai của người
sở hữu) có đính kèm chữ ký số của hệ thống phát hành cặp khoá được gọi là chứng
chỉ số (digital certificate) của người sở hữu cặp khoá
II.2. Quá trình xác minh chữ ký số thông qua chứng chỉ số.

SVTH: D07HTTT1 42
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Khi có chứng chỉ số, ta có được khoá công khai của người giao dịch, khoá công khai này
được đính kèm với thông tin cá nhân (tên, số nhân dạng có nhân, chức vụ, đơn vị công
tác, ... và một số thông tin khác) của người giao dịch

Việc chứng thực rằng khoá công khai này là hợp lệ và là đại diện cho người tham gia
giao dịch được chứng thực bởi hệ thống CA

Tất cả các bên giao dịch muốn kiểm tra tính đúng đắn, hợp lệ về nội dung của chứng chỉ
số đều xuất phát từ việc tin cậy vào chữ ký số của CA trên chứng chỉ số (điều này cũng
hoàn toàn tự nhiên như khi ta xem xét 1 chứng minh thư nhân dân để tin cậy vào một cá
nhân, ta tin cậy vào chữ ký và dấu của người ký chứng minh thư đó)

III. Giải pháp ứng dụng chữ ký số

Phần này , tôi xin trình bày giải pháp ứng dụng chữ ký số 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 trên thuật toán băm MD5 và thuật
toán mã hóa RSA.

Thuật toán băm MD5:

MD5 (viết tắt của tiếng Anh Message-Digest algorithm 5 ) được thiết kế bởi Ronald Rivest vào
năm 1991 để thay thế cho hàm băm trước đó, MD4.

Giải thuật MD5 chính hoạt động trên trạng thái 128-bit, được chia thành 4 từ 32-bit, với ký hiệu
A, B, C và D. Chúng được khởi tạo với những hằng số cố định. Giải thuật chính sau đó sẽ xử lý
các khối tin 512-bit, mỗi khối xác định một trạng thái. Quá trình xử lý khối tin bao gôm bốn giai
đoạn giống nhau, gọi là vòng; mỗi vòng gồm có 16 tác vụ giống nhau dựa trên hàm phi tuyến F,
cộng mô đun, và dịch trái. Hình 10 mô tả một tác vụ trong một vòng. Có 4 khả năng cho hàm F;
mỗi cái được dùng khác nhau cho mỗi vòng:

lần lượt chỉ phép XOR, AND, OR và NOT.

SVTH: D07HTTT1 43
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 10 : Mô tả giải thuật MD5


III.1. Quá trình ký và gửi các tệp văn bản
- Từ các 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 128bit , 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 của người gửi và hash
value thành một dạng khác 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

SVTH: D07HTTT1 44
BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hình 11 : Sơ đồ mô tả quá trình ký và gửi các tệp văn bản.


III.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ă bản . Hệ
thống sẽ tách thông điệp đã ký thành ra các 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 của người gửi không ?

- Sử dụng thuật toán RSA để giải mã chữ ký bằng khóa công khai 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 Hashvalue 1

Kiểm tra file có bị thay đổi nội dung hay không ?

- Từ file được tách ra ta sử dụng hàm băm MD5 mã hóa thành hash value 2

SVTH: D07HTTT1 45
BÁO CÁO THỰC TẬP TỐT NGHIỆP

- Kiểm tra Hash value 1 và Hash value 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 12 : Sơ đồ mô tả quá trình nhận các tệp văn bản

SVTH: D07HTTT1 46
BÁO CÁO THỰC TẬP TỐT NGHIỆP

KẾT LUẬN

Xu hướng ứng dụng công nghệ thông tin (CNTT) để xây dựng thương mại điện tử và
chính phủ điện tử là mô hình phát triển chung của các nước trên thế giới. Ở Việt Nam
Đảng và chính phủ cũng đã từng bước triển khai những chủ trương, chính sách nhằm thúc
đầy ứng dụng CNTT trong các cơ quan nhà nước: hành chính công, thuế, ngân hàng… để
hướng tới phát triển chính phủ điện tử và thương mại điện tử.Tuy còn khá mới mẻ ở Việt
Nam nhưng chữ kí số được xem như là nhân tố quan trọng quyết định đến tương lai của
thương mại điện tử và chính phủ điện tử.

Đã từ lâu, việc ứng dụng CNTT được coi là yếu tố quan trọng giúp doanh nghiệp giữ
vững và mở rộng thị trường, tăng tính cạnh tranh, và thực hiện các thỏa thuận thương mại
trong khu vực và trên thế giới. Tất cả quá trình này đòi hỏi một lượng thông tin trao đổi
rất lớn qua mạng, đồng thời yêu cầu độ an toàn và tính xác thực cao. Chỉ có chữ ký số
mới đảm bảo được sự an toàn này; nó cũng được coi là phương tiện hữu hiệu để các
doanh nghiệp tăng cường sức cạnh tranh thông qua thương mại điện tử và tham gia vào
chính phủ điện tử.

SVTH: D07HTTT1 47
BÁO CÁO THỰC TẬP TỐT NGHIỆP

TÀI LIỆU THAM KHẢO

1. http://vi.wikipedia.org/wiki/
2. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford
Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-
Hill, 2001
3. Phan Đình Diệu. Lý thuyết mật mã & An toàn thông tin. NXB Đại học
Quốc gia Hà Nội , 2002.
4. Dương Anh Đức , Trần Minh Triết . Mã hóa và ứng dụng . Đại học Khoa
học Tự nhiên , Đại học Quốc gia TP Hồ Chí Minh .2005.
5. FIPS . Announcing the Advanced Encryption Standard (AES) . 2001.
6. Mohan Atrey , Ben Hammond , Stephen Paine, Paul Starrett, Stephen Wu .
Digital Signatures, RSA.2002.

SVTH: D07HTTT1 48

You might also like