ĐẠ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
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
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 Transmission Control Protocol / Internet protocol Uniform Resource Locator URL 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. N = pq = 3*11 = 33, φ(N) = (p-1) (q-1) = (11 - 1) (3 - 1) = 20 3. Chọn e = 3, vì 3 và 20 nguyên tố cùng nhau. 4. Với e = 3, chọn d = 7, vì e*d = 3*7 = 1 mod 20 5. 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).
− 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).
c ố g n i t
c ố g n i t
H
c ố g n i t g n ô h T
g n ô h T
g n ô h T
: So sánh
H
: Hàm băm
: Mã băm
H
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)
Kích thước thông tin gốc (bit) 160 < 264 256 < 264 384 < 2128 512 <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 < 264 Kích thước thông tin gốc (bit) Không giới hạn
Số lượng hàm logic 4 4
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ụn g 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ữ.
Hashing
Mã hóa
Mã băm
M
(SHA, MD5)
PR (Private Key)
Chữ ký số soos
h = H(M)
Thông tin gốc (bản rõ)
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
16
Hình 1.4: Sơ đồ tổng quát tạo chữ ký số
b) Quy trình kiểm tra chữ ký số
- Người nhận tạo giá trị băm cho tài liệu gốc trong thông điệp. Giá trị này
gọi là giá trị băm người nhận.
- Giải mã chữ ký người gửi bằng khoá công khai của người gửi, kết quả là
giá trị băm tài liệu của người gửi, gọi là giá trị băm người gửi. Chỉ người gửi nào có
khoá riêng tương ứng với khoá công khai của người nhận mới có thể tạo ra chữ ký
số. Do đó người nhận có thể xác minh được nguồn gốc người gửi.
- Nếu giá trị băm người gửi và người nhận trùng nhau, nghĩa là người nhận
đã nhận đúng đối tượng cần mong đợi. Ngược lại, người nhận đã nhận thông tin từ
đối tượng không mong đợi.
17
Hình 1.5: Sơ đồ tổng quát kiểm tra chữ ký số
Có thể tóm tắt các quy trình tạo chữ ký số và kiểm tra chữ ký số khi thực thể
A gửi một bản tin M đến thực thể B như sau:
1. Thực thể A tạo một chữ ký số: E (H(M), PRA)
2. Thực thể A gửi thông điệp đến thực thể B: (M, E(H(M), PRA)
3. Thực thể B nhận (M, E(H(M), PRA)
4. Giải mã, khôi phục giá trị băm người gửi:h= D[E(H(M), PRA)),PUA]
5. Tạo giá trị băm người nhận: h’ = H(M)
6. So sánh h và h’. Nếu hai thông tin này giống nhau, thì bản tin nhận được
xem như hợp lệ.
Hình 1.6: Sơ đồ tổng quát tạo và kiểm tra chữ ký số
18
1.3.3 Những vấn đề còn tồn tại của chữ ký số
Trên lý thuyết, mỗi bước trong quá trình tạo và kiểm tra chữ ký số là an toàn.
Tuy nhiên trên thực tế, còn nhiều trường hợp vẫn chưa an toàn, đó là:
- Cũng như việc sử dụng Password, khoá bí mật cũng phải được đảm bảo tuyệt
đối bí mật. Chỉ có chủ sở hữu của nó mới được biết. Nhưng nếu nó bị đánh cắp hay bị lộ
từ một tập tin trên máy bởi một Hacker thì người chủ thực sự của nó có thể bị giả mạo.
Khoá bí mật bị Hacker sử dụng theo ý đồ xấu.
- Bất kỳ người dùng nào sử dụng khoá công khai của một người sử dụng
khác, cần kiểm tra chữ ký số, phải có sự đảm bảo chắc chắn rằng họ đã có khoá
công khai tin tưởng và chính xác.
Làm thế nào để bạn biết chính xác được khoá công khai mà bạn nhận được
qua thư điện tử hoặc nhắn tin từ ngân hàng, đối tác, nhà cung cấp của bạn mà không
phải là từ một người nào đó có ý đồ lừa đảo? Để giải quyết vấn đề này, người ký
chữ ký số và người nhận có thể:
Hoặc là mỗi bên sẽ đăng ký một cặp khoá gồm khoá công khai và bí mật. Họ
sẽ giữ khoá bí mật của mình còn khoá công khai được nhập vào bản ghi của họ
trong tệp cơ sở dữ liệu được công bố công khai trên mạng. Mỗi người sử dụng khoá
bí mật để ký các tài liệu và người nhận dùng khoá công khai của người gửi để kiểm
tra chữ ký. Hoặc là hai bên cần tới bên thứ ba. Họ đề nghị bên thứ ba phát hành cho mỗi bên một cặp khoá. Khi một bên ký hợp đồng, bên kia có thể thông qua bên thứ
ba để kiểm tra khoá công khai có thật sự là của bên ký hợp đồng không. Vai trò của
bên thứ ba đảm bảo cho người nhận có khoá công khai chính xác của người gửi.
Sự can thiệp của bên thứ ba là cần thiết để xác lập lòng tin và sự an toàn
trong các giao dịch điện tử. CA cung cấp chứng nhận điện tử cho các bên tham gia
giao dịch. Nngoài ra CA còn có khả năng kiểm tra tính hợp lệ của các chứng thực
điện tử của các thực thể tham gia trong các giao dịch.
Một vấn đề khác nữa là pháp luật về chữ ký điện tử chưa được đặt dưới một chuẩn mực kỹ thuật. Hiện nay có tới hơn 12 phần mềm ứng dụng về chữ ký điện tử
trên thị trường. Tuy nhiên, bởi tốc độ và sự tiện lợi, một số lượng lớn các công ty vẫn sẵn sàng sử dụng chữ ký điện tử.
Như trên đã trình bày, mỗi một thực thể khi tham gia các giao dịch điện tử cần phải có đồng thời một cặp khoá mã công khai và khóa riêng (Public Key và Secret
Key). Một câu hỏi được đặt ra: Ai là người cung cấp cặp khoá mã ấy? Và dịch vụ chứng thực điện tử đã xuất hiện.
19
1.4 Cơ sở hạ tầng khóa công khai PKI [3]
1.4.1 Khái niệm Cơ sở hạ tầng khóa công khai PKI (Public Key Infrastructure) là một hệ thống hạ tầng bao gồm các thiết bị phần cứng, các hệ thống phần mềm, các chính sách, các thủ tục và con người.. cần thiết để tạo ra, quản lý, lưu trữ và phân phối các chứng thực khóa phục vụ cho mục đích là phổ biến khóa công khai của các thực thể thông tin.
Vai trò của PKI trong hệ thống là quản lý các chứng thực khóa một cách an
toàn và cung cấp nó cho user một cách hiệu quả nhất.
Mục tiêu của PKI là cung cấp một môi trường làm việc phối hợp, trong đó, thiết bị, phần mềm của nhiều nhà sản xuất khác nhau có thể cùng sử dụng chung một cấu trúc chứng thực khóa.
Đặc tính chung đối với tất cả các PKI: 1. Chứng thực (Certification):
Là quá trình gắn kết một giá trị khoá công khai với thông tin về một cá nhân, một tổ chức hay một thực thể, thậm chí với một thông tin nào đó, ví dụ như giấy phép hay giấy tờ tuỳ thân (Credential)
Quá trình xác thực sử dụng PKI, khi một CA cấp giấy chứng nhận (Certification) cho một thực thể và khi người sử dụng xác nhận sự hợp lệ của chứng thực, được gọi là thực thể xác thực. Mức độ mà người sử dụng tin tưởng vào các thông tin của chứng thực và sự hợp lệ của nó là cách để đánh giá tính chắc chắn của sự xác thực.
Một chứng thực có thể chứa các thông tin thực thể hay các thông tin phi thực thể. Khi là một chứng thực đặc tính, việc xác thực chứng thực đặc tính được gọi là xác thực đặc tính. Chứng thực chứa các thông tin phi thực thể, như là các giấy phép hay giấy tờ tuỳ thân được gọi là chứng thực thuộc tính (Attribute Certificate). Quá trình xác thực một chứng thực tin cậy gọi là xác thực tin cậy (Credential Authentication)
Việc một PKI sử dụng loại chứng thực thực thể hay chứng thực tin cậy hay
cả hai cũng là một đặc tính của cơ sở hạ tầng khoá công khai. 2. Xác nhận hợp lệ (Validation) là quá trình kiểm tra xem một chứng thực còn hợp lệ hay không. Thông tin trong một chứng thực có thể thay đổi theo thời gian. Một người sử dụng chứng thực số (Certificate User) cần phải đảm bảo rằng dữ liệu trong chứng thực là đúng, gọi là xác nhận hợp lệ chứng thực. Có hai phương pháp cơ bản để xác nhận hợp lệ chứng thực:
20
- Xác nhận trực tuyến (Online Validation): Người sử dụng có thể hỏi trực
tiếp tổ chức cấp phát CA về tính hợp lệ của chứng thực số khi sử dụng
- Xác nhận hợp lệ không trực tuyến (Offine Validation): CA có thể gia hạn thêm thời hạn hợp lệ của chứng thực – một bộ thời gian sẽ định nghĩa khoảng thời gian mà các thông tin chứa trong chứng thực được cho là hợp lệ (còn hiệu lực).
Cũng như các phương pháp xác nhận hợp lệ là các biện pháp thu hồi chứng thực số (Revocation). Thu hồi chứng thực là quá trình thông báo cho người sử dụng được biết khi thông tin trong chứng thực mất hiệu lực. Đặc biệt khi một chủ thể của khoá riêng bị lộ, hay thông tin định danh của một chứng thực thay đổi, ví dụ, chủ thể có một số điện thoại mới
Nếu một chứng thực được xác nhận hợp lệ trực tuyến với một CA, thì vấn đề thu hồi chứng thực cũng có thể thực hiện được, vì CA có thể dễ dàng thông báo một chứng chỉ đã hết hiệu lực.
Nếu không sử dụng được phương pháp trực tuyến, phương pháp sử dụng phổ biến là danh sách chứng thực thu hồi (CRL). Một CRL là một danh sách các chứng thực bị đã ký bị loại bỏ bởi CA theo khoảng thời gian nhất định. Người sử dụng cần phải kiểm tra danh sách CRL mới nhất trong quá trình xác thực để đảm bảo là chứng thực được sử dụng không bị loại bỏ.
Một trong những quan tâm chủ yếu với CRL, đó là trong khoảng thời gian khi một CA nhận được một lưu ý là một chứng thực nên được loại bỏ, đến khi CA công bố nó trong danh sách CRL tiếp theo, thì người sử dụng kiểm tra CRL hiện thời sẽ không biết được các thu hồi và sẽ cho rằng chứng thực vẫn còn hiệu lực. Được gọi là CRL Time Granularity Problem
Một quan tâm khác là kích thước của CRL. Một CA có thể xác thực cho rất nhiều chủ thể. Khi một CRL quá lớn sẽ rất khó cho người sử dụng xem xét vì băng thông hạn chế. Thêm nữa, do CRL được ký, chữ ký đó cần được kiểm tra trước khi CRL được dùng, và thời gian cần để kiểm tra chữ ký trên CRL lớn và xử lý các đầu vào có thể trở nên quan trọng.
Để khắc phục các vấn đề trên, cần sử dụng từng loại CRL riêng rẽ cho các lý do thu hồi chứng thực khác nhau và hoặc cho các chủ thể chứng thực khác nhau. Thí dụ, CA có thể đưa ra một CRL cho các thu hồi thông thường (chẳng hạn như thay đổi trong thông tin nhận dạng của chủ thể chứng thực) và CRL khác cho các thu hồi do bị lộ sự bảo mật. Tương tự, một CA có thể đưa ra một CRL cho các chủ thể người sử dụng đầu cuối và CRL khác cho các CA khác mà nó chứng thực. Các
21
phương pháp này có hiệu quả trong việc phân chia một CRL lớn thành các phần nhỏ hơn, nhưng vấn đề CRL Time Granularity Problem vẫn chưa giảm đáng kể
Một phương pháp khác được đưa ra để xử lý vấn đề này: delta-CRL. Delta- CRL là một danh sách của các thay đổi CRL (do CA tự ký ) xuất hiện kể từ khi CRL đầy đủ lần trước được đưa ra. Delta-CRL cho phép thông báo các thu hồi chứng thực được đưa ra thường xuyên hơn, và do đó sẽ làm giảm xác suất một chứng thực đã bị thu hồi được xác nhận hợp lệ nhầm. Delta-CRL còn giải quyết được vấn đề kích thước CRL. Một hệ thống xác nhận chứng thực có thể khởi đầu với một CRL đầy đủ, rồi chỉ cần xử lý với các delta-CRL khi chúng được đưa ra, cập nhật lại bản CRL đầy đủ của nó.
Phương pháp thu hồi và xác nhận hợp lệ trực tuyến vẫn còn rất mới. Trong khi có vẻ như phương pháp trực tuyến tránh được vấn đề quản lý CRL, các yêu cầu về dải thông và tốc độ xử lý vẫn còn chưa được xác định rõ. 1.4.2 Chức năng chủ yếu của PKI
Một hệ thống PKI nhằm giải quyết các vấn đề sau: 1. Authentication: Là các hoạt động kiểm tra tính xác thực của một thực thể trong giao dịch, liên quan đến kiểm tra tính đúng đắn một thực thể giao tiếp trên mạng. Một thực thể có thể là một người, một chương trình máy tính, hoặc một thiết bị phần cứng. Các hoạt động kiểm tra tính xác thực được đánh giá là quan trọng nhất trong các hoạt động của một phương thức bảo mật. Một hệ thống thông thường phải thực hiện kiểm tra tính xác thực của một thực thể khi thực thể đó được kết nối với hệ thống. Cơ chế kiểm tra tính xác thực của các phương thức bảo mật dựa vào 3 mô hình chính như sau:
- Cơ chế kiểm tra tính xác thực dựa vào mô hình những thông tin biết trước. Đối tượng cần kiểm tra phải cung cấp những thông tin mà chúng biết, ví dụ như Password, hoặc mã số thông số cá nhân PIN (Personal Information Number).
- Với cơ chế kiểm tra dựa vào mô hình những thông tin đã có, đối tượng kiểm tra cần phải thể hiện những thông tin mà chúng sở hữu, ví dụ như Private Key, hoặc số thẻ tín dụng.
- Với cơ chế kiểm tra dựa vào mô hình những thông tin xác định tính duy nhất, đối tượng cần kiểm tra có những thông tin để định danh tính duy nhất của mình, ví dụ thông qua giọng nói hoặc Fingerprint những thông tin đã có và những thông tin xác định tính duy nhất.
2. Confidential: đánh giá mức độ bảo mật, hay tính an toàn đối với mỗi phương thức bảo mật, mức độ có thể phục hồi dữ liệu từ những người không có
22
quyền đối với dữ liệu đó. Có thể bảo mật dữ liệu theo kiến trúc end-to-end hoặc link-by-link. Với mô hình end-to-end dữ liệu được bảo mật trong toàn bộ quá trình xử lý, lưu truyền trên mạng. Với mô hình link-by-link dữ liệu chỉ được bảo vệ trên các đường truyền vật lý.
3. Integrity: Tính toàn vẹn, hoạt động này đánh giá khả năng sửa đổi dữ liệu với dữ liệu nguyên thuỷ ban đầu, một phương thức bảo mật có tính toàn vẹn dữ liệu khi nó bảo đảm các dữ liệu mã hoá không thể bị thay đổi nội dung so với tài liệu gốc (khi đã được giải mã) và trong trường hợp những kẻ tấn công trên mạng sửa đổi nội dung dữ liệu đã mã hoá thì không thể khôi phục lại dạng ban đầu của dữ liệu.
4. Nonreputation: Tính không thể phủ nhận trong các giao dịch là phải xác định tính xác thực của chủ thể gây ra hành động có thực hiện bảo mật hay không (Ví dụ chữ ký điện tử sử dụng trong hệ thống Mail cho phép xác định chính xác đối tượng “ký” - Người gửi Message) 1.4.3 Các thành phần PKI Một cơ sở hạ tầng khoá công khai bao gồm: - User: là người sử dụng, một phần mềm hoặc một thiết bị tham gia vào quá trình trao đổi thông tin sử dụng mật mã khóa công khai. Mỗi thực thể có một cặp khóa, trong đó khóa công khai được phổ biến bởi PKI dưới dạng các chứng thực khóa, còn khóa bí mật do chính thực thể quản lý.
- Certificate Authority (CA): là thực thể tạo ra và cung cấp các chứng thực số cho người sử dụng đầu cuối. Chứng thực khóa từ các khóa công khai mà các thực thể đầu cuối ủy quyền cho phép nó phổ biến cùng với chữ ký số của chính CA tạo ra. Do vậy, CA là một thực thể được tin cậy
- Nhà quản lý đăng ký RA(Registration Authority): là một thành phần tùy chọn của PKI, đóng vai trò như người thẩm tra cho CA trước khi một chứng chỉ số được cấp phát tới người yêu cầu. Nó xử lý một số công việc quản lý nhằm giảm tải cho CA, chẳng hạn như đăng ký thực thể đầu cuối, kiểm chứng các thực thể đầu cuối, tạo ra các cặp khóa public-private, …
- Repository: Kho lưu trữ chứng thực khóa và cung cấp chứng thực khóa cho các thực thể đầu cuối khi có yêu cầu. Có nhiều cách để thực thể đầu cuối truy xuất các chứng thực khóa tại PKI: thông qua dịch vụ thư mục LDAP (X.500), thông qua FTP hoặc HTTP, …
23
Hình 1.7: Các thành phần cơ bản của một PKI
- Certificate revocation list (CRL) Issuer: Một chứng thực khóa khi đã được tạo ra và phổ biến thì không có nghĩa là nó sẽ được tồn tại vĩnh viễn. Sau một khoảng thời gian nhất định hoặc theo yêu cầu của thực thể đầu cuối, chứng thực khóa có thể bị thu hồi. CRL là danh sách các chứng thực khóa bị thu hồi, được tạo ra bởi CA hoặc ủy quyền cho CRL issuer. Như vậy, CRL issuer cũng là một thành phần tùy chọn của PKI.
1.4.4 Các thủ tục trong PKI - Đăng ký (Registration): là thủ tục mà thực thể đầu cuối phải thực hiện để
tham gia vào PKI lần đầu tiên.
- Khởi tạo (Initialization): Khởi tạo các thông tin của thực thể đầu cuối tại
CA, tạo ra cặp khóa Public/Private cho thực thể đầu cuối.
- Chứng thực (Certification): CA tạo ra chứng thực khóa cho thực thể đầu cuối, ứng với khóa công khai vừa được tạo ra ở giai đọan khởi tạo hoặc do thực thể đầu cuối cung cấp.
- Phục hồi khóa (Key Pair Recovery): cho phép phục hồi một khóa cũ trước đó. Thủ tục này thường được dùng trong trường hợp khóa mật mã vì một lý do nào đó không truy xuất được. Để khôi phục dữ liệu đã bị mật mã hoá, cần phải có thủ tục này để lấy lại khoá.
- Cập nhật khóa (Key Pair Update): Mỗi chứng thực khóa được tạo ra và tồn tại trong thời gian nhất định có hiệu lực. Sau khoảng thời gian này, chứng thực khóa sẽ bị thu hồi (Revoke). Thủ tục Key Pair Update có tác dụng gia hạn sự tồn tại của chứng thực khóa, cho phép một chứng thực khóa tiếp tục tồn tại sau khi đã hết thời gian hiệu lực.
24
- Yêu cầu thu hồi chứng thực về khóa (Revocation Request): Yêu cầu thu hồi các chứng thực khóa đã cấp, vì lý do khóa riêng bị lộ chẳng hạn. Thủ tục này cho phép một thực thể đầu cuối yêu cầu thu hồi một chứng thực khóa trong thời gian chưa hết hiệu lực.
1.4.5 Khái niệm chứng thực số Chứng thực số (Digital Certificate), còn được gọi là chứng nhận điện tử, là một tệp tin điện tử được đính kèm với một thông báo thư điện tử hoặc một chương trình được nhúng vào một trang Web nhằm kiểm tra tính xác thực của một người sử dụng hoặc một Website, dùng để xác minh danh tính một cá nhân, một máy chủ, một công ty... trên Internet. Chứng thực số do một tổ chức đứng ra cấp phát, chứng nhận được gọi là nhà cung cấp chứng thực số (Certificate Authority, viết tắt là CA). CA phải đảm bảo về độ tin cậy, chịu trách nhiệm về độ chính xác của chứng thực số mà nó cấp.
Khi một thực thể muốn có một chứng thực số, CA sẽ yêu cầu thực thể đó cung cấp bằng chứng nhận dạng thích hợp. Nếu đáp ứng theo yêu cầu, CA sẽ phát hành chứng thực, bao gồm các nội dung:
- Thông tin cá nhân: Là các thông tin của thực thể xin cấp chứng thực số, gồm: tên, quốc tịch, địa chỉ, điện thoại, email, tên tổ chức .v.v. Phần này giống như các thông tin trên chứng minh thư của mỗi người.
- Khoá công khai: Khoá công khai là một giá trị được nhà cung cấp chứng thực đưa ra như một khoá mã hoá, kết hợp cùng với một khoá riêng duy nhất được tạo ra từ khoá công khai để tạo thành cặp mã khoá bất đối xứng.
- Chữ ký số của CA cấp chứng chỉ: Còn gọi là chứng chỉ gốc. Đây là sự xác nhận của CA, bảo đảm tính chính xác và hợp lệ của chứng chỉ đã được cấp. Muốn kiểm tra một chứng chỉ số, trước tiên phải kiểm tra chữ ký số của CA có hợp lệ hay không. CA ký lên chứng thực và không cần giữ bí mật chứng thực đối với bất kỳ người nào nhận chứng thực.
Yêu cầu nhận dạng của các CA cũng khác nhau, các chứng thực được phân loại thành các lớp đảm bảo thấp, trung bình hoặc cao phụ thuộc phần lớn vào yêu cầu nhận dạng cần phải đáp ứng.
Chứng thực (Certificate) thực chất là quá trình kết hợp thông tin Public Key vài tên của thực thể để định danh tính duy nhất cho thực thể đó (khái niệm tên của thực thể có thể là tên của một Server, tên một cá nhân, tên một Object,…). Thực thể là những đối tượng cần định danh qua Certificate. Các tham số, thuộc tính của thực thể là những nội dung thông tin để định danh một thực thể duy nhất. Một thực thể
25
có thể là một cá nhân, một thiết bị phần cứng như Router, máy chủ, hay là một phần mềm,…Các thông số, thuộc tính định dạng một Certificate gọi là Certificate Subject. Chứng thực số có các lợi ích:
− Mã hoá: Khi người gửi đã mã hoá thông tin bằng khoá công khai thì người khác không thể giải mã. Đây là một tính năng rất quan trọng, giúp người sử dụng hoàn toàn tin cậy về khả năng bảo mật thông tin.
− Chống giả mạo: Khi gửi đi một tài liệu bản rõ có sử dụng chứng thực số, người
nhận sẽ kiểm tra được thông tin nhận được có bị thay đổi hay không.
− Xác thực: Khi gửi một thông tin kèm chứng thực số, người nhận sẽ xác
định rõ được danh tính của người gửi.
− Chống chối cãi nguồn gốc: Khi sử dụng một chứng thực số, người gửi và người nhận phải chịu trách nhiệm hoàn toàn về những thông tin mà chứng thực số đi kèm. Trong trường hợp chối cãi, CA cung cấp chứng thực số cho hai bên sẽ chịu trách nhiệm xác minh nguồn gốc thông tin, chứng tỏ nguồn gốc thông tin được gửi. − Chữ ký điện tử người gửi: Những tài liệu có thể gửi đi nhanh chóng qua Internet có thể bị đọc hay bị giả mạo trước khi đến người nhận. Bằng việc sử dụng chứng thực số cá nhân, người gửi có thể tạo thêm một chữ ký điện tử vào tài liệu như là một bằng chứng xác nhận. Chữ ký điện tử có các tính năng xác thực thông tin, toàn vẹn dữ liệu và chống chối bỏ nguồn gốc. 1.5 Một số thuật toán quản lý khóa [2] 1.5.1 Thuật toán trao đổi khoá Diffie -Hellman
Diffie-Hellman là một thuật toán dùng để trao đổi khóa đối xứng (Key Exchange), không dùng để mật mã hóa thông tin. Tuy nhiên, Deffie-Hellman lại có ích trong giai đoạn trao đổi khóa bí mật của các thuật toán mật mã đối xứng. Như trên đã trình bày, một trong những vấn đề quan trọng liên quan trực tiếp đế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 = gk , tìm k, sao cho k = logg(x). Tuy nhiên, nếu cho trước g, p và (gk mod p), thì quá trình xác định k theo phương pháp 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:
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}, tồn tại số n sao cho: x = gn mod p.
26
− Giá trị p và g được phổ biến công khai giữa thực thể trao đổi khoá − User A tạo ra một số bí mật Xa < p, tính Ya = (gXa mod p) và gửi cho B − User B tạo ra số bí mật Xb < p, tính Yb = (gb mod p) và gửi lại cho A − Dựa trên thông tin 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ị (gXa mod p)Xb = (gXaXb mod p)
− 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ị (gXb mod p)Xa = (gXaXb mod p)
− Giả sử trong quá trình trao đổi các giá trị (gXa mod p) và (gXb 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 toán logarit rời rạc là rất cao.
User A
User B
Chọn số bí mật Xa < p Tính Ya = (gXa mod p) và gửi cho B Tính K = (Yb)Xa mod p
Chọn số bí mật Xb < p Tính Yb = (gXb mod p) và gửi cho A Tính K = (Ya)Xb mod p
Hình 1.8: Thuật toán trao đổi khoá Diffie-Hellman
Ví dụ: Cho p = 353 và g = 3, Giả sử, User A chọn giá trị bí mật Xa = 97 và
User B chọn giá trị bí mật Xb = 233. Khi đó:
User A tính được Ya = (397 mod 353) = 40 và gửi cho B. User B tính được Yb = (3233 mod 353) = 248 và gửi cho A. User A tính được khoá bí mật K = (Yb)Xa mod 353=24897mod 353= 160 User B tính được khoá bí mật K =(Ya)Xb mod 353= 4097 mod 353 = 160
1.5.2 Đánh giá độ an toàn thuật toán trao đổi khoá Diffie -Hellman
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ị Xa, Xb từ các giá trị p, g, Ya và Yb 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):
27
- Thực hiện tấn công MITM trên kết nối User A - User B, User C chọn hai số nguyên XC1 và XC2 thoảXC1 < p và XC2 < p, sau đó cũng tính hai giá trị tương ứng YC1 = (gXc1 mod p) và YC2 = (gXc2 mod p)
− Khi User A gửi Ya cho User B, User C sẽ chặn lấy Ya, đồng thời mạo danh A gửi YC1 cho B. User B xác định khoá K1 dựa trên YC1, và gửi Yb lại cho A. User C chặn Yb và mạo danh B để gửi cho A giá trị YC2.
− User A xác định khoá K2 dựa trên YC2. Bắt đầu từ đây, C chặn bắt và thay
đổi bằng cách sử dụng cặp khoá K1 và K2.
Như vậy, thuật toán Diffie-Hellman không giải quyết được vấn đề trên, vì không có cơ chế xác thực giữa các thực thể trao đổi khoá. Điều này sẽ đượ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 trong chương sau.
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ẳng hạn như các thiết bị nhúng (Embded devices). 1.5.3 Quản lý khoá công khai trong mật mã bất đối xứng
Trong kỹ thuật mật mã bất đối xứng, khoá riêng của mỗi thực thể được chính thực thể đó quản lý mà không cần phải chia sẻ cho ai, tuy nhiên cơ chế nào được dùng để phổ biến khóa công khai một cách an toàn và hiệu quả?
Các cơ chế khác nhau có thể dùng để phổ biến khóa công khai bao gồm: − Phổ biến công khai trên các diễn đàn công cộng: người sử dụng thực hiện việc này bằng cách gửi các thông báo kèm theo khóa công khai của mình đến các website hoặc diễn đàn công cộng trên mạng Internet. Phương pháp này đơn giản nhưng có nhược điểm là khóa dễ bị giả mạo. Một người A có thể đưa khóa công khai của mình lên mạng nhưng thông báo rằng đó là khóa của người B, bằng cách đó, A có thể đọc được những thông tin bí mật mà người khác gửi cho B.
− Sử dụng danh bạ khóa công khai (Public Key Directory): với danh bạ này, những người dùng nào muốn phổ biến khóa của mình thì phải đăng ký với nhà xuất bản và để tránh việc giả mạo, nhà xuất bản phải áp dụng một cơ chế kiểm duyệt an toàn nào đó đối với người đăng ký.
28
− Phương pháp này an toàn hơn cách mà mỗi cá nhân tự phổ biết khóa của mình. Tuy nhiên, nó cũng có khả năng bị giả mạo khi khóa bí mật của nhà xuất bản
bị lộ, kẻ tấn công có thể thay đổi các thông tin mà người sử dụng đã đăng ký lên đó.
− Phương pháp sử dụng danh bạ công cộng có một điểm yếu khác đó là mọi người dùng muốn liên lạc với một người khác cần đến khoá công khai thì phải liên
lạc với nhà xuất bản để được cung cấp, điều này đặt nhà xuất bản vào trạng thái có
nguy cơ quá tải bất cứ lúc nào, hơn nữa đây chính là điểm thắt cổ chai của các giao
dịch trên mạng.
Chứng thực khóa công khai (Public Key Certificate hay gọi tắt là Certificate
hay chứng thực khóa) là một cơ chế phổ biến khóa công khai trong đó mỗi thực thể
tự phổ biến khóa của mình bằng bất cứ phương tiện gì nhưng vẫn đảm bảo được
tính xác thực của khóa.
Chứng thực khóa công khai là một tổ hợp gồm có khóa công khai của một
thực thể, nhận dạng của thực thể đó và chữ ký số (digital signature) xác nhận của
một thực thể thứ 3, thực thể thứ 3 này là một tổ chức được tintưởng trong cộng
đồng (ví dụ như cơ quan nhà nước hoặc các tổ chức tài chính). Các đặc trưng của cơ
chế này bao gồm:
• Mỗi thực thể đều có thể đọc các chứng thực khóa để biết được khóa công
khai cũng như nhận diện chủ sở hữu của khóa đó.
• Mỗi thực thể đều có thể xác thực thông tin trong chứng thực khóa là chính
xác nhờ vào chữ ký của một thực thể được tin cậy thứ 3.
• Chỉ có người chứng thực (Certificate Authority hay CA) mới có quyền tạo
ra và cập nhật các chứng thực khóa.
Quá trình tạo ra và phân phối chứng thực khóa diễn ra như sau :
1) Để tạo chứng thực khóa, thực thể A gửi yêu cầu đến cơ quan chứng thực
CA (Certificate Authority). Trong yêu cầu có chứa khoá công khai của A (PUA). Để tránh các tình huống giả mạo CA yêu cầu cung cấp chứng thực gửi từ các thực thể
đầu cuối phải được gửi đến CA bằng một kênh bảo mật, trên đó có áp dụng các cơ
chế xác thực chặt chẽ.
2) CA tạo ra chứng thực khóa cho A bằng cách mã hoá khối thông tin bao
gồm: nhận dạng của thực thể A (IDA), khoá công khai của A (PUA) và thời điểm
thực hiện việc cấp chứng thực, bằng khoá riêng của CA (PRCA).
29
Như vậy, thực thể A đã tạo được chứng thực khóa cho mình (CA). Tương tự
như vậy, thực thể B cũng yêu cầu CA cung cấp chứng thực khóa cho nó(CB).
Để bắt đầu trao đổi thông tin với nhau sử dụng mật mã bất đối xứng, hai thực
thể A và B trao đổi chứng thực khóa cho nhau để thực thể này nhận được khoá công
khai của thực thể kia.
Với việc nhờ một thực thể tin cậy thứ 3 làm trung gian để tạo ra chứng thực
khóa, khoá công khai có thể được phân phối một cách an toàn mà không bị giả mạo.
Một trong những cơ chế được sử dụng rộng rãi để tạo ra các chứng thực khóa công
khai là chuẩn X.509. Chuẩn này được dùng trong nhiều dịch vụ và giao thức bảo
mật như IPSec, SSL, S/MIME, SET, …
1.5.4 Sử dụng mật mã bất đối xứng để trao đổi khóa bí mật
Trong kỹ thuật mật mã đối xứng, cả hai thực thể thông tin phải dùng chung
một khóa bí mật. Vấn đề là làm thế nào để trao đổi khóa bí mật giữa hai thực thể
này. Thuật toán trao đổi khóa Diffie-Hellman được trình bày trong phần mã hóa bất
đối xứng là một thuật toán an toàn, cho phép hai thực thể trao đổi khóa bí mật mà
một thực thể thứ 3 không lấy cắp được. Tuy nhiên, hạn chế của Diffie-Hellman là
không có tính xác thực, nghĩa là một thực thể sẽ không thể biết chắc chắn rằng khóa
mình nhận được đúng là khóa của thực thể mà mình đang muốn trao đổi thông tin
hay không. Do vậy, trong thực tế, Diffie-Hellman thường được dùng phối hợp với
một cơ chế xác thực đầu cuối (peer authentication).
(1) E([N1 + IDA], PUB)
(2) E([N1 + N2], PUA)
(3) E(N2, PUB)
(4) E(E(K, PRA), PUB)
Hình 1.9: Dùng mật mã bất đối xứng để trao đổi khoá
30
Dùng khóa công khai để trao đổi khóa bí mật của mã hóa đối xứng là một
cách hiệu quả có thể giải quyết được vấn đề trên đây. Một thực thể A (thực thể khởi
tạo - Initiator) muốn trao đổi khóa bí mật với một thể B (thực thể đáp ứng -
responder) có thể thực hiện thủ tục trao đổi khoá như sau:
1) Thực thể A dùng khoá công khai của B (PUB) để mã hoá một bản tin bản
có chứa nhận dạng của A (IDA) và một giá trị ngẫu nhiên N1 (nonce) để nhận diện
giao tác đang thực hiện.
A → B: E([N1 + IDA], PUB)
2) Thực thể B gửi lại cho A một bản tin chứa giá trị ngẫu nhiên N2 do B tạo
ra, cùng với số N1 nhận được từ A. Toàn bộ bản tin được mã hoá sử dụng khoá
công khai của A (PUA).
B → A: E([N1 + N2], PUA)
3) Một lần nữa, A gửi lại cho B một bản tin chứa giá trị N2 được mã hoá
bằng khoá công khai của A (PUA).
A → B: E(N2, PUB)
4) Thực thể A chọn khoá bí mật K thuật toán mã hoá đối xứng, mã hoá nó
bằng chính khoá riêng của A (PRA), tiếp tục mã hoá một lần nữa bằng khoá công
khai của B (PUB),gửi kết quả cho B.B sẽ nhận được khoá bí mật mà A tạo ra một
cách an toàn.
A → B: E(E(K, PRA), PUB)
31
Kết luận chương
Giải pháp sử dụng chứng thực số là sự kết hợp nhiều biện pháp bảo mật đảm
bảo được an toàn thông tin giao dịch trên mạng Internet. Đây là một nền tảng công
nghệ mang tính tiêu chuẩn trên toàn cầu và cũng là giải pháp rất cần thiết đối với
một quốc gia đang trong quá trình phát triển các ứng dụng giao dịch điện tử trong
nhiều lĩnh vực như ở Việt Nam.
Chương này của luận văn đã trình bày một cách cơ bản của kỹ thuật mật mã
bất đối xứng, kỹ thuật hàm băm, chữ ký số và cơ sở hạ tầng khóa công khai PKI. Là
những nền tảng cơ bản để giải quyết những vấn đề xác thực nội dung và nguồn gốc
thông tin. Kỹ thuật mật mã khóa đối xứng và bất đối xứng mới chỉ ngăn chặn các
hành vi vi phạm tính bảo mật và tính toàn vẹn của thông tin và nguồn gốc thông tin.
Chữ ký số được xây dựng dựa trên kỹ thuật hàm băm một chiều và mật mã khóa
công khai, cũng mới chỉ giúp cho các thực thể xác minh được nguồn gốc thông tin,
chứ không ngăn chặn được các hành vi từ chối trách nhiệm pháp lý trong giao dịch.
Vì vậy vấn đề bảo đảm an toàn cho các hệ thống thông tin là một trong
những vấn đề quan trọng và bức thiết, trở thành một mục tiêu phải đặt lên hàng đầu
trong quá trình thiết kế, xây dựng và cài đặt hệ thống. Để có thể đánh giá một hệ
thống thông tin an toàn và bảo mật phải dựa trên các tiêu chí: tính bí mật, tính toàn
vẹn, tính xác thực và tính không chối cãi. Phải thể hiện qua mối quan hệ giữa người
sử dụng với hệ thống và tài nguyên thông tin. Các quan hệ này được đảm bảo bằng
các phương thức xác thực (Authentication), cấp phép sử dụng (Authorization) và từ
chối phục vụ (Repudiation).
32
CHƯƠNG 2
KỸ THUẬT XÁC THỰC
THÔNG TIN TRONG GIAO DỊCH ĐIỆN TỬ
2.1 Giới thiệu chung xác thực thông tin
Vấn đề bảo đảm an toàn cho các hệ thống thông tin là một trong những vấn đề quan trọng không thể thiếu trong quá trình thiết kế, cài đặt, vận hành và bảo dưỡng các hệ thống thông tin. Nhu cầu bảo vệ thông tin ngày càng trở nên bức thiết. Bảo vệ thông tin là bảo vệ tính bí mật của thông tin, tính toàn vẹn của thông tin, tính xác thực và không chối bỏ thông tin
An toàn thông tin có thể hiểu là cách thức bảo vệ thông tin nhằm đảm bảo an toàn cho hoạt động và cho tất cả các thành phần của mạng bao gồm dữ liệu, thiết bị, cơ sở hạ tầng mạng và đảm bảo mọi tài nguyên mạng được sử dụng tương ứng với một chính sách hoạt động được ấn định và với chỉ những người có thẩm quyền tương ứng.
Xác thực (Authentification) là kỹ thuật kiểm tra tính hợp pháp của một thực thể giao tiếp trên mạng được quyền sử dụng tài nguyên của mạng. Một thực thể có thể là một người sử dụng, một chương trình ứng dụng, hoặc một thiết bị phần cứng. Các hoạt động kiểm tra tính xác thực được đánh giá là quan trọng nhất trong các hoạt động của một phương thức bảo mật. Một hệ thống thông thường phải thực hiện kiểm tra tính xác thực của một thực thể trước khi thực thể đó thực hiện kết nối với hệ thống. Việc xác thực thường kết hợp với sự cho phép sử dụng hay từ chối phục vụ. Xác thực thông thường bằng mật khẩu (Password), dấu vân tay hay các dấu hiệu đặc trưng. Nói cách khác, xác thực là sự cho phép xác định người sử dụng được quyền thực hiện một hành động nào đó như đọc/ghi một tệp, hay sử dụng tài nguyên phần mềm, sử dụng các tài nguyên phần cứng, sử dụng các dịch vụ mạng... Người sử dụng phải qua giai đoạn xác thực bằng mật khẩu trước khi được phép khai thác thông tin hay một tài nguyên nào đó trên mạng. Cơ chế kiểm tra tính xác thực của các phương thức bảo mật dựa vào 3 mô hình chính sau:
- Đối tượng cần kiểm tra cần phải cung cấp những thông tin trước, ví dụ như
Password, hoặc mã số PIN (PersonalInformation Number).
- Kiểm tra dựa vào mô hình những thông tin đã có, đối tượng kiểm tra cần phải thể hiện những thông tin mà chúng sở hữu, ví dụ như Private Key, hoặc số thẻ tín dụng.
33
- Kiểm tra dựa vào mô hình những thông tin xác định tính duy nhất, đối tượng kiểm tra cần phải có những thông tin để định danh tính duy nhất của mình, ví dụ như thông qua giọng nói, dấu vân tay, chữ ký ...
Không thể chối cãi (Nonreputation) nghĩa là trong quá trình giao lưu tin tức trên mạng, xác nhận tính chân thực của những thực thể tham gia. Tức là tất cả các thực thể tham gia không thể chối bỏ hoặc phủ nhận những thao tác và cam kết đã được thực hiện.
Các hình thức tấn công trực tiếp, nghe trộm, giả mạo, chối cãi nguồn gốc, truy nhập bất hợp pháp… Đặc biệt, các hình thức tấn công từ chối dịch vụ DoS (Denial of Service) và DDoS (Distributed Denial of Service) được đánh giá là các nguy cơ lớn nhất đối với sự an toàn của các hệ thống thông tin, gây ra những thiệt hại lớn và đặc biệt là chưa có giải pháp ngăn chặn hữu hiệu. Các hình thức tấn công đều nhằm vào tính khả dụng của hệ thống.
Một trong những giải pháp cần thiết để phòng, tránh các nguy cơ tấn công mạng là các giải pháp xác thực, kiểm tra các thông tin nhận được có đến từ một nguồn hợp lệ và có bị sửa đổi hay không. Mặt khác xác thực cũng có thể kiểm tra trình tự và tính đúng lúc của các thông tin nhận được.
Ngoài việc chứng minh người sử dụng, các hệ thống xác thực cũng được sử dụng để xác định những thông tin nào có thể được truy nhập; ví dụ như cơ sở dữ liệu tài nguyên hoặc cơ sở dữ liệu tài chính của một tổ chức.
Có nhiều giao thức xác thực đã được đề xuất như: xác thực thông qua yêu cầu và phản hồi, xác thực bằng hỏi đáp, xác thực Deffie-Hellman, xác thực dùng một trung tâm phân phối khoá, xác thực Need-Schoede…các giao thức xác thực này đã để lộ nhiều điểm yếu, đó là thông tin trao đổi khoá giữa hai người sử dụng các giao thức này có thể bị bên thứ ba xen vào, vì vậy vấn đề an toàn của thông tin khi thực hiện các giao dịch cũng cần phải được xem xét. Giải pháp xác thực dùng chứng chỉ số (Digital Certificate) và chữ ký điện tử (Digital Signature) được đề xuất nhằm đảm bảo an toàn cho các thông tin giao dịch, nó giải quyết được các vấn đề bảo mật dữ liệu, định danh được người gửi, tính toàn vẹn của dữ liệu và không bị giả mạo. 2.2 Các kỹ thuật xác thực thông tin [2]
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:
− Đảm bảo nội dung thông tin trao đổi giữa các thực thể là chính xác, không bị thêm, sửa, xóa hay phát lại. Nói cách khác, đảm bảo tính toàn vẹn về nội dung
34
không bị vi phạm.
− Đảm bảo đối tượng tạo ra thông tin, tạo ra nguồn gốc thông tin đúng là đối tượng hợp lệ đã được khai báo. Nói cách khác, đảm bảo tính toàn vẹn về nguồn gốc thông tin.
Để thực hiện xác thực thông tin, về nguyên tắc có các phương pháp sau: − Sử dụng các thuật toán mật mã khóa đối xứng và bất đối xứng: − Sử dụng mã xác thực MAC − Xác thực sử dụng các hàm băm bảo mật − Xác thực thông tin dùng chữ ký điện tử − Xác thực thông tin dùng chữ ký điện tử và chứng thực điện tử − Mật khẩu − Các giao thức xác thực trong mô hình điểm - điểm − Xác thực trong các hệ thống phân tán − Giao thức xác thực Kerberos 4 − Giao thức xác thực Kerberos 5
2.2.1 Sử dụng các thuật toán mật mã khóa đối xứng
Để xác thực thông tin, 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:
Theo quy ước, chỉ có nơi gửi thông tin và nơi nhận thông tin hợp lệ mới có khóa bí mật K. Do đó chỉ nơi nhận thông tin hợp lệ mới có khả năng tạo ra khối thông tin mật hợp lệ từ khối thông tin gốc M. Tương tự, chỉ có nơi nhận thông tin hợp lệ mới có khả năng giải mã được thông tin mật để ra thông tin gốc M. Tất cả các cố gắng khác đều cho ra kết quả sai.
Như vậy: − Chỉ có người nhận hợp lệ mới nhận được thông điệp từ người gửi và − Chỉ có người gửi hợp lệ mới gửi được thông điệp đến người nhận
Nơi nhận
Nơi gửi
C
Hình 2.1: Xác thực thông tin dùng mật mã đối xứng
35
Sử dụng kỹ thuật mật mã khóa bất đối xứng để trao đổi khóa bí mật trên kênh an toàn, bằng cách mã hóa khóa bí mật (đối xứng) sử dụng khóa công khai của người gửi PUB
• Bên gửi: [E(K, PUB), E(M, K)] • Bên nhận: − Giải mã: D[E(K, PUB), PRB] = K − Giải mã: D[E(M, K), K] = M
Nơi nhận
Nơi gửi
K
C
K
E
D
E(K, PUB)
PUB
PRB
E: thuật toán mật mã D: Thuật toán giải mã K: Khóa bí mật dùng chung giữa bên gửi và bên nhận
M: thông tin gốc C: Thông tin mật PRB: Khóa bí mật của bên nhận. PUB: Khóa công khai của bên nhận
Hình 2.2: Sử dụng khóa bất đối xứng để trao đổi khóa bí mật
2.2.2 Sử dụng các thuật toán mật mã khóa bất đối xứng
Nơi nhận
M
C
D
E
Trường hợp sử dụng mật mã khóa bất đối xứng để xác thực thông tin, nơi gửi thông tin thực hiện mã hóa bằng khóa bí mật PR bên gửi thay vì dùng khóa công khai PU. 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. Nơi gửi M
E(M, PRB)
PRA
PUA
D: Thuật toán giải mã E:Thuật toán mật mã K: Khóa bí mật dùng chung giữa bên gửi và bên nhận PUA: Khóa công khai của bên gửi
M: Thông tin gốc C: Thông tin mật PRA: Khóa bí mật của bên gửi. PRB: Khóa bí mật của bên nhận. PUB: Khóa công khai của bên nhận
Hình 2.3: Xác thực thông tin dùng mật mã bất đối xứng
36
• Bên gửi: E(M, PRA) • Bên nhận: − Giải mã: D[E(K, PRA), PUA] = M
2.2.3 Sử dụng mã xác thực MAC
Mã xác thực MAC (Message Authentication Code) được sinh ra từ tổ hợp
gồm 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. Nơi gửi sẽ gửi giá trị MAC kèm 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 như 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. Có hai kỹ thuật tạo ra mã xác thực MAC: Kỹ thuật dùng cơ chế mật mã khối
(Cipher Block Chaining), gọi là CMAC hay CBC-MAC và kỹ thuật dựa trên các
hàm băm bảo mật, 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.
Nơi gửi
Nơi nhận
M
So sánh
Mã xác thực (MAC)
M: thông tin gốc K: Khóa bí mật dùng chung giữa bên gửi và bên nhận C: Hàm tạo mã xác thực | |: Nối mã xác thực vào thông tin gốc
Hình 2.4: Xác thực thông tin dùng MAC
• Bên gửi: − Mã hóa: MACA = E(M, K)
37
− Mã hóa: E(K, PUB) − Truyền: (M, E(M, K), E(K, PUB)) • Bên nhận: − Giải mã: D[E(K, PUB), PRB] = K − Giải mã: D[E(M, K)] = MACB − So sánh: MACA = MACB ?
2.2.4 Sử dụng các hàm băm bảo mật
Sử dụng các hàm băm bảo mật (Secure Hash Function) cũng như mã xác
thực MAC, hàm băm 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 toán mật mã nào đó (đối
xứng hoặc bất đối xứng).
Hình sau trình bày một ứng dụng điển hình của hàm băm 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 toán
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. Đoạn mã băm
đã được mã hóa và đượ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ã đoạn 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 đoạn mã
băm.
Nơi gửi
Nơi nhận
M’
M’
So sánh
Mã băm đã được mã hóa
M’
Hình 2.5: Xác thực thông tin dùng hàm băm
Sử dụng khóa đối xứng, bất đối xứng để mã hóa tài liệu và trao đổi khóa bí
mật K trên kênh an toàn thực hiện trao đổi thông tin
38
Nơi nhận
K
K
Nơi gửi
E
M
M
D
E(M, K)
E(K, PRB)
K
K
D
E
PRB
PUB
E:Thuật toán mật mã D: Thuật toán giải mã K: Khóa bí mật dùng chung giữa bên gửi và bên nhận
M: Thông tin gốc C: Thông tin mật PRB: Khóa bí mật của bên nhận. PUB: Khóa công khai của bên nhận M’: Thông tin cá nhân
Hình 2.6: Xác thực dùng hàm băm và mật mã bất đối xứng
• Bên gửi: − Băm: hA = H(M’, K) − Mã hóa: E( hA, K) − Mã hóa: E( M, K) − Mã hóa: E(K, PUB) − Truyền: (M’, E( hA, K), E( M, K), E(K, PUB)) • Bên nhận: − Giải mã: K = D[E(K, PUB),PRB] − Giải mã: hA= D[E( hA, K), K] − Băm: hB = H(M’, K) − So sánh: hA = hB ? − Giải mã: M = D[E( M, K), K] 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: Sử dụng kỹ thuật mật mã khóa đối xứng hoặc khóa bất đối xứng. Hoặc chỉ mã hóa giá trị băm hoặc mã hóa cả thông tin gốc và giá trị băm, có thể tổ hợp nhiều cách trên lại với nhau.
Ngoài các ứng dụng xác thực thông tin, các hàm băm còn được sử dụng
trong nhiều ứng dụng khác nhau. 2.2.5 Xác thực thông tin dùng chữ ký điện tử
Sử dụng các hàm băm bảo mật (Secure Hash Function) chữ ký số để xác thực nguồn gốc thông tin. Hàm băm dựa vào thông tin gốc để tạo ra mã băm và dùng khóa riêng của người gửi mã hóa giá trị băm này. Vì vậy, để có thể sử dụng cơ
39
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 toán mật mã bất đối xứng RSA.
Nơi gửi
Nơi nhận
M’
M’
Mã băm đã được mã hóa
M’
Chữ ký số
Hình 2.7: Xác thực thông tin dùng chữ ký số
Sử dụng khóa bí mật K (đối xứng) để mã hóa tài liệu M và sử dụng khóa
công khai của người nhận PUB (bất đối xứng) để mã hóa khóa bí mật K
• Bên gửi: − Tạo chữ ký số: E [H(M’), PRA] − Mã hóa tài liệu: E( M, K) − Mã hóa: E(K, PUB) − Truyền: (M’, E [H(M’), PRA], E( M, K), E(K, PUB)) • Bên nhận: − Giải mã: K = D[E(K, PUB),PRB] − Giải mã: hA= D[E[H(M’), PRA], PUA] − Băm: hB = H(M’) − So sánh: hA = hB ? − Giải mã: M = D[E( M, K), K]
Nơi gửi
K
Nơi nhận
K
E
M
D
E(M, K)
M
E(K, PRB)
K
D
E
K
PUB
PRB
E:Thuật toán mật mã D: Thuật toán giải mã K: Khóa bí mật dùng chung giữa bên gửi và bên nhận
M: Thông tin gốc C: Thông tin mật PRB: Khóa bí mật của bên nhận. PUB: Khóa công khai của bên nhận M’: Thông tin cá nhân
Hình 2.8: Xác thực thông tin dùng chữ ký số
40
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ử
Quá trình xác thực dùng chứng chỉ số và chữ ký điện tử như sau:
a)Thiết lập phiên làm việc:
− Trước tiên, User truy nhập khoá riêng của mình cho Client
− Client của người sử dụng truy tìm khoá riêng và sử dụng nó để tạo chữ ký
điện tử cho User
− Client gửi chứng thực sốvà chữ ký điện tửcủa User tới Server
− Server sử dụng chứng thực số và chữ ký số đã nhận xác thực định danh
User có đúng hay không
− Nếu đúng, Server xác thực quyền truy nhập cho User và cho phép User
bắt đầu phiên làm việc giữa Client và Server.
User enters private-key password
Client sends certificate and digital signature across network.
Server authorizes access for Server user authenticated identity. certificate and digital signature to authenticate the user’s identity.
Client retrieves private key and uses it to create digital signature
Web server
Hình 2.9: Minh hoạ xác thực sử dụng chứng chỉ số và chữ ký điện tử
b) Quá trình xin cấp một chứng chỉ số
1. User: Tạo một cặp khoá PRU và PUU(Private và Public Key).
2. Gửi khoá công khai của User PUU và một số thông tin định danh khác – M, tạo
thành một chứng thực số (Certificate) đến CA. Như vậy có thể hiểu một chứng thực bao
gồm: Certificate = {PUUvà M}. Thông tin định danh cá nhân thường là họ tên, số điện
thoại, địa chỉ email ... Thông tin định danh của cá nhân hay của một Website thường là
các định danh tài nguyên URL của site đó..
41
3. CA sẽ băm H(M + PUU),mã hoá bằng khoá riêng của CA (CA Private
key) - PRCA tạo thành chữ ký số của CA, đính vào chứng chỉ số (Certificate) tạo
thành một chứng chỉ số đã ký SC (Signed Certificate):E[H(M+PUU),PRCA]
4. Trả chứng chỉ số đã ký SC về cho người dùng.
Certifying Authority
PUU (Public Key)
User
Certificat Request
PRCA
Signed Certificate
Hình 2.10: Sơ đồ minh họa quá trình xin cấp chứng chỉ số
c) Quá trình sử dụng chứng chỉ số 1. Giả sử Client đã được Server cấp chứng chỉ số đã ký SC. Client có thể
định danh được Server
2. Chứng chỉ số bao gồm khoá công khai của Server cùng với thông tin định danh. Client giải mã chữ ký điện tử của CA bằng khoá công khai của CA, thực hiện HASH để xác thực rằng chứng chỉ số không bị thay đổi. Như vậy khoá công khai của CA đã được sử dụng để chứng thực khoá công khai trong chứng chỉ số của người gửi. Khi khoá công khai của người gửi được xác nhận, nó được dùng để chứng thực chữ ký điện tử trong thông điệp của nó.
Để cung cấp một chứng chỉ bảo đảm hoặc hệ thống chữ ký, những điều kiện
sau phải được thoả mãn :
− Nhà cung cấp dịch vụ chứng chỉ phải cung cấp chứng chỉ cho cả bên gửi
và bên nhận.
− Bên nhận phải có khả năng sử dụng chứng chỉ của CA để kiểm chứng
khoá công khai của bên gửi.
− Khoá công khai đã được chứng thực của bên gửi phải được sử dụng để
kiểm chứng chữ ký điện tử của thông điệp của nó.
42
2.3 Các giao thức xác thực 2.3.1 Mật khẩu
Trong số các cơ chế xác thực, cơ chế xác thực dựa trên thông tin mà thực thể truy xuất biết (what you know) là cơ chế đơn giản nhất và được sử dụng nhiều nhất. Thông tin này thường là mật khẩu (password), được liên kết với một thực thể dùng để xác thực thực thể đó.
Mật khẩu thường là một chuỗi ký tự. Không gian mật khẩu (password space) là tập hợp tất cả các chuỗi ký tự có thể xuất hiện trong mật khẩu. Mỗi hệ thống xác thực có một không gian mật khẩu khác nhau. Không gian mật khẩu càng lớn thì khả năng bị tấn công mật khẩu theo phương thức vét cạn (Brute Force) lại càng thấp.Mật khẩu được gọi là phức tạp nếu nó khó bị phát hiện bằng phương pháp dò mật khẩu theo từ điển (Dictionary Attack).
Theo khảo sát, những loại mật khẩu được dùng phổ biến nhất hiện nay: − Người sử dụng có thói quen dùng tên của người sử dụng (User Name hoặc
Account Name), hoặc ngày sinh, số điện thọai… để làm mật khẩu − Dùng tên đăng nhập (Logon Name) làm mật khẩu. − Dùng tên máy tính (Computer Name) làm mật khẩu. − Dùng những từ khóa đặc biệt như computer, hacker, … − Lấy tên của những người có quan hệ mật thiết, như vợ, chồng, con, người
thân làm mật khẩu ….
Những mật khẩu như trên đều có độ phức tạp rất thấp và do đó dễ dàng bị tiết lộ. Các hệ thống xác thực thường đưa ra các chính sách về mật khẩu (Password Policy) đối với người sử dụng. Các chính sách này thường quy định những ràng buộc sau đây:
− Chiều dài tối thiểu và độ khó của mật khẩu, mật khẩu không được chứa
User Name hoặc logon-name (Password Complexity).
− Thời gian sử dụng tối đa của mật khẩu (Password Age). − Thường xuyên thay đổi mật khẩu, … Về phía người sử dụng, những nguyên tắc chung để tăng độ an toàn cho
việc xác thực dùng mật khẩu bao gồm:
− Sử dụng nhiều loại ký tự khác nhau để làm mật khẩu, mục đích là mở rộng không gian mật khẩu (dùng chữ cái, chữ số, các ký hiệu đặc biệt, dùng phối hợp giữa chữ hoa và chữ thường, …)
− Không sử dụng các mật khẩu quá ngắn. − Không sử dụng những từ khóa hoặc từ có nghĩa trong mật khẩu. − Thường xuyên thay đổi mật khẩu. − Không ghi chép mật khẩu lên bất kỳ vị trí nào.
43
− Không tiết lộ mật khẩu cho người khác, cả những tình huống an toàn nhất. Trên các máy chủ xác thực, mật khẩu của người sử dụng thường không được lưu trữ một cách trực tiếp dưới dạng ký tự gốc (cleartext) mà phải được mã hoá dưới một dạng nào đó để đảm bảo an toàn. Ngoài ra, để mật khẩu không bị đánh cắp khi truyền đi trên mạng, nhiều thủ tục xác thực phức tạp được xây dựng để đảm bảo rằng mật khẩu không được truyền đi trực tiếp (Cleartext) trên mạng. 2.3.2 Các giao thức xác thực trong mô hình điểm - điểm
Một thực thể bên ngoài hệ thống thông tin muốn truy xuất hệ thống như một chủ thể của thệ thống thì phải cung cấp các thông tin để hệ thống xác thực nhận dạng của chủ thể. Các thông tin này thường là mật khẩu, thẻ xác thực, dấu vân tay, … Quá trình xác thực một thực thể bao gồm việc lấy thông tin mà thực thể cung cấp, phân tích và xác định xem thông tin có liên kết với thực thể đó hay không.
Có hai mô hình thực tế của một hệ thống xác thực là xác thực tại chỗ (Local Authentication) và xác thực từ xa (Remote Authentication) thông qua môi trường mạng. Mô hình thứ nhất được sử dụng khi người sử dụng đăng nhập trực tiếp vào một thống nội bộ (Local Logon), thông tin xác thực (tên người dùng và mật khẩu) được cung cấp trực tiếp cho hệ thống xác thực (server). Trong mô hình thứ hai, người sử dụng đăng nhập vào một hệ thống ở xa. Tình huống này bắt buộc các thông tin xác thực phải được gửi đi trên mạng và do đó, nguy cơ bị nghe lén thông tin là rất cao. Các giao thức xác thực được thiết kế để giảm thiểu các nguy cơ này.
Trong các hệ thống cổ điển, kết nối từ xa thường được thực hiện bằng các giao thức điểm – điểm như SLIP (Serial Line Internet Protocol) hoặc PPP (Point to Point Protocol). Các thủ tục xác thực đều là một chiều, tức là chỉ có máy chủ xác thực người sử dụng chứ không có thủ tục ngược lại. Hai giao thức xác thực thường được dùng trong các hệ thống này là PAP và CHAP
PAP (Password Authentication Protocol) là giao thức xác thực đơn giản nhất và do đó kém an toàn nhất. Để xác thực với một hệ thống Server ở xa, người sử dụng chỉ gửi tên đăng nhập và mật khẩu một cách trực tiếp (Clear Text) cho Server trong gói tin yêu cầu xác thực (Authenticate Request Packet). Server sẽ kiểm tra thông tin xác thực chứa trong gói dữ liệu này, nếu trùng với thông tin đã lưu trữ trong cơ sở dữ liệu thì sẽ trả lời bằng một gói tin xác nhận (Authenticate Ack Packet) và quá trình xác thực thành công. Ngược lại, nếu thông tin xác thực không đúng, Server trả lời bằng gói từ chối (Authenticate Nak Packet).
44
Authenticate request (User-name + Password)
Server
Người sử dụng
Authenticate ack hoặc Authenticate nak
Hình 2.11: Giao thức xác thực PAP
CHAP (Challenge-Handshake Authentication Protocol) là giao thức xác thực phức tạp hơn, được dùng trong giao thức kết nối PPP (Point to Point Protocol) và một số hệ thống khác. CHAP bảo mật hơn PAP, vì dùng các hàm băm một chiều và thông tin xác thực không được gửi đi trực tiếp trên mạng. Quá trình xác thực bằng giao thức CHAP gồm các bước sau đây (gọi là quá trình Challenge Response):
− Sau khi thiết lập kết nối PPP, để xác định xem người sử dụng có quyền truy xuất hay không, Server sẽ gửi cho người sử dụng một khối dữ liệu thách thức (Challenge), trong đó có chứa một giá trị ngẫu nhiên do Server tạo ra.
− Người sử dụng sau khi nhận được khối Challenge sẽ gắn thêm tên đăng nhập và mật khẩu, sau đó thực hiện hàm băm một chiều (ví dụ MD5) lên khối thông tin đó và gửi mã băm lại cho Server.
− Phía Server cũng thực hiện một quá trình tương tự và so sánh với kết quả nhận được từ người sử dụng để xác định quá trình xác thực có thành công hay không.
Một đặc điểm nữa của giao thức này làm tăng tính an toàn của kết nối là quá trình Challenge Rresponse được lặp lại nhiều lần trong suốt thời gian duy trì kết nối. Nếu gói tin trả lời của người dùng không hợp lệ, kết nối sẽ bị giải giải phóng, ngắt kết nối
Challenge
Server
User-name + H(user-name + password + challenge)
Người sử dụng
Success / Failure
Hình 2.12: Giao thức xác thực CHAP
45
2.3.3 Xác thực trong các hệ thống phân tán
Trong các hệ thống phân tán, nhiều máy chủ cung cấp dịch vụ được quản lý
bởi một trung tâm xác thực duy nhất. Giao thức xác thực trong các hệ thống này
phải đảm bảo được 2 yêu cầu cơ bản:
− Đảm bảo an toàn đối với thông tin xác thực (tên đăng nhập và mật khẩu
không được truyền đi trực tiếp trên mạng).
− Người dùng chỉ cần đăng nhập một lần cho phiên làm việc nhưng có khả
năng sử dụng tất cả các dịch vụ có trong hệ thống.
Trong một hệ thống mạng có nhiều máy chủ cung cấp dịch vụ khác nhau,
như Web Server, Mail Server, Database Server… Khi người sử dụng đăng nhập vào
hệ thống, người sử dụng này phải có khả năng truy xuất đến tất cả các dịch vụ trên
mạng (tùy theo quyền được cấp) mà không phải nhập lại tên đăng nhập và mật khẩu
cho từng dịch vụ. Cơ chế quản lý tập trung này cung cấp sự tiện lợi cho cả người sử
dụng lẫn hệ thống.
Một thủ tục xác thực điển hình gồm các bước như sau:
− Một người dùng đăng nhập từ một máy con (C ) trong hệ thống và yêu cầu
truy xuất đến máy chủ V.
− Máy con C yêu cầu người dùng cung cấp tên đăng nhập và mật khẩu rồi
sau đó chuyển thông tin này cho trung tâm xác thực AS (Authentication Server).
− Máy chủ AS kiểm tra xem tên đăng nhập và mật khẩu có hợp lệ hay không, đồng thời kiểm tra xem người dùng này có được phép truy xuất các dịch vụ
trên máy chủ V hay không.
− Nếu cả hai việc kiểm tra trên đều thành công thì người dùng được phép truy xuất dịch vụ trên máy chủ V. Để làm được việc đó, AS tạo ra một thẻ truy xuất
(ticket) chứa các thông tin bao gồm nhận dạng của người dùng, địa chỉ mạng của
máy con và nhận dạng của máy chủ V. Thẻ truy xuất này được mã hóa bằng khóa bí
mật dùng chung giữa AS và V. Thẻ truy xuất cũng được gửi cho C.
− Bắt đầu từ đây, C có thể yêu cầu các dịch vụ của V bằng cách gởi các bản tin có gắn kèm thẻ truy xuất vừa tạo ra cho V. Máy chủ V sẽ giải mã thẻ truy xuất
và chấp nhận cho C truy xuất các dịch vụ của mình.
C → AS: IDC + PC + IDV
AS → C: Ticket
46
C → V: IDC + Ticket Ticket = E([IDC + ADC + IDV], KV) Trong đó:
C: Máy con
AS: máy chủ xác thực (Authentication server).
V: máy chủ cung cấp dịch vụ.
IDC: Nhận dạng (tên đăng nhập) của người dùng.
IDV: Nhận dạng của máy chủ V.
PC: Mật khẩu của người dùng.
ADC: Địa chỉ mạng của máy con.
KV: Khóa bí mật của máy chủ cung cấp dịch vụ V.
Thủ tục xác thực như trên giải quyết được vấn đề bảo mật bằng cách đưa ra
khái niệm thẻ truy xuất (ticket), trong đó các thông tin bí mật được mã hóa trong
một bản tin đặc biệt trước khi luân chuyển trên mạng. Tuy nhiên, vẫn còn hai vấn
đề chưa được giải quyết:
1) Nếu người dùng có nhu cầu sử dụng dịch vụ nhiều lần, hoặc sử dụng
nhiều dịch vụ khác nhau trên các máy chủ khác nhau, vì vậy người dùng phải thực
hiện thủ tục xác thực nhiều lần, tức là phải nhập lại mật khẩu nhiều lần.
2) Thủ tục xác thực vẫn còn một bước (bước đầu tiên) trong đó thông tin xác
thực (mật khẩu) được gửi đi trực tiếp trên mạng mà không mã hóa.
a. Thủ tục sau đây sẽ giải quyết hai vấn đề trên:
• Khi người dùng đăng nhập hệ thống:
(1) C → AS: IDC + IDtgs
(2) AS → C: E(Tickettgs, Kc)
• Khi người dùng truy xuất một loại dịch vụ (per service type):
(3) C → TGS: IDC + IDV + Tickettgs
(4) TGS → C: Ticketv • Khi người dùng truy xuất một phiên giao dịch cụ thể (per service session):
(5) C → V: IDC + Ticketv Trong đó:
Tickettgs = E([IDC + ADC + IDtgs + TS1 + Lifetime1], Ktgs) Ticketv = E([IDC + ADC + IDv + TS2 + Lifetime2], Kv)
47
Trong thủ tục trên, một thành phần mới được thêm vào hệ thống xác thực là
máy chủ cấp thẻ TGS (Ticket Granting Server).
Khi người dùng xác thực thành công với AS, thay vì cấp thẻ sử dụng dịch vụ
trực tiếp cho người dùng, AS chỉ cấp cho người dùng thẻ truy xuất của TGS, có tác
dụng như một xác nhận đây là một người dùng hợp hệ. Kể từ đó về sau, mỗi khi
người dùng cần truy xuất dịch vụ nào thì chỉ cần gởi thẻ truy xuất và yêu cầu của
mình đến TGS để được cấp thẻ truy xuất dịch vụ.
Như vậy, AS chỉ cần cấp thẻ cho người dùng một lần, hay nói cách khác, thẻ
có thể dùng lại, cả trong trường hợp người dùng sử dụng dịch vụ nhiều lần hoặc sử
dụng nhiều dịch vụ khác nhau mà không cần phải nhập lại mật khẩu.
Thủ tục này được mô tả chi tiết như sau:
− Máy con C yêu cầu một thẻ xác nhận người dùng hợp lệ (Ticket Granting Ticket) bằng cách gởi nhận dạng của người dùng cho AS, trong đó có nhận dạng
của TGS.
− AS gửi lại thẻ xác nhận người dùng hợp lệ cho máy con nhưng được mã hóa với khóa là mật khẩu của người dùng (KC). Do đó, nếu người dùng cung cấp đúng mật khẩu thì thẻ này được giải mã thành công, ngược lại, việc xác thực xem
như kết thúc không thành công.
Như vậy, mật khẩu của người dùng đã không được gởi đi trực tiếp trên
mạng. Do thẻ này có khả năng dùng lại, nên để quản lý việc tồn tại của nó, trong thẻ
được gắn thêm một nhãn thời gian quy định thời gian tồn tại hợp lệ của thẻ. Để
tránh trường hợp thay đổi và giả mạo thẻ, thẻ được mã hóa một lần nữa bằng khóa
bí mật của AS và TGS.
− Sau khi đã có thẻ xác nhận người dùng hợp lệ, máy con có thể yêu cầu dịch vụ trên máy chủ V bằng cách yêu cầu thẻ sử dụng dịch vụ (Service-granting
Ticket) từ TGS. Thông tin gởi đến cho TGS bao gồm nhận dạng của máy chủ V, thẻ
xác nhận người dùng hợp lệ và tên đăng nhập của người dùng.
− TGS giải mã thẻ xác nhận người dùng hợp lệ để kiểm tra, nếu hợp lệ thì cấp thẻ truy xuất dịch vụ cho người dùng. Thẻ này được mã hóa bằng khóa bí mật
của V và TGS.
− Sau khi có thẻ truy xuất dịch vụ, người dùng có thể sử dụng dịch vụ trên
máy chủ V.
48
Như vậy, thủ tục trên giải quyết được 2 vấn đề: dùng lại thẻ và không gởi
mật khẩu trực tiếp trên mạng.
Tuy nhiên, lại thêm 2 vấn đề khác nảy sinh: − Thứ nhất, nếu thời gian tồn tại của các ticket quá ngắn, người dùng có thể phải nhập lại mật khẩu để tạo thẻ mới. Nếu thời gian này quá dài, nguy cơ bị lấy cắp thẻ tăng lên. Do đó, xác nhận một thẻ, máy chủ (TGS hoặc V) phải biết chắc rằng mình đang làm việc với đúng người dùng có tên đăng nhập chứa trong thẻ.
− Thứ hai, song song với việc người dùng xác thực với máy chủ, thì cũng cần phải có thao tác xác thực ngược lại từ máy chủ đến người dùng để loại trừ trường hợp chính máy chủ bị giả mạo.
Đây chính là tồn tại được giải quyết bởi giao thức xác thực Kerberos.
2.3.4 Giao thức xác thực Kerberos 4
Kerberos là một thủ tục nâng cao độ an tòan khi xác thực trong môi trường
mạng phân tán. Kerberos dựa trên kỹ thuật mật mã đối xứng (DES).
Có thể tóm lược thủ tục xác thực của Kerberos version 4 như sau:
1- Máy con yêu cầu AS cung cấp thẻ xác nhận người dùng: C → AS: IDc + IDtgs + TS1 2- AS cung cấp thẻ xác nhận người dùng cho máy con: AS → C: E([Kc,tgs + IDtgs + TS2 + Lifetime2 + Tickettgs], Kc) Tickettgs = E([Kc,tgs + IDc + ADc + IDtgs + TS2 + Lifetime2], Ktgs) 3- Máy con yêu cầu TS cung cấp thẻ truy xuất dịch vụ: C → TGS: IDv + Tickettgs + Authenticatorc 4- TGS cung cấp thẻ truy xuất dịch vụ cho máy con: TGS → C: E([Kc,v + IDv + TS4 + Ticketv], Kc,tgs) Tickettgs = E([Kc,tgs + IDC +ADC + IDtgs + TS2 + Lifetime2], Ktgs) Ticketv = E([Kc,v + IDC + ADC + IDv + TS4 + Lifetime4], Kv) Authenticatorc = E([IDC + ADC + TS3], Kc,tgs) 5- Máy con yêu cầu dịch vụ: C → V: Ticketv + Authenticatorc Authenticatorc = E([IDc + ADC + TS5], Kc,v) 6- Server xác thực với máy con (không bắt buộc): V →C: E([TS5 + 1], Kc,v) Ticketv: = E([Kc,v + IDc + ADc + IDv + TS4 + Lifetime4], Kv)
49
Kerberos
Máy con (C)
Ticket granting Ticket Request
Ticket + session key
Máy chủ xác thực (AS)
Service granting Ticket Request
Ticket + session key
Máy chủ cấp thẻ (TGS)
Máy chủ (V)
Yêu cầu dịch vụ Cung cấp dịch vụ
Hình 2.13: Thủ tục xác thực Kerberos 4
Các thành phần trong các bản tin của Kerberos: Bản tin (1): Máy con yêu cầu cấp thẻ xác nhận người dùng (Ticket Granting
Ticket):
− IDC: Nhận diện của người dùng (do máy con gởi đến cho AS, dựa trên
thông tin đăng nhập củangười dùng).
− IDtgs: Nhận diện của TGS, mục đích cho AS biết rằng máy con đang muốn
truy xuất đến TGS.
− TS1: Nhãn thời gian, đồng bộ thời gian giữa AS và máy con. Bản tin (2): AS cung cấp thẻ xác nhận người dùng cho máy con: − Kc: Dùng chính mật khẩu của người dùng làm khoá mật mã, vừa có mục đích bảo vệ thông tin vừa cho phép AS xác thực mật khẩu của người dùng. Nếu máy con không có mật khẩu đúng thì sẽ không giải mã được bản tin này.
− Kc, tgs: khoá bí mật được dùng giữa máy con và TGS do AS tạo ra. Khóa
này chỉ có tác dụng trong một phiên làm việc (session key).
− IDtgs: Nhận diện của TGS, dùng để xác nhận rằng thẻ này có tác dụng cho
phép máy con truy xuất đến TGS.
− TS2: Nhãn thời gian, cho biết thời điểm thẻ được tạo ra.
50
− Lifetime2: Cho máy con biết thời gian tồn tại của thẻ. − Tickettgs: Máy con dùng thẻ này để truy xuất TGS. Bản tin (3): Máy con yêu cầumáy chủ TGS cấp thẻ truy xuất dịch vụ
(Service Granting Ticket):
− IDV: Nhận dạng của máy chủ V, dùng để thông báo cho TGS là máy con
muốn truy xuất đến dịch vụ của máy chủ V.
− Tickettgs: Thẻ được cấp cho máy con bởi AS − Authenticatorc: một giá trị được tạo ra bởi máy con để xác minh thẻ. Bản in (4): TGS cung cấp thẻ truy xuất dịch vụ cho máy con:: − Kc, tgs: Khoá bí mật dùng chung giữa máy con và TGS − Kc, v: Khoá bí mật giữa máy con và máy chủ V do TGS tạo ra. Khoá này
chỉ có giá trị trong từng phiên làm việc (session key).
− IDv: Nhận diện của máy chủ V, xác nhận thẻ của máy chủ V − TS4: nhãn thời gian cho biết thời điểm thẻ được tạo ra. − Ticketv: Thẻ được máy con dùng để truy xuất máy chủ V. − Tickettgs: Thẻ này được dùng lại để người dùng không phải nhập lại mật
khẩu khi muốn truy xuất dịch vụ khác.
− Ktgs: Khóa bí mật dùng chung giữa AS và TGS. − Kc, tgs: Session key được TGS dùng để giải mã authenticator. Khoá này
được dùng chung giữa máy con và TGS.
− IDC: Nhận diện máy con, cho biết đây là chủ sở hữu của thẻ. − ADC: Địa chỉ mạng của máy con, dùng để ngăn chặn trường hợp một máy
khác lấy cắp thẻđể yêu cầu dịch vụ.
− IDtgs: Nhận diện TGS, để xác nhận thẻ đã được giải mã thành công. − TS2: Nhãn thời gian cho biết thời điểm tạo ra thẻ. − Lifetime2: Thời gian tồn tại thẻ, ngăn chặn sử dụng lại thẻ (Replay). − Authenticatorc: Thông tin xác thực của máy con. − Kc, tgs: Khoá bí mật dùng chung giữa máy con và TGS, dùng để mã hoá
thông tin xác thực của máy con.
− IDc: Nhận dạng máy con, phải trùng với ID trong thẻ. − ADc: Địa chỉ mạng của máy con, phải trùng với địa chỉ trong thẻ. − TS3: Nhãn thời gian, cho biết thời điểm Authenticator được tạo ra. Bản tin (5): Máy con yêu cầu truy xuất dịch vụ: − Ticketv: Thẻ cho biết máycon đã được xác thực bởi AS.
− Authenticatorc: Thông tin xác thực thẻ của máy con.
Bản tin (6): Máy chủ V xác thực với máy con:
51
− Kc, v: Khoá bí mật dùng chung giữa máy con và máy chủ V. − TS5 + 1: Nhãn thời gian, không dùng thông tin xác thực cũ − Ticketv: Thẻ truy xuất máy chủ V, có thể dùng lại khi máy con truy xuất
dịch vụ đến chính máy chủ V không cần yêu cầu cấp thẻ mới.
− Kv: Khoá bí mật dùng chung giữa TGS và máy chủ V. − Kc, v: Khoá bí mật dùng chung giữa máy con và máy chủ V, dùng để giải
mã thông tin xác thực.
− IDc: Nhận dạng của máy con. − ADc: Địa chỉ mạng của máy con. − IDv: Nhận dạng của máy chủ V. − TS4: Nhãn thời gian cho biết thời điểm thẻ được tạo. − Lifetime4: Thời gian tồn tại của thẻ. − Authenticatorc: Thông tin xác thực của máy con. − Kc, v: Khoá bí mật, dùng chung giữa máy con và máy chủ V để mã hoá
thông tin xác thực.
− IDc: Nhận diện máy con, phải giống với IDc trong thẻ − ADc: Địa chỉ mạng của máy con, phải giống với địa chỉ trong thẻ. − TS5: Thời điểm thông tin xác thực được tạo ra. Kết hợp giữa nhiều hệ thống Kerberos: Một môi trường sử dụng hệ thống xác thực Kerberos đầy đủ bao gồm máy chủ Kerberos (Kerberos server), các máy chủ dịch vụ (application server) và các máy con sử dụng dịch vụ (client), trong đó:
− Máy chủ Kerberos phải có danh sách tất cả các tên đăng nhập và mật khẩu đã được mã hóa của các người dùng này. Tất cả các máy con đều phải đăng ký với máy chủ Kerberos.
− Máy chủ Kerberos sử dụng một khóa bí mật chung với các máy chủ còn
lại. Tất cả các máy chủ đều phải đăng ký với máy chủ Kerberos.
Một môi trường thỏa mãn các điều kiện như vậy được gọi là một Domain Như vậy, các máy chủ và máy con thuộc các đơn vị quản lý khác nhau sẽ thuộc về các lãnh địa Kerberos khác nhau. Giao thức xác thực Kerberos cũng bao gồm các thủ tục cho phép kết hợp các lãnh địa Kerberos lại để cung cấp dịch vụ một cách đồng nhất. Hình 3.4 mô tả họat động của thủ tục này.
Trình tự của thủ tục kết hợp lãnh địa Kerberos được tóm tắt như sau: (1)C → AS: IDc + IDtgs + TS1 (2) AS → C: E([Kc,tgs + IDtgs + TS2 + Lifetime2 + Tickettgs], Kc) (3) C → TGS: IDtgsrem + Tickettgs + Authenticatorc (4) TGS → C: E([Kc,tgsrem + IDtgsrem + TS4 + Tickettgsrem], Kc,tgs)
52
(5) C → TGSrem: IDvrem + Tickettgsrem + Authenticatorc
(6) TGSrem → C: E([Kc,vrem + IDvrem + TS6 + Ticketvrem], Kc,tgsrem)
(7) C→ Vrem: Ticketvrem + Authenticatorc
Domain A
Kerberos
Máy con
Ticket-granting-Ticket Request
AS
Ticket-granting-Ticket
Service-granting-Ticket Request for realm B
TGS
Service-granting-Ticket
Domain B
ị
ị
Kerberos
TGS
ụ v h c d u ầ c u ê Y
Service Granting Ticket Request Service Granting Ticket
ụ v h c d p ấ c g n u C
AS
Máy chủ
Hình 2.14: Xác thực giữa hai lãnh địa Kerberos
53
2.3.5 Giao thức xác thực Kerberos 5
Kerberos 5 được nâng cấp từ Kerberos 4 với những điểm khác biệt sau:
− Kerberos 4 phụ thuộc chặt chẽ vào giải thuật DES, trong khi Kerberos 5
thì tương thích với mọi giải thuật mã hóa.
− Kerberos 4 phụ thuộc vào địa chỉ IP để xác thực người dùng, Kerberos 5
có thể sử dụng bất kỳ địa chỉnào (ví dụ MAC address).
− Kerberos 4 sử dụng thêm 1 byte trong các bản tin để cho biết thứ tự byte
trong bản tin. Kerberos 5 dùng cú pháp ANS.1 (Abstract Syntax Notation One) và
luật mã hóa cơ bản BER (Basic Coding Rules) để tạo ra cơ chế xếp thứ tự byte
trong bản tin một cách rõ ràng.
− Thời gian tồn tại của thẻ trong Kerberos 4 được chứa trong một trường dài 8 bit, tính theo đơn vị 5 phút, như vậy, thời gian sống tối đa của thẻ là 5 * 28= 1280
phút (khỏang 21 giờ). Trong Kerberos 5, thời gian tồn tại được biểu thị bằng thời
điểm bắt đầu và thời điểm kết thúc, cho phép thời gian này được biến thiên không
giới hạn.
− Kerberos 4 không cho phép cơ chế chuyển tiếp xác thực, tức là cơ chế một
máy con truy xuất đến một máy chủ, và yêu cầu máy chủ này truy xuất đến dịch vụ
của một máy chủ khác thông qua nhận dạng của máy con. Kerberos 5 cung cấp khả
năng này.
− Kerberos 4 yêu cầu N2 quan hệ giữa các lãnh địa Kerberos trong trường
hợp liên kết họat động giữa N lãnh địa. Kerberos 5 yêu cầu số quan hệ ít hơn nhiều.
Thủ tục xác thực dùng Kerberos 5 được tóm tắt như sau:
(1) C → AS: Options + IDc + Realmc + IDtgs + Times + Nonce1
(2)AS→C:Realmc+IDC+Tickettgs+E([Kc,tgs+Times+Nonce1+Realmtgs
+IDtgs],Kc)
Tickettgs = E([Flags + Kc,tgs + Realmc + IDc + ADc + Times], Ktgs)
(3) C→TGS: Options + IDv + Times + Nonce2 + Tickettgs +Authenticatorc
(4)TGS→C:IDc+Ticketv+E([Kc,v+Times+Nonce2+Realmv+IDv], Kc,tgs)
Tickettgs = E([Flags + KC,tgs + Realmc + IDC + ADC + Times], Ktgs)
54
Ticketv = E([Flags + Kc,v + Realmc + IDC + ADc + Times], Kv)
Authenticatorc = E([IDC + Realmc + TS1], Kc,tgs)
(5) C → V: Options + Ticketv + Authenticatorc
(6) V → C: E([TS2 + Subkey + Seq#], Kc,v)
Ticketv = E([Flags + Kc,v + Realmc + IDC + ADC + Times], Kv)
Authenticatorc = E([IDC + Realmc + TS2 + Subkey + Seq#], Kc,v)
Trong thủ tục trên, ngoài những thành phần đã xuất hiện trong Kerberos 4
còn có thêm các thành phần mới sau đây:
− Realm: Biểu thị vùng của người dùng (Domain).
− Options: Các tuỳ chọn, dùng để yêu cầu các thông tin cộng thêm xuất hiện
trong thẻ.
− Times: Tham số thời gian trong thẻ nhưfrom, till, rtime.
− Nonce: Giá trị ngẫu nhiên được tạo ra trong bản tin để đảm bảo rằng bản
tin trả lời là bản tin hợp lệ chứ không phải bản tin cũ dùng lại.
55
Kết luận chương
Giải pháp sử dụng chứng thực số là sự kết hợp nhiều biện pháp bảo mật đảm
bảo được an toàn thông tin giao dịch trên mạng Internet. Đây là một nền tảng công
nghệ mang tính tiêu chuẩn trên toàn cầu và cũng là giải pháp rất cần thiết đối với
một quốc gia đang trong quá trình phát triển các ứng dụng giao dịch điện tử trong
nhiều lĩnh vực như ở Việt Nam.
Chương này của luận văn đã làm rõ các đặc tính cơ bản của các kỹ thuật xác
thực thông tin, bao gồm các phương pháp như sau:
− Xác thực sử dụng các thuật toán mật mã khóa đối xứng
− Xác thực sử dụng các thuật toán mật mã khóa bất đối xứng − Xác thực sử dụng mã xác thực MAC
− Xác thực sử dụng các hàm băm bảo mật − Xác thực thông tin dùng chữ ký điện tử Các kỹ thuật xác thực trên mới chỉ giải quyết được các vấn đề về xác minh
nguồn gốc thông tin, chưa giả quyết được những trường hợp tranh chấp, chối bỏ
trách nhiệm pháp lý trong các giao dịch điện tử. Những giải pháp sau giải quyết
những vấn đề về chống chối bỏ
− Xác thực thông tin dùng chữ ký điện tử và chứng thực điện tử − Mật khẩu
− Các giao thức xác thực trong mô hình điểm - điểm − Các giao thức xác thực trong các hệ thống phân tán
− Giao thức xác thực Kerberos 4 − Giao thức xác thực Kerberos 5 Tuy nhiên trong thực tế, có thể tích hợp nhiều phương pháp theo yêu cầu bảo
mật. Phổ biến hiện nay, phương pháp chữ ký số trên cơ sở hạ tầng khóa công khai
PKI.Bất kỳ một tổ chức, doanh nghiệp hay cá nhân nào cũng có thể xây dựng cơ
chế an toàn bảo mật và xác thực dựa trên chữ ký số và cơ sở hạ tầng khóa công
khai. Có thể sử dụng khoá công khai của một thành viên từ xa cần tìm và phê chuẩn
một đường dẫn chứng thực, qua nhiều CA trung gian. Việc xây dựng một hạ tầng
khóa công khai nhằm đáp ứng các yêu cầu về bảo mật phụ thuộc phần lớn vào các
mô hình, cấu trúc của các hệ thống thông tin.
56
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.1 Dịch vụ hành chính công
3.1.1 Khái niệm
Dịch vụ công là những hoạt động phục vụ các lợi ích chung, thiết yếu, các
quyền và nghĩa vụ cơ bản của tổ chức và công dân do Nhà nước trực tiếp thực hiện
hoặc chuyển giao cho các cơ sở ngoài Nhà nước thực hiện nhằm mục tiêu hiệu quả
và công bằng.
Dịch vụ hành chính công là một loại hình dịch vụ công do các cơ quan hành
chính Nhà nước thực hiện để phục vụ các quyền và nghĩa vụ cơ bản của các tổ chức
và công dân. Được thực hiện dựa trên thẩm quyền hành chính - pháp lý Nhà nước.
3.1.2 Các đặc trưng cơ bản của dịch vụ hành chính công
Dịch vụ hành chính công gắn liền với thẩm quyền hành chính pháp lý của bộ
máy Nhà nước nên loại dịch vụ này chỉ có thể do các cơ quan hành chính Nhà nước
thực hiện, như trong việc cấp các loại giấy phép, giấy khai sinh, chứng minh thư,
công chứng, xử lý và xử phạt hành chính, kiểm tra và thanh tra hành chính …
Dịch vụ hành chính công phục vụ cho hoạt động quản lý của Nhà nước, là
những hoạt động nhằm phục vụ cho chức năng quản lý; là những dịch vụ mà Nhà
nước bắt buộc và khuyến khích người dân phải làm để đảm bảo trật tự và an toàn xã
hội; là những quy định có tính chất bắt buộc của Nhà nước. Càng nhiều người sử
dụng dịch vụ hành chính công thì càng tạo điều kiện cho các hoạt động quản lý Nhà
nước được tốt hơn.
Dịch vụ hành chính công là những hoạt động không vu lợi, nếu có thu tiền thì
thu dưới dạng phí và lệ phí để nộp ngân sách Nhà nước.
Mọi người dân có quyền ngang nhau trong việc tiếp cận và sử dụng các dịch
vụ này với tư cách là đối tượng phục vụ của chính quyền. Nhà nước có trách nhiệm
và nghĩa vụ phục vụ cho mọi người dân.
57
3.1.3 Các mức độ dịch vụ hành chính công
Giao dịch hành chính công là cơ chế giải quyết công việc của tổ chức, công
dân thuộc thẩm quyền của cơ quan hành chính nhà nước từ tiếp nhận yêu cầu, hồ sơ
đến trả kết quả chỉ thông qua một đầu mối.
Hành chính công có 4 mức độ dịch vụ khác nhau:
Mức độ 1: Là dịch vụ bảo đảm cung cấp đầy đủ các thông tin về thủ tục hành
chính và các văn bản có liên quan quy định về thủ tục hành chính đó.
Mức độ 2 : Là dịch vụ công trực tuyến mức độ 1 và cho phép người sử dụng
tải về các mẫu văn bản và khai báo để hoàn thiện hồ sơ theo yêu cầu. Hồ sơ sau khi
hoàn thiện được gửi trực tiếp hoặc qua đường bưu điện đến cơ quan, tổ chức cung
cấp dịch vụ.
Mức độ 3 : Là dịch vụ công trực tuyến mức độ 2 và cho phép người sử dụng
điền và gửi trực tuyến các mẫu văn bản đến cơ quan, tổ chức cung cấp dịch vụ. Các
giao dịch trong quá trình xử lý hồ sơ và cung cấp dịch vụ được thực hiện trên môi
trường mạng. Việc thanh toán lệ phí (nếu có) và nhận kết quả được thực hiện trực
tiếp tại cơ quan, tổ chức cung cấp dịch vụ.
Mức độ 4: là dịch vụ công trực tuyến mức độ 3 và cho phép người sử dụng
thanh toán lệ phí (nếu có) được thực hiện trực tuyến. Việc trả kết quả có thể được
thực hiện trực tuyến, gửi trực tiếp hoặc qua đường bưu điện đến người sử dụng.
3.1.4 Một số dịch vụ hành chính công
1. Lĩnh vực Báo chí
- Cấp giấy phép họp báo
- Cấp giấy phép xuất bản bản tin
- Cấp phép thành lập và hoạt động văn phòng đại diện của cơ quan báo chí
- Cấp phép hoạt động phóng viên thường trú của các cơ quan báo chí
2. Lĩnh vực Xuất bản
- Cấp giấy phép hoạt động in
- Đăng ký hoạt động cơ sở in
- Thủ tục đăng ký sử dụng máy photocopy màu.
- Cấp giấy phép tổ chức triển lãm, hội chợ xuất bản phẩm
- Cấp giấy phép xuất bản tài liệu không kinh doanh
- Cấp giấy phép nhập khẩu xuất bản phẩm không kinh doanh
58
3. Lĩnh vực Phát thanh, truyền hình và Thông tin điện tử
- Cấp giấy phép thiết lập trang thông tin điện tử tổng hợp
- Gia hạn giấy phép thiết lập trang thông tin điện tử tổng hợp
- Cấp lại giấy phép thiết lập mạng thông tin điện tử tổng hợp
4. Lĩnh vực Công nghệ thông tin
- Thủ tục thẩm định thiết kế sơ bộ đối với các dự án đầu tư ứng dụng công
nghệ thông tin (dự án nhóm B, C) sử dụng nguồn vốn ngân sách Nhà nước do
UBND cấp tỉnh, cấp huyện, cấp xã quyết định đầu tư
5. Lĩnh vực Bưu chính, Viễn Thông
- Cấp giấy phép bưu chính
- Cấp văn bản xác nhận văn bản thông báo hoạt động bưu chính
- Văn bản chấp thuận vị trí xây dựng, lắp đặt trạm thu phát sóng thông tin di
động (BTS)
- Thông báo thời gian chính thức bắt đầu cung cấp trò chơi G2, G3, G4 trên
mạng cho công cộng
- Thông báo thay đổi phương thức, phạm vi cung cấp dịch vụ trò chơi điện tử
G1 trên mạng đã được phê duyệt
− Thông báo thời gian chính thức cung cấp trò chơi điện tử trên mạng
3.2 Mô hình xác thực người dùng hành chính công
3.2.1 Các thành phần hệ thống xác thực
1. Người sử dụng đầu cuối (End Entity): Là các tổ chức, doanh nghiệp, cá
nhân, hoặc là một phần mềm hoặc một thiết bị tham gia vào quá trình trao đổi thông
tin tham gia các giao dịch hành chính công, sử dụng mật mã khóa công khai, gọi tắt
là các thực thể đầu cuối. Các thực thể có một cặp khóa công khai PU và khóa riêng
PR, trong đó khóa công khai PU được phổ biến bởi PKI dưới dạng các chứng thực
khóa, còn khóa bí mật do chính các thực thể quản lý, sở hữu riêng.
2. Trung tâm chứng thực - CA (Certificate Authority): Là cơ quan có thẩm
quyền cấp và quản lý các chứng thực khóa công khai của các thực thể đầu cuối.
Chứng thực khóa công khai (gọi tắt là chứng thực). Nội dung của một chứng thực
bao gồm các thông tin:
59
− Khóa công khai PU của thực thể đầu cuối ủy quyền cho CA phổ biến − Thông tin cá nhân của thực thể đầu cuối tham gia: Tên, định danh, địa chỉ
của tổ chức, doanh nghiệp, cá nhân
− Chữ ký số của tổ chức xác thực CA. Vì vậy, CA phải là một thực thể được
tin cậy, nếu không, chữ ký của CA sẽ không có ý nghĩa gì.
3. Máy chủ chứng thực - AS (Authority Server) Cơ sở dữ liệu lưu trữ chứng
thực khóa của các thực thể đầu cuối, Trung tâm chứng thực - CA
4. Máy chủ xử lý - RA (Registration Authority): Tiếp nhận yêu cầu cấp và
quản lý các thẻ chứng thực khóa cho các thực thể đầu cuối. Có một số chức năng xử
lý một số công việc quản lý nhằm giảm tải cho AS, chẳng hạn như đăng ký thực thể
đầu cuối, kiểm chứng các thực thể đầu cuối, tạo ra các cặp khóa Public- Private, …
3.2.2 Hệ thống ký hiệu
− PUA: Khóa công khai của thực thể đầu cuối A − PRA: Khóa riêng (khóa bí mật) của thực thực thể đầu cuối A − KCA-A: Khóa bí mật dùng chung chothực thể A và Trung tâm xác thực − H(M): Hàm băm bảo mật, H = {MD5 hoặc SHA} − E(M, K): Mã hóa bản tin M bằng khóaK = {PUA ,PRA hoặc K} − D(M, K): Giải mã bản tin M bằng khóa K − DSA: Chữ ký số của thực thể A − CA: Thẻ “Chứng thực khóa” của thực thể A − TA : Là thời gian có hiệu lực của thẻ “Chứng thực khóa” của A − DSCA-A: Chữ ký số của Trung tâm chứng thực ký vào chứng thực CA − AS: Máy chủ chứng thực, Trung tâm lưu trữ thẻ “Chứng thực khóa” − Thực thể đầu cuối có thể là; ü Tổ chức, doanh nghiêp, công ty, cá nhân, ..
ü Thiết bị: Server, Router,…
ü Phần mềm,..
3.2.3 Hoạt động hệ thống xác thực thông tin
1. Đăng ký (Registration): Là thủ tục mà thực thể đầu cuối yêu cầu cấp
chứng thực khóa
60
2. Khởi tạo (Initialization): Khởi tạo tại các thực thể đầu cuối có nhu cầu xin
cấp phát chứng thực số.Tạo ra cặp khóa Public/Private
3. Chứng thực (Certification):RA tạo chứng thực khóa cho thực thể đầu
cuối, ứng với khóa công khai vừa được tạo ra ở giai đọan khởi tạo hoặc do thực thể
đầu cuối cung cấp.
4. Phục hồi khóa (Key Pair Recovery): Cho phép phục hồi một khóa cũ.Để
khôi phục dữ liệu đã bị mã hoá, cần phải có thủ tục này để lấy lại khoá.
5. Cập nhật khóa (Key PairUpdate): Sau khoảng thời gian hiệu lực, chứng
thực khóa sẽ bị thu hồi (Revoke). Thủ tục Key PairUpdate có tác dụng gia hạn hiệu
lực của chứng thực khóa, cho phép một chứng thực khóa tiếp tục tồn tại sau khi đã
hết thời gian hiệu lực.
6. Yêu cầu thu hồi chứng thực khóa (Revocation request): Các trường hợp
khi khóa riêng bị lộ, hoặcvì một lý do nào đó, người sử dụng đầu cuối yêu cầu thu
hồi chứng thực khóa. Thủ tục này cho phép một thực thể đầu cuối yêu cầu thu hồi
một chứng thực khóa chưa hết hiệu lực.
3.3 Các quy trình xác thực hệ thống thông tin hành chính công
3.3.1 Quy trình cấp và quản lý chứng thực khóa
Quy trình này quy định các thủ tục các tổ chức, doanh nghiệp, công ty, cá
nhân… trước khi tham gia vào các giao dịch hành chính công, cần phải làm thủ tục
đăng ký và được cấp thẻ “chứng thực khóa”. Quá trình này cũng tương tự như các
doanh nghiệp trước khi hoạt động cần phải đăng ký con dấu, chữ ký cho cơ quan có
thẩm quyền để xác nhận con dấu và chữ ký là hợp pháp. Và con dấu, chữ ký phải
được lưu trữ trong các tàng thư.
Các bước đăng ký và cấp thẻ “Chứng thực khóa” trong môi trường cơ sở hạ
tầng khóa công khai PKI như sau:
1. Thực thể A yêu cầu được cấp thẻ “Chứng thực khóa”
• Các phần mềm hỗ trợ: ü Mật mã khóa đối xứng (DES, AES, TDES,..)
ü Mật mã khóa bất đối xứng (RSA)
ü Hàm băm bảo mật H = {MD5 hoặc SHA}
• Thực thể A tạo cặp khóa công khai PUA và khóa riêng (bí mật) PRA bằng
thuật toán RSA
61
• Tạo chữ ký số:DSA = E[H(IDA + Thông tin cá nhân)]
• Truy nhập vào Server RA để nhận khóa công khai Trung tâm PUCA
• Tạo bản tin yêu cầu CA cấp thẻ “Chứng thực khóa”: A →RA: E([IDA + Thông tin cá nhân + PUA + DS A), PUCA)] 2. Máy chủ RA (Trung tâm hệ thống): • Tạo khóa công khai PUCA và khóa bí mật PRCA bằng thuật toán RSA • Nhận từ A: E([IDA + Thông tin CN + PUA + DS A), PUCA)] • Giải mã: D[E([IDA + Thông tin CN + PUA + DS A), PUCA)], PRCA] • Thông tin sau giải mã:IDA + Thông tin CN + PUA + DSA • Tạo chữ ký số của Trung tâm cấp thẻ CA sẽ ký trong thẻ “Chứng thực
khóa” của A:DSCAA = E[H(IDA + PUA + TA ), PRCA]
• Tạo thẻ “Chứng thực khóa”: CA = (IDA + PUA + TA + DSA + DSCA-A).
Trong đó TA là thời gian hiệu lực của thẻ “Chứng thực khóa”
• Server RA cấp thẻ cho thực thể A: RA → A: E[(IDA + PUA + TA + DSA+ DSCA-A), PUA] • Thẻ “Chứng thực khóa” và thông tin của A lưu trữ trên Server AS • RA → CA:(IDA + Thông tin CN + PUA + TA + DSA+ DSCA-A). 3. Thực thể A nhận thẻ “Chứng thực khóa” • Nhận từ RA:E[(IDA + PUA + TA + DSA+ DSCA-A), PUA] • Giải mã:D[E[(IDA + PUA + TA + DSA+ DSCA-A), PUU], PRA] • “Chứng thực khóa” của A: CA = (IDA + PUA + TA + DSA+ DSCA-A) • Thực thể A có thể kiểm chứng các chữ ký: DSA và DSCA-A ü D[DSA, PUA] = H(IDA + Thông tin các nhân) là giá trị băm khi nhận, so
sánh với giá trị băm H(IDA + Thông tin các nhân) nguyên gốc
ü D[DSCA-A, PUCA] = H(IDA + PUA + TA ) là giá trị băm khi nhận, so sánh với với giá trị bămH(IDA + PUA + TA), trong đóIDA+ PUA là và TAlà thời gian hiệu lực của thể được CA cấp
ü Nếu một trong 2 kiểm chứng trên cho kết quả sai, thực thể A yêu cầu
Server CA cấp lại thẻ “Chứng thực khóa”
Trung tâm chứng thực CA tạo ra chứng thực khóa công khai cho các thực thể sử dụng đầu cuối, bằng cách mã hoá khối thông tin bao gồm: Mã nhận dạng của thực thể IDA, thông tin các nhân của thực thể và khoá công khai PU của thực thể, thời điểm hiệu lực của chứng thực, là thời gian bắt đầu và kết thúc. Khối thông tin này được mã hóa bởi khóa công khai người dùng
62
Như vậy, các thực thể đã được cấp các thẻ “Chứng thực khóa”. Bắt đầu từ lúc này, các thực thể có thể trao đổi khóa công khai cho nhau và được Trung tâm xác thực kiểm tra tính hợp pháp và thời hạn hiệu lực chứng thực.
Để tránh các tình huống giả mạo CA, các thực thể đầu cuối phải gửi các yêu cầu cấp phát chứng thực đến CA bằng một kênh bảo mật, trên đó có áp dụng các cơ chế xác thực chặt chẽ
Hình 3.1: Mô hình tổng quát cấp chứng thực khóa
Quy trình quản lý chứng thực khóa:
1) Thủ tục người sử dụng yêu cầu Trung tâm cấp chứng thực khóa a) Thủ tục yêu cầu:E([IDA + Thông tin cá nhân + PUA + DS A), PUCA)] b) Thẻ chứng thựckhóa:E[(IDA + PUA + TA + DSA+ DSCA-A), PUA] 2) Thủ tục cấp phát và quản lý chứng thực khóa Trung tâm chứng thực (IDA + Thông tin CN + PUA + TA + DSA+ DSCA-A). Trong đó: IDA: Định danh của tổ chức, doanh nghiệp, cá nhân,.. Thông tin cá nhân: Tên, địa chỉ, định danh yêu cầu, ngày,..của tổ chức,
doanh nghiệp, cá nhân
63
PUA: Khóa công khaicủa tổ chức, doanh nghiệp, cá nhân DSA: Chữ ký số của tổ chức, doanh nghiệp, cá nhân TA : Thời gian hiệu lực của chứng thực số PUCA : Khóa công khai củaTrung tân chứng thưc
DSCA-A: Chữ ký số củaTrung tân chứng thưc khóa ký vào thẻ chứng thực khóa của người dùng
Máy chủ AS
CA = (IDA + PUA + TA + DSA+ DSCA-A)
(IDA + Thông tin CN + PUA + TA + DSA+ DSCA-A)
Máy chủ RA
Người sử dụng (User)
E[(IDA + PUA + TA + DSA+ DSCA-A), PUA]
Hình 3.2: Quy trình khởi tạo chứng thực khóa cho người sử dụng 3.3.2 Quy trình xác thực thông tin Giả sử một tổ chức, doanh nghiệp, công ty..., ký hiệu là thực thể A gửi một tài liệu M cho một thực thể B. Tài liệu M có thể là một giấy phép nhập khẩu xuất bản phẩm không kinh doanh, xuất bản phẩm nhập khẩu không kinh doanh…, quy trình xác thực như sau:
1. Trên thực thể người sử dụng A: • A truy nhập vào Server RA tìm khóa công khai của B:PUB • Mã hóa tài liệu M bằng thuật toán mật mã đối xứng với khóa bí mật là
KABchung của thực thể A và B: MK = E(M, KAB)
• A gửi thông tin sang B bằng bản mã khóa riêng của B: E[(MK+KAB+CA] = E[MK +K+ (IDA +PUA +TA + DSA+ DSCA-A), PUB] 2. Trên thực thể B: • B nhận: E[(MK+KAB+CA] = E[MK+ K+(IDA+ PUA+ TA + DSA+ DSCA-A), PUB]
64
• Giải mã:D[E[MK+KAB+(IDA + PUA+ TA+ DSA+DSCA-A), PUB], PRB] • Kết quả giải mã:MK + KAB + (IDA + PUA + TA + DSA+ DSCA-A) • Giả mã bằng khóa chung KABnhận được bản rõ:D(MK , K) =M • Thực thể B yêu cầu Server RA xác minh thẻ “Chứng thực khóa”A: E[(IDA
+ PUA + TA + DSA+ DSCA-A), PUCA-B]
3. Máy chủ RA xác minh chữ ký số và thẻ “Chứng thực khóa” của A: • Giải mã:D[E[(IDA + PUA + TA + DSA+ DSCA-A), PUCA-B], PUCA-B] • Thông tin sau giải mã: IDA + PUA + TA + DSA+ DSCA-A • Xác minh: ü Mã định danh IDA là của A ü Chữ ký sốDSA là của A ü Chữ ký sốDSCA-A là của CA ü Thời gian TA có còn hiệu lực • Server RA trả lời cho thực thể B kết quả xác minh Để bắt đầu trao đổi thông tin với nhau, các thực thể sử dụng mật mã bất đối
xứng. Hai thực thể A và B trao đổi chứng thực khóa cho nhau để thực thể này nhận
được khoá công khai của thực thể kia.
Nhờ thực thể tin cậy thứ 3 làm trung gian để tạo ra chứng thực khóa, khoá
công khai có thể được phân phối một cách an toàn mà không bị giả mạo.
3.3.3 Một số nhận xét
Mô hình xác thực thông tin trong môi trường cơ sở hạ tầng khóa công khai
PKI, sử dụng chữ ký số ký qua bên thứ 3 tin cậy, có tính pháp lý. Quy trình đảm
bảo được
− Thông tin trao đổi giữa các thực thể là đảm bảo bí mật và toàn vẹn trên hai
khía cạnh nội dung và nguồn gốc thông tin
− Xác minh được nguồn gốc nơi phát sinh và nơi nhận thông tin − Các thực thể tham gia không thể phủ nhận được tính pháp lý của giao
dịch. Không thể chối cãi được nguồn gốc thông tin đã gửi hoặc nhận.
− Mỗi thực thể đều có thể đọc các chứng thực khóa để biết được khóa công
khai cũng như nhận diện chủ sở hữu của khóa đó.
− Mỗi thực thể đều có thể xác thực thông tin trong chứng thực khóa là chính
xác nhờ vào chữ ký của một thực thể được tin cậy thứ 3.
65
− Chỉ có người chứng thực (Certificate Authority hay CA) mới có quyền tạo
ra và cập nhật các chứng thực khóa.
− Mô hình xác thực thông tin trong môi trường PKI sử dụng hai máy chủ tại
Trung tâm xác thực:
ü Server CA có chức năng chỉ lưu trữ thẻ “Chứng thực khóa” và thông tin
các nhân của các thực thể đầu cuối. Nó hoạt động hoàn toàn độc lập với môi trường
mạng. Vì vậy, không thể có bất kỳ người sử dụng đầu cuối hợp lệ hay không hợp lệ
nào lại có thể truy xuất trực tiếp vào nó, mà phải thông qua máy chủ trung gian RA
của Trung tâm. Vì vậy dữ liệu trên máy chủ CA là hoàn toàn tuyệt mật, đảm bảo
tuyệt đối an toàn thông tin cho hệ thống.
ü Server RA là máy chủ trung gian, có chức năng giao tiếp trực tiếp giữa
người sử dụng với hệ thống. Tiếp nhận, xử lý các yêu cầu truy nhập của các thực
thể đầu cuối. Có chức năng kiểm tra, giám sát các hoạt động hệ thống. Nó chỉ kết
nối với máy chủ CA khi kết nối an toàn. Nó làm việc trên bản sao chứng thực khóa,
thường xuyên cập nhật cho máy chủ CA
Tóm lại mô hình xác thực thông tin trong môi trường cơ sở hạ tầng khóa
công khai PKI, đảm bảo an toàn, bí mật cho các giao dịch điện tử
3.4 Triển khai thử nghiệm
Ứng dụng java mô phỏng quá trình ký và xác thực chữ ký
Hình 3.3: Giao diện chương trình demo chữ ký số
66
Trình tạo khóa tạo ra cặp khóa 1024 bit. Nội dung thông điệp là tập tin được
nạp vào và sử dụng khóa bí mật tạo ra hàm băm SHA1 đầu vào sau đó tạo thành
chữ ký. Việc này tương ứng với cặp mã bí mật công khai được tạo ra trong các USB
token, trong đó khóa bí mật được lưu trữ trên USB token, khóa công khai được lưu
trữ tại máy chủ Root-CA.
Quá trình giải mã dựa vào chữ ký được tạo ra trong quá trình ký nội dung văn
bản, đối chiếu với hàm băm SHA1 và khóa công khai để kiểm tra xem văn bản có
toàn vẹn hay không, đã bị sửa chữa hay chưa, đồng thời kiểm tra xác thực người ký
văn bản với cặp mã công khai và bí mật.
Hình 3.4: Giao diện kiểm tra chuỗi toàn vẹn
3.5 Kết quả thử nghiệm
- Chữ ký số mã hóa RSA/SHA1 đảm bảo tính bảo mật cao. Ứng dụng hoạt
động chính xác, kiểm tra chính xác văn bản, tệp tin không bị thay đổi. Nếu có thay
đổi bất kỳ hệ thống sẽ báo file đã bị thay đổi.
- Xác định chính xác định danh của khóa công khai do cặp khóa bí mật, công
khai là duy nhất. Khi thay đổi khóa công khai hoặc khóa bí mật bị thay đổi trước
khi mã hóa tệp tin thì thông xác nhận được tệp tin được ký chính xác.
Đánh giá kết quả 100 lần thử nghiệm với các thao tác: Thay đổi khóa bí mật,
thay đổi khóa công khai, thay đổi file gốc khi file gốc là ảnh, thay đổi file gốc khi
file gốc là text. Kết quả thử nghiệm được ghi chép trong bảng 3.2.
67
Bảng 3.1 Kết quả thử nghiệm
STT Nội dung
Thay đổi khóa bí mật Số lần thử nghiệm 100 Kết quả nhận dạng đúng 100 Tỷ lệ nhận dạng 100% 1
Thay đổi khóa công khai 100 100 100% 2
Thay đổi input file ảnh 100 100 100% 3
Thay đổi input file text 100 100 100% 4
- Chữ ký số mã hóa RSA/SHA1 đảm bảo tính bảo mật cao. Ứng dụng hoạt
động chính xác, kiểm tra chính xác văn bản, tệp tin không bị thay đổi. Nếu có thay
đổi bất kỳ hệ thống sẽ báo file đã bị thay đổi.
- Xác định chính xác định danh của khóa công khai do cặp khóa bí mật, công
khai là duy nhất. Khi thay đổi khóa công khai hoặc khóa bí mật bị thay đổi trước
khi mã hóa tệp tin thì thông xác nhận được tệp tin được ký chính xác.
68
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Những kết quả nghiên cứu lý thuyết an toàn và xác thực thông tin:
Xác thực là một cơ chế cơ bản nhất có vai trò bảo đảm an toàn cho các thực
thể khi trao đổi thông tin giữa các hệ thống. Kỹ thuật mật mã chỉ bảo vệ được tính
bí mật và tính toàn vẹn của thông tin.
Kỹ thuật mật mã hiện đại được chia thành hai loại: Mật mã khóa đối xứng
(Symmetric Key Encryption) còn được gọi là mật mã khóa bí mật và mật mã khóa
bất đối xứng (Asymmetric Key Encryption) hay gọi là mật mã khóa công khai.
Mật mã khóa đối xứng sử dụng một khóa duy nhất cho việc mã hóa và giải
mã. Yêu cầu phải giữ tuyệt đối bí mật trong việc trao đổi thông tin giữa các thực thể
tham gia giao dịch. Nó rất thích hợp với việc thực thi trên phần cứng, tốc độ mã hoá
cao, dung lượng thông tin lớn. Các thuật toán mật mã khóa đối xứng phổ biến bao
gồm DES, Blowfish, IDEA, AES …
Mật mã khóa bất đối xứng sử dụng hai khóa khác nhau cho quá trình mã hóa
và giải mã. Một trong hai khóa là khóa công khai (Public Key) được phổ biến công
khai cho bất kỳ thực thể nào cũng có thể truy xuất được và khóa còn lại là khóa
riêng (Private Key) còn gọi là khóa bí mật, được giữ bí mật, chỉ có chủ thể của khóa
đó biết. Mã hóa khóa công khai được xây dựng dựa chủ yếu trên các hàm toán học,
do đó rất thích hợp với thực thi bằng phần mềm và tốc độ mã hoá thấp, phù hợp với
tài liệu dung lượng nhỏ. RSA là thuật toán mật mã khóa bất đối xứng phổ biến nhất
hiện nay.
Mật mã khóa bất đối xứng có nhiều ứng dụng khác nhau như: mật mã thông
tin, tạo chữ ký số, trao đổi khóa bí mật của mật mã khóa đối xứng …
Hàm băm bảo mật (Secure Hash Function) là cơ chế dùng trong việc xác
thực thông tin (Message Authentication). Nguyên tắc của hàm băm là biến đổi khối
thông tin gốc thành một giá trị kiểm tra có kích thước cố định gọi là giá trị băm (mã
băm), giá trị này được gửi đính kèm với thông tin gốc. Khi nhận, thông tin nhận
cũng được đưa vào hàm băm để tạo ra giá trị kiểm tra. Nếu hai giá trị băm bên gửi
và bên nhận trùng nhau, thông tin được xem là xác thực. Nếu giá trị băm được mã
hóa bằng khóa công khai của mật mã bất đối xứng, tạo thành chữ ký số là thành
69
phần của một số thuật toán mật mã dùng trong các thuật toán xác thực thông tin
(Message Authentication),
Chữ ký số (digital signature) là kỹ thuật nhận dạng một thực thể thông tin
cùng với thông tin do thực thể này tạo ra. Ứng dụng cơ bản nhất của chữ ký số là
chứng thực và đảm bảo tính không thể phủ nhận (Non Repudiation) của thông tin.
Có thể chữ ký số ký trực tiếp và ký thông qua trọng tài. Chuẩn chữ ký số RSA sử
dụng thuật toán RSA, tạo ra chữ ký số dựa trên các hàm băm bảo mật (MD5, SHA)
và kỹ thuật mật mã khóa bất đối xứng (RSA).
Mật mã khóa công khai chỉ có ưu điểm khi nó có một cơ chế phân phối khóa
công khai một cách an toàn và hiệu quả cho các thực thể trong hệ thống. Chứng
thực khóa công khai (Certificate) mà một cơ chế hiệu quả để thực hiện vấn đề này.
Mỗi chứng thực khóa bao gồm nhận dạng thực thể đầu cuối, khóa công khai của
thực thể đầu cuối và xác nhận (bằng chữ ký số) của một thực thể thứ 3. Một hệ
thống cung cấp cơ chế tạo ra và quản lý chứng thực khóa được gọi là cơ sở hạ tầng
khóa công khai PKI.
Về ứng dụng thực tế, em đề xuất các mô hình xác thực cho hệ thống thông
tin về các dịch vụ hành chính công theo mô hình phân tán. Yêu cầu phải quản lý các
thực thể truy xuất thông tin sao cho phải đảm bảo tuyệt đối an toàn cho hệ thống và
cho các thực thể tham gia các hoạt động giao dịch trong hệ thống. Các mô hình
được xây dựng theo mô hình xác thực người sử dụng tham gia các giao dịch truy
xuất thông tin. Nghĩa là các thực thể muốn có quyền truy xuất thông tin trên hệ
thống, trước tiên các thực thể đó phải đăng ký và phải được hệ thống cấp phép. Và
khi được quyền truy xuất các thực thể phải được hệ thống kiểm soát bằng mô hình
xác thực sử dụng các dịch vụ thông tin của hệ thống
Với những kết quả đạt được và trong xu thế phát triển mạnh của ngành an
toàn và bảo mật dữ liệu, em nhận thấy rằng các kỹ thuật xác thực cần tiếp tục
nghiên cứu, cải tiến và áp dụng rộng rãi hơn nữa trong thực tế.
Trong quá trình thực hiện luận văn, vì điều kiện thời gian cũng như kiến thức
còn hạn chế, luận văn không thể tránh khỏi những sai sót, em rất mong được sự
tham gia góp ý của quý thầy cô và các bạn để bản luận văn hoàn chỉnh hơn.
70
TÀI LIỆU THAM KHẢO
Tiếng Việt:
[1] Phan Đình Diệu, Lý thuyết mật mã và an toàn thông tin, NXB Đại học Quốc
Gia Hà Nội, 2002.
[2] Nguyễn Linh Giang, An toàn và An ninh thông tin mạng, Đại học Bách khoa
Hà Nội, 2015.
[3] Trịnh Nhật Tiến, An toàn dữ liệu, NXB Đại học Quốc Gia Hà Nội, 2008.
Tiếng Anh:
[4] Jin Li, Kui Ren, Kwangjo Kim, Accountable Attribute Based Encyption for
Abuse Free Access Control, Cryptology ePrint Archive, Report 2009/118,
2009 http://eprint.iacr.org
[5] William Stallings, Cryptography and Network Security Principles and
Practices, Fourth Edition, 2005.
[6] Svetlin Nakov How, Digital Signatures Work: Digitally Signing Message,
2005.
[7] Carlisle Adams vµ Steve Lloyd, Understanding PKI: Concepts, Standards and
Deployment Considerations, Addison-Wesley, 2003.
[8] Federal Information, Processing Standards Publication 180 (1995), Secure
Hash Standard (SHA).