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

Nghiên Cứu Cơ Sở Hạ Tầng Khóa Công Khai PKI Ứng Dụng Chứng Thực Cho Các Giao Dịch Hành Chính Cô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 (3.66 MB, 80 trang )

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

NGÔ THU PHƯƠNG

NGHIÊN CỨU CƠ SỞ HẠ TẦNG
KHÓA CÔNG KHAI PKI ỨNG DỤNG CHỨNG THỰC
CHO CÁC GIAO DỊCH HÀNH CHÍNH CÔNG ĐIỆN TỬ

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

THÁI NGUYÊN - 2017


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

NGÔ THU PHƯƠNG

NGHIÊN CỨU CƠ SỞ HẠ TẦNG
KHÓA CÔNG KHAI PKI ỨNG DỤNG CHỨNG THỰC
CHO CÁC GIAO DỊCH HÀNH CHÍNH CÔNG ĐIỆN TỬ

Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01

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

Người hướng dẫn khoa học: TS. Phạm Thế Quế

THÁI NGUYÊN - 2017




i

LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của riêng tôi, dưới sự chỉ dẫn của
TS. Phạm Thế Quế. Các số liệu, kết quả nêu trong luận văn là trung thực, luận văn
này cho đến nay chưa được bảo vệ tại bất kỳ hội đồng nào và chưa hề được công bố
trên bất kỳ phương tiện nào khác.

Thái nguyên, ngày ..... tháng ..... năm 2017
Tác giả luận văn

Ngô Thu Phương


ii

LỜI CẢM ƠN

Em xin chân thành cảm ơn thầy giáo TS. Phạm Thế Quế đã tận tình hướng
dẫn và tạo mọi điều kiện cho em hoàn thành luận văn.
Em xin chân thành cảm ơn các thầy cô giáo, các cán bộ nhân viên phòng đào
tạo, ban lãnh đạo Trường Đại học Công nghệ thông tin và Truyền thông đã giúp đỡ
tạo điều kiện cho em hoàn thành luận văn này.
Cuối cùng, em xin chân thành cảm ơn sự quan tâm giúp đỡ của gia đình, cơ
quan, bạn bè và tập thể lớp Cao học K14B đã cổ vũ động viên em hoàn thành luận
văn của mình.
Tuy đã cố gắng nhưng do thời gian và trình độ có hạn nên chắc chắn luận

văn này còn nhiều thiếu sót và hạn chế nhất định. Kính mong nhận được sự góp ý
của thầy cô và các bạn.

Thái nguyên, ngày ..... tháng ..... năm 2017
Học viên

Ngô Thu Phương


iii

MỤC LỤC

LỜI CAM ĐOAN ....................................................................................................... i
LỜI CẢM ƠN........................................................................................................... ii
MỤC LỤC ............................................................................................................... iii
DANH MỤC NHỮNG TỪ VIẾT TẮT ................................................................. vi
DANH MỤC BẢNG............................................................................................... vii
DANH MỤC HÌNH .............................................................................................. viii
MỞ ĐẦU ....................................................................................................................1
1. Lý do chọn đề tài ................................................................................................1
2. Ý nghĩa khoa học của đề tài ...............................................................................2
3. Đối tượng và phạm vi nghiên cứu ......................................................................2
4. Những nội dung nghiên cứu chính .....................................................................2
CHƯƠNG 1 CƠ SỞ HẠ TẦNG KHÓA CÔNG KHAI ........................................3
1.1 Hệ mật mã khóa bất đối xứng [2] .................................................................3
1.1.1 Khái niệm ................................................................................................3
1.1.2 Thuật toán mật mã RSA ...........................................................................5
1.1.3 Chuyển đổi văn bản rõ ...........................................................................7
1.1.4 Đánh giá kỹ thuật mật mã bất đối xứng ................................................8

1.1.5 Một số kỹ thuật phá mã RSA .................................................................9
1.1.6 Một số hệ mật mã khóa công khai khác ...............................................9
1.2 Hàm băm bảo mật ............................................................................................9
1.2.1 Giới thiệu .................................................................................................9
1.2.2 Các tính chất của hàm băm bảo mật ...................................................10
1.2.3 Ứng dụng hàm băm bảo mật ...................................................................11
1.2.4 Hàm băm bảo mật SHA ..........................................................................12
1.2.5 Hàm băm MD5 ........................................................................................13
1.3 Chữ ký số [2] ..................................................................................................14


iv

1.3.1 Khái niệm chữ ký số ...............................................................................14
1.3.2 Quy trình tạo và kiểm tra chữ ký số ........................................................15
1.3.3 Những vấn đề còn tồn tại của chữ ký số .................................................18
1.4 Cơ sở hạ tầng khóa công khai PKI [3] ...........................................................19
1.4.1 Khái niệm ................................................................................................19
1.4.2 Chức năng chủ yếu của PKI ....................................................................21
1.4.3 Các thành phần PKI ................................................................................22
1.4.4 Các thủ tục trong PKI ..............................................................................23
1.4.5 Khái niệm chứng thực số ........................................................................24
1.5 Một số thuật toán quản lý khóa [2] .............................................................25
1.5.1 Thuật toán trao đổi khoá Diffie-Hellman ...........................................25
1.5.2 Đánh giá độ an toàn thuật toán trao đổi khoá Diffie-Hellman .........26
1.5.3 Quản lý khoá công khai trong mật mã bất đối xứng ..............................27
1.5.4 Sử dụng mật mã bất đối xứng để trao đổi khóa bí mật ...........................29
Kết luận chương ........................................................................................................31
CHƯƠNG 2 KỸ THUẬT XÁC THỰC THÔNG TIN TRONG GIAO DỊCH
ĐIỆN TỬ ..................................................................................................................32

2.1 Giới thiệu chung xác thực thông tin ...........................................................32
2.2 Các kỹ thuật xác thực thông tin [2] ................................................................33
2.2.1 Sử dụng các thuật toán mật mã khóa đối xứng .......................................34
2.2.2 Sử dụng các thuật toán mật mã khóa bất đối xứng .................................35
2.2.3 Sử dụng mã xác thực MAC .....................................................................36
2.2.4 Sử dụng các hàm băm bảo mật ...............................................................37
2.2.5 Xác thực thông tin dùng chữ ký điện tử .................................................38
2.2.6 Xác thực thông tin dùng chữ ký điện tử và chứng thực điện tử ...........40
2.3 Các giao thức xác thực ...................................................................................42
2.3.1 Mật khẩu ..................................................................................................42
2.3.2 Các giao thức xác thực trong mô hình điểm - điểm ................................43
2.3.3 Xác thực trong các hệ thống phân tán .....................................................44


v

2.3.4 Giao thức xác thực Kerberos 4 ................................................................48
2.3.5 Giao thức xác thực Kerberos 5 ................................................................52
Kết luận chương ........................................................................................................55
CHƯƠNG 3 GIẢI PHÁP XÁC THỰC CHO CÁC GIAO DỊCH HÀNH
CHÍNH CÔNG ĐIỆN TỬ ......................................................................................56
3.1 Dịch vụ hành chính công .............................................................................56
3.1.1 Khái niệm ................................................................................................57
3.1.2 Các đặc trưng cơ bản của dịch vụ hành chính công ................................57
3.2 Mô hình xác thực người dùng hành chính công ........................................58
3.2.1 Các thành phần hệ thống xác thực .......................................................... 58
3.2.2 Hệ thống ký hiệu ..................................................................................... 59
.......................................................................................................................... 60
3.2.3 Hoạt động hệ thống xác thực thông tin ... Error! Bookmark not defined.
3.3 Các quy trình xác thực hệ thống thông tin hành chính công ................... 60

3.3.1 Quy trình cấp và quản lý chứng thực khóa ........................................ 60
3.3.2 Quy trình xác thực thông tin ................................................................... 63
3.3.3 Một số nhận xét ....................................................................................... 64
3.4 Cài đặt thử nghiệm ......................................................................................... 65
3.5 Đánh giá kết quả thử nghiệm .......................... Error! Bookmark not defined.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................................................. 68
TÀI LIỆU THAM KHẢO ...................................................................................... 70


vi

DANH MỤC NHỮNG TỪ VIẾT TẮT
AES
ANSI
CA
CRL
DES
DNS
DSA
DSS
EDI
FIPS
FTP
HTTP
IDEA
ISO
ISP
ITU
MD5
NIST

OSI
PGP
PKI
RA
RSA
SET
SHA
TCP/IP
URL

Advanced Encryption Standard
American National Standards
Institude
Certification Authority
Certificate Revocation List
Data Ecryption Standard
Domain Name System
Digital Signature Algorithm
Digital Signature Standard
Electronic Data Interchange
Federal Information Processing
Standard
File Transfer Protocol
Hyper Text Transport Protocol
International Data Encryption
Algorithm
International Organization for
Standardization
Internet Service Provider
International Telecommunication

Union
Message Digest 5
National Institute of Standards
and Technology
Open System Interconnection
Pretty Good Private
Public Key Infrastructure
Registration Authority
Rivest-Shamir-Aldeman
Secure Electronic Transaction
Secure Hash Algorithm
Transmission Control Protocol
/ Internet protocol
Uniform Resource Locator

Chuẩn mã hoá tiên tiến
Viện tiêu chuẩn quốc gia Mỹ
Nhà cung cấp chứng thực
Danh sách chứng thực thu hồi
Chuẩn mã dữ liệu
Hệ thống tên miền
Thuật toán chữ ký điện tử
Chuẩn chữ ký điện tử
Trao đổi dữ liệu điện tử
Chuẩn xử lý thông tin liên bang
Mỹ
Giao thức truyền file
Giao thức truyền siêu văn bản
Thuật toán mã hoá dữ liệu quốc
tế

Tổ chức tiêu chuẩn hoá quốc tế
Nhà cung cấp dịch vụ Internet
Liên minh viễn thông quốc tế

Viện quốc gia về chuẩn và công
nghệ
Kết nối giữa các hệ thống mở
Cơ sở hạ tầng khoá công khai
Nhà quản lý đăng ký
Giao dịch điện tử an toàn
Thuật toán băm an toàn
Giao thức điều khiển truyền
dẫn/ giao thức Internet
Bộ định vị tài nguyên


vii

DANH MỤC BẢNG
Bảng 1.1: Các phiên bản SHA ..................................................................................13
Bảng 1.2: So sánh các thông số giữa SHA-1 và MD5 ..............................................13
Bảng 3.1: Kết quả thử nghiệm ..................................................................................67


viii

DANH MỤC HÌNH
Hình 1.1: Cấu trúc hệ thống mật mã khóa bất đối xứng .............................................5
Hình 1.2: Một ứng dụng điển hình của hàm băm .....................................................10
Hình 1.3: Định nghĩa chữ ký số ................................................................................15

Hình 1.4: Sơ đồ tổng quát tạo chữ ký số ...................................................................16
Hình 1.5: Sơ đồ tổng quát kiểm tra chữ ký số ..........................................................17
Hình 1.6: Sơ đồ tổng quát tạo và kiểm tra chữ ký số ................................................17
Hình 1.7: Các thành phần cơ bản của một PKI.........................................................23
Hình 1.8: Thuật toán trao đổi khoá Diffie-Hellman .................................................26
Hình 1.9: Dùng mật mã bất đối xứng để trao đổi khoá.............................................29
Hình 2.1: Xác thực thông tin dùng mật mã đối xứng ...............................................34
Hình 2.2: Sử dụng khóa bất đối xứng để trao đổi khóa bí mật .................................35
Hình 2.3: Xác thực thông tin dùng mật mã bất đối xứng .........................................35
Hình 2.4: Xác thực thông tin dùng MAC .................................................................36
Hình 2.5: Xác thực thông tin dùng hàm băm ............................................................37
Hình 2.6: Xác thực dùng hàm băm và mật mã bất đối xứng ....................................38
Hình 2.7: Xác thực thông tin dùng chữ ký số ...........................................................39
Hình 2.8: Xác thực thông tin dùng chữ ký số ...........................................................39
Hình 2.9: Minh hoạ xác thực sử dụng chứng chỉ số và chữ ký điện tử ....................40
Hình 2.10: Sơ đồ minh họa quá trình xin cấp chứng chỉ số ......................................41
Hình 2.11: Giao thức xác thực PAP..........................................................................44
Hình 2.12: Giao thức xác thực CHAP ......................................................................44
Hình 2.13: Thủ tục xác thực Kerberos 4 ...................................................................49
Hình 2.14: Xác thực giữa hai lãnh địa Kerberos ......................................................52
Hình 3.1: Mô hình tổng quát cấp chứng thực khóa ..................................................62
Hình 3.2: Quy trình khởi tạo chứng thực khóa cho người sử dụng ..........................63
Hình 3.3: Giao diện chương trình demo chữ ký số ... Error! Bookmark not defined.
Hình 3.4: Giao diện kiểm tra chuỗi toàn vẹn ........... Error! Bookmark not defined.


1

MỞ ĐẦU
1. Lý do chọn đề tài

Ngày nay, cùng với sự phát triển của công nghệ thông tin và truyền thông,
giao dịch điện tử đã và đang phát triển mạnh mẽ thay thế dần các giao dịch truyền
thống. Sự bùng nổ của Internet, một mặt đem lại nhiều ứng dụng tiện lợi, nhưng hầu
hết các thông tin quan trọng và nhạy cảm (thông tin mật, mã số tài khoản…) đều
được lưu trữ và trao đổi trên môi trường Internet.
Triển khai các giao dịch điện tử trên Internet như trao đổi thư tín, các giao
dịch hành chính công Chính phủ - công dân,… đã trở thành một phần tất yếu của
cuộc sống hiện đại. Tuy nhiên các nguy cơ, lừa đảo, giả mạo, chiếm quyền điều
khiển,… qua mạng ngày càng gia tăng với các thủ đoạn tinh vi. Vì vậy việc đảm
bảo an toàn thông tin, tránh mọi nguy cơ bị thay đổi, sao chép hoặc mất mát dữ liệu
trong các ứng dụng trên mạng luôn là vấn đề bức xúc và cần thiết, được nhiều người
quan tâm. Nhu cầu thực tế được đặt ra, đó là phải có một cơ quan đảm bảo chứng
thực điện tử cho các giao dịch điện tử, nhằm đảm bảo yêu cầu xác thực, bí mật, toàn
vẹn, chống chối bỏ. Thực tế là hiện nay trên thế giới, có rất nhiều cách xây dựng,
triển khai một hệ thống PKI. Có thể đơn cử ra một vài ví dụ cụ thể như: CA Microshoft, OpenCA - Opensourc, Entrus….
Cấu trúc hạ tầng mã khóa công khai PKI (Public Key Infrastructure), cùng
với các tiêu chuẩn và các công nghệ ứng dụng của nó có thể coi là một giải pháp
tổng hợp và độc lập mà các tổ chức, doanh nghiệp có thể ứng dụng để giải quyết
vấn đề này. PKI bản chất là một hệ thống công nghệ vừa mang tính tiêu chuẩn, vừa
mang tính ứng dụng được sử dụng để khởi tạo, lưu trữ và quản lý các văn bản điện
tử cũng như các khóa công khai và bí mật. Ngoài việc bảo đảm an toàn cho thông
tin liên lạc và lưu trữ, PKI còn là cơ sở pháp lý để giải quyết khi có tranh chấp. Vì
vậy mục tiêu đặt ra là xây dựng một bộ tiêu chuẩn bảo mật tổng hợp cùng các công
cụ quản lý, cho phép người sử dụng cũng như các tổ chức có thể tạo, lưu trữ và trao
đổi các thông tin một cách an toàn.


2

Luận văn này với mục đích nghiên cứu về hạ tầng khóa công khai PKI và

ứng dụng cho các giao dịch hành chính điện tử.
2. Ý nghĩa khoa học của đề tài
Nghiên cứu lý thuyết mật mã, chữ ký số và xác thực; hạ tầng khóa công khai
PKI và ứng dụng của nó. Từ đó xây dựng chương trình ứng dụng có khả năng bảo
mật nội dung thông tin dưới dạng văn bản điện tử, tạo chữ ký trên văn bản điện tử
và chứng thực chữ ký số trên văn bản điện tử; góp phần phục vụ những người quản
lý đơn vị trao đổi thông tin với các đối tác khách hàng, điều hành công việc từ xa.
3. Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
− Xác thực và mã hóa ứng dụng khóa công khai PKI
− Các giải pháp mã hóa, hàm băm, chữ ký số
3.2 Phạm vi nghiên cứu:
− Xây dựng các mô hình xác thực dịch vụ hành chính công
− Xây dựng quy trình xác thực hành chính công
4. Những nội dung nghiên cứu chính
Luận văn gồm 3 chương như sau:
CHƯƠNG 1 : CƠ SỞ HẠ TẦNG KHÓA CÔNG KHAI
CHƯƠNG 2: KỸ THUẬT XÁC THỰC THÔNG TIN TRONG GIAO DỊCH
ĐIỆN TỬ
CHƯƠNG 3: GIẢI PHÁP XÁC THỰC CHO CÁC GIAO DỊCH HÀNH
CHÍNH CÔNG ĐIỆN TỬ


3

CHƯƠNG 1
CƠ SỞ HẠ TẦNG KHÓA CÔNG KHAI
1.1 Hệ mật mã khóa bất đối xứng[2]
1.1.1 Khái niệm
Đặc trưng của hệ mật mã khóa bất đối xứng (Asymmetric Key Encryption),

hay còn được gọi là hệ mật mã khóa công khai (Public Key Encryption) 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), không cần giữ bí mật, ký hiệu PU và khóa còn lại gọi
là khóa riêng (Private Key) được giữ bí mật, chỉ có chủ sở hữu được biết, ký hiệu là
PR. Cả hai khoá có thể được dùng để mã hoá hoặc giải mã theo nhu cầu sử dụng.
Việc chọn khoá công khai hay khoá bí mật cho quá trình mã hoá sẽ tạo các ứng
dụng khác nhau:
1. Dùng khoá công khai PU để mã hoá và khoá riêng để giải mã cho ứng
dụng bảo mật thông tin (Confidentiality).
2. Dùng khoá riêng PR để mã hoá và khoá công khai PU để giải mã cho ứ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 trên các hàm toán học. 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 Kncryption).
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 toàn 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 (trên máy tính). 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 đ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ế.


4

Các bước cơ bản của một hệ thống mật mã khóa công khai bao gồm:
1. Mỗi thực thể thông tin (User) tạo ra một cặp khóa công khai PU (Public
Key) và khóa riêng PR (Private Key).

2. User thông báo khoá công khai PU cho các User khác biết, còn khóa riêng
PR là sở hữu riêng, giữ bí mật.
3. Nếu 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.
4. 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 nó. Do khóa riêng không phổ biến công khai nên
chỉ có 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).

a) Ứng dụng bảo mật thông tin


5

b) Ứng dụng xác thực thông tin
Hình 1.1: Cấu trúc hệ thống mật mã khóa bất đối xứng
1.1.2 Thuật toán mật mã RSA
RSA (Rivest – Shamir – Adleman hay RSA) là thuật toán mật mã khóa 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), ra đời năm 1977, đế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ố, lý thuyết logic rời rạc
RSA là một thuật toán mật mã khối, kích thước khối thông thường là 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:
1. Chọn hai số nguyên tố đủ lớn p và q.
2. Ký hiệu N = pq, φ(N) = (p-1)(q-1).
3. Chọn một số e sao cho e và φ(N) là hai số nguyên tố cùng nhau.
4. Tìm số d sao cho ed = 1 mod φ(N)


6

5. Cặp khóa bất đối xứng
− Khóa công khai (Public): PU= (N, e)
− Khóa bí mật (Private): PR = (N, d)
6. Nếu sử dụng kỹ thuật RSA để mã hóa thông tin
− Mã hóa:
• Khối thông tin gốc “m” chuyển về số nguyên M≤ N
• C = Me mod N
− Giải mã: M = Cd mod N
Ví dụ:
1. Chọn các số nguyên tố: p = 11 và q = 3
2.
3.
4.
5.

N = pq = 3*11 = 33, φ(N) = (p-1) (q-1) = (11 - 1) (3 - 1) = 20
Chọn e = 3, vì 3 và 20 nguyên tố cùng nhau.
Với e = 3, chọn d = 7, vì e*d = 3*7 = 1 mod 20
Cặp khóa bất đối xứng

− Khóa công khai (Public): PU = (33, 3)

− Khóa bí mật (Private): PR = (33, 7)
6. Giả sử User A có cặp khóa PUA = (33, 3) và PRA = (33, 7),User B muốn
gửi thông tin M = 15 cho User A
− User B mã hóa M bằng PUA = (33,3), C = 153 mod 33 = 3375 mod 33 = 9
mod 33. Khi đó, thông tin mật gửi cho User A là C = 9
− Khi nhận C = 9, User A giải mã bằng khóa riêng PRA = (33, 7): M = Cd
mob N = 97 mod 33 = 4.782.969 mod 33 = 15 mod 33.
- Thông tin giải mã được là M = 15
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:
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 = Me mod N (M là số nguyên nhỏ hơn N)


7

3. Giải mã: M = Cd mod N
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.
1.1.3 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 đề: 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ị

cũng nhận giá trị nhỏ (so với n). Như vậy phép modulo 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 modulo). 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 Hacker có thể
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ã, Hacker sử dụng bảng tra để tìm ra bản rõ tương ứng.
Trên thực tế, 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ã. Để 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 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).


8

Một số chuẩ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 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).
1.1.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 hoàn 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 thi
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ể không cần thực hiện trao đổi khóa trước khi làm việc.
2. Bên cạnh công dụng đảm bảo tính toàn 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.
Theo lý thuyết, RSA có thể bị tấn công bằng những phương thức sau:
− Brute-force attack: tìm lần lượt khoá riêng PR
− Mathematical attack: xác định p và q bằng cách phân tích N thành tích của
các thừa số nguyên tố rồi từ đó xác định e và d.
− Timing attack: dựa trên thời gian thực thi của thuật toán giải mã.


9


− Chosen ciphertext attack: sử dụng các đoạn thông tin mật (ciphertext) đặc
biệt để khôi phục thông tin gốc.
Tuy nhiên trong thực tế, nguy cơ tấn công các hệ thống mật mã RSA là rất
thấp, do RSA là một thuật toán linh động, kích thước khối dữ liệu gốc và chiều dài
khoá dễ dàng được thay đổi mà không ảnh hưởng đến thuật toán mã.
1.1.5 Một số kỹ thuật phá mã RSA
RSA có thể bị tấn công bằng những phương thức sau đây:
− Tìm lần lượt khoá riêng PR
− Xác định p và q bằng cách phân tích N thành tích của các thừa số nguyên
tố rồi từ đó xác định e và d.
− Dựa trên thời gian thực hiện của thuật toán giải mã.
− Sử dụng các đoạn thông tin mật (Ciphertext) đặc biệt để khôi phục thông
tin gốc.
− Trong thực tế, nguy cơ tấn công các hệ thống mật mã RSA là rất thấp, vì
RSA là một thuật toán linh động, kích thước khối dữ liệu gốc và chiều dài khoá dễ
dàng thay đổi mà không ảnh hưởng đến thuật toán mã.
1.1.6 Một số hệ mật mã khóa công khai khác
− ELGamal(ELGamal,s Public-key Cryptosystem): Độ bảo mật dựa trên
tính khó giải của bài toán logarit rời rạc trên các trường hữu hạn.
− Schnorr( Schnorr,s Public-key Cryptosystem): Độ bảo mật dựa trên các
thuật toán logarit rời rạc.
− DSA (Digital Signature Algorithm): Độ bảo mật dựa sự kết hợp của
ELGamal và Schnorr.
− ECC(The Elliptic Curve Cryptosystem): Là biến tướng của các hệ mật
khác (ELGamal), làm việc trên các đường cong Elip.
1.2 Hàm băm bảo mật
1.2.1 Giới thiệu
Hàm băm bảo mật (Secure Hash Function) còn được gọi là hàm băm (Hash)
là một trong những kỹ thuật cơ bản để thực hiện các cơ chế xác thực thông tin
(Message Authentication). Ngoài ra, hàm băm cũng còn được sử dụng trong nhiều

thuật toán mật mã, trong chữ ký số (Digital Signature) và trong nhiều ứng dụng
khác.
Nguyên tắc của hàm băm là biến đổi khối thông tin gốc M có độ dài bất kỳ
thành một đoạn thông tin ngắn hơn có độ dài cố định. Đoạn thông tin này gọi là giá


10

trị băm, hay còn được gọi là mã băm h = H(M) (Hash Code hay Message Digest).
Mã băm được dùng để kiểm tra tính chính xác của thông tin nhận được. Thông
thường, mã băm được gửi đính kèm với thông tin gốc. Ở phía nhận, hàm băm lại
được áp dụng đối với thông tin gốc để tìm ra mã băm mới, giá trị này được so sánh
với mã băm đi kèm với thông tin gốc. Nếu hai mã băm giống nhau, nghĩa là thông
tin gửi đi không bị thay đổi.
1.2.2 Các tính chất của hàm băm bảo mật
Chỉ có thể dùng hàm băm để tính mã băm từ thông tin gốc chứ không thể
tính được thông tin gốc từ mã băm. Do đặc tính này, các hàm băm bảo mật cũng
còn được gọi là hàm băm một chiều (One Way Hash Function).
Các tính chất của một hàm băm bảo mật h = H(M)
− H(M)có thể được áp dụng cho khối thông tin với chiều dài bất kỳ
− Dung lượng mã băm h = H(M) luôn có chiều dài cố định
− Hàm băm H(M) với một giá trị có thể thực hiện trên phần cứng hoặc bằng
phần mềm.
− Tính chất một chiều (One Way Property): Cho trước một giá trị h, khó có
thể tìm được một giá trị M sao cho H(x) = h.
− Tính chất đụng độ yếu (Weak Collision Resistance): Cho trước khối thông
tin M, không thể tìm được một khối thông tin M” ≠ M sao cho cùng giá trị băm
H(M”) = H(M).

Thông tin gốc


Thông tin gốc

Thông tin gốc

− Tính chất đụng độ mạnh (Strong Collision Resistance): Không thể tìm
được hai khối thông tin M” ≠ M sao cho H(M”) = H(M).

H

: So sánh
H
: Mã băm

H

: Hàm băm

Hình 1.2: Một ứng dụng điển hình của hàm băm


11

Trong những trường hợp lý tưởng nhất là ứng với một khối thông tin M xác
định một giá trị duy nhất mã băm h = H(M) và ngược lại, mỗi giá trị h xác định duy
nhất một khối thông tin M, tức là ánh xạ 1:1, sẽ không thể xảy ra tình huống tồn tại
hai khối thông tin khác nhau cùng cho một giá trị băm. Nếu tồn tại 2 khối thông tin
khác nhau cùng cho ra một mã băm, nói rằng thuật toán băm bị đụng độ (Collision).
Tạo ra các tình huống đụng độ là mục tiêu tấn công của Hacker vào một hàm băm
bảo mật.

Xác suất để hai khối thông tin có cùng một giá trị băm phụ thuộc vào kích
thước của mã băm, tức là phụ thuộc vào số lượng mã băm có thể có. Kích thước mã
băm càng nhỏ thì khả năng xảy ra tình huống đụng độ càng lớn, và do đó xác suất
tấn công thành công càng lớn. Nếu kích thước mã băm là n bit, để xác suất xảy ra
đụng độ là 50% thì cần có khoảng 2n/2 khối thông tin được xử lý. Các kiểu tấn công
này được gọi là tấn công Birthday Attack.
Nói chung, độ an toàn một hàm băm phụ thuộc vào kích thước mã băm
1.2.3 Ứng dụng hàm băm bảo mật
Một ứng dụng tiêu biểu của hàm băm mật như sau: Giả sử Alice đặt ra một
bài toán khó cho Bob, và tuyên bố rằng cô ta đã giải được. Bob sẽ phải cố gắng tự
thực hiện, nhưng chưa dám chắc rằng Alice không giải sai. Do đó, Alice viết ra lời
giải của mình, gắn thêm một giá trị nonce ngẫu nhiên, tính giá trị băm của nó và cho
Bob biết giá trị băm đó (giữ bí mật lời giải và giá trị nonce). Bằng cách này, khi
Bob tìm ra lời giải của mình vài ngày sau đó, Alice có thể chứng minh rằng cô ta có
lời giải sớm hơn bằng cách tiết lộ giá trị nonce cho Bob. (Đây là một ví dụ về một
lược đồ cam kết đơn giản trong thực tế, vai trò của Alice và Bob thường sẽ là các
chương trình máy tính, và bí mật sẽ là một cái gì đó dễ dàng giả mạo hơn là một bài
toán đó theo yêu cầu).
Một trong những ứng dụng quan trọng của hàm băm an toàn là việc xác minh
tính toàn vẹn của thông tin, nó xác định liệu có sự thay đổi nào đã được thực hiện
đối với thông điệp (hoặc một tập tin). Ví dụ, có thể được thực hiện bằng cách so


12

sánh các giá trị băm của thông điệp đã tính toán trước, và sau khi truyền đi (hoặc sự
kiện nào đó).
Một giá trị tóm lược thông điệp cũng có thể phục vụ như là một phương tiện
nhận dạng một tập tin đáng tin cậy một số hệ thống quản lý mã nguồn, bao gồm Git,
Mercurial và Monotone, sử dụng giá trị shalsum của nhiều dạng nội dung khác nhau

(nội dung tập tin, cây thư mục, vv…) để nhận dạng chúng một cách duy nhất. Một
ứng dụng khác liên quan tới việc xác thực mật khẩu. Mật khẩu thường không được
lưu trữ dạng văn bản rõ, với các lý do hiển nhiên, mà thay bằng dạng giá trị tóm
lược. Để xác thực người dùng, mật khẩu đại diện cho người sử dụng được băm và
so sánh với giá trị băm lưu trữ. Điều này đôi khi được gọi là phép mã hóa một chiều
(one-way encryption). Đối với cả hai lý do bảo mật và hiệu suất, hầu hết các thuật
toán chữ ký số chỉ định rằng chỉ giá trị tóm lược của thông báo được "ký", chứ
không phải toàn bộ thông báo. Các hàm băm cũng có thể được sử dụng trong việc
tạo các bit giả ngẫu nhiên (pseudorandom)
Các giá trị băm còn được sử dụng để nhận dạng tập tin trên mạng khi chia sẻ
theo mô hình Peer to Peer. Ví dụ, trong một liên kết ed2k, một giá trị băm MD4
biến thể được kết hợp với kích thước tập tin, cung cấp đủ thông tin để định vị các
nguồn tập tin, tải các tập tin và xác nhận nội dung của nó. (Trong máy tính, các liên
kết ed2k là các hyperlinks được sử dụng để biểu thị các tập tin được lưu trữ trong
mạng eDonkey P2P.) Các liên kết Magnet là một ví dụ khác. Các giá trị băm tập tin
như vậy thường là băm đầu danh sách băm hoặc cây băm để có thêm nhiều tiện lợi.
1.2.4 Hàm băm bảo mật SHA
khối 512 bit, qua 5 công đoạn khác nhau SHA (Secure Hash Function) chuẩn
hoá năm 1993, sau đó được chỉnh sửa năm 1995 và đặt tên là SHA-1, từ đó phiên
bản cũ được gọi là SHA-0.
SHA-1 tạo ra mã băm có chiều dài cố định là 160 bit. Về sau, có nhiều nâng
cấp đối với SHA, chủ yếu là tăng chiều dài mã băm, từ đó xuất hiện các phiên bản
khác nhau của SHA, bao gồm: SHA-256 (mã băm dài 256 bit), SHA-384 (mã băm
dài 384 bit) và SHA-512 (mã băm dài 512 bit).
SHA-1 chấp nhận các khối thông tin có kích thước tối đa là 264 bit để tạo ra
mã băm với độ dài cố định 160 bit. Toàn bộ khối thông tin được xử lý theo từng


13


Bảng 1.1: Các phiên bản SHA
Thông số

SHA-1

SHA-256

SHA-384

SHA-512

Kích thước mã băm (bit)

160

256

384

512

Kích thước thông tin gốc (bit)

< 264

< 264

< 2128

<2128


Kích thước khối (bit)

512

512

1024

1024

Độ dài từ (bit)

32

32

64

64

Số bước thực hiện (bước)

80

64

80

80


1.2.5 Hàm băm MD5
MD5 (Message Digest Algorithm 5) là một giải thuật xác thực thông tin
được sử dụng phổ biến trên Internet, đặc biệt dùng để kiểm tra tính chính xác của
các phần mềm mã nguồn mở phát hành trên mạng. Giải thuật này được xây dựng
bởi Ron Rivest và được chuẩn hóa bằng RFC 1321. MD5 có thể xử lý các khối
thông tin có độ dài không giới hạn để tạo ra mã băm dài 128 bit. Thông tin gốc cũng
xử lý theo từng đoạn 512 bit. MD5 được sử dụng rộng rãi trong các chương trình an
ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin.
MD5 được sử dụng rộng rãi trong thế giới phần mềm để đảm bảo rằng tập
tin tải về không bị lỗi. Người sử dụng có thể so sánh giữa thông số kiểm tra phần
mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng
MD5. Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối,
trong khi hệ điều hành Windows sử dụng phần mềm của hãng thứ ba.
MD5 được dùng để mã hóa mật khẩu. Mục đích của việc mã hóa này là biến
đổi một chuỗi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể
nào lần trở lại mật khẩu. Có nghĩa là việc giải mã là không thể hoặc phải mất một
khoảng thời gian vô tận (đủ để làm nản lòng các hacker).
Bảng 1.2: So sánh các thông số giữa SHA-1 và MD5
Thông số so sánh

MD5

SHA-1

Kích thước mã băm (bit)

128

160


Kích thước khối (bit)

512

512

Số bước

64

80

Không giới hạn

< 264

4

4

Kích thước thông tin gốc (bit)
Số lượng hàm logic


14

Với 128 bit giá trị mã băm, việc tìm ra hai khối thông tin để có cùng một giá
trị mã băm không còn là điều bất khả thi đối với năng lực của các bộ xử lý hiện đại
hiện nay. Vì vậy, độ an tòan của một MD5 đang bị đe dọa nghiêm trọng, và mức độ

phổ biến của MD5 có thể sẽ giảm đi rất nhiều và được thay thế bằng một giải thuật
xác thực khác hiệu quả hơn.
1.3 Chữ ký số [2]
1.3.1 Khái niệm chữ ký số
Ứng dụng quan trọng nhất của mật mã khoá công khai là chữ ký số hay còn
được gọi là chữ ký điện tử. Chữ ký số là một phương thức nhằm đảm bảo tính
hợp pháp của các thực thể khi tham gia các giao dịch điện tử. Chữ ký số là một
cơ chế xác thực cho phép người tạo ra thông tin (Message Creator) gắn thêm một
đoạn mã đặc biệt vào thông tin, có tác dụng như là một chữ ký thông thường.
Chữ ký được tạo ra bằng cách áp dụng một hàm băm lên thông gốc và sau đó nó
được mã hóa bằng khóa riêng của người gửi. Chữ ký số có mục đích đảm bảo tính
toàn vẹn về nguồn gốc và nội dung của thông tin.
Trong khi các cơ chế xác thực thông tin (Message Authentication) đã thực
hiện chức năng xác thực nguồn gốc thông tin. Các hàm băm một chiều chỉ mới có
tác dụng bảo vệ thông tin trao đổi giữa hai thực thể không xâm phạm của một thực
thể bên thứ 3. Tuy nhiên, các cơ chế này không thể ngăn chặn được sự xâm phạm
của chính hai thực thể trực tiếp tham gia.
Ví dụ: Thực thể A gửi một tài liệu X cho thực thể B, sử dụng một cơ chế xác
thực nào đó, cơ chế này mới chỉ đảm bảo chỉ có thực thể A và thực thể B dùng
chung một khoá bí mật K để tạo ra các mã xác thực từ thông tin gốc. Tuy nhiên, nếu
thực thể B cố ý thay đổi nội dung của tài liệu X thành một tài liệu có nội dung mới
Y khác với tài liệu X gốc, và với khóa bí mật K. Thực thể B hoàn toàn có thể tạo ra
thông tin xác thực mới để gắn vào Y, làm cho nó trở thành một bản tin hợp lệ mặc
dù thực chất đây không phải là bản tin do thực thể A tạo ra. Ngược lại, Thực thể A
cũng có thể từ chối xác nhận việc nó đã gửi bản tin X cho thực thể B, vì với các cơ
chế xác thực như trên, thực thể B hoàn toàn có khả năng giả mạo thông tin đưa ra từ
thực thể A.
Cũng như một chữ ký thông thường (chữ ký bằng tay), một chữ ký số phải
có đầy đủ các thuộc tính sau đây:



15

− Phải xác nhận chính xác người ký và ngày giờ phát sinh chữ ký.
− Phải xác thực nội dung thông tin ngay tại thời điểm phát sinh chữ ký.
− Phải có khả năng cho phép kiểm chứng bởi một người thứ 3 để giải quyết
các tranh chấp nếu có.
Như vậy, chức năng của chữ ký số bao gồm chức năng xác thực.
Các yêu cầu đối với chữ ký số:
− Là một chuỗi bit phát sinh từ khối thông tin gốc cần được xác nhận.
− Chữ ký phải chứa thông tin nhận dạng riêng của người ký để tránh giả
mạo và tránh phủ nhận.
− Quy trình tạo ra chữ ký số và xác minh chữ ký số phải đơn giản, nhanh
chóng và thuận tiện, dễ sử dụng.
− Chữ ký không thể bị giả mạo bằng bất cứ cách nào.
− Có thể sao chép một bản sao của chữ ký dành cho mục đích lưu trữ.

M

Hashing
(SHA, MD5)

Thông tin gốc
(bản rõ)

Mã băm
h = H(M)

Mã hóa
PR (Private Key)


Chữ ký số
soos

Hình 1.3: Định nghĩa chữ ký số
1.3.2 Quy trình tạo và kiểm tra chữ ký số
a) Quy trình tạo ra chữ ký số: Quy trình này được thực hiện bởi người gửi
- Tạo giá trị băm tài liệu cần gửi bằng MD5 hay SHA
- Chữ ký số của người gửi là kết quả mã hoá giá trị băm bằng khoá riêng
(Private key) của người gửi.
- Gửi thông điệp được gửi đi bao gồm tài liệu gốc và chữ ký người gửi


×