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..
Trang 1NGÔ 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
Trang 2NGÔ 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
Trang 3LỜ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
Trang 4LỜ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
Trang 5MỤ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
Trang 61.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
Trang 72.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
Trang 8DANH MỤC NHỮNG TỪ VIẾT TẮT
AES Advanced Encryption Standard Chuẩn mã hoá tiên tiến
ANSI American National Standards Viện tiêu chuẩn quốc gia Mỹ Institude
CA Certification Authority Nhà cung cấp chứng thực CRL Certificate Revocation List Danh sách chứng thực thu hồi
DES Data Ecryption Standard Chuẩn mã dữ liệu
DSA Digital Signature Algorithm Thuật toán chữ ký điện tử
DSS Digital Signature Standard Chuẩn chữ ký điện tử
EDI Electronic Data Interchange Trao đổi dữ liệu điện tử
FIPS Federal Information Processing Chuẩn xử lý thông tin liên bang
FTP File Transfer Protocol Giao thức truyền file
HTTP Hyper Text Transport Protocol Giao thức truyền siêu văn bản IDEA International Data Encryption Thuật toán mã hoá dữ liệu quốc
PKI Public Key Infrastructure Cơ sở hạ tầng khoá công khai
RA Registration Authority Nhà quản lý đăng ký
RSA Rivest-Shamir-Aldeman
SET Secure Electronic Transaction Giao dịch điện tử an toàn
SHA Secure Hash Algorithm Thuật toán băm an toàn
TCP/IP Transmission Control Protocol Giao thức điều khiển truyền
/ Internet protocol dẫn/ giao thức Internet
URL Uniform Resource Locator Bộ định vị tài nguyên
Trang 9DANH 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
Trang 10DANH 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
Trang 11MỞ ĐẦ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
Trang 12Luậ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Ử
Trang 13là 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ế
Trang 14Cá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
Trang 15RSA 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)
Trang 16- 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)
Trang 173 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)
Trang 18Mộ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ã
Trang 19− 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á
Trang 20trị 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)
Hình 1.2: Một ứng dụng điển hình của hàm băm
Trang 21Trong 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
Trang 22sá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
Trang 23Bảng 1.1: Các phiên bản SHA
Kích thước thông tin gốc (bit) < 264 < 264 < 2128 <2128
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
Kích thước thông tin gốc (bit) Không giới hạn < 264
Trang 24Với 128 bit giá trị mã băm, việc tìm ra hai khối thông tin để có cùng một giá trị mã băm không còn là điều bất khả thi đối với năng lực của các bộ xử lý hiện đại hiện nay Vì vậy, độ an tòan của một MD5 đang bị đe dọa nghiêm trọng, và mức độ phổ biến của MD5 có thể sẽ giảm đi rất nhiều và được thay thế bằng một giải thuật xác thực khác hiệu quả hơn
1.3 Chữ ký số [2]
1.3.1 Khái niệm chữ ký số
Ứng dụng quan trọng nhất của mật mã khoá công khai là chữ ký số hay còn được gọi là chữ ký điện tử Chữ ký số là một phương thức nhằm đảm bảo tính hợp pháp của các thực thể khi tham gia các giao dịch điện tử Chữ ký số là một
cơ chế xác thực cho phép người tạo ra thông tin (Message Creator) gắn thêm một đoạn mã đặc biệt vào thông tin, có tác dụng như là một chữ ký thông thường Chữ ký được tạo ra bằng cách áp dụng một hàm băm lên thông gốc và sau đó nó được mã hóa bằng khóa riêng của người gửi Chữ ký số có mục đích đảm bảo tính toàn vẹn về nguồn gốc và nội dung của thông tin
Trong khi các cơ chế xác thực thông tin (Message Authentication) đã thực hiện chức năng xác thực nguồn gốc thông tin Các hàm băm một chiều chỉ mới có tác dụng bảo vệ thông tin trao đổi giữa hai thực thể không xâm phạm của một thực thể bên thứ 3 Tuy nhiên, các cơ chế này không thể ngăn chặn được sự xâm phạm của chính hai thực thể trực tiếp tham gia
Ví dụ: Thực thể A gửi một tài liệu X cho thực thể B, sử dụng một cơ chế xác thực nào đó, cơ chế này mới chỉ đảm bảo chỉ có thực thể A và thực thể B dùng chung một khoá bí mật K để tạo ra các mã xác thực từ thông tin gốc Tuy nhiên, nếu thực thể B cố ý thay đổi nội dung của tài liệu X thành một tài liệu có nội dung mới
Y khác với tài liệu X gốc, và với khóa bí mật K Thực thể B hoàn toàn có thể tạo ra thông tin xác thực mới để gắn vào Y, làm cho nó trở thành một bản tin hợp lệ mặc
dù thực chất đây không phải là bản tin do thực thể A tạo ra Ngược lại, Thực thể A cũng có thể từ chối xác nhận việc nó đã gửi bản tin X cho thực thể B, vì với các cơ chế xác thực như trên, thực thể B hoàn toàn có khả năng giả mạo thông tin đưa ra từ thực thể A
Cũng như một chữ ký thông thường (chữ ký bằng tay), một chữ ký số phải
có đầy đủ các thuộc tính sau đây:
Trang 25− 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ữ
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
Hashing (SHA, MD5) Thông tin gốc
(bản rõ)
PR (Private Key) Chữ ký số soos
h = H(M)
Trang 26Hì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
Trang 27Hì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ố
Trang 28Là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
Trang 291.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:
Trang 30- 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
Trang 31phươ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 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ó
Delta-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ó
Trang 32quyề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, …
Trang 33Hì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
Trang 34- 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ể
Trang 35có 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
Trang 36− 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
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):
Trang 37- 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ý
Trang 38− 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)
Trang 39Như 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)
Hình 1.9: Dùng mật mã bất đối xứng để trao đổi khoá
(1) E([N 1 + ID A ], PU B ) (2) E([N 1 + N 2 ], PU A )
(3) E(N 2 , PU B ) (4) E(E(K, PR A ), PU B )
Trang 40Dù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([N 1 + ID A ], PU B )
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)
A → B: E(E(K, PR A ), PU B )