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

ỨNG DỤNG QUẢN LÝ ĐỀ THI DỰA TRÊN MÃ HÓA IBE TẠI TRƯỜNG ĐẠI HỌC VĂN HÓA DU LỊCH

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

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

NGUYỄN THẾ BÌNH
ỨNG DỤNG QUẢN LÝ ĐỀ THI DỰA TRÊN MÃ HÓA IBE TẠI TRƯỜNG
ĐẠI HỌC VĂN HÓA DU LỊCH
LUẬN VĂN THẠC SĨ KỸ THUẬT
HÀ NỘI - NĂM 2013
LỜI CẢM ƠN
Trên thực tế không có thành công nào mà không gắn liền với những sự
hỗ trợ, giúp đỡ. Trong suốt thời gian từ khi bắt đầu học tập tại trường đến nay,
em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô Khoa sau
đại học trường Học viện Công nghệ Bưu chính Viễn thông Hà Nội đã cùng
i
với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho
chúng em trong suốt thời gian học tập tại trường, và luôn luôn tạo mọi điều
kiện tốt nhất cho chúng em trong suốt quá trình theo học tại. Em xin chân
thành cảm ơn Thầy, Cô và Ban lãnh đạo nhà trường!
Với lòng biết ơn sâu sắc nhất em xin gửi lời cảm ơn tới TS Phạm Thế
Quế, Khoa Công nghệ Thông tin - Học viện Bưu Chính Viễn Thông, là cán
bộ trực tiếp hướng dẫn khoa học cho em. Thầy đã dành nhiều thời gian cho
việc hướng dẫn em cách nghiên cứu, đọc tài liệu, cài đặt các thuật toán và
giúp đỡ em trong việc xây dựng chương trình, em xin chân thành cảm ơn
Thầy!
Và cuối cùng em xin bày tỏ lòng chân thành và biết ơn tới lãnh đạo
khoa Công nghệ Thông tin – Học viện Bưu chính Viễn thông Hà Nội cùng
bạn bè đồng nghiệp đã luôn ở bên cạnh những lúc em khó khăn và tạo điều
kiện thuận lợi giúp em hoàn thành luận văn.
Hà Nội, ngày 25 tháng 11 năm 2013
Học viên

Nguyễn thế bình


MỤC LỤC
Nội dung Trang
LỜI CAM ĐOAN………………………………………………………….
LỜI CẢM ƠN……………………………………………………………
MỤC LỤC…………………………………………………………………
i
ii
iii
ii
DANH MỤC CÁC THUẬT NGỮ, CÁC CHỮ VIẾT TẮT………………
DANH MỤC CÁC BẢNG ………………………………………………
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ…………………………………
LỜI MỞ ĐẦU……………………………………………………………
CHƯƠNG I - HỆ MẬT MÃ KHÓA CÔNG KHAI……………………….
1.1. Tổng quan về mật mã ……………………………………………
1.1.1. Giới thiệu chung về hệ mật mã…………………………………
1.1.2. Các thành phần của một hệ thống mã hoá………………………
1.2. Hệ mật mã khóa công khai………………………………………
1.2.1. Cấu trúc hệ thống mật mã khóa công
khai……………………
1.2.2. Thuật toán mật mã
RSA……………………………………………
1.2.3. Thuật toán trao đổi khoá Diffie-Hellman……………………….
1.2.4. Đánh giá kỹ thuật mật mã bất đối xứng…………………………
1.3. Xác thực thông tin………………………………………………….
1.3.1. Phương pháp xác thực thông tin bằng mật mã khóa công khai…
1.3.2. Phương pháp xác thực thông tin bằng mã xác thực…………
1.3.3. Phương pháp xác thực thông tin bằng hàm
băm……………….
1.4. Hướng phát triển mật mã khóa công khai………………………….

1.4.1. Bảo mật trong điện toán đám mây (cloud computing)
………
1.4.2. Mở rộng mô hình mã
hóa………………………………………….
1.4.3. An toàn trước các tấn công vật lý………………………………
1.4.4. An toàn trước sự tấn công của máy tính lượng tử……………
CHƯƠNG II - HỆ MẬT MÃ DỰA TRÊN ĐỊNH DANH ……………………
v
vii
viii
1
3
3
3
3
5
5
7
11
14
14
14
15
16
17
17
17
19
19


21
21
21
21
23
iii
2.1. Tổng quan mật mã dựa trên định danh…………………………….
2.1.1. Khái niệm mật mã dựa trên định
danh…………………………
2.1.2. Ưu thế IBE trong các ứng dụng thực tế…………………………
2.1.3. Hệ thống nhận dạng IBE………………………………………….
2.2. Lược đồ mã hóa dựa trên định danh IBE…………………………
2.3. Mã hóa dựa trên thuộc tính………………………………………
2.3.1. Khái quát về mã hóa dựa trên thuộc tính……………………….
2.3.2. Mã hóa dựa trên thuộc tính chính sách bản mã (CP-ABE)…
2.3.3. Mã hóa dựa trên thuộc tính chính sách khóa (KP-ABE)……
2.4. Cài đặt (The Implementation)
2.4.1. Các thuật toán sử dụng trong IBE………………………………
2.4.2. Cài đặt……………………………………………………………….
2.5. So sánh IBE và khóa công khai truyền thống ……………………
2.5.1. Đánh giá kỹ thuật mật mã khóa công khai……………………
2.5.2. Sự khác nhau giữa IBE và hệ thống khóa công khai truyền thống…
2.5.3. Lợi ích IBE trong các ứng dụng………………………………….
CHƯƠNG III - ỨNG DỤNG HỆ MÃ HÓA ĐỊNH DANH BẢO MẬT
THÔNG TIN………………………………………………………………
3.1. Bài toán kiểm soát quyền truy cập trong hệ thống bảo mật quản lý đề thi…
3.1.1. Xây dựng hệ thống bảo mật dựa trên
IBE……………………
3.1.2. Các bước thực hiện xây dựng hệ thống bảo mật……………….
3.2. Ứng dụng IBE kiểm soát quyền truy cập trong hệ thống bảo mật quản

lý đề thi trong trường Đại học Văn hóa Thể thao và Du lịch Thanh
Hóa
3.2.1. Mô tả bài
toán
3.2.2. Mô hình hệ thống
3.2.3. Chương trình thử nghiệm
KẾT LUẬN
26
28
28
29
32
33
33
34
37
37
38
39
42
42
42
46
49
49
50
53
55
56
57

iv
DANH MỤC CÁC THUẬT NGỮ, CÁC CHỮ VIẾT TẮT
AES Advanced Encryption Standard Chuẩn mã hoá tiên tiến
ANSI American National Standards
Institude
Viện tiêu chuẩn quốc gia Mỹ
CA Certification Authority Nhà cung cấp chứng thực
CRL Certificate Revocation List Danh sách các chứng thực thu hồi
DES Data Ecryption Standard Chuẩn mã dữ liệu
DNS Domain Name System Hệ thống tên miền
DSA Digital Signature Algorithm Thuật toán chữ ký điện tử
DSS Digital Signature Standard Chuẩn chữ ký điện tử
EDI Electronic Data Interchange Trao đổi dữ liệu điện tử
FIPS Federal Information Processing
Standard
Chuẩn xử lý thông tin liên bang
FTP File Transfer Protocol Giao thức truyền file
HTTP Hyper Text Transport Protocol Giao thức truyền siêu văn bản
IDEA International Data Encryption
Algorithm
Thuật toán mã hoá dữ liệu quốc tế
ISO International Organization for
Standardization
Tổ chức tiêu chuẩn hoá quốc tế
ISP Internet Service Provider Nhà cung cấp dịch vụ Internet
ITU International Telecommunication
Union
Liên minh viễn thông quốc tế
MD5 Message Digest 5
NIST National Institute of Standards and

Technology
Viện quốc gia về chuẩn và công nghệ
OSI Open System Interconnection Kết nối giữa các hệ thống mở
PGP Pretty Good Private
PKI Public Key Infrastructure Cơ sở hạ tầng khoá công khai
RA Registration Authority Nhà quản lý đăng ký
RSA Rivest-Shamir-Aldeman
SET Secure Electronic Transaction Giao dịch điện tử an toàn
SHA Secure Hash Algorithm Thuật toán băm an toàn
TCP/IP Transmission Control Protocol/
Internet protocol
Giao thức điều khiển truyền dẫn/ giao
thức Internet
URL Uniform Resource Locator Bộ định vị tài nguyên
AES Advanced Encryption Standard Chuẩn mã hoá tiên tiến
ANSI American National Standards Viện tiêu chuẩn quốc gia Mỹ
v
Institude
CA Certification Authority Nhà cung cấp chứng thực
CRL Certificate Revocation List Danh sách các chứng thực thu hồi
DES Data Ecryption Standard Chuẩn mã dữ liệu
DNS Domain Name System Hệ thống tên miền
DSA Digital Signature Algorithm Thuật toán chữ ký điện tử
DSS Digital Signature Standard Chuẩn chữ ký điện tử
EDI Electronic Data Interchange Trao đổi dữ liệu điện tử
FIPS Federal Information Processing
Standard
Chuẩn xử lý thông tin liên bang
FTP File Transfer Protocol Giao thức truyền file
HTTP Hyper Text Transport Protocol Giao thức truyền siêu văn bản

IDEA International Data Encryption
Algorithm
Thuật toán mã hoá dữ liệu quốc tế
ISO International Organization for
Standardization
Tổ chức tiêu chuẩn hoá quốc tế
ISP Internet Service Provider Nhà cung cấp dịch vụ Internet
DANH MỤC CÁC BẢNG
Số hiệu
bảng
Tên bảng Trang
1 Bốn thuật toán tạo thành lược đồ IBE 33
2
So sánh hệ thống IBE và hệ thống khóa công
khai truyền thống
39
vi
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Số hiệu hình Tên hình vẽ Trang
1.1 Cấu trúc một hệ thống mật mã quy ước 4
1.2 Cấu trúc hệ thống mật mã bất đối xứng 6
1.3 Sơ đồ mã hóa công khai 11
1.4 Thuật toán trao đổi khoá Diffie-Hellman 12
1.5 Xác thực thông tin bằng mật mã khóa công khai 15
1.6 Xác thực thông tin dùng MAC 16
1.7 Xác thực thông tin dùng hàm băm 17
2.1 “Mã khóa riêng”, “mã khóa công khai”,
“hệ thống bảo mật nhận dạng”
25
2.2 Phương thức “mã khóa công khai” và “chữ ký nhận

dạng”
26
2.3 Mã hoá bằng hệ thống IBE 27
2.4 Giải mã bằng hệ thống IBE 28
3.1 Mô hình hệ thống nhận dạng IBE 45
3.2 Hệ thống mã hoá mô hình bảo mật 46
3.3 Sơ đồ phân tích hệ thống 51
vii
LỜI MỞ ĐẦU
Mã hóa dựa trên định danh (Indetity based encryption -IBE) hiện nay đang được
xem là một công nghệ mật mã mới có nhiều thuận tiện trong thực thi ứng dụng so với
các thuật toán khóa công khai khác. Đối với các hệ mật mã khóa công khai truyền
thống, việc cài đặt là khó khăn và tốn kém, ứng dụng thành công nhất của công nghệ
khóa công khai là việc sử dụng rộng rãi của SSL, nó yêu cầu tương tác tối thiểu với
người sử dụng khi được dùng để xác thực máy chủ và mã hóa các truyền thông với
máy chủ đó. Các ứng dụng mà yêu cầu người sử dụng quản lý hoặc sử dụng các khóa
công khai thì không thành công được như vậy.
IBE là một công nghệ mã hoá khoá công khai, cho phép một người sử dụng
tính khoá công khai từ một chuỗi bất kỳ. Chuỗi này như là biểu diễn định danh của
dạng nào đó và được sử dụng không chỉ như là một định danh để tính khoá công
khai, mà còn có thể chứa thông tin về thời hạn hợp lệ của khoá để tránh cho một
người sử dụng dùng mãi một khoá IBE hoặc để đảm bảo rằng người sử dụng sẽ nhận
được các khoá khác nhau từ các hệ thống IBE khác nhau. Trong chuỗi này có chứa
thông tin là duy nhất đối với mỗi cài đặt IBE cụ thể, chẳng hạn như URL mà định
danh máy chủ được sử dụng trong cài đặt của các hệ thống IBE khác nhau. Khả năng
tính được các khoá như mong muốn làm cho các hệ thống IBE có các tính chất khác
với các tính chất của các hệ thống khoá công khai truyền thống, những tính chất này
tạo ra các ưu thế thực hành đáng kể trong nhiều tình huống. Bởi vậy, có một số ít
tình huống không thể giải quyết bài toán bất kỳ với các công nghệ khoá công khai
truyền thống, nhưng lại có thể giải quyết được với IBE và sử dụng IBE có thể đơn

giản hơn nhiều về cài đặt và ít tốn kém hơn về nguồn lực để hỗ trợ.
IBE không đề xuất bất kỳ khả năng mới nào mà các công nghệ khóa công khai
truyền thống không thể cung cấp nhưng nó cho phép tạo ra các giải pháp để giải quyết
vấn đề khó khăn và tốn kém nếu triển khai bằng các công nghệ trước đây.
1
Đây là lý do để tôi chọn đề tài có tên: ỨNG DỤNG QUẢN LÝ ĐỀ THI DỰA
TRÊN MÃ HÓA IBE TẠI TRƯỜNG ĐẠI HỌC VĂN HÓA DU LỊCH
Nội dung nghiên cứu:
- Nghiên cứu về hệ mật mã khóa công khai truyền thống
- Nghiên cứu hệ mã hóa dựa trên định danh và các ưu điểm của hệ mã hóa này so với
hệ mã hóa công khai truyền thống.
- Ứng dụng mã hóa định danh trong bảo vệ thông tin.
Nội dung luận văn gồm 3 chương:
Chương 1: Tổng quan về hệ mật mã khóa công khai.
Chương 2: Hệ mật mã dưa trên định danh (IBE)
Chương 3: Ứng dụng hệ mã hóa định danh trong bảo vệ thông tin
2
CHƯƠNG I - HỆ MẬT MÃ KHÓA CÔNG KHAI
1.1. Tổng quan về mật mã
1.1.1. Giới thiệu chung về hệ mật mã
Mật mã (Encryption) là một kỹ thuật cơ sở quan trọng trong bảo mật thông tin.
Nguyên tắc của mật mã gia xử lý thông tin một cách hợp lệ mới hiểu được.
Một thực là biến đổi thông tin gốc thành dạng thông tin bí mật mà chỉ có những
thực thể tham thể hợp lệ có thể là một người, một máy tính hay một phần mềm nào đó
được phép nhận thông tin. Để có thể giải mã được thông tin mật, thực thể đó cần phải
biết cách giải mã (tức là biết được thuật tóan giải mã) và các thông tin cộng thêm (khóa
bí mật).
Quá trình chuyển thông tin gốc thành thông tin mật theo một thuật toán nào đó
được gọi là quá trình mã hoá (encryption). Quá trình biến đổi thông tin mật về dạng
thông tin gốc ban đầu gọi là quá trình giải mã (decryption). Đây là hai quá trình không

thể tách rời của một kỹ thuật mật mã bởi vì mật mã (giấu thông tin) chỉ có ý nghĩa khi
ta có thể giải mã (phục hồi lại) được thông tin đó. Do vậy, khi chỉ dùng thuật ngữ mật
mã thì nó có nghĩa bao hàm cả mã hóa và giải mã.
Kỹ thuật mã hoá được chia thành hai loại: mã hoá dùng khoá đối xứng
(symmetric key encryption) và mã hoá dùng khoá bất đối xứng (asymmetric key
encryption) như sẽ trình bày trong các phần tiếp theo.
1.1.2. Các thành phần của một hệ thống mã hoá
Hình 1.1 mô tả nguyên tắc chung của một hệ thống mật mã quy ước. Các thành
phần trong một hệ thống mật mã điển hình bao gồm:
- Plaintext: là thông tin gốc cần truyền đi giữa các hệ thống thông tin
- Encryption algorithm: thuật tóan mã hóa, đây là cách thức tạo ra thông tin mật
từ thông tin gốc.
3
- Key: khóa mật mã, gọi tắt là khóa. Đây là thông tin cộng thêm mà thuật tóan
mã hóa sử dụng để trộn với thông tin gốc tạo thành thông tin mật.
- Ciphertext: thông tin đã mã hóa (thông tin mật). Đây là kết quả của thuật toán
mã hóa.
- Decryption algorithm: Thuật tóan giải mã. Đầu vào của thuật tóan này là thông
tin đã mã hóa (ciphertext) cùng với khóa mật mã. Đầu ra của thuật tóan là thông tin gốc
(plaintext) ban đầu.
Ký hiệu:
P là một tập hữu hạn các bản rõ (plaintext).
C là một tập hữu hạn các bản mã (ciphertext)
K là một tập hữu hạn các khóa. Với mỗi một k∈K
 Có một luật mã hóa e
k
∈ E sao cho e
k
: P → C
 Và một luật giải mã tương ứng d

k
∈ D, sao cho d
k
; C→ P
 sao cho : d
k
(e
k
(x)) = x với mọi x∈P
Bản tin gốc P được mã hóa bởi khóa K
E
tạo nên bản tin mã hóa C. Bản tin
Mã hóa được truyền đi trên một kênh không an toàn hay kênh công khai. Người
nhận hợp pháp sử dụng khóa K
D
để giải mã và thu được bản tin gốc.
Khoá mật mã
(Key)
Khoá mật mã
(Key)
Thông tin đã
được mã hoá
(ciphertext)
Thông tin gốc
(Plaintext)
Thông tin gốc
(Plaintext)
Thuật toán giải

(Decryption

algorithm)
Thuật toán mã
hoá
(Encryption
algorithm)
Hình 1.1: Cấu trúc một hệ thống mật mã quy ước
4
Nếu mã hóa và giải mã sử dụng chung khóa thì hệ mật mã được gọi là hệ mật
mã đối xứng (hay hệ mật mã khóa bí mật). Nếu việc mã hóa và giải mã sử dụng
những khóa khác nhau thì được gọi là hệ mật mã khóa công khai (hay là không đối
xứng). Khóa mã hóa là công khai, khóa giải mã được giữ bí mật. Hệ mật mã khóa
công khai có nhiều ưu điểm hơn so với hệ mật mã đối xứng, có thể ứng dụng cho việc
xác thực, chữ ký điện tử vv … Tuy nhiên nhược điểm của nó là tốc độ chậm nên không
thể sử dụng cho kênh thông tin có dung lượng lớn. Thực tế hiện nay người ta phối hợp
cả hai phương pháp để tận dụng những ưu điểm của từng phương pháp.
1.2. Hệ mật mã khóa công khai
1.2.1. Cấu trúc hệ thống mật mã khóa công khai
Đặc trưng của kỹ thuật mật mã khóa công khai, hay còn gọi là hệ mật mã khóa
bất đối xứng là dùng 2 khóa riêng biệt cho hai quá trình mã hóa và giải mã, trong đó có
một khóa được phổ biến công khai (public key hay PU) và khóa còn lại được giữ bí
mật (private key hay PR). Cả hai khoá đều có thể được dùng để mã hoá hoặc giải mã.
Việc chọn khoá công khai hay khoá bí mật cho quá trình mã hoá sẽ tạo ra hai ứng dụng
khác nhau của kỹ thuật mật mã bất đối xứng:
- Sử dụng khoá công khai để mã hoá và khoá bí mật để giải mã trong các ứng
dụng bảo mật thông tin (Confidentiality).
- Nếu dùng khoá bí mật để mã hoá và khoá công khai để giải mã, có các ứng
dụng xác thực nội dung và nguồn gốc thông tin (Authentication).
Thuật toán mật mã bất đối xứng dựa chủ yếu trên các hàm toán học hơn là dựa
vào các thao tác trên chuỗi bit. Mật mã hóa bất đối xứng còn được gọi bằng một tên
thông dụng hơn là mật mã hóa dùng khóa công khai (Public key Encryption).

Nói chung, mật mã hóa bất đối xứng không phải là một kỹ thuật mật mã an toàn
hơn so với mật mã đối xứng, mà độ an tòan của một thuật toán mã nói chung phụ thuộc
vào 2 yếu tố: Độ dài của khóa và mức độ phức tạp khi thực hiện thuật toán. Hơn nữa,
mặc dù được ra đời sau nhưng không có nghĩa rằng mật mã bất đối xứng hoàn toàn ưu
5
điểm hơn và sẽ được sử dụng thay thế cho mật mã đối xứng. Mỗi kỹ thuật mã có một
thế mạnh riêng và mật mã đối xứng vẫn rất thích hợp cho các hệ thống nhỏ và đơn
giản. Ngoài ra, vấn đề phân phối khóa trong mật mã bất đối xứng cũng được đánh giá
là một trong những vấn đề phức tạp khi triển khai kỹ thuật mật mã này trong thực tế.
Hình 1.2. Cấu trúc của hệ thống mật mã bất đối xứng
Các bước cơ bản của một hệ thống mật mã dùng khóa công khai bao gồm:
Tập
khoá
công
khai
Tập
khoá
công
khai
6
- Mỗi thực thể thông tin (user) tạo ra một cặp khóa (public/private) để dùng cho
việc mã hóa và giải mã.
- Mỗi user thông báo một trong hai khoá của mình cho các user khác biết, khóa
này được gọi là khóa công khai (public key). Khóa còn lại được giữ bí mật, và gọi là
khóa riêng (private key).
- Nếu một user A muốn gửi thông tin cho user B, user A sẽ thực hiện mã hóa
thông tin cần gửi bằng khóa công khai của user B.
- Khi nhận được thông tin đã mã hóa từ user A, user B thực hiện giải mã thông
tin đó bằng khóa riêng của mình. Do khóa riêng không phổ biến công khai nên chỉ có
một mình user B có khả năng giải mã được.

Mật mã hóa bất đối xứng được sử dụng trong các ứng dụng: che giấu thông tin,
tạo chữ ký số (digital signature) và trao đổi khóa trong các thuật toán mật mã đối xứng
(key exchange).
1.2.2. Thuật toán mật mã RSA
RSA là thuật toán mật mã bất đối xứng được xây dựng bởi Ron Rivest, Adi
Shamir và Len Adleman tại viện công nghệ Massachusetts (MIT), do đó được đặt tên
là Rivest - Shamir - Adleman hay RSA. Thuật toán này ra đời năm 1977 và cho đến
nay đã được ứng dụng trong nhiều lĩnh vực. Cũng như các thuật toán mật mã bất đối
xứng khác, nguyên lý của RSA dựa chủ yếu trên lý thuyết số, không dựa trên các thao
tác xử lý bit.
RSA là một thuật toán mật mã khối có kích thước 1024 hoặc 2048 bit. Thông tin
gốc của RSA được xử lý như các số nguyên. Ví dụ, khi chọn kích thước khối của thuật
toán là 1024 bit thì số nguyên này có giá trị từ 0 đến 21024 - 1, tương đương với số
thập phân có 309 chữ số. Chú ý rằng đây là những số nguyên cực lớn, không thể xử lý
được bằng cách sử dụng các cấu trúc dữ liệu có sẵn của các ngôn ngữ lập trình phổ
biến.
Thuật toán RSA được mô tả như sau:
7
1. Để tạo ra một cặp khóa RSA, trước hết, chọn hai số nguyên tố đủ lớn p và q.
Gọi N là tích của p và q (N = pq).
2. Chọn một số e sao cho e và (p-1)(q-1) là hai số nguyên tố cùng nhau. Tìm số
d sao cho ed = 1 mod (p-1)(q-1).
3. Với 3 thành phần còn lại là N, e và d, ta đó:
− Khóa công khai (public key) là tổ hợp (N, e)
− Khóa bí mật (private) là tổ hợp (N, d).
4. Mã hóa một khối thông tin gốc M được thực hiện theo công thức:
C = M
e
mod N (với M là số nguyên nhỏ hơn N)
5. Quá trình giải mã C được thực hiện theo công thức:

M = C
d
mod N
Ví dụ: Cặp số nguyên tố p = 11 và q = 3 được chọn để tạo ra cặp khoá RSA cho
user A.
Khi đó, N = pq = 3*11 = 33
(p-1) (q-1) = (11 – 1) (3 – 1) = 20
Chọn e = 3 thoả điều kiện 3 và 20 là cặp số nguyên tố cùng nhau.
Với e = 3, khi đó để cho đơn giản, chọn d = 7 vì ed = 3*7 = 1 mod 20, là giá trị
nhỏ nhất
Khi đó, xác định được cặp khóa như sau:
Khóa công khai: (N, e) = (33, 3)
Khóa bí mật: (N, d) = (33, 7)
Giả sử, user B muốn gửi thông tin M = 15 cho user A, dựa trên khóa công khai
của A, B thực hiện như sau:
C = M
e
mod N = 15
3
mod 33 = 3375 mod 33 = 9 mod 33.
Khi đó, thông tin mật gửi cho A là C = 9. Và khi nhận được thông tin này, A
giải mã bằng khóa riêng (d = 7) như sau:
M = C
d
mob N = 9
7
mod 33 = 4.782.969 mod 33 = 15 mod 33.
8
Như vậy, thông tin giải mã là M = 15, đúng với thông tin gốc ban đầu.
Tóm lại, thuật toán mật mã RSA được thực hiện gồm 3 quá trình tách rời: tạo

khoá, mã hoá và giải mã được tóm tắt như sau:
Trong thực tế, để đạt được độ an toàn cao, cặp khóa phải được chọn trên các số
p và q đủ lớn (N nhỏ nhất phải là 1024 bit), do vậy, vấn đề thực thi RSA bao gồm các
phép toán lũy thừa trên các số rất lớn. Vấn đề giảm chi phí tính toán và tăng tốc độ
thực hiện thuật toán RSA là một trong những vấn đề quan trọng cần phải giải quyết.
Trên các hệ thống máy tính hiện nay, hiệu suất thực hiện giải thuật RSA là chấp nhận
được.
Độ 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ả) 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 mod n (với n là hợp số): tìm số
1. Tạo khoá:
• Chọn p, q (p và q là số nguyên tố, p ≠ q)
• Tính N = p.q
• Tính φ(N) = (p – 1) (q – 1)
• Chọn e sao ước số chung lớn nhất của e và φ(N) là 1
• Chọn d sao cho e.d mod φ(N) = 1
• Cặp khoá RSA được tạo ra là PU = (N, e), PR = (N, d)
2. Mã hoá:
• C = M
e
mod N (M là số nguyên nhỏ hơn N)
3. Giải mã:
• M = C
d
mod N
9
m sao cho m
e

=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. Trong chương số học chúng ta đã biết 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).
RSA có tốc độ thực hiện chậm hơn đáng kể so với các thuật toán mã hóa đối
xứng. 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.
Số n cần phải có kích thước không nhỏ hơn 512 bít. Năm 2006 hệ mật RSA
được cho là hiệu quả với kích thước n phải từ 1024, khuyến cáo tương lai thì chiều dài
n phải từ 2024 bít.
Để nâng cao tốc độ mã hóa, nên chọn e với giá trị không lớn, thường là 3,7 hay
65537. Các số này khi biểu diễn ở dạng nhị phân chỉ có 2 chữ số 1, nên khi thực hiện
lệnh lũy thừa sẽ giảm đi lệnh nhân.
p và q cần được chọn không quá gần nhau để phòng trường hợp phân tích n
bằng phương pháp phân tích Fermat. Ngoài ra, nếu p-1 hoặc q-1 có thừa số nguyên tố
nhỏ thì n cũng có thể dễ dàng bị phân tích theo phương pháp p-1 Pollaid và vì thế p và
q cũng cần được thử để tránh khả năng này. Có thể chọn như sau: trước tiên tìm số
nguyên tố p
1
sao cho p=2p
1
+1 cũng là nguyên tố, tương tự chọn q

1
số nguyên tố sao
cho q=2q
1
+1 cũng là nguyên tố.
10
Giá trị d cần phải đủ lớn. Năm 1990 Michael J. Wiener đã chứng minh rằng nếu
như
qpq 2<<

3/
4/1
nd <
, thì có phương pháp hiệu quả để tính d theo n và e.
Hình 1.3 : Sơ đồ mã hóa công khai
1.2.3. Thuật toán trao đổi khoá Diffie-Hellman
Diffie-Hellman là một thuật toán dùng để trao đổi khóa (key exchange), không
sử dụng để mật mã hóa dữ liệu. Tuy nhiên, Deffie-Hellman lại có ích trong giai đọan
trao đổi khóa bí mật của các thuật toán mật mã đối xứng. Một vấn đề quan trọng liên
quan đến tính an toàn của các thuật toán mật mã đối xứng là vấn đề thống nhất khoá bí
mật giữa các thực thể thông tin.
Thuật toán trao đổi khoá Diffie-Hellman dựa trên phép logarit rời rạc (discrete
log). Cho trước một số g và x = g
k
, để tìm k, ta đơn giản thực hiện phép logarit: k =
log
g
(x). Tuy nhiên, nếu cho trước g, p và (g
k
mod p), thì quá trình xác định k được thực

hiện theo cách khác với cách ở trên và được gọi là logarit rời rạc. Việc tính logarit rời
rạc nói chung rất phức tạp nhưng vẫn có thể thực hiện được.
Thuật toán Diffie-Hellman khá đơn giản như sau:
11
- Gọi p là một số nguyên tố và g là một cơ số sinh (generator) thoả điều kiện với
mọi x ∈ {1, 2, …, p-1}, ta luôn tìm được số n sao cho x = g
n
mod p.
- Giá trị p và g được phổ biến công khai giữa các thực thể trao đổi khoá. Sau đó
user A tạo ra một số bí mật X
a
< p, tính giá trị Y
a
= (g
Xa
mod p) và gửi cho B. Tương
tự, user B cũng tạo ra một số bí mật X
b
< p, tính giá trị Y
b
= (g
b
mod p) và gửi lại cho
A.
Dựa trên thông tin nhận được từ A, user B xác định được khoá bí mật dùng cho
phiên làm việc bằng cách tính giá trị (g
Xa
mod p)
Xb
= (g

XaXb
mod p). Bằng cách tương
tự, user A cũng xác định được khoá bí mật này bằng cách tính giá trị (g
Xb
mod p)
Xa
=
(g
XaXb
mod p).
Giả sử trong quá trình trao đổi các giá trị (g
Xa
mod p) và (g
Xb
mod p), một người
thứ 3 nào nó bắt được thông tin này thì cũng rất khó xác định được a và b vì độ phức
tạp của phép tóan logarit rời rạc là rất cao.
Chọn số bí mật X
a
< p
Tính Y
a
= (g
Xa
mod p) và
gởi cho B
Tính K = (Y
b
)
Xa

mod p
Chọn số bí mật X
b
< p
Tính Y
b
= (g
Xb
mod p) và
gởi cho A
Tính K = (Y
a
)
Xb
mod p
User A User B
Hình 1.4: Thuật toán trao đổi khoá Diffie-Hellman
12
Ví dụ:
Giả sử p = 353 và g = 3. Có thể kiểm chứng rằng với một số nguyên n bất kỳ 0
< n < 353, luôn xác định được một số nguyên i thoả mãn 3
i
= n.
Giả sử, user A chọn giá trị bí mật X
a
= 97 và user B chọn giá trị bí mật X
b
=
233. Khi đó:
User A tính được Y

a
= (3
97
mod 353) = 40 và gửi cho B.
User B tính được Y
b
= (3
233
mod 353) = 248 và gửi cho A.
User A tính được khoá bí mật K = (Y
b
)
Xa
mod 353=248
97
mod 353= 160
User B tính được khoá bí mật K =(Y
a
)
Xb
mod 353= 40
97
mod 353 = 160
Tính an toàn của Diffie-Hellman dựa trên độ phức tạp của phép toán logarit rời
rạc. Nói chung, việc xác định các giá trị X
a
, X
b
từ các giá trị p, g, Y
a

và Y
b
là không thể
thực hiện được trên các số nguyên đủ lớn. Tuy nhiên, thuật toán này không ngăn chặn
được các tấn công theo phương thức xen giữa Man-In-The-Middle (MITM) như sau:
- Để thực hiện tấn công MITM trên kết nối giữa user A và user B, user C cũng
chọn cho mình hai số nguyên X
C1
và X
C2
thoả điều kiện X
C1
< p và X
C2
< p, sau đó cũng
tính hai giá trị tương ứng Y
C1
= (g
Xc1
mod p) và Y
C2
= (g
Xc2
mod p).
- Khi user A gửi Y
a
cho user B, user C sẽ chặn lấy thông tin này, đồng thời mạo
danh A để gửi cho B giá trị Y
C1
. User B xác định khoá K

1
dựa trên Y
C1
, và gửi lại cho
A giá trị Y
b
. User C lại chặn lấy giá trị này và mạo danh B để gửi cho A giá trị Y
C2
.
- User A xác định khoá K
2
dựa trên Y
C2
. Bắt đầu từ đây, các thông tin trao đổi
giữa A và B đều được C chặn bắt và thay đổi bằng cách sử dụng cặp khoá K
1
và K
2
.
13
Như vậy, thuật toán Diffie-Hellman không giải quyết được vấn đề này do không
có cơ chế xác thực giữa các thực thể trao đổi khoá. Điểm yếu này được khắc phục bằng
cách sử dụng kết hợp với các thuật toán xác thực như sẽ trình bày ở phần kế tiếp.
Ngoài hai thuật toán RSA và Diffie-Hellman, một số thuật toán khác cũng được
phát triển dựa trên nguyên lý sử dụng một cặp khoá công khai và bí mật. Elliptic-Curve
Cryptography (ECC) là một giải thuật mới đang được thử nghiệm và hứa hẹn nhiều ưu
điểm so với RSA như độ phức tạp tính toán giảm trong khi tính an toàn vẫn được đảm
bảo. ECC thích hợp với các ứng dụng chạy trên các thiết bị có năng lực xử lý hạn chế
chẳn hạn như các thiết bị nhúng (embded devices).
1.2.4. Đánh giá kỹ thuật mật mã bất đối xứng

Kỹ thuật mật mã bất đối xứng hòan toàn có thể đáp ứng được những yêu cầu về
bảo mật hệ thống như trong kỹ thuật mật mã đối xứng, mặc dù tốc độ thực hiện của mã
bất đối xứng thường thấp hơn do bản chất thuật toán dựa trên các thao tác số học chứ
không dựa trên các thao tác xử lý bit. Hơn nữa, mã bất đối xứng chỉ phù hợp với việc
thực thi bằng phần mềm. Mật mã bất đối xứng đảm bảo được 2 yêu cầu cơ bản của
thông tin là tính bí mật và tính toàn vẹn. Kỹ thuật mật mã bất đối xứng có 2 ưu điểm so
với mã đối xứng:
1. Hai thực thể thông tin không cần thực hiện thủ tục trao đổi khóa trước khi bắt
đầu làm việc.
2. Bên cạnh công dụng đảm bảo tính tòan vẹn của dữ liệu, mật mã bất đối xứng
(khi được sử dụng cho mục đích xác thực) còn đảm bảo được tính không thể phủ nhận
(non-repudiation) của thông tin.
1.3. Xác thực thông tin
Xác thực thông tin (message authentication) là một cơ chế được ứng dụng trong
xử lý thông tin với mục đích:
14
- Đảm bảo nội dung thông tin trao đổi giữa các thực thể là chính xác, đảm bảo
tính toàn vẹn về nội dung .
- Đảm bảo đối tượng tạo ra thông tin (nguồn gốc thông tin) đúng là đối tượng
hợp lệ đã được khai báo (đảm bảo tính toàn vẹn về nguồn gốc thông tin).
1.3.1. Phương pháp xác thực thông tin bằng mật mã khóa công khai
Nguyên tắc của mật mã là chỉ có những đối tượng hợp lệ mới khôi phục được
thông tin gốc từ thông tin mật. Có thể sử dụng nguyên tắc này để xác thực thông tin
như sau:
Thực thể gửi thông tin thực hiện mã hóa dùng khóa bí mật (PR) thay vì dùng
khóa công khai. Khối thông tin mật tạo ra có thể được giải mã bởi bất kỳ đối tượng nào
biết khóa công khai của thực thể gửi. Tuy nhiên, nếu quá trình giải mã thành công, đối
tượng nhận thông tin có thể chắc chắn rằng thông tin nhận được là đúng và chính đối
tượng gửi hợp lệ đã gửi thông tin này, bởi vì chỉ có đối tượng đó mới có khóa riêng
PR. Phương pháp xác thực bằng mật mã dựa hoàn toàn vào độ tin cậy của khóa bí mật.

1.3.2. Phương pháp xác thực thông tin bằng mã xác thực
Nơi gửi thông tin Nơi nhận thông tin
Hình 1.5: Xác thực thông tin bằng mật mã khóa công khai
C
M: thông tin gốc E: thuật tóan mã hóa D: Thuật tóan giải mã
C: Thông tin mật PRa: Khóa bí mật của bên gửi.
PUa: Khóa công khai của bên gửi
15
Mã xác thực MAC (Message Authentication Code) được sinh ra từ một khối
thông tin gốc có độ dài bất kỳ và một khóa bí mật. Kích thước của MAC là cố định,
không phụ thuộc vào kích thước của khối dữ liệu gốc và thường nhỏ hơn dữ liệu gốc.
Đối tượng gửi sẽ gửi kèm giá trị MAC đi cùng với thông tin gốc. Phía nhận sau khi
nhận được thông tin gốc cùng với giá trị MAC gửi kèm sẽ thực hiện thao tác tạo ra giá
trị
MAC mới từ thông tin gốc cùng với khóa bí mật đã thống nhất giữa hai bên.
Nếu giá trị MAC vừa tạo ra giống với giá trị MAC nhận được từ phía gửi, phía nhận có
thể chắc chắn rằng thông tin gốc không bị thay đổi trong quá trình truyền.
Việc dùng MAC để xác thực thông tin dựa vào hai cơ sở:
- Ứng với một khối thông tin gốc M và một khóa bí mật K, hàm C chỉ tạo ra duy
nhất một mã xác thực MAC.
- Chỉ có phía gửi và phía nhận hợp lệ mới được biết khóa K.
Nơi gửi thông tin Nơi nhận thông tin
Mã xác thực (MAC)
M: thông tin gốc C: Hàm tạo mã xác thực
K: Khóa bí mật dùng chung giữa bên gởi và bên nhận
| |: Nối mã xác thực vào thông tin gốc
Hình 1.6: Xác thực thông tin dùng MAC
16
Có hai kỹ thuật tạo ra mã xác thực MAC: kỹ thuật thứ nhất dùng cơ chế mật mã
khối (Cipher Block Chaining) và được gọi là CMAC hay CBC-MAC. Kỹ thuật thứ hai

dựa trên các hàm băm bảo mật và được gọi là HMAC.
Mã xác thực MAC được ứng dụng trong các trường hợp thông tin chỉ yêu cầu
đảm bảo tính xác thực mà không cần đảm bảo tính bí mật.
1.3.3. Phương pháp xác thực thông tin bằng hàm băm
Như mã xác thực MAC, hàm băm bảo mật (secure hash function) cũng tạo ra
một khối thông tin ngắn có độ dài xác định gọi là mã băm (hash code) từ một khối
thông tin gốc có độ dài bất kỳ. Tuy nhiên, khác với MAC, hàm băm chỉ dựa vào thông
tin gốc để tạo ra mã băm mà không dùng thêm bất kỳ khóa bí mật nào. Do vậy, để có
thể sử dụng như một cơ chế xác thực thông tin, hàm băm phải được dùng kèm với một
thuật tóan mật mã nào đó (đối xứng hoặc bất đối xứng). Hình 1.7 trình bày một ứng
dụng điển hình của hàm băm trong xác thực thông tin. Theo cơ chế này, mã băm sau
khi được tạo ra sẽ được mã hóa bằng một thuật tóan mật mã đối xứng với khóa bí mật
K chỉ có bên gửi và bên nhận biết. Đọan mã băm đã được mật mã hóa được gửi đi kèm
với thông tin gốc và quá trình kiểm tra ở phía nhận cũng được tiến hành theo trình tự
ngược lại, tức là giải mã đọan mã băm bằng khóa bí mật, sau đó tạo ra mã băm mới từ
thông tin gốc và so sánh hai đọan mã băm.

Nơi gửi thông tin Nơi nhận thông tin
Mã băm đã được mã hóa
So sánh
M: thông tin gốc H: hàm băm E: thuật tóan mã hóa
D: thuật tóan giải mã K: khóa bí mật dùng chung giữa phía gởi và phía
nhận.
| |: nối mã băm đã được mã hóa vào thông tin gốc
Hình 1.7: Xác thực thông tin dùng hàm băm
17
Có nhiều cách áp dụng các thuật toán mật mã vào hàm băm để xác thực thông tin: dùng
mã đối xứng hoặc bất đối xứng, chỉ mã hóa mã băm hoặc mã hóa cả thông tin gốc và
mã băm, có thể tổ hợp nhiều cách trên lại với nhau.
Ngoài ứng dụng xác thực thông tin, hàm băm còn được dùng trong nhiều ứng

dụng khác.
1.4. Hướng phát triển mật mã khóa công khai
1.4.1. Bảo mật trong điện toán đám mây (cloud computing)
Điện toán đám mây cho phép lưu trữ những khối lượng thông tin khổng lồ trên
mạng và thực hiện các thao tác trên nó một cách dễ dàng. Nó có thể giúp giải quyết
những bài toán mà trước đây khó có thể giải quyết trên mạng máy tính mang tính chất
cục bộ. Tuy nhiên, điều đó mang tới một thách thức vô cùng lớn về tính bảo mật. Có
hai điều có vẻ như mâu thuẫn nhau: lưu trữ dữ liệu lớn trên các hệ thống xa lạ rõ ràng
rất dễ bị đánh cắp thông tin, nhưng nếu ta hóa toàn bộ dữ liệu thì sẽ khó có thể tận
dụng sức mạnh của tính toán đám mây để thao tác dữ liệu đó.
Nhưng gần đây, vấn đề tưởng khó có thể giải quyết này đã có hy vọng, với công
trình của Gentry năm 2009 về mật mã đẳng cấu theo cả phép nhân và phép cộng (fully
homomorphic encryption). Hệ mã này cho phép, từ hai bản mã của hai bản rõ m và m’,
có thể tính được bản mã nhân của mm’ và bản mã cộng của m+m’. Vấn đề với bề
ngoài đơn giản nhưng chứa đựng không ít nghịch lý trong đó: hệ mã vừa phải đảm bảo
an toàn cho dữ liệu (không thể biết thông tin về bản rõ m, m’), mà lại vẫn thao tác được
trên dữ liệu đó. Và cũng với bề ngoài giản đơn như vậy, nó lại mang đến một ý nghĩa
rất bao quát: do mọi tính toán đều có thể qui về các phép toán cơ bản là cộng và nhân,
một hệ mã như thế sẽ cho khả năng làm mọi tính toán trên dữ liệu được mã hóa. Điều
đó có nghĩa là có thể để tất cả dữ liệu bảo mật trên những máy mạng không an toàn mà
vẫn có thể tận dụng được sức tính toán lớn của điện toán đám mây để thao tác trên dữ
liệu được mã hóa. Tuy nhiên, hiện tại, hệ mã Gentry và một số hệ mã cải tiến còn có
18

×