CHỨNG THỰC ĐIỆN TỬ Đề tài Nhóm 4 Sử dụng chứng thư số cho người dùng cuối đã phát hành để mã file, dữ liệu (sử dụng một trong các phần mềm GNU Privacy Guard, 7 Zip ) Giảng viên hướng dẫn Thầy Lê Qu.
CHƯƠNG 1: TỔNG QUAN VỀ CHỨNG THƯ SỐ VÀ MÃ HÓA TỆP TIN 1.1 Tổng quan chứng thư số 1.2 Mã hóa hệ thống tập tin 1.2.1 Mã hóa tập tin 1.2.2 Ứng dụng mã hóa 1.3.Bộ thư viện OpenSSL 1.3.1 Giới thiệu OpenSSL 1.3.2 .Các phiên OpenSSL 1.3.3 Các chức đơn giản chương trình OpenSSL CHƯƠNG 2: DEMO .8 3.1 Tổng quan 3.1.1 Ý tưởng 3.1.2 Công cụ 3.2 Thực hành CHƯƠNG 1: TỔNG QUAN VỀ CHỨNG THƯ SỐ VÀ MÃ HÓA TỆP TIN 1.1 Tổng quan chứng thư số Chứng thư số hay gọi chứng thư điện tử, có tác dụng giống chứng minh thư nhân dân hộ chiếu bạn vậy, dùng xác nhận danh tính đối tượng ví dụ phần mềm, ứng dụng, máy chủ đại diện cho cá nhân, tổ chức tham gia giao dịch điện tử, nhằm bảo đảm an tồn q trình giao dịch điện tử a Chứng thư số buộc buộc phải đảm bảo đủ thông tin sau: Tên chủ thể, chủ sở hữu chứng thư số Khóa cơng khai (Public key) Một số thông tin khác như: thông tin nhà hàng, hạn sử dụng, thông tin kiểu… Chữ ký số người cấp chứng thư b Ứng dụng chứng thư số để làm gì? Dựa vào máy chủ để xác định danh tính đối tượng tiến hành giao dịch điện tử Đảm bảo an toàn thương mại điện tử c Ai phân phối chứng thư số ? Những nhà cung cấp dịch vụ chữ ký số người phân phối chứng minh số –> Đăng kí chứng thư số d Quy trình cấp chứng thư số Bước 1: khách hàng chuẩn bị gần hồ sơ thông tin cá nhân công ty tên, giấy phép buôn bán gửi thông tin đăng ký tới nhà cung ứng dịch vụ chữ ký số NewCA mà vừa đưa danh sách Bước 2: Những nơi cung ứng dịch vụ chữ ký số chuẩn xác thông tin cá nhân, siêu thị mang mang thông tin trung tâm liệu quốc gia, thông tin hồ sơ đăng tải tải ký chứng thư số chấp nhận Thông tin khách hàng nạp vào usb token smart card Bước 3: Nhà cung ứng tạo NewCA gửi tồn thơng tin cơng ty A tới Trung tâm chứng thực chữ ký số quốc gia (Root CA) – Trực thuộc cục Ứng dụng kỹ thuật thông tin Bộ Thông tin Truyền thông Bước 4: Siêu thị đăng ký tài khoản mang máy chủ Tổng cục thuế (Tên đăng tải tải nhập Mã số thuế nha hang), đồng thời gửi khóa công khai Bước 5: Máy chủ thuế gửi yêu cầu xác nhận thông tin tới Trung tâm chứng thực chữ ký số quốc gia Bước 6: Trung tâm chứng nhận chữ ký số quốc gia (Root CA) trả lại kết xác nhận với quan thuế Sau nhận xác nhận thơng tin cơng ty hồn tồn xác, cơng ty mang thể khai thuế qua mạng mang quan thuế thực giao dịch điện tử khác yêu cầu với chữ ký số chứng minh số 1.2 Mã hóa hệ thống tập tin 1.2.1 Mã hóa tập tin Trong ngành mật mã học, mã hóa q trình dùng để biến thơng tin từ dạng sang dạng khác ngăn người khơng phận tiếp cận vào thơng tin Bản thân việc mã hóa khơng ngăn chặn việc thơng tin bị đánh cắp, có điều thơng tin lấy không xài được, không đọc hay hiểu làm biến dạng Mã hóa mang lại tính an tồn cao cho thông tin, đặc biệt thời đại Internet ngày nay, mà thông tin phải qua nhiều trạm trung chuyển trước đến đích Nếu khơng có mã hóa, khả thơng tin bạn bị xem trộm q trình truyền tải lợi dụng để làm việc xấu hoàn toàn hữu Về lý thuyết, thơng điệp mã hóa bị giải mã mà khơng cần biết thuật tốn khóa mã hóa (sẽ nói thêm bên dưới), vấn đề nguồn lực tính tốn cần thiết Các loại mã hóa liệu thơng dụng Hiện có biện pháp mã hố liệu thơng dụng: a Mã hóa cổ điển Mã hố cổ điển cách đơn giản nhất, tồn lại lâu giới khơng cần khóa bảo mật, cần người gửi người nhận biết thuật tốn Tuy nhiên, giải pháp mã hóa xem khơng an tồn, người thứ ba biết thuật tốn xem thơng tin khơng cịn bảo mật Việc giữ bí mật thuật tốn trở nên quan trọng, khơng phải giữ bí mật cách trọn vẹn Có khả người rị rỉ ra, có ngồi giải thuật tốn xem thua b Mã hóa chiều (hash) Phương pháp dùng để mã hóa thứ khơng cần dịch lại ngun gốc Ví dụ, bạn đăng nhập vào Tinh tế, mật mà bạn nhập chuyển thành chuỗi dài kí tự thứ gọi hash function (tạm dịch: hàm băm) Chuỗi lưu vào sở liệu, không lưu mật thơ bạn nhằm tăng tính bảo mật Lỡ hacker có trộm liệu thấy thứ FIiyXYB547bhvyuuUIbZ password thật bạn Mỗi lần bạn đăng nhập, hash function “băm” password thật bạn thành chuỗi kí tự so sánh với sở liệu, khớp đăng nhập tiếp, khơng báo lỗi Chúng ta khơng có nhu cầu dịch ngược chuỗi nói lại thành password thật để làm Nói thêm hash function , nhiệm vụ chuyển chuỗi có độ dài thành chuỗi kí tự có độ dài cố định Ví dụ, bạn quy định chuỗi kí tự sau “băm” dài 10 kí tự dù đầu vào bạn có chữ kết nhận ln 10 10 kí tự mà Đặc điểm hash function điều kiện, liệu đầu vào kết sau băm y hệt Nếu đổi chút xíu thơi, có kí tự nhỏ chuỗi kết khác hồn tồn Cũng mà người ta dùng hash function để kiểm tra tính tồn vẹn liệu Ví dụ, trước gửi tập tin Word cho người bạn dùng mã hóa chiều tạo chuỗi sau băm DFYUBUfyeufuefu Khi người bạn tải tập tin máy, băm nhận chuỗi DFYUBUfyeufuefu có nghĩa tập tin khơng bị can thiệp hacker, cịn kết khác có nghĩa q trình truyền tải bị lỗi làm phần liệu, tệ có xén bớt hay thêm vào thứ Hiện nay, hai thuật tốn hash function thường dùng MD5 SHA Nếu bạn tải tập tin mạng đơi thấy dòng chữ MD5 tác giả cung cấp, mục đích để bạn so sánh file tải với file gốc xem có bị lỗi khơng c Mã hóa đối xứng (symmetric key encryption) Chúng ta bắt đầu tìm hiểu việc bảo mật có dùng khóa Khóa gọi “key”, mấu chốt để thuật tốn nhìn vào mà biết đường mã hóa giải mã liệu Cũng giống cánh cửa nhà bạn, bạn có khóa bạn nhanh chóng vào trong, cịn khơng có khóa bạn đục cửa hay kêu thợ sửa khóa, tốn thời gian cơng sức Mỗi chìa khóa cho ổ khóa giới với đường rãnh khơng chìa giống chìa – key mã hóa tương tự Ở phương pháp mã hóa đối xứng, chìa khóa để mã hóa giải mã nên người ta gọi đối xứng, tiếng Anh symmetric Theo số tài liệu mã hóa đối xứng giải pháp sử dụng phổ biến Giả sử cần mã hóa tập tin để gửi cho bạn, quy trình sau: Mình sử dụng thuật tốn mã hóa, cộng với khóa để mã hóa file (cách tạo khóa tạm thời không bàn đến, chủ yếu dùng giải thuật ngẫu nhiên) Bằng cách đó, giao cho bạn khóa giống với mình, giao trước sau mã hóa tập tin Khi bạn nhận tập tin, bạn dùng khóa để giải mã tập tin gốc đọc d Mã hóa bất đối xứng (public key encryption) Nếu trên, khóa mã hóa khóa giải mã giống với phương phápbất đối xứng, hai khóa hồn tồn khác Để phân biệt hai khóa người ta gọi khóa mã hóa public key, cịn khóa giải mã private key Public, tên gợi ý, mang tính chất “cơng cộng” sử dụng để mã hóa liệu Tuy nhiên, người nằm tay private key có khả giải mã liệu để xem Quy trình mã hóa bất đối xứng sau: Bên nhận tạo cặp public + private key Người giữ lại private key cho riêng cất cẩn thận, cịn public key chuyển cho bên gửi (dưới hình thức email, copy qua USB, v.v) post lên mạng Bên gửi sử dụng public key để mã hóa liệu, sau gửi file mã hóa lại cho bên nhận Bên nhận lúc xài private key lưu để giải mã liệu sử dụng Một nhược điểm mã hóa bất đối xứng tốc độ giải mã chậm so với mã hóa đối xứng, tức phải tốn nhiều lực xử lý CPU hơn, phải chờ lâu hơn, dẫn đến “chi phí” cao Khoảng thời gian lâu cịn tùy vào thuật tốn mã hóa, cách thức mã hóa key 1.2.2 Ứng dụng mã hóa Mã hóa chủ yếu để tránh nhìn soi mói người tị mị tọc mạch, nói chung người mà bạn khơng muốn thơng tin lộ ngồi HTTPS ví dụ, dùng thuật tốn mã hóa TLS (lai đối xứng bất đối xứng) để mã hóa liệu bạn gửi thơng tin trình duyệt máy chủ Bằng cách này, kẻ tọc mạch với hi vọng đánh cắp liệu lúc liệu gửi xác liệu (do chúng khơng nắm key tay) 1.3 Bộ thư viện OpenSSL 1.3.1 Giới thiệu OpenSSL Opensssl thư viện mã nguồn mở tiếng nhât cho truyền thông bảo mật có nguồn gốc từ SSLeay Thư viện SSL kế thừa tất tính tất phiên cỉa giao thức SSL TLSv1 Thư viện mật mã cung cấp thuật tốn cho mật mã khóa đối xứng, mật mã khóa cơng khai, hàm bawem mật mã, tạo số ngẫu nhiên giả lập xử lý chứng thư số Các dịch vụ cung cấp thư viện sử dụng công cụ SSL, TLS S/MINE chúng sử dụng để bổ sung cho SSH, OpenPGP chuẩn mật mã khác 1.3.2 Các phiên OpenSSL Các thư viện OpensSL viết ngôn ngữ lập trình C, hoạt động tất tảng lớn, bao gồm tất hệ điều hành Unix tất phiên Microsoft Windows Các phiên phát hành Phiên 0.9.1c 0.9.2b 0.9.3 0.9.4 0.9.5 0.9.6 0.9.7 0.9.8 1.0.0 1.0.1 1.3.3 Ngày phát hành 23/12/1998 22/03/1999 25/05/1999 09/08/1999 28/02/2000 24/09/2000 31/12/2002 05/07/2005 29/03/2010 14/03/2012 Các chức đơn giản chương trình OpenSSL Chương trình OpenSSL cơng cụ dòng lệnh để sử dụng chức mật mã thư viện Crypto OpenSSL: + Sử dụng để băm liệu +Mã hóa liệu +Tạo mật mã hóa +Ký xác thực chữ ký +Tạo khóa RSA, DSA hay EC +Kiểm tra số nguyên tố + Kiểm tra hiệu suất phần cứng hệ thống CHƯƠNG 2: DEMO 3.1 Tổng quan 3.1.1 Ý tưởng + Sử dụng OpenSSL để thiết lập CA gốc Sử dụng CA gốc để tạo m ột CA trung gian Sau sử dụng CA trung gian để ký chứng người dùng cuối + 3.1.2 Công cụ + + 3.2 Thực hành a Tạo Root CA Tạo di chuyển vào thư mục cho ca gốc: mkdir -p ~/SSLCA/root-ca/ cd ~/SSLCA/root-ca/ Tạo khóa RSA SHA-256 dài 8192 bit cho CA gốc: openssl genrsa -aes256 -out rootca.key 4096 Ví dụ đầu ra: Generating RSA private key, 8192 bit long modulus ++ ++ e is 65537 (0x10001) Nếu bạn muốn bảo vệ khóa mật khẩu, thêm tùy chọn aes256 Tạo chứng CA gốc tự ký ca.crt; bạn cần cung cấp danh tính cho CA gốc mình: openssl req -sha256 -new -x509 -days 1826 -key rootca.key -out rootca.crt Ví dụ đầu ra: Tạo vài tệp CA lưu trữ sê-ri nó, biết chứng có số sê-ri 1000: touch certindex echo 1000 > certserial echo 1000 > crlnumber Đặt tệp cấu hình CA Tệp có sơ khai cho điểm cuối CRL OCSP # vim ca.conf [ ca ] default_ca = myca [ crl_ext ] issuerAltName=issuer:copy authorityKeyIdentifier=keyid:always [ myca ] dir = / new_certs_dir = $dir unique_subject = no certificate = $dir/rootca.crt database = $dir/certindex private_key = $dir/rootca.key serial = $dir/certserial default_days = 730 default_md = sha256 policy = myca_policy x509_extensions = myca_extensions crlnumber = $dir/crlnumber default_crl_days = 730 [ myca_policy ] commonName = supplied stateOrProvinceName = supplied countryName = optional emailAddress = optional organizationName = supplied organizationalUnitName = optional [ myca_extensions ] basicConstraints = critical,CA:TRUE keyUsage = critical,any subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer keyUsage = digitalSignature,keyEncipherment,cRLSign,keyCertSign extendedKeyUsage = serverAuth crlDistributionPoints = @crl_section 10 subjectAltName = @alt_names authorityInfoAccess = @ocsp_section [ v3_ca ] basicConstraints = critical,CA:TRUE,pathlen:0 keyUsage = critical,any subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer keyUsage = digitalSignature,keyEncipherment,cRLSign,keyCertSign extendedKeyUsage = serverAuth crlDistributionPoints = @crl_section subjectAltName = @alt_names authorityInfoAccess = @ocsp_section [alt_names] DNS.0 = Sparkling Intermidiate CA DNS.1 = Sparkling CA Intermidiate [crl_section] URI.0 = http://pki.sparklingca.com/SparklingRoot.crl URI.1 = http://pki.backup.com/SparklingRoot.crl [ocsp_section] caIssuers;URI.0 = http://pki.sparklingca.com/SparklingRoot.crt caIssuers;URI.1 = http://pki.backup.com/SparklingRoot.crt OCSP;URI.0 = http://pki.sparklingca.com/ocsp/ OCSP;URI.1 = http://pki.backup.com/ocsp/ b Tạo CA Trung gian1 Tạo khóa riêng CA trung gian: openssl genrsa -out subca.key 4096 Tạo CSR CA trung gian1: openssl req -sha256 -new -key subca.key -out subca.csr 11 Hãy chắn chủ đề (CN) trung gian khác với gốc Ký CSR trung gian1 với Root CA: openssl ca -batch -config ca.conf -notext -in subca.csr -out subca.crt Kết ví dụ: Using configuration from ca.conf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'VN' stateOrProvinceName :ASN.1 12:'HN' localityName organizationName :ASN.1 12:'HN' :ASN.1 12:'VN' organizationalUnitName:ASN.1 12:'KT' commonName :ASN.1 12:'subca.com' Certificate is to be certified until Mar 30 15:07:43 2017 GMT (730 days) Write out database with new entries Data Base Updated Tạo CRL : 12 openssl ca -config ca.conf -gencrl -keyfile rootca.key -cert rootca.crt -out rootca.crl.pem openssl crl -inform PEM -in rootca.crl.pem -outform DER -out rootca.crl Tạo CRL sau chứng bạn ký với CA Nếu bạn cần thu hồi chứng trung gian này: openssl ca -config ca.conf -revoke subca.crt -keyfile rootca.key -cert rootca.crt c Cấu hình CA trung gian Tạo thư mục cho trung gian di chuyển khóa file chứng thực subCA vào thư mục đó: mkdir ~/SSLCA/sub-ca/ cd ~/SSLCA/sub-ca/ Sao chép chứng trung gian khóa từ Root CA: cp ~/SSLCA/root-ca/subca.key / cp ~/SSLCA/root-ca/subca.crt / Tạo tệp mục: touch certindex echo 1000 > certserial echo 1000 > crlnumber Tạo tệp có tên ca.conf # vim ca.conf [ ca ] default_ca = myca [ crl_ext ] 13 issuerAltName=issuer:copy authorityKeyIdentifier=keyid:always [ myca ] dir = / new_certs_dir = $dir unique_subject = no certificate = $dir/subca.crt database = $dir/certindex private_key = $dir/subca.key serial = $dir/certserial default_days = 365 default_md = sha256 policy = myca_policy x509_extensions = myca_extensions crlnumber = $dir/crlnumber default_crl_days = 365 [ myca_policy ] commonName = supplied stateOrProvinceName = supplied countryName = optional emailAddress = optional organizationName = supplied organizationalUnitName = optional [ myca_extensions ] basicConstraints = critical,CA:FALSE keyUsage = critical,any subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer keyUsage = digitalSignature,keyEncipherment extendedKeyUsage = serverAuth crlDistributionPoints = @crl_section subjectAltName = @alt_names authorityInfoAccess = @ocsp_section 14 [alt_names] DNS.0 = example.com DNS.1 = example.org [crl_section] URI.0 = http://pki.sparklingca.com/SparklingIntermidiate1.crl URI.1 = http://pki.backup.com/SparklingIntermidiate1.crl [ocsp_section] caIssuers;URI.0 = http://pki.sparklingca.com/SparklingIntermediate1.crt caIssuers;URI.1 = http://pki.backup.com/SparklingIntermediate1.crt OCSP;URI.0 = http://pki.sparklingca.com/ocsp/ OCSP;URI.1 = http://pki.backup.com/ocsp/ Tạo CRL trống (cả PEM DER): openssl ca -config ca.conf -gencrl -keyfile subca.key -cert subca.crt -out intermediate1.crl.pem openssl crl -inform PEM -in subca.crl.pem -outform DER -out subca.crl d Tạo chứng người dùng cuối Chúng sử dụng CA trung gian để tạo chứng người dùng cuối Lặp lại bước cho chứng người dùng cuối mà bạn muốn đăng nhập với CA mkdir enduser Tạo khóa riêng người dùng cuối: openssl genrsa -out enduser /enduser-example.com.key 2048 Tạo CSR người dùng cuối: 15 openssl req -new -sha256 -key enduser/enduser-example.com.key -out enduser/enduser-example.com.csr Ký CSR người dùng cuối với CA trung gian : openssl ca -batch -config ca.conf -notext -in enduser/enduserexample.com.csr -out enduser/enduser-example.com.crt Ví dụ đầu ra: Using configuration from ca.conf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'VN' stateOrProvinceName :ASN.1 12:'HN' localityName organizationName :ASN.1 12:'HN' :ASN.1 12:'MM' organizationalUnitName:ASN.1 12:'MH' commonName :ASN.1 12:'enduser.com' Certificate is to be certified until Mar 30 15:18:26 2016 GMT (365 days) Write out database with new entries 16 Data Base Updated Tạo CRL (cả PEM DER): openssl ca -config ca.conf -gencrl -keyfile subca.key -cert subca.crt -out intermediate1.crl.pem openssl crl -inform PEM -in subca.crl.pem -outform DER -out subca.crl Tạo CRL sau chứng bạn ký với CA Nếu bạn cần thu hồi chứng người dùng cuối này: openssl ca -config ca.conf -revoke enduser/enduser-example.com.crt -keyfile subca.key -cert subca.crt Ví dụ đầu ra: Using configuration from ca.conf Revoking Certificate 1000 Data Base Updated Tạo tệp chuỗi chứng cách ghép chứng Root trung gian với cat /root/rootca.crt subca.crt > enduser/enduserexample.com.chain e Xác nhận chứng Xác nhận chứng Bạn xác nhận dựa CRL Ghép nối PEM CRL chuỗi với trước: cat /root/rootca.crt subca.crt subca.crl.pem > enduser/enduserexample.com.crl.chain Xác nhận chứng chỉ: 17 openssl verify -crl_check -CAfile enduser/enduserexample.com.crl.chain enduser/enduser-example.com.crt Đầu không bị thu hồi: enduser/enduser-example.com.crt: OK Chuyển đổi file chứa khóa để sang dạng *.p12 18 19 f Mã hóa liệu 20 21 ... mang quan thuế thực giao dịch điện tử khác yêu cầu với chữ ký số chứng minh số 1.2 Mã hóa hệ thống tập tin 1.2.1 Mã hóa tập tin Trong ngành mật mã học, mã hóa q trình dùng để biến thông tin từ... mình, giao trước sau mã hóa tập tin Khi bạn nhận tập tin, bạn dùng khóa để giải mã tập tin gốc đọc d Mã hóa bất đối xứng (public key encryption) Nếu trên, khóa mã hóa khóa giải mã giống với phương... thông tin Bản thân việc mã hóa khơng ngăn chặn việc thơng tin bị đánh cắp, có điều thơng tin lấy không xài được, không đọc hay hiểu làm biến dạng Mã hóa mang lại tính an tồn cao cho thông tin,