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

Mật mã khóa công khai và ứng dụng

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 (2.37 MB, 91 trang )

MỤC LỤC
MỤC LỤC ........................................................................................................... 1
LỜI CẢM ƠN ...................................................................................................... 4
LỜI CAM ĐOAN ................................................................................................ 5
DANH MỤC THUẬT NGỮ VIẾT TẮT ............................................................ 6
DANH MỤC HÌNH VẼ ...................................................................................... 8
PHẦN MỞ ĐẦU ............................................................................................... 10
Chƣơng 1: Tổng quan về mật mã ................................................................... 12
1.

Khái niệm mật mã .................................................................................. 12

2.

Mật mã khóa đối xứng ........................................................................... 14

3.

4.

5.

2.1.

Giới thiệu......................................................................................... 14

2.2.

An toàn lý tƣởng. ............................................................................ 15

2.3.



An toàn trƣớc tấn công lựa chọn bản rõ ......................................... 17

2.4.

Mật mã khối .................................................................................... 18

2.5.

Lƣợc đồ CPA – an toàn .................................................................. 19

Mã xác thực thông điệp ......................................................................... 20
3.1.

Giới thiệu......................................................................................... 20

3.2.

Xác thực cho thông điệp dài ........................................................... 22

3.3.

Kết hợp tính bí mật với tính toàn vẹn và xác thực. ........................ 24

Mật mã khóa công khai.......................................................................... 24
4.1.

Khái niệm ........................................................................................ 24

4.2.


Mã hóa RSA .................................................................................... 26

4.3.

Mã hóa El Gamal ............................................................................ 28

4.4.

Mã hóa lai ........................................................................................ 30

Chữ ký điện tử........................................................................................ 31
5.1.

Khái niệm ........................................................................................ 31

5.2.

Chữ ký số ........................................................................................ 32

1


6.

Kết luận chƣơng. .................................................................................... 36

Chƣơng 2: Hạ tầng khóa công khai ................................................................ 37
1.


2.

3.

4.

Chứng thƣ số .......................................................................................... 37
1.1.

Giới thiệu......................................................................................... 37

1.2.

Chứng thƣ khóa công khai X509. ................................................... 39

1.3.

Quy trình cấp chứng thƣ số............................................................. 43

1.4.

Thu hồi chứng thƣ số ...................................................................... 44

1.5.

Chính sách chứng thƣ ..................................................................... 45

Các thành phần của PKI ........................................................................ 46
2.1.


Giới thiệu......................................................................................... 46

2.2.

Thành phần của PKI........................................................................ 46

2.3.

Chức năng cơ bản của PKI ............................................................. 49

2.4.

Kiến trúc hệ thống PKI ................................................................... 53

Hạ tầng khóa công kha EJBCA ............................................................. 59
3.1.

Giới thiệu......................................................................................... 59

3.2.

Nhận xét về EJBCA ........................................................................ 60

3.3.

Mô hình lôgic .................................................................................. 62

3.4.

Một số mô hình triển khai ............................................................... 63


3.5.

Cấp phát chứng thƣ trên EJBCA .................................................... 64

Kết luận chƣơng ..................................................................................... 66

Chƣơng 3: Ứng dụng....................................................................................... 67
1.

Bài toán xác thực vận đơn Viettel Post ................................................. 67

2.

Kiến trúc hệ thống.................................................................................. 68

3.

2.1.

Thành phần hệ thống....................................................................... 68

2.2.

Các tác nhân tham gia hệ thống ...................................................... 69

2.3.

Luồng ký trên hệ thống ................................................................... 70


Cài đặt thử nghiệm ứng dụng ................................................................ 73
3.1.

Cài đặt Root CA EJBCA. ............................................................... 74

2


3.2.
4.

Cài đặt mô đun ký ........................................................................... 76

Kết luận chƣơng ..................................................................................... 77

KẾT LUẬN ....................................................................................................... 78
TÀI LIỆU THAM KHẢO ................................................................................. 79
Phụ lục 1: Cài đặt EJBCA ................................................................................. 80
Phụ lục 2: Chức năng cơ bản của EJBCA......................................................... 87
1.

Các giao diện web .................................................................................. 87

2.

Các bƣớc tạo CA và thực thể cuối ......................................................... 88

3.

Khai báo chứng thƣ ngƣời dùng ............................................................ 91


3


LỜI CẢM ƠN
Tôi xin chân thành cảm ơn các thầy cô giáo đã tận tình hƣớng dẫn, giảng dạy
trong suốt quá trình học tập ở trƣờng Đại học Bách khoa Hà Nội.
Xin chân thành cảm ơn thầy giáo hƣớng dẫn TS Trần Vĩnh Đức đã tận tình,
chu đáo hƣớng dẫn tôi thực hiện luận văn này.
Mặc dù đã có nhiều cố gắng để thực hiện luận văn một cách hoàn chỉnh nhất.
Song do kiến thức và kinh nghiệm của tôi còn hạn chế nên không thể tránh khỏi
những thiếu sót nhất định mà bản thân chƣa thấy đƣợc. Tôi rất mong nhận đƣợc sự
đóng góp của quý thầy, cô giáo và và các bạn đồng nghiệp để luận văn đƣợc hoàn
chỉnh hơn.
Tôi xin chân thành cảm ơn!
Hà Nội, ngày 21 tháng 10 năm 2016.
Học viên

Nguyễn Nam Thanh

4


LỜI CAM ĐOAN
Tôi xin cam đoan số liệu và kết quả nghiên cứu trong luận văn này là trung
thực và chƣa hề đƣợc sử dụng để bảo vệ một học vị nào. Mọi sự giúp đỡ cho việc
thực hiện luận văn này đã đƣợc cảm ơn và các thông tin trích dẫn trong luận văn đã
đƣợc chỉ rõ nguồn gốc rõ ràng và đƣợc phép công bố.

Hà Nội, ngày 21 tháng 10 năm 2016

Học viên

Nguyễn Nam Thanh

5


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

Advandced Encryption Standard

APKI

Architecture for Public-Key Infrastructure

CA

Certificate Authority

CRL

Certifiate Revocation List

DES

Data Encrytion Standard

DSA


Digital Signature Algorithm

DSS

Digital Signature Standard

IETF

Internet Engineering Task Force

LDAP

Lightweight Directory Access Protocol

MAC

Message Authentication Code

MD2, 4,5

Message Digest 2,4,5

NIST

National Institute of Standards and Technology

NSA

National Security Agency


PEM

Privacy Enhanced Mail

PGP

Pretty Good Privacy

RA

Registration Authority

PKCS

Public Key Cryptography Standards

PKI

Public Key Infrastructure

PKIX

Public Key Infrastructure X.509 group

RFC

Request For Comments

RSA


Rivest Shamir Adleman

SCEP

Simple Certificate Enrollment Protocol
6


SET

Secure Electronic Transactions

SHA

Secure Hash Algorithm

SPKI

Simple Public Key Infrastructure

SSL

Secure Socket Layer

TSL

Transport Layer Security

7



DANH MỤC HÌNH VẼ
Hình 1: Ví dụ truyền tin đơn giản ..................................................................... 12
Hình 2: Mô hình mô tả sử dụng khóa đối xứng ................................................ 14
Hình 3: Nguyên lý hoạt động lƣợc đồ mã hóa đối xứng .................................. 15
Hình 4: Mô hình sử dụng mật mã khóa công khai............................................ 26
Hình 5: Ví dụ một chứng thƣ số - chứng thƣ của máy chủ mail Viettel. ......... 38
Hình 6: Khuôn dạng chứng thƣ X509 v3 .......................................................... 39
Hình 7: Ví dụ thông tin chi tiết của chứng thƣ ................................................. 43
Hình 8: Luồng giao tiếp giữa các thành phần trong PKI ................................. 47
Hình 9: Đƣờng dẫn chứng thƣ chéo .................................................................. 52
Hình 10: Mô hình CA đơn................................................................................. 53
Hình 11: Mô hình phân cấp ............................................................................... 55
Hình 12: Mô hình mắt lƣới ................................................................................ 56
Hình 13: Mô hình Hub và Spoke (Bridge CA) ................................................. 57
Hình 14: So sánh EJBCA và OpenCA .............................................................. 61
Hình 15: Mô hình kiến trúc logic EJBCA......................................................... 62
Hình 16: Mô hình triển khai EJBCA đơn node ................................................ 63
Hình 17: Mô hình RootCA ofline và các SubCAs............................................ 64
Hình 18: Biểu đồ phân rã chức năng EJBCA Web GUI .................................. 64
Hình 19: Luồng tạo thực thể cuối, cấp chứng thƣ ............................................ 66
Hình 20: Đề xuất mô hình triển khai hạ tầng khóa công khai tại Viettel Post . 68
Hình 21: Biểu đồ use chính trong hệ thống ...................................................... 70
Hình 22: Luồng ký sử dụng SIM CA ................................................................ 71
Hình 23: Luồng ký trên thiết bị ký .................................................................... 72
Hình 24: Luồng ký sử dụng USB ...................................................................... 73
Hình 25: Thông tin chứng thƣ Root CA ........................................................... 74
Hình 26: Ví dụ khóa bí mật ở dạng rõ(encode Base64) ................................... 75
Hình 27: Ví dụ chứng thƣ của khách hàng sinh bởi hệ thống. ......................... 75
8



Hình 28: Ví dụ chứng thƣ của khách hàng ....................................................... 76
Hình 29: Ví dụ ký và xác nhận văn bản sử dụng chứng thƣ sinh bởi hệ thống76
Hình 30: Cài đặt biến môi trƣờng ..................................................................... 81
Hình 31: Ví dụ cấu hình instal.properties ......................................................... 83
Hình 32: Ví dụ cấu hình web.properties ........................................................... 83
Hình 33: EJBCA trên windows 7 ...................................................................... 85
Hình 34: EJBCA trên máy ảo linux .................................................................. 86
Hình 35: Giao diện Administration của supper admin ..................................... 87
Hình 36: Giao diện Administration của RA Admin ......................................... 87
Hình 37: Giao diện public web ......................................................................... 88
Hình 38: Create a Certificate Profile ................................................................. 88
Hình 39: Create the Certificate Authority ......................................................... 89
Hình 40: Create an End Entity Profile .............................................................. 89
Hình 41: Add End Entity ................................................................................... 90
Hình 42: Ví dụ khai báo chứng thƣ cho khách hàng ........................................ 91
Hình 43: Ví dụ khai báo chứng thƣ cho nhân viên ........................................... 91

9


PHẦN MỞ ĐẦU
Ngày nay, với sự bùng nổ của các ứng dụng Internet nhƣ dịch vụ mạng xã hội,
thƣ điện tử, dịch vụ web, thƣơng mại điện tử … thì vấn đề an toàn thông tin trở nên
vô cùng cấp thiết. Theo thống kê của VNCERT, xu hƣớng tấn công mạng đang
ngày càng phức tạp và phổ biến: trong năm 2015, đã có 4484 sự cố tấn công lừa
đảo, 6122 sự cố thay đổi giao diện, 14115 sự cố về mã độc.
Mật mã khóa công khai là cơ sở để xây dựng an toàn thông tin cho Internet. Ví
dụ, giao thức an toàn sử dụng phổ biến nhất hiện nay SSL/TLS sử dụng kết hợp

nhiều kỹ thuật của mã khóa công khai: trao đổi khóa Diffie Hellman, chữ ký số,
chứng thƣ số… Ngoài ra sự phát triển mật mã khóa công khai đem đến rất nhiều
giao thức tiện lợi mới cho ngƣời dùng nhƣ thanh toán online, tiền điện tử, ví điện tử,
chữ ký điện tử…
Nhận thấy tầm quan trọng của các ứng dụng mật mã khóa công khai tác giả đã
chọn đề tài: Mật mã khóa công khai và ứng dụng để nghiên cứu và phát triển các kỹ
năng cần thiết cho công việc hiện tại. Cụ thể tại Tổng Công Ty Viettel Post –
Viettel Group (VTP), mặc dù đã có hệ thống quản lý vận đơn. Tuy nhiên, quy trình
tiếp nhận và xử lý vận đơn còn nhiều bất cập nhƣ: chƣa có cơ chế xác thực khách
hàng, xác nhận vận đơn đảm bảo an toàn và tin cậy. Các khâu xác thực này phải
thực hiện thủ công, ngay cả với các khách hàng thân thiết (nhóm khách hàng đem
lại 70% doanh thu cho VTP).
Nhằm tối ƣu hóa quy trình sản xuất kinh doanh tại Viettel Post, luận văn đề
xuất mô hình tích hợp cơ chế xác thực khách hàng, đảm bảo bí mật và toàn vẹn
thông tin vận đơn, hỗ trợ cơ chế xác thực trực tuyến nhanh chóng, tiện lợi nhằm tin
học hóa quy trình tiếp nhận và xử lý vận đơn phục vụ nhóm khách hàng thân thiết.
Luận văn nghiên cứu về mật mã khóa công khai và ứng dụng. Cụ thể, ứng
dụng mật mã khóa công khai trong hệ thống quản lý vận đơn của Viettel Post nhằm
xác thực khách hàng, bảo mật thông tin vận đơn.

10


Về cấu trúc, luận văn đƣợc tổ chức thành 3 chƣơng và phụ lục. Chƣơng 1 trình
bày tổng quan về mật mã: mã hóa đối xứng, mã hóa công khai, hàm băm, MAC và
chữ ký số. Chƣơng 2 đƣa ra khái niệm chứng thƣ số, đồng thời nghiên cứu về PKI
và tìm hiểu mã nguồn mở EJBCA. Chƣơng cuối cùng đề xuất kiến trúc tích hợp chữ
ký số vào hệ thống thông tin của Viettel Post nhằm đáp ứng nghiệp vụ xác thƣc
trong hệ thống. Các phần phụ lục mô tả cách thức cài đặt và thao tác với EJBCA.


11


Chương 1: Tổng quan về mật mã
Khái niệm mật mã

1.

Mật mã là một lĩnh vực rộng lớn, giải quyết các vấn đề đa dạng nhƣ tiền điện
tử, xác thực từ xa, ngăn ngừa lỗi trong môi trƣờng phân tán… Luận văn trọng tâm
nghiên cứu các khía cạnh của mật mã liên quan đến các phƣơng pháp kỹ thuật đảm
bảo an toàn và bảo mật trong quá trình truyền tin hay nói ngắn gọn là đảm bảo
truyền thông an toàn. Cụ thể, truyền thông an toàn bao gồm các mục tiêu chính: bảo
mật, toàn vẹn, và xác thực dữ liệu truyền. Những thuật ngữ trên có thể đƣợc minh
họa qua một ví dụ đơn giản là khi ngƣời dùng Alice muốn gửi một thông điệp M tới
ngƣời dùng Bob thông qua một kênh liên lạc chung, giả định rằng trên kênh liên lạc
này có thể có một kẻ tấn công Eve. Lợi dụng kênh liên lạc chung, Eve có thể nghe
trộm thông điệp

, thay đổi nội dung

, hoặc giả mạo Alice gửi tin cho Bob...

Luận văn sẽ sử dụng các danh xƣng trong ví dụ này để gọi tên các bên tham gia quá
trình truyền thông.

Message
(m)

Alice


Bob

Eve

Hình 1: Ví dụ truyền tin đơn giản

12


Hiểu một cách đơn giản, mật mã bao gồm các phƣơng pháp kỹ thuật nhằm
ngăn chặn Eve thực hiện các hành vi nêu trên. Cụ thể hơn trong ví dụ này là kỹ
thuật đảm bảo bí mật nhằm ngăn chặn hành vi nghe trộm thông điệp M, kỹ thuật
đảm bảo toàn vẹn giữ liệu giúp Bob có thể phát hiện đƣợc hành vi thay đổi nội dung
M, kỹ thuật thực hiện xác thực giúp Bob phát hiện đƣợc các thông điệp từ ngƣời
gửi.
Nhằm đáp ứng các mục tiêu bảo mật, toàn vẹn và xác thực, các nhà nghiên
cứu mật mã đã đƣa ra hai lý thuyết về các thiết lập ban đầu cho các bên giao tiếp
(Alice, Bob) bao gồm mật mã khóa đối xứng và mật mã khóa công khai.
Mật mã khóa đối xứng (hay còn có các tên gọi nhƣ “mật mã khóa chia sẻ”,
“mật mã khóa cá nhân”, “mật mã khóa bí mật”) là mật mã đƣợc tin tƣởng sử dụng
duy nhất cho đến tận giữa những năm 1970 (trƣớc khi lý thuyết Mật mã khóa công
khai ra đời). Trong lý thuyết này Alice và Bob cùng chia sẻ thông tin về khóa bí mật
trƣớc khi thực hiện giao tiếp và đảm bảo rằng Eve (kẻ tấn công) không biết đƣợc
thông tin về khóa bí mật này. Khóa bí mật sẽ đƣợc dùng để đảm bảo an toàn trong
các liên lạc sau đó giữa Alice và Bob. Kỹ thuật về bảo mật trong lý thuyết này là kỹ
thuật mã hóa khóa đối xứng. Kỹ thuật đảm bảo xác thực và toàn vẹn dữ liệu trong
mật mã khóa đối xứng là mã xác thực thông điệp (Message Authentication Code MAC).
Mật mã khóa công khai (hay còn gọi là “mật mã khóa phi đối xứng”) đƣợc đề
xuất bởi Diffie – Hellman năm 1976. Trong mật mã này, mỗi bên tham gia giao tiếp

sẽ sinh ra một cặp gồm khóa công khai (public key) và khóa bí mật (private key).
Khóa công khai đƣợc công bố rộng rãi cho các bên (không ngoại trừ Eve). Bên sinh
khóa có thể dùng cặp khóa để đóng vai trò một ngƣời nhận nhằm chắc chắn rằng
thông điệp nhận là bí mật nhờ lƣợc đồ mã hóa khóa công khai, hoặc đóng vai trò
một ngƣời gửi để cung cấp thông tin toàn vẹn và xác thực nhờ lƣợc đồ chữ ký số
(Digital Signature Schema).

13


Bảng sau đây liệt kê các thuật ngữ trong mật mã sẽ trình bày trong chƣơng 1
này:
Tính bí mật
Mật mã khóa đối xứng

Tính xác thực và toàn vẹn

Lƣợc đồ mã hóa khóa bí Mã xác thực thông điệp
mật

Mật mã khóa công khai

Lƣợc dồ mã hóa khóa Chữ ký số
công khai

2.

Mật mã khóa đối xứng

2.1. Giới thiệu.

Lƣợc đồ mã hóa khóa đối xứng bao gồm một cặp thuật toán
là thuật toán mã hóa với đầu vào gồm khóa

và thông điệp

(đƣợc gọi là thông

điệp rõ hay bản rõ), đầu ra là bản mã hóa của thông điệp đầu vào, ký hiệu là
là thông điệp mã hóa hay bản mã).
khóa

và bản mã , đầu ra là thông điệp

.

(gọi

là thuật toán giải mã nhận đầu vào gồm
. Để đảm bảo tính đúng đắn của lƣợc đồ

, với mọi k trong tập dữ liệu khóa,

cần thỏa mãn công thức:
và m trong tập dữ liệu thông điệp.
Trong mọi trƣờng hợp, ta yêu cầu hàm
với mỗi thông điệp

phải có tính ngẫu nhiên: đảm bảo

khi đƣợc mã hóa bởi các khóa khác nhau trong tập dữ liệu


khóa sẽ cho ra các bản mã khác nhau.

Hình 2: Mô hình mô tả sử dụng khóa đối xứng

14


k

k

Enc

Dec

Message
(m)

Message
(m)

Alice

Ciphertext
(c)

Ciphertext
(c)


Bob

Eve

Hình 3: Nguyên lý hoạt động lược đồ mã hóa đối xứng
Lƣợc đồ mã hóa khóa đối xứng hoạt động nhƣ sau: một khóa k đƣợc chia sẻ
giữa cả Alice và Bob. Trƣờng hợp Alice muốn gửi thông điệp m cho Bob, đầu tiên
cô ấy sẽ mã hóa thông điệp bằng các tính toán bản mã c của thông điệp
toán mã hóa

nhờ thuật

với khóa k. Bản mã c đƣợc gửi cho Bob qua kênh chung. Khi Bob

nhận đƣợc bản mã, anh ta sẽ khôi phục lại thông điệp m nhờ thuật toán giải mã
cùng khóa k.
Lƣợc đồ mã hóa khóa đối xứng còn đƣợc sử dụng để đảm bảo bí mật trong lƣu
trữ dữ liệu. Ví dụ, trƣờng hợp Alice muốn lƣu trữ một tệp tin quan trọng trong ổ
cứng bằng mật khẩu để đảm bảo chỉ Alice có thể xem lại vào ngày hôm sau. Điều
này thể hiện trong lƣợc đồ khóa đối xứng nhƣ sau: Alice của ngày hôm nay đóng
vai trò nhƣ Alice trong ví dụ trƣớc, còn Alice của ngày hôm sau đóng vai trò nhƣ
Bob, mật khẩu đóng vai trò nhƣ khóa , tệp tin đóng vai trò nhƣ thông điệp

,ổ

cứng lƣu dữ liệu đóng vai trò nhƣ kênh chung.
2.2. An toàn lý tưởng.
Một mục tiêu của lƣợc đồ mã hóa khóa đối xứng là đảm bảo thông điệp
bí mật với những kẻ tấn công nhƣ Eve, dù cho Eve biết những bản mã


15



nhƣng


không biết khóa . Vậy làm sao để xác định đƣợc một lƣợc đồ mã hóa đảm bảo tính
bí mật?
Định nghĩa về an toàn lý tƣởng cho lƣợc đồ này đƣợc giới thiệu bởi
Shannon nhƣ sau: một lược đồ mã hóa được gọi là an toàn lý tưởng khi và chỉ khi
dù đã biết thông tin về bản mã c cũng không có thông tin gì để xác định bản rõ
Nói cách khác, sự kiện chọn đúng

.

trong không gian bản mã và sự kiện chọn đúng

trong không gian bản rõ là độc lập với nhau. Cụ thể, một lƣợc đồ mã hóa đối
là an toàn lý tƣởng nếu với mọi thông điệp m trong không gian

xứng

bản rõ thì mọi bản mã c trong không gian bản mã đều thỏa mãn công thức sau:
,

(2)

trong đó:
o


là xác suất xảy ra sự kiện

o

là xác suất xảy ra sự kiện

khi biết sự kiện

Trong các mô hình truyền tin áp dụng mật mã, kẻ tân công không những biết
thông tin về các bản mã mà còn biết thông tin về các thuật toán Enc, Dec trong lƣợc
đồ mã hóa, duy chỉ có thông tin khóa đƣợc bảo mật. Giả định này đƣợc gọi là
nguyên tắc Kerckhoffs’s. Ngày nay, các lƣợc đồ mã hóa hiện đại đƣợc thiết kế đảm
bảo an toàn ngay cả khi tất cả các thuật toán sử dụng đƣợc công khai. Điều này cho
thấy sự cần thiết của việc lựa chọn khóa ngẫu nhiên và giữ bí mật hoàn toàn thông
tin khóa.
Một lƣợc đồ mã hóa đối xứng đáp ứng đƣợc tính chất an toàn lý tƣởng là lược
đồ mã hóa One Time Pad (OTP). Nguyên lý hoạt động của lƣợc đồ này nhƣ sau: gọi
số bit của thông điệp cần truyền. Alice và Bob chia sẻ khóa
mã hóa thông điệp

có độ dài bit. Để

, Alice mã hóa thông điệp rõ theo thuật toán xác định bởi công

thức:

. Bob thực hiện giải mã bản mã theo thuật toán xác định bởi công

thức:


. Rõ ràng, thuật toán giải mã luôn phục hồi đƣợc thông điệp ban

đầu.

16


Mặc dù OTP là an toàn lý tƣởng, tuy nhiên nó có một số hạn chế. Đầu tiên, do
độ dài khóa bằng độ dài thông điệp nên nó không khả thi khi áp dụng cho việc mã
hóa những thông điệp dài. Tiếp theo, lƣợc đồ này chỉ đảm bảo bí mật khi mỗi thông
điệp đƣợc mã hóa bằng một khóa duy nhất (khóa sử dụng một lần), điều này là
không khả thi trong kịch bản cụ thể. Ví dụ nhƣ Alice và Bob chỉ muốn chia sẻ một
(hoặc một số lƣợng giới hạn) khóa bí mật.
Việc thiết kế và xây dựng một lƣợc đồ mã hóa đáp ứng điều kiện an toàn lý
tƣởng gặp phải nhiều hạn chế trong thực thế. Do vậy để dung hòa vấn đề này, khái
niệm về an toàn tính toán đƣợc đƣa ra, theo đó kẻ tấn công (𝒜) dù có sức mạnh tính
toán tối đa sẽ không xác định đƣợc thông tin gì về bản rõ

, khi biết bản mã

trong

thời gian tính toán hữu hạn nhƣng đủ lâu.
Một định nghĩa về an toàn tính toán đƣợc đƣa ra nhƣ sau: với t, ε ≥ 0, lƣợc đồ
khóa công khai (Enc, Dec) đƣợc gọi
- không thể phân biệt được hay

( tạm dịch là
-an toàn tính toán ) nếu mọi kẻ tấn công thực


hiện tính toán trong thời gian tối đa là t thì:
thông điệp
Công thức trên thể hiện rằng nếu ta dùng khóa

.

để mã hóa ngẫu nhiên một

sau đó chuyển bản mã cho kẻ tấn công 𝒜. Nếu 𝒜

trong hai thông điệp

thực hiện tính toán thám mã trong thời gian không quá thì xác suất để 𝒜 chọn
đúng thông điệp mã hóa

hay

chỉ tốt hơn chọn ngẫu nhiên là .

2.3. An toàn trước tấn công lựa chọn bản rõ
Mục trƣớc đã xem xét các phƣơng pháp nhằm hạn chế những tấn công trên
một bản mã nhờ lý thuyết về mật mã an toàn lý tƣởng, với ví dụ về lƣợc đồ mã hóa
OTP. Tuy nhiên trên thực tế ngƣời sử dụng mật mã thƣờng có nhu cầu mã hóa
nhiều thông điệp bằng cùng một khóa bí mật. Vì vậy, chúng ta cũng cần có cơ chế
đảm bảo an toàn trong trƣờng hợp này. Hơn nữa kẻ tấn công có thể biết một số
thông điệp đƣợc bên gửi mã hóa trƣớc đó, hoặc thậm chí kẻ tấn công có thể tác
17



động lên một số thông điệp của bên gửi. Trong trƣờng hợp này một kịch bản tấn
công phổ biến đƣợc kẻ tấn công sử dụng là tấn công lựa chọn bản rõ (CPA). Trong
kịch bản tấn công này, kẻ tấn công yêu cầu bên gửi mã hóa một số thống điệp mà
anh ta chọn trƣớc. Lƣợc đồ mã hóa OTP là không an toàn nếu bị tấn công kiểu này.
Do bản mã

đƣợc xác định bởi

nên khi kẻ tấn công biết đƣợc thông điệp

anh ta sẽ dễ dàng tìm đƣợc thông tin khóa

bằng việc tính

.

Để chống lại kịch bản tấn công này, ta giả sử kẻ tấn công có thể yêu cầu ngƣời
dùng mã hóa đƣợc thông điệp bất kỳ mà anh ta lựa chọn. Khi đó ta nói rằng lƣợc đồ
mã hóa

-không thể phân biệt được trƣớc tấn công lựa lựa chọn



an toàn) nếu mọi kẻ tấn công 𝒜 tấn công trong thời gian

bản rõ (hay

tối đa là thì xác suất thành công vẫn nhỏ hơn :


2.4. Mật mã khối
Mật mã khối là lƣợc đồ mã hóa cơ sở trong mật mã khóa đối xứng và đƣợc
xây dựng dựa trên lý thuyết CPA – an toàn. Mât mã khối bao gồm: một hàm khóa
ánh xạ từ hai đầu vào sang một đầu ra duy nhất. Chọn
đầu vào thứ nhất là khóa

(chọn ngẫu nhiên hoặc cố định), đặt

chiều dài

, vậy đầu vào và đầu ra của
hàm

đều có kích thƣớc

đƣợc gọi là có tính ngẫu nhiên (hay giả ngẫu nhiên) nếu hàm

ngẫu nhiên giống nhƣ một hàm ngẫu nhiên thật

cho đầu ra

trong cùng phạm vi đầu vào. Xét

kẻ tấn công 𝒜 có khả năng gửi đầu vào và nhận đầu ra của
đó hàm

. Khi đó

(𝒜 không biết ) khi


có tính ngẫu nhiên nếu 𝒜 không thể đoán đƣợc kết quả với xác suất tốt

hơn hẳn việc chọn ngẫu nhiên. Khái niệm đƣợc biểu diễn hình thức nhƣ sau:
hàm có tính ngẫu nhiên

nếu 𝒜 tấn công trong thời gian tối đa
| [𝒜

]

[𝒜

18

]|




biểu diễn 𝒜

thể hiện 𝒜 có thể gửi đầu vào và nhận đầu đƣợc đầu ra của

không cần biết



.

Nếu với mỗi khóa , hàm

, và nó có hàm ngƣợc là

là một hoán vị trong không gian nhị nhân
ta nói rằng

là một hàm khóa hoán vị. Nếu

là một hàm khóa hoán vị vừa một hàm có tính ngẫu nhiên thì

vừa

là hàm mật mã

khối.
Một số mật mã khối sử dụng phổ biến hiện nay nhƣ: AES đƣợc chuẩn hóa bởi
NIST vào năm 2001. AES hỗ trợ các kích thƣớc khóa: 128 bit, 192 bit hoặc 256 bit
và chiều dài khối mã hóa là 128 bit. AES ra đời nhằm thay thế cho DES. Dù DES
vẫn đƣợc sử dụng rộng rãi nhƣng đƣợc đánh giá là không an toàn do kích thƣớc
khóa nhỏ (56 bit), kích thƣớc khối thông điệp sử dụng là 64bit.
2.5. Lược đồ CPA – an toàn
Với bất kỳ hàm

với đủ lớn,

có tính ngẫu nhiên:

ta có thể xây dựng một lƣợc đồ mã hóa khóa đối xứng
Để mã hóa thông điệp
chuỗi ngẫu nhiên


có kích thƣớc

có kích thƣớc

bằng khóa , đầu tiên ta chọn một
, sau đó tính bản mã

theo công thức:

bằng khóa

ta sử dụng công

. Để giải mã bản mã
thức:

CPA – an toàn.

.
Nhận thấy rằng, bên gửi và bên nhận sử dụng

đồ OTP để mã hóa thông điệp

. Mặc dù

nhƣ một khóa trong lƣợc

không thực sự ngẫu nhiên, nhƣng nó có

tính ngẫu nhiên và nhƣ vậy có thể đảm bảo phần nào tính an toàn. Trƣờng hợp

ngƣời gửi muốn mã hóa nhiều thông điệp:
dụng các chuỗi ngẫu nhiên
có tính ngẫu nhiên và khóa
đƣợc:

anh ta có thể sử
tƣơng ứng. Trên thực tế, với

là hàm

đƣợc giữ bí mật, kẻ tấn công sẽ không thể phân biệt

( ) trừ khi tồn tại

với

(vì khi đó:

( )), giả sử rằng điều này không xảy ra khi đó lƣợc đồ mã hóa này tƣơng đƣơng
với một lƣợc đồ mã hóa OTP với

khóa ngẫu nhiên độc lập. Xác suất khi tồn tại
19


với

có thể đƣợc xác định là

, nhƣ vậy có thể chọn


và để xác suất

này rất nhỏ.
Lƣợc đồ mã hóa nêu trên có thể áp dụng để mã hóa những thông điệp
kích thƣớc tùy ý bằng cách mã hóa từng khối có kích thƣớc cố định trong



, khi đó

bản mã sẽ có kích thƣớc gấp đôi kích thƣớc của bản rõ. Một ví dụ cho lƣợc đồ mã
hóa loại này là lược đồ mã hóa bộ đếm (counter mode hay CRT-mode). Trong lƣợc
đồ này để mã hóa thông điệp

với

có kích thƣớc

sử

), sau đó tính bản mã theo công thức:

dụng khóa , ta chọn ngẫu nhiên giá trị (

nhƣ vậy bản mã chỉ có kích thƣớc dài hơn bản rõ một khối

.

Ngay cả khái niệm CPA – an toàn cũng chỉ có thể chống lại các kẻ tấn công

thụ động khi anh ta có thể “nghe lén” trên kênh chung. Nhƣng không thể phát hiện
đƣợc kẻ tấn công chủ động khi anh ta cố ý tác động lên thông điệp truyền thông
giữa các bên. Phƣơng pháp chống lại kẻ tấn công chủ động sẽ đƣợc nêu ở mục tiếp
theo.

3.

Mã xác thực thông điệp

3.1. Giới thiệu
Mục trƣớc đã mô tả một số lƣợc đồ mã hóa khóa đối xứng đảm bảo tính bí
mật. Mục này sẽ đề cập đến phƣơng pháp để đảm bảo tính toàn vẹn và xác thực
trong mật mã khóa đối xứng. Quay lại ví dụ ban đầu, ngay cả khi thông điệp gửi bởi
Alice đƣợc giữ bí mật với Eve. Vấn đề đặt ra là khi Bob nhận đƣợc một thông điệp,
anh ấy muốn chắc chắn rằng thông điệp này là do Alice gửi, và nội dung thông điệp
không bị thay đổi.
Trong mật mã khóa đối xứng, ngƣời ta dùng mã xác thực thông điệp (MAC)
nhằm mục đích xác thực cho các thông điệp gửi đi. MAC bao gồm cặp thuật toán
Alice sử dụng thuật toán

sinh thẻ (

20

) phục vụ quá trình xác


thực cho thông điệp

nhờ một khóa . Thông điệp

là phải sinh đƣợc các

Yêu cầu của thuật toán

đƣợc gửi đến Bob.

cùng

có tính ngẫu nhiên từ các

thông điệp đầu vào. Không mất tính tổng quát giả sử đã xác định đƣợc thuật toán
đáp ứng yêu cầu này. Khi đó, thao tác sinh tag đƣơc biểu diễn nhƣ sau:

đƣợc ngƣời nhận (Bob) dùng để xác minh thông điệp nhận

Thuật toán
đƣợc.

nhận các đầu vào gồm: khóa bí mật , thông điệp

nhận đƣợc. Đầu ra của thuật toán là một bit , nếu
cho thông điệp m’, trƣờng hợp ngƣợc lại

chứng tỏ

điệp

nhận

(


đƣợc,
)

nhƣ

vậy

, với mọi khóa

mà Bob
là hợp lệ

nhận giá trị . Trong trƣờng hợp bản tin

gửi trên kênh chung không bị thay đổi thì giá trị
thông

cùng

thuật

nhận đƣợc luôn hợp lệ cho
toán

và thông điệp

Vrfy

cần


thỏa

mãn:

.

Định nghĩa về MAC nêu ở trên là tƣơng đối đơn giản, và thể hiện ở mức độ lý
thuyết cơ sở. Xem xét vấn đề một cách chi tiết hơn, nhằm mục đích phòng ngừa
việc kẻ tấn công có thể sinh ra

hợp lệ cho những thông điệp giả mạo mà anh ta

tạo ra. Áp dụng khái niệm an toàn tính toán trong MAC, ta nói rằng MAC là
– an toàn tính toán khi với mọi kẻ tấn công 𝒜 tính toán thám mã trong thời gian ,
thì xác suất mà anh ta tạo ra đƣợc một cặp

hợp lệ không vƣợt quá . Dựa

trên khái niệm an toàn tính toán ta có thể thiết kế đƣợc MAC đáp ứng tính bí mật.
Tuy nhiên, vấn đề phòng ngừa các tấn công phát lặp(replay attack) vẫn chƣa đƣợc
giải quyết.
Ví dụ xét một MAC đơn giản dựa trên hàm giả ngẫu nhiên:

Để sinh

cho một thông điệp

hay nói cách khác
kiểm tra:


với khóa , ta tính:
. Xác thực thông điệp

tƣơng đƣơng với kiểm tra:

có tính ngẫu nhiên nên với thông điệp

với

bằng cách
. Do hàm

bất kỳ thì xác suất để kẻ tấn công chọn
21


đƣợc giá trị



. Vì vậy, với đủ lớn thì xác suất để kẻ tấn công giả mạo

đƣợc thông điệp là rất nhỏ.
3.2. Xác thực cho thông điệp dài
Nội dung giới thiệu ở tiểu mục trƣớc cho biết cách thức để xác thực thông điệp
có chiều dài hữu hạn

). Trên thực tế, các thông điệp xác


(chẳng hạn

thực thƣờng có độ dài lớn hơn rất nhiều (ví dụ 1 file, một email...).
Phƣơng pháp đầu tiên là
gọi là chuỗi mã hóa khối

CBC-MAC hay còn
đƣợc xây dựng dựa trên hàm giả ngẫu nhiên

trong

ví dụ trƣớc. Giả sử độ dài của thông điệp cần xác thực là bội số của nhƣ vậy thông
điệp

đƣợc biểu diễn dƣới dạng:

̅̅̅̅̅. Việc tính tag cho thông điệp

với

đƣợc thƣc hiện theo thuật toán sau:

.
Ta thực hiện kiểm tra thẻ

của thông điệp nhận đƣợc bằng cách tính lại

thông điệp này. Đầu ra của việc kiểm tra là
CBC-MAC là an toàn nếu hàm
điệp là cố định (khi đó


khi và chỉ khi

cho

.

có tính ngẫu nhiên và kích thƣớc của thông

cũng cố định). Tiếp theo ta sẽ xem xét làm thế nào để mở

rộng lƣơc đồ CBC-MAC phục vụ xác thực các thông điệp có kích thƣớc tùy ý.
Cách tiếp cận thứ hai để xác thực thông điệp có kích thƣớc tùy ý là biến đổi nó
về dạng thông điệp ngắn có kích thƣớc hữu hạn (hay còn gọi là tóm tắt thông điệp),
sau đó ta sẽ thực hiện các bƣớc xác thực MAC cơ bản lên thông điệp ngắn này.
Phƣơng pháp này đòi hỏi một lƣợc đồ mật mã nguyên thủy gọi là hàm băm kháng
xung đột.

22


Hàm băm

cho phép biến đổi thông điệp hay dữ liệu có kích thƣớc bất kỳ

thành một chuỗi có kích thƣớc cố định và hữu hạn. Hàm băm đƣợc sử dụng rộng rãi
trong nhiều lĩnh vực của khoa học máy tính. Nhƣng hàm băm trong mật mã học
(hay còn gọi là hàm băm mật mã) cần đáp ứng một yêu cầu đặc thù là tính kháng
xung đột(collision resistance). Hàm băm


có tính kháng xung đột (gọi đơn giản là

hàm băm kháng xung đột) nếu gần nhƣ không thể tìm ra cặp đầu vào phân biệt
(

thỏa mãn

. Nếu

là hàm băm kháng xung đột thì kết quả của

thao tác băm thông điệp đầu vào (bản băm) đƣợc coi nhƣ một “tóm tắt an toàn”
của thông điệp này. Cũng có thể hiểu theo nghĩa sau: cho trƣớc một giá trị
kẻ tấn công sẽ chỉ tìm thấy nhiều nhất một giá trị

bất kỳ,

. Kích thƣớc

thỏa mãn

đầu ra cố định của hàm băm giới hạn độ khó của việc tính toán tìm ra cặp đầu vào
phân biệt, có chung bản băm (để đơn giản ta gọi sự kiện này là hiện tƣợng va chạm
trong hàm băm). Cụ thể nếu đầu ra của

có chiều dài

thì hiện tƣợng va chạm

sẽ luôn xảy ra sau


phép thử, nói cách khác độ phức tạm của tìm kiếm va chạm

trong hàm băm là

. Hàm băm đƣợc sử dụng phổ biến hiên nay là nhóm hàm

băm SHA – cho kích thƣớc đầu ra từ

đến

.

Quay lại với vấn đề về MAC, cho hàm băm
kháng xung đột, và lƣợc đồ xác thực thông điệp

là hàm băm
sử dụng xác thực các

thông điệp có kích thƣớc , từ đó ta có thể xây dựng một lƣợc đồ mã xác thực thông
điệp

cho các thông điệp có kích thƣớc tùy ý nhƣ sau: Đầu tiên thực

hiện băm thông điệp đầu vào
. Sau đó xác thực thông điệp
Có nghĩa rằng

bằng hàm


để thu đƣợc bản băm

có kích thƣớc

sử dụng lƣơc đồ mã xác thực thông điệp cơ bản.
. Thao tác kiểm tra tính xác thực đƣợc xác

định bởi:

. Dễ thấy lƣợc đồ xác thƣc này là

an toàn. Lƣợc đồ xác thực này đƣợc gọi là mã xác thực thông điệp HMAC.

23


3.3. Kết hợp tính bí mật với tính toàn vẹn và xác thực.
Trên thực tế, khi các giao tiếp đƣợc thực hiện trên các kênh chung thƣờng đòi
hỏi phải đảm bảo các tính chất: tính bí mật, tính toàn vẹn và tính xác thực. Một lƣợc
đồ đáp ứng đƣợc các tính chất này gọi là lươc đồ mã hóa xác thực (authenticated
encryption schemes). Phƣơng pháp phổ biến để đảm bảo các tính chất trên trong
mật mã khóa đối xứng là kết hợp sử dụng lƣợc đồ mã hóa khóa đối xứng và mã xác
thực thông điệp.

4.

Mật mã khóa công khai

4.1. Khái niệm
Nhƣ đã trình bày ở mục trƣớc, mật mã khóa đối xứng đòi hỏi các bên tham gia

phải chia sẻ chung một khóa bí mật trƣớc khi thực hiện giao tiếp. Cho đến giữa
những năm 1970 khi nhắc đến mật mã ngƣời ta chỉ biết đến mật mã khóa đối xứng.
Đến năm 1976, sự ra đời của mật mã khóa công khai đã tạo nên một cuộc cách
mạng trong lĩnh vực mật mã. Cho phép các bên tham gia liên lạc không cần chia sẻ
với nhau thông tin khóa bí mật. Yêu cầu duy nhất là có một cách để một bên gửi
bản sao của khóa công khai của mình cho bên còn lại.
Trong mật mã khóa công khai, Alice sinh cho mình một cặp khóa
Khóa riêng
khai

.

đƣợc giữ bí mật đảm bảo chỉ Alice mới biết khóa này, còn khóa công

đƣợc gửi cho bất kỳ bên nào muốn giao tiếp với Alice (ví dụ nhƣ Bob) hoặc

kể cả kẻ tấn công cũng có thể có thông tin về khóa công khai của Alice. Việc quản
lý và phân phối khóa công khai sẽ đƣợc trình bày trong chƣơng tiếp theo. Trong
chƣơng này chúng ta giả định rằng các bên muốn giao tiếp đã biết đƣợc khóa công
khai của nhau.
Mật mã khóa công khai có nhiều lợi điểm hơn so với mật mã khóa bí mật. Thứ
nhất giải quyết đƣợc vấn đề phân phối khóa bí mật. Những ngƣời dùng muốn giao
tiếp với nhau sẽ không cần phải chia sẻ với nhau khóa bí mật qua một kênh riêng.
Trong mật mã khóa công khai, việc quản lý khóa cũng hết sức đơn giản. Ví dụ trong

24


một công ty có


nhân viên, nếu sử dụng mật mã khóa bí mật, thì mỗi nhân viên sẽ

phải lƣu trữ và đảm bảo an toàn cho

khóa bí mật của các nhân viên khác. Với

mật mã khóa công khai các nhân viên muốn giao tiếp đƣợc với nhau chỉ cần lƣu trữ
duy nhất một khóa bí mật của mình và N-1 khóa công khai của những ngƣời khác.
Do các khóa công khai không cần bảo mật nên nó có thể đƣợc lƣu trữ tại một kho
dữ liệu chung của tổ chức để cho những ngƣời trong tổ chức có thể trực tiếp lấy về
khi muốn giao tiếp với một ai đó trong tổ chức. Cuối cùng, mật mã khóa công khai
rất phù hợp để triển khai trên môi trƣờng mở nhƣ Internet.
Tuy vậy, mật mã khóa công khai cũng có một số nhƣợc điểm so với mật mã
khóa đối xứng. Ƣớc tính sơ bộ, để mã hóa một thông điệp ngắn (nhỏ hơn 10 kB) thì
thời gian xử lý của hệ thống mã hóa sử dụng mật mã khóa công khai chậm hơn 500
đến 1000 lần so với dùng mật mã khóa đối xứng. Việc tiêu tốn tài nguyên xử lý
cũng là một vấn đề khi áp dụng mật mã khóa công khai trong các thiết bị có khả
năng xử lý hạn chế. Vì vậy mật mã khóa đối xứng vẫn đƣợc sử dụng phổ biến trong
những trƣờng hợp này.
Một lƣợc đồ mã hóa khóa công khai bao gồm ba thuật toán
Thuật toán sinh cặp khóa (
khóa

là một thuật toán ngẫu nhiên, cho đầu ra là cặp
lấy đầu vào là

. Thuật toán mã hóa

đầu ra là bản mã . Thuật toán giải mã
đầu ra là thông điệp

điệp

và thông điệp

lấy đầu vào là

. Yêu cầu với mọi cặp khóa

bất kỳ đều thỏa mãn:

.

(

)

cho

và bản mã , cho

sinh bởi

và thông

.

Khái niệm an toàn trong mật mã khóa công khai tƣơng tự nhƣ đã đƣa ra trong
mật mã khóa đối xứng. Điểm khác biệt là kẻ tấn công biết đƣợc khóa công khai
Ta nói một lƣợc đồ mã hóa khóa công khai




.

không thể

phân biệt. Nếu với mọi kẻ tấn công 𝒜 tính toán thám mã trong thời gian tối đa , và
với bất kỳ cặp thông điệp

ta có:

25


×