Dựa trên cách sử dụng của chìa khóa mật mã công cộng và chữ ký điện tử, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã hóa, đápứng nhu cầu bảo mật của người sử dụng
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
Tel (84-511) 736 949, Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn
TIỂU LUẬN MÔN HỌC
AN TOÀN THÔNG TIN MẠNG
2 Hoàng Tiến Sơn
Lớp Cao học KHMT Khóa 31 (2015 2017))
ĐÀ NẴNG, 5/2016
Trang 2MỤC LỤC
Chương 1: Giới Thiệu 1
1.1 Hạ tầng khóa công khai (PKI) 1
1.2 Một vài kiến trúc và công nghệ PKI hiện hành 3
1.2.2 Một số hệ thống PKI 3
Chương 2: Xây dựng hạ tầng khóa công khai(PKI), vấn đề cấp phát chứng thực
số và ứng dụng trong thương mại điện tử 4
Trang 32.8.1 Định nghĩa : 16
2.9 Các ứng dụng của PKI trong thực tiễn 16
2.9.1 Mô hình phân cấp thứ bậc trên - dưới 16 2.9.2 Mô hình chứng thực chéo 17 2.9.3 Mô hình CA cầu nối 17 2.9.4 Các sản phẩm 17 2.9.5 Định hướng nghiên cứu phục vụ hệ thống PKI chuyên dùng Chính phủ 17 Chương 3: Triển khai cài đặt ứng dụng OpenSSL 19
3.1 Triển khai cài đặt 19
3.2 Kịch bản sử dụng opensl để mã hóa bản tin và file 19
3.2.1 Mã hóa thông điệp với cú pháp 19 3.2.2 Giải mã bằng cú pháp 20 3.2.3 Khóa công khai và khóa cá nhân 20 KẾT LUẬN 22
1 Về mặt lý thuyết 22
2 Về mặt thực tiễn 22
3 Hướng phát triển 22
Trang 4DANH MỤC TỪ VIẾT TẮT
PKI Public Key Infrastructure
CA Certificate Authority
RSA Rivest Shamir Adleman
DSA Digital Signature Algorithm
MD5 Message Digest 5
RA Registration Authority
SHA Secure Hash Algorithm
SHS Secure Hash Standard
H Hash function
RFC Request For Comments
Trang 5DANH MỤC HÌNH VẼ VÀ BẢNG
Hình 1.1: Mô hình xây dựng PKI cơ bản
Hình 1.2: Sơ đồ gửi và nhận tin nhắn sử dụng PKI
Bảng 1.3: Bảng mô tả chi tiết các hoạt động của PKI
Bảng 2.1 : Đặc điểm của các thuật toán băm SHA
Bảng 2.2 : So sánh thời gian tạo khóa, tạo chữ ký và xác nhận chữ ký của RSA với DSA
Hình 2.3 : Thời gian tạo khóa của RSA và DSA
Hình 2.4 : Thời gian tạo chữ ký của RSA và DSA
Hình 2.5 : Thời gian xác nhận chữ ký của RSA và DSA
Hình 2.6 : Mô hình phân cấp
Hình 3.1 : Cài đặt Opensl
Hình 3.2 : Mã hóa thông điệp
Hình 3.3 : Giải mã thông điệp
Hình 3.4 : Tạo khóa cá nhân
Hình 3.5 : Tạo khóa công khai từ khóa cá nhân
Trang 6Chương 1: Giới Thiệu
1.1 Hạ tầng khóa công khai (PKI)
1.1.1 PKI là gì
- PKI: viết tắt của Public Key Infrastructure tức là hạ tầng cơ sở khóa côngkhai Là một cơ chế để cho một bên thứ 3 (thường là nhà cung cấp chứng thực số)cung cấp và xác thực định danh các bên tham gia vào quá trình trao đổi thông tin Cơchế này cũng cho phép gán cho mỗi người sử dụng trong hệ thống một cặp khóa côngkhai/khóa bí mật
Trong kỷ nguyên bùng nổ của công nghệ thông tin, mọi giao dịch từ xa có thểthông qua internet Tuy nhiên, mặt khác khó mà bảo đảm rằng những giao dịch trênInternet luôn an toàn Cơ sở hạ tầng khóa công khai (PKI) đã đáp ứng những yêu cầucấp thiết đó Dựa trên cách sử dụng của chìa khóa mật mã công cộng và chữ ký điện
tử, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã hóa, đápứng nhu cầu bảo mật của người sử dụng
1.1.2 Cở sở hạ tầng khóa công khai
Hình 1.1: Mô hình xây dựng PKI cơ bản
- PKI cung cấp một cặp chìa khóa, trong đó có một chìa là chìa khóa công khai(Public key) để có thể sử dụng dịch vụ, chìa còn lại là chìa khóa bí mật (Private key)
mà người sử dụng phải giữ bí mật Hai chìa khóa này có liên quan mật thiết đến nhau,sao cho một thông điệp được mã hóa bởi một chìa khóa mật mã công khai thì chỉ giải
mã được bởi một chìa khóa bí mật tương ứng
- Ví dụ về mô hình xử dụng xác thực :
Giả sử có 2 người dùng Bob và Alice muốn chuyển thư điện tử cho nhau đểđảm bảo tính xác thực và bảo mật họ dùng 1 phần mềm PKI Các hoạt động được mô
tả như hình 1.1
Trang 7Hình 1.2 Sơ đồ gửi và nhận tin nhắn sử dụng PKI
Chi tiết các hoạt động của PKI được mô tả qua bảng 1.3
Bob muốn chuyển một thư điện tử đến cho
Alice, với yêu cầu rằng giao dịch phải chứng
minh được chính anh đã gởi nó đi và nội
dung bức thư không bị thay đổi
Phần mềm PKI dùng chìa khóa cánhân của Bob tạo ra một chữ ký điện
tử cho bức thư
Bob muốn chắc chắn rằng không ai ngoài
Alice đọc được bức thư này Phần mềm PKI của Bob dùng chìakhóa công cộng của Alice để mã hóa
thông điệp của Bob
nhân của Alice để để giải mã thôngđiệp
Alice muốn kiểm chứng rằng chính Bob đã
gởi đi thông điệp đó và nội dung thông điệp
không bị chỉnh sửa
Phần mềm PKI của Alice dùng chìakhóa công cộng của Bob để kiểmchứng chữ ký điện tử của anh ta
Bảng 1.3: Bảng mô tả chi tiết các hoạt động của PKI
Trang 81.2 Một vài kiến trúc và công nghệ PKI hiện hành
1.2.1 Một số ứng dụng
- Mục tiêu chính của PKI là cung cấp khóa công khai và xác định mối liên hệgiữa khóa và định dạng người dùng Nhờ vậy người dùng có thể sử dụng trong một sốứng dụng như:
+ Mã hoá Email hoặc xác thực người gửi Email (OpenPGP hay S/MIME).+ Mã hóa hoặc nhận thực văn bản (Các tiêu chuẩn Chữ ký XML* hoặc mã hoáXML* khi văn bản được thể hiện duới dạng XML)
+ Xác thực người dùng ứng dụng (Đăng nhập bằng thẻ thông minh - smartcard,nhận thực người dùng trong SSL)
+ Các giao thức truyền thông an toàn dùng kỹ thuật Bootstrapping (IKE, SSL):trao đổi khóa bằng khóa bất đối xứng, còn mã hóa bằng khóa đối xứng
1.2.2 Một số hệ thống PKI
- Dưới đây là danh sách một số hệ thống PKI, trong đó một số nhà cung cấpchứng thực số hàng đầu (ví dụ VeriSign) không được liệt kê vì các phần mềm của họkhông được công bố công khai:
+ Hệ thống quản lý chứng thực Red Hat
+ Cơmputer Associate eTrust PKI
Trang 9Chương 2: Xây dựng hạ tầng khóa công khai(PKI), vấn đề cấp phát chứng thực số và ứng dụng trong thương mại điện tử
2.1 Hàm băm mật mã học
2.1.1 Hàm băm
Hàm băm (tiếng Anh: hash function) là hàm sinh ra các giá trị băm tương ứngvới mỗi khối dữ liệu (có thể là một chuỗi kí tự, một đoạn tin nhắn ) Giá trị băm đóngvai trò gần như một khóa để phân biệt các khối dữ liệu, tuy nhiên, người ta chấp nhậnhiện tượng trùng khóa hay còn gọi là đụng độ và cố gắng cải thiện giải thuật để giảmthiểu sự đụng độ đó Hàm băm thường được dùng trong bảng băm nhằm giảm chi phítính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc so sánh các giá trị bămnhanh hơn việc so sánh những khối dữ liệu có kích thước lớn)
2.1.3 Đảm bảo tính toàn vẹn dữ liệu
Hàm băm mật mã học là hàm bam và có tính chất là hàm 1 chiều Từ khối dữliệu hay giá trị băm đầu vào chỉ có thể đưa ra 1 giá trị băm duy nhất Như chúng ta đãbiết đối với tính chất của hàm 1 chiều Một người nào đó dù bắt được giá trị băm họcũng không thể suy ngược lại giá trị, đoạn tin nhắn băm khởi điểm
- Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khitìm một khối dữ liệu trong một tập hợp Giá trị băm đóng vai trò gần như một khóa đểphân biệt các khối dữ liệu
Giá trị đầu vào(tin nhắn, dữ liệu ) bị thay đổi tương ứng giá trị băm cũng bịthay đổi Do vậy nếu 1 kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biếtngay lập tức
2.1.4 Một số hàm băm thông dụng
2.1.4.1 Thuật toán hàm băm MD5
a Thuật toán hàm băm MD5
- MD5 (Message-Digest algorithm 5) là một hàm băm mật mã được sử dụngphổ biến, được thiết kể bởi Giáo sư Ronald L Rivest tại trường MIT vào năm 1991 đểthay thế cho hàm băm trước đó là MD4 (1990) Là một chuẩn Internet (RFC 1321),MD5 đã được dùng trong nhiều ứng dụng bảo mật và cũng được dùng phổ biến đểkiểm tra tính toàn vẹn của tập tin Cũng như các hàm băm khác như MD4 và SHS(Secure Hash Standard), MD5 là phương pháp có ưu điểm tốc độ xử lý rất nhanh, thíchhợp với các thông điệp dài và cho ra giá trị băm dài 128 bit
Trang 10- Trong MD5, thông điệp ban đầu X sẽ được mở rộng thành dãy bit X có độ dài
là bội của 512 Dãy bit X gồm các thành phần được sắp thứ tự như sau: Dãy bit X banđầu, một bit 1, dãy d bit 0 (d được tính sao cho dãy X cuối cùng là bội của 512), dãy
64 bit 1 biểu diễn chiều dài của thông điệp Đơn vị xử lý trong MD5 là các từ 32-bit,nên dãy bit X ở trên sẽ được biểu diễn thành dãy các từ X[i] 32-bit sau:
X=X[0] X[l] X[2] ,X[N-1] , với N là bội của 16.[5]
b Phương pháp MD5 có những ưu điểm sau so với phương pháp MD4
- Thay vì có 3 chu kỳ biến đổi như trong MD4, MD5 bổ sung thêm chu kỳ thứ 4
- Lý do MD5 được thiết kế thay thế cho MD4 là vì các phân tích chỉ ra rằngphương pháp MD4 có vẻ không an toàn Den Boer và Bosselaers đã chỉ ra các điểmyếu trong MD4 trong một bài báo được đăng vào năm 1991 và một tấn công xung độtđầu tiên được tìm thấy bởi Han Dobbertin vào năm 1996
- Tuy nhiên, các nỗ lực tấn công, phân tích của các nhà nghiên cứu cho thấyMD5 cũng không còn an toàn và cần được thay thế bằng một thuật toán băm khác nhưcác công bố của Den Boer và Bosselaers năm 1993; của Hans Dobbertin năm 1996;của nhóm tác giả Xiaoyun Wang, Dengguo Feng, Xuejia Lai, và Hongbo ngày19/8/2004; của Arjen Lenstra, Xiaoyun Wang, và Benne de Weger ngày 1/3/2005; vàcủa Vlastimil Klima,
2.1.4.2 Chuẩn băm an toàn SHS
- SHS (Secure Hash Standard) là chuẩn gồm tập hợp các thuật toán băm mật mã
an toàn (Secure Hash Algorithm - SHA) như SHA-1, SHA-224, SHA- 256, SHA-384,SHA-512 doNIST2 vàNSA3 xây dựng
- Phương pháp SHA-1 (cũng như SHA-0) được xây dựng trên cùng cơ sở vớiphương pháp MD4 và MD5 Tuy nhiên, phương pháp SHA-1 sử dụng trên hệ thốngBig-endian5 thay vì Little-endian6 như phương pháp MD4 và MD5 Ngoài ra, hàmbăm SHA-1 tạo ra thông điệp rút gọn kết quả có độ dài 160 bit nên thường được sửdụng
- Phương pháp SHA-1 giống với MD5 (cải tiến từ MD4) nhưng thông điệp tómtắt được tạo ra có độ dài 160 bit Dưới đây là một số điểm so sánh giữa MD5 và SHA-1:
+ Giống như MD5, SHA-1 cũng thêm chu kỳ thứ 4 để tăng mức độ an toàn chothuật toán Tuy nhiên, chu kỳ 4 của SHA-1 sử dụng lại hàm f của chu kỳ thứ 2
Trang 11+ Trong SHA-1, 20 bước biến đổi trong cùng một chu kỳ sử dụng cùng mộthàng số K[t] Trong khi đó, mỗi bước biến đổi trong cùng một chu kỳ của MD5 sửdụng các hằng số khác nhau.
+ So với MD4, hàm G trong MD5 được thay thế thành hàm mới để làm giảmtính đối xứng Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại hàm G của MD4
+ Cả MD5 và SHA-1, mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền.
chukỳ
Độantoàn7
Thuật
toán
Kếtquả
Trạng
Thôngđiệp tối
Cácthao tác
Đụngđộ
Bảng 2.1: Đặc điểm của các thuật toán băm SHA
2.2 Mã hóa thông tin
- Có rất nhiều thông tin mà chúng ta không muốn người khác biết khi gửi đinhư: thông tin về Credit-Card, thông tin về kinh doanh của công ty, thông tin về tàikhoản cá nhân, thông tin về cá nhân như số chứng minh thư, số thẻ
- Các thông tin bí mật được cung cấp cho các máy tính quan mạng Internet bằngnhiều phương thức khác nhau ví dụ: Một cách bảo mật đơn giản nhưng minh bạch nhất
là lưu các thông tin bí mật trên các bộ nhớ có thể xoá được (Removable Storage) nhưđĩa mềm Tuy nhiên dạng bảo mật phổ biến nhất vẫn là dựa vào quá trình mã hoá dữliệu (Encryption)
- Các hệ thống mã hoá trong máy tính phổ biến nhất thuộc một trong hai loạisau:
+ Mã hoá với khoá đối xứng (Symmetric-key Encryption) : Trong phương pháp
mã hoá với khoá đối xứng, mỗi máy tính có một khoá bí mật (dạng mã) dùng để mãhoá các gói thông tin trước khi chúng được gửi qua mạng tới các máy tính khác.Phương pháp mã hoá với khoá đối xứng đòi hỏi người sử dụng phải xác định đượcnhững máy tính nào đang liên lạc trao đổi thông tin với nhau để cài đặt khoá này trênmỗi máy
+ Mã hoá với khoá công khai (Public-key Encryption) [6]
Trang 122.3 Chữ ký số
2.3.1 Chữ ký số
- Chữ ký số (Digital Signature) chỉ là tập cơn của chữ ký điện tử Chữ ký số làchữ ký điện tử dựa trên kỹ thuật mã hóa với khóa công khai, trong đó, mỗi người cómột cặp khóa (một khóa bí mật và một khóa công khai) Khóa bí mật không bao giờđược công bố, trong khi đó, khóa công khai được tự do sử dụng Để trao đổi thôngđiệp bí mật, người gửi sử dụng khóa công khai của người nhận để mã hóa thông điệpgửi, sau đó, người nhận sẽ sử dụng khóa bí mật tương ứng của mình để giải mã thôngđiệp
- Chữ ký điện tử là thông tin được mã hoá bằng Khoá riêng của người gửi, đượcgửi kèm theo văn bản nhằm đảm bảo cho người nhận định danh, xác thực đúng nguồngốc và tính toàn vẹn của tài liệu nhận được Chữ ký điện tử thể hiện văn bản gửi đi là
đã được ký bởi chính người sở hữu một Khoá riêng tương ứng với một Chứng chỉ điện
tử nào đó.”
- Chữ ký số khóa công khai (hay hạ tầng khóa công khai) là mô hình sử dụngcác kỹ thuật mật mã để gắn với mỗi người sử dụng một cặp khóa công khai - bí mật vàqua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật Khóa côngkhai thường được phân phối thông qua chứng thực khóa công khai Quá trình sử dụngchữ ký số bao gồm 2 quá trình: tạo chữ ký và kiểm tra chữ ký [7]
2.3.2 Tạo và kiểm tra chữ ký số
2.3.2.1 Các thuật toán chữ ký số thông dụng
Chữ ký số giúp xác định được người tạo ra hay chịu trách nhiệm đối với mộtthông điệp được ký Một phương pháp chữ ký số phải bao gồm ít nhất 3 thuật toánchính, đó là thuật toán dùng để tạo khóa, thuật toán dùng để tạo ra chữ ký số và thuậttoán tương ứng để xác nhận chữ ký số
2.3.2.2 Thuật toán chữ ký số RSA
- Phương pháp chữ ký số RSA được xây dựng dựa trên thuật toán mã hóa khóacông khai RSA Để tạo một cặp khóa, RSA thực hiện các bước sau:
+ Chọn 2 số nguyên tố lớn ngẫu nhiên p, q Nhằm có sự an toàn tối đa nên chọn
Để ký một thông điệp m, người ký thực hiện các bước sau:
+ Tạo chữ ký số sử dụng khóa bí mật (n,d) để tính: s=hd mod n
Chữ ký của m là s và được gửi kèm với thông điệp m đến người nhận Để xácnhận chữ ký, người nhận thực hiện các bước sau:
Trang 13+ Sử dụng khóa công khai (n,e) của người ký để giải mã chữ ký: h=se mod n.
Chấp nhận chữ ký nếu h' = h Ngược lại từ chối chữ ký
2.3.2.3 Thuật toán chữ ký số DSA
Thuật toán chữ ký số DSA (Digital Signature Algorithm) được đề nghị bởiNIST vào tháng 8/1991 để sử dụng trong chuẩn chữ ký số DSS (Digital SignatureStandard), được chỉ ra trong FIPS 186, được chấp nhận năm 1993 Một sửa đổi nhỏđược đưa ra ngày năm 1996 trong FIPS 186-1, chuẩn được mở rộng hơn năm 2000,được xem như FIPS 186-2 Việc tạo khóa gồm hai bước Bước thứ nhất là lựa chọncác tham số cho thuật toán được chia sẻ giữa các người sử dụng khác nhau trong cùng
hệ thống:
+ Chọn một hàm băm mã hóa H Trong DSS chuẩn H luôn là SHA-1, nhưngcác hàm băm tốt hơn trong nhóm SHA cũng đang được sử dụng Đôi khi đầu ra củamột thuật toán băm mới hơn bị rút ngắn kích thước so với các thuật toán băm mới cũ
để tương tích với cặp khóa hiện có
+ Chọn kích thước khóa L Đây là thước đo chính quyết định sức mạnh mã hóacủa khóa DSS chuẩn ràng buộc L là bội số của 64 và 512 ≤ L ≤ 1024 Sau đó, FIPS186-2 xác định L luôn là 1024 Không lâu sau, NIST 800-57 đề nghị độ dài khóa là
2048 (hoặc 3072) để thời gian an toàn đến năm 2010 (hoặc 2030), sử dụng tương ứngvới các giá trị băm và q dài hơn Bản thảo FIPS 186-3 cũng tính đến các hàm băm saunày và các khóa dài hơn
+ Chọn một số nguyên tố q cùng so bit với đầu ra của H
+ Chọn một số nguyên tố p độ dài L bit sao cho p 1 là bội của q Tức là p=qz
-l với số nguyên z nào đó
+ Chọn g = h(p-1)/q mod p với h bất kỳ (l < h < p - l), và chọn lại nếu kết quả là 1.Hầu hết cách chọn h đều nhận được g có thể sử dụng, thông thường chọn h=2
- Các tham số thuật toán (p, q, g) có thể chia sẻ giữa những người khác nhautrong hệ thống Bước thứ hai tính các khóa bí mật và khóa công khai của từng người:
+ Chọn X ngẫu nhiên sao cho 0 < x < q
+ Tính y = gy mod p
+ Khóa công khai là (p, q, g, y), khóa bí mật là x
- Phiên bản FIPS 186-3 sắp tới sử dụng SHA-224/256/384/512 là các hàm băm,kích thước của q là 224 (hoặc 256 bit), và L bằng 2048 (hoặc 3072)
- Để ký một thông điệp m, người ký thực hiện các bước sau:
+ Phát sinh một số ngẫu nhiêu k (0 < k < q) cho mỗi thông điệp
+ Tính r=(gk mod p) mod q
+ Tính s = k-1 ( (m) + xr)) mod q
+ Tính toán lại chữ ký trong trường hợp không chắc chắn r = 0 hoặc s = 0.+ Chữ ký là (r, s)
Trang 14- Để xác nhận chữ ký, người nhận thực hiện các bước sau:
+ Loại bỏ chữ ký nếu 0 < r < q hoặc 0 < s < q không thỏa mãn
Tính đúng đắn của giải thuật được chứng minh như sau:
+ Đầu tiên, nếu g = h(p-1)/q mod p suy ra gp= hp-1 -1 = 1(mod p) theo định lýFermat nhỏ Bởi vì g > l và q là số nguyên tố nên g có bậc q
+ Thử nghiệm 2.2: DSS chuẩn ràng buộc độ dài khóa L là bội số của 64 và 512
< L < 1024 và để an toàn lâu dài độ dài khóa L được đề nghị là 2048 hoặc 3072 Do đó
độ dài khóa được thử nghiệm cho cả RSA và DSA là 576, 640, 704, 768, 832, 896,
960, 1024, 2048, 3072 (bit), ứng với mỗi độ dài khóa, lần lượt cho cả RSA và DSA phát sinh khóa,
ký văn bản ngẫu nhiên (kích thước 2 MB) và kiểm tra chữ ký tạo được Để thuận tiện so sánh, hàm băm mật mã SHA-1 được chọn để sử dụng cho cả RSA và DSA Thử nghiệm được lặp lại 50.000 lần Kết quả nhận được như sau:
Kích
thước
(bit)
RSA/
RSA/DSA