Dƣới đây là một ứng dụng của việc sử dụng vân tay trong việc xác thực ngƣời sở hữu khóa trong sơ đồ chữ ký số.
A. Ký tài liệu
Sơ đồ ký hoạt động nhƣ sau:
Thuật toán Hash Dữ liệu D d Chữ ký d1 Mã hóa Sender’s Private Key Etoken Module Giải mã sinh trắc học Dấu vân tay phù hợp
Input
Đầu vào là một văn bản cần ký (bản rõ). Bản rõ đƣợc đƣa qua một hàm băm (MD5, SHA1) đầu ra là một chuỗi bit có độ dài cố định, sau đó bản băm sẽ đƣợc mã hóa bằng khóa bí mật của ngƣời dùng. Tuy nhiên trƣớc khi có thể lấy đƣợc khóa bí mật của ngƣời dùng chƣa trong eToken, ngƣời dùng phải sử dụng vân tay của mình để xác thực mình là ngƣời sở hữu khóa thông qua việc đối sanh dấu vân tay chƣa trong eToken và vân tay ngƣời dùng nhập vào qua máy quét vân tay. Sau khi đối sánh cho kết quả phù hợp, khóa bí mật đƣợc lấy ra từ eToken để thực hiện mã hóa bản băm. Kết quả của quá trình này là chữ ký + bản rõ.
B. Xác thực tài liệu
- Nếu d‟=d” :Dữ liệu D không bị thay đổi. - Nếu d‟≠ d” : Dữ liệu D bị thay đổi.
So sánh Dữ liệu nhận được d1' Giải mã Sender’s Public Key Kết quả d’ Thuật toán Hash Dữ liệu nhận được D’ Kết quả d” 1 2 3 CA Certificate Yêu cầu chứng chỉ của người gửi
Thực hiện thẩm định sinh trắc
Người nhận
Dấu vân tay phù hợp
Hình 3-11. Sơ đồ xác thực chữ ký của BIOPKI
Tài liệu đã ký đƣợc chuyển đến tay ngƣời nhận, ngƣời nhận xác thực chữ ký theo sơ đồ trên. Văn bản và chữ ký đƣợc tách ra, văn bản đƣợc đƣa qua một hàm băm giống hàm băm lúc ký, chữ ký đƣợc giải mã bằng chứng thƣ số tƣơng ứng với ngƣời gửi, sau
khi giả mã chữ ký, so sánh bản băm và chữ ký nếu giống nhau thì chữ ký đƣợc xác thực. Điểm khác biệt ở đây là trong quá trình yêu cầu CA cung cấp chứng thƣ của ngƣời gửi thì ngƣời nhận phải cung cấp dấu vân tay để CA thực hiện quá trình thẩm định sinh trắc học (tƣơng tự quá trình đƣợc mô tả ở hình Hình 4-3. Giải pháp tích hợp đặc trƣng sinh trắc vào X509).
3.6 Nền tảng triển khai
Hệ thống BioPKI dự kiến sẽ đƣợc xây dựng nền tảng hệ điều hành Fedora và hệ thống khóa công khai OpenCA. Đồng thời tôi cũng giới thiệu cấu trúc của OpenSSL và X509 trong OpenCA để có thể tích hợp sinh trắc dễ dàng hơn trong khi triển khai thực tế.
Hệ điều hành Fedora
Fedora là một dự án mã nguồn mở đƣợc phát triển trong 5 năm qua. Fedora Core
là một bản phân phối Linux dựa trên RPM Package Manager, đƣợc phát triển dựa trên cộng đồng theo "Dự án Fedora và đƣợc bảo trợ bởi Red Hat.
Dự án Fedora nhắm tới mục đích tạo ra một hệ điều hành mã nguồn mở hoàn chỉnh để sử dụng cho các mục đích tổng quát. Fedora đƣợc thiết kế để có thể dễ dàng cài đặt với chƣơng trình cài đặt mang giao diện đồ họa. Các gói phần mềm bổ sung có thể tải xuống và cài đặt một cách dễ dàng với công cụ yum. Các phiên bản mới hơn của Fedora có thể đƣợc phát hành mỗi 6 hoặc 8 tháng. Tên gọi Fedora Core là nhằm mục đích phân biệt giữa gói phần mềm chính của Fedora với các gói phần mềm phụ trội, bổ sung cho Fedora. Hỗ trợ kỹ thuật của Fedora đa số là đến từ cộng đồng (mặc dù Red Hat có hổ trợ kỹ thuật cho Fedora nhƣng không chính thức). Fedora còn đƣợc gọi là Fedora Linux, nhƣng đây không phải là tên gọi chính thức của nó.
OpenCA
OpenCA đƣợc bắt đầu từ những năm 1999. Ý tƣởng đầu tiên gồm có ba phần chính - một Perl giao diện web, một backend openssl cho các hoạt động mã hóa và một cơ sở dữ liệu, gần nhƣ tất cả các hoạt động của OpenCA có thể thực hiện thông qua giao diện web. Nó có sáu giao diện chính và các giao diện nhỏ đƣợc tạo ra từ sáu giao diện chính, tùy thuộc vào yêu cầu phát triển. Mã hóa cho backend vẫn là OpenSSL. Cơ sở dữ liệu lƣu trữ tất cả các thông tin cần thiết về các đối tƣợng mã hóa của ngƣời dùng nhƣ Certificate Signing Requests, Certificates, Certificate Revocation Requests và Certificate Revocation Lists.
OpenCA là sản phẩm nghiên cứu của OpenCA PKI Labs, sinh ra từ các cựu OpenCA dự án, là một tổ chức mở nhằm cung cấp framework cho học tập và phát triển các dự án liên quan đến PKI. Hiện tại phiên bản mới nhất là OpenCA PKI v1.0.2 đƣợc phát hành vào ngày 14-10-2008. OpenCA đƣợc phát triển mạnh mẽ, có đầy đủ các đặc
trƣng và CA mã nguồn mở cho phép thực hiện hầu hết các giao thức thƣờng dùng với mức mã hóa tốt. OpenCA dựa trên nhiều dự án mã nguồn mở nhƣ OpenLDAP, OpenSSL và Apache.
Hình 3-12. Quá trình khởi tạo CA
Dự án đƣợc phát triển theo hai hƣớng chính:
Nghiên cứu và cải tiến các chƣơng trình an ninh để đảm bảo các mô hình tốt nhất đƣợc sử dụng trong CA.
Phát triển chƣơng trình phần mềm giúp dễ dàng cài đặt, thiết lập và quản lý CA. Phát triển phần mềm dự án đƣợc chia ra làm các dự án nhỏ nhƣ sau:
OpenCA PKI: có đầy đủ đặc trƣng của gói PKI.
LibPKI: Cung cấp thƣ viện cho phát triển ứng dụng PKI. OpenCA OCSPD: Online Certificate Status Protocol daemon.
PRQPD Server, PKI Resource Query Protocol daemon sử dụng cùng với các gói PKI.
Từ những đặc điểm nhƣ trên có thể thấy OpenCA chính là một công cụ rất hiệu quả để xây dựng những ứng dụng theo mô hình hạ tầng khoá công khai PKI. OpenCA hỗ trợ xây dựng tất cả các thủ tục lõi cho một ứng dụng PKI từ việc sinh khoá mã hoá giải mã dữ liệu cho tới các thủ tục cấp phát,thu hồi chứng thƣ,tạo chữ ký số…Với tất cả những thành phần nhƣ vậy,ta có thể xây dựng một ứng dụng theo mô hình PKI cơ sở, phần mở rộng còn lại sẽ đƣợc xây dựng tiếp theo định hƣớng của nhà phát triển.
Các thành phần chính của OpenCA bao gồm 3 thành phần là hệ thống thƣ viện OpenSSL, cơ sở dữ liệu và giao diện web. Trong đó giao diện web đƣợc xây dựng bằng ngôn ngữ Perl. Thƣ viện OpenSSL thực hiện các tiến trình về mã hoá.
Dự án OpenSSL là một kết quả của sự cộng tác nhằm phát triển một kỹ thuật bảo mật dạng thƣơng mại, đầy đủ các đặc trƣng và là bộ công cụ mã nguồn mở thực thi các giao thức nhƣ Secure Sockets Layer (SSL v2/v3) và Transport Layer Security (TSL v1) với những thuật toán mã hóa phức tạp. Dự án đƣợc quản lý bởi hiệp hội những ngƣời tình nguyện trên thế giới, sử dụng Internet để trao đổi thông tin, lập kế hoạch và phát triển công cụ OpenSSL và các tài liệu liên quan khác.
SSL là giao thức đa mục đích đƣợc thiết kế để tạo ra các giao tiếp giữa hai chƣơng trình ứng dụng trên một cổng định trƣớc (socket 443) nhằm mã hoá toàn bộ thông tin đi/đến, mà ngày nay đƣợc sử dụng rộng rãi cho giao dịch điện tử nhƣ truyền số hiệu thẻ tín dụng, mật khẩu, số bí mật cá nhân (PIN) trên Internet.
Ngày nay giao thức Secure Socket Layer (SSL) đã đƣợc sử dụng rộng rãi trên World Wide Web trong việc xác thực và mã hoá thông tin giữa client và server. Tổ chức IETF (Internet Engineering Task Force ) đã chuẩn hoá SSL và đặt lại tên là TLS (Transport Layer Security). Mặc dù là có sự thay đổi về tên nhƣng TSL chỉ là một phiên bản mới của SSL. Phiên bản TSL 1.0 tƣơng đƣơng với phiên bản SSL 3.1. Tuy nhiên SSL là thuật ngữ đƣợc sử dụng rộng rãi hơn.
Tính mở của thƣ viện OpenSSL cho phép can thiệp tới quá trình tạo và quản lý chứng thƣ số, phù hợp với yêu cầu của luận văn. Do vậy luận văn lựa chọn xây dựng một hệ thống PKI trên nền tảng thƣ viện OpenSSL.
KẾT LUẬN
Dựa trên việc sử dụng mật mã khóa công khai, chữ ký số và các thông tin sinh trắc, BioPKI bảo đảm cho ngƣời sử dụng có thể tin cậy truyền tải các thông tin bí mật trên mạng Internet và các mạng khác. Công nghệ này cung cấp cho ngƣời dùng sự bảo vệ bí mật riêng tƣ bằng cách bảo đảm các giao dịch không bị chặn và không bị truy cập trái phép; bảo đảm sự toàn vẹn của liên lạc và xác minh khóa bí mật bằng chữ ký sinh trắc trƣớc khi sử dụng; xác minh ID của các bên lien quan trong một giao dịch điện tử để đảm bảo tính chống chối bỏ…Hơn thế nữa, BioPKI thực hiện tất cả những công việc này bằng một quá trình đơn giản, minh bạch đối với ngƣời sử dụng.
Kết quả nghiên cứu
Luận văn đã có những tìm hiểu về mật mã sinh trắc, hệ thống PKI và đƣa ra đề xuất giải pháp tích hợp sinh trắc để bảo vệ khóa bí mật và thẩm định sinh trắc trên hệ thống PKI cũng nhƣ đƣa ra mô hình hoạt động của hệ thống BioPKI. Tôi cũng đã xây dựng đƣợc hệ thống OpenCA trên hệ điều hành Fedora để làm nền tảng cho việc tích hợp mật mã sinh trắc. Kết quả bƣớc đầu đã tạo ra nền tảng cơ sở để tiếp tục nghiên cứu và phát triển kỹ thuật và mô hình để tạo ra giải pháp ứng dụng thực tế trong tƣơng lai nhằm tăng cƣờng an toàn giao dịch chữ ký số, mã hóa thông tin và TMĐT. Luận văn cũng đã đóng góp công sức vào đề tài đề tài nghiên cứu khoa học công nghệ cấp nhà nƣớc KC01.11/06-10 “Hệ thống an ninh thông tin dựa trên sinh trắc học sử dụng công nghệ nhúng BioPKI”.
Hƣớng phát triển của đề tài
Cài đặt và triển khai hệ thống BioPKI trong thực tế.
Nghiên cứu giải pháp dùng sinh trắc học để sinh khóa cá nhân.
Nghiên cứu giải pháp nhận dạng đặc trƣng đa sinh trắc nhằm nâng cao hơn nữa khả năng bảo mật.
TÀI LIỆU THAM KHẢO Tiếng Việt
[1]. Bộ Công Thƣơng Việt Nam (2008), Báo cáo thương mại điện tử 2008, Hà Nội. [2]. Phan Đình Diệu GS (2006), Lý Thuyết Mật Mã và An Toàn Thông Tin, Nhà
xuất bản Đại học quốc gia Hà Nội.
[3]. Hồ Văn Hƣơng TS, Đào Thị Ngọc Thùy Ths, (2009), Mật mã sinh trắc, Tạp chí An toàn thông tin, số 3-2009.
[4]. Hồ Văn Hƣơng TS, Đào Thị Ngọc Thùy Ths, (2009), Cơ sở hạ tầng khóa công
khai sinh trắc BioPKI, Tạp chí An toàn thông tin, số 1+2-2009.
[5]. Trịnh Nhật Tiến PGS. TS (2007), Bài giảng môn An toàn và bảo mật dữ liệu. [6]. Trịnh Nhật Tiến PGS. TS (2005), Báo cáo khoa học: “Nghiên cứu xây dựng cơ
sở hạ tầng về mật mã khóa công khai bảo đảm an toàn truyền tin trên mạng
máy tính TP Hà Nội”.
Tiếng Anh
[7]. Abhijit Mahalanobis, B.V.K. Vijaya Kumar and David Casasent (1987),
“Minimum average orrelation energy filters” Appl. Opt. 26, 3633-3640
[8]. Carlisle Adams and Steve Lloyd (2003), “Understanding PKI: Concepts,
Standards and Deployment Considerations”, Addison-Wesley.
[9]. Carlisle Adams, Steve Lloyd (2002), Understanding PKI: Concepts, Standards,
and Deployment Considerations, Second Edition
[10]. Colin Soutar, Danny Roberge, Alex Stoianov, Rene Gilroy and B.V.K. Vijaya Kumar, “Biometric Encryption”, Department of Electrical and Computer Engineering, Carnegie Mellon University.
[11]. CJIN Security Team, (2001), Introduction to Public Key Infrastructure
[12]. Henry C Lee and R E Gaensslen (2001), Advances in Fingerprint Technology,
Second Edition, CRC Press .
[13]. J.W. Goodman (1968), Introduction to Fourier Optics, McGraw-Hill
[14]. Kwok -Yan Lam Yan Lam, “Research on Fingerprint on Fingerprint-Based
Based Biometric Cryptography Biometric Cryptography”, Scool of Software,
Tsinghua University, China.
[16]. T. Charles Clancy, Negar Kiyavash and Dennis J. Lin (2003), “Secure
Smartcard-Based Fingerprint Authentication”, WBMA‟03, Berkeley,
California, USA.
[17]. Umut Uludag, “Secure Biometric Systems”, Computer Science & Engineering, Michigan State University, 2006.
Địa chỉ Website
[18]. http://www.biostik.com [19]. http://www.openca.org [20]. http://www.pki-page.org
PHỤ LỤC
Một số kết quả cài đặt thử nghiệm hệ thống OpenCA trên hệ điều hành Fedora
Hình 4-1. Thông tin của OpenCA Server
Hình 4-3. Thông tin của một chứng thƣ số
Hình 4-5. Giao diện khi cấu hình OpenCA Server
Hình 4-7. Danh sách yêu cầu cấp chứng thƣ số
Cấu trúc của X509 và OpenSSL trong OpenCA OpenCA::X509 0.9
Perl module - Part of CPAN distribution OpenCA-X509 0.9.8.
• NAME • SYNOPSIS • DESCRIPTION • FUNCTIONS
o sub new () - Create a new instance of the Class. o sub initCert () - Use a new certificate.
o sub getParsed () - Get an hash structure from certificate o sub status () - Get certificate status
o sub getPEM () - Get certificate in PEM format. o sub getDER () - Get certificate in DER format. o sub getTXT () - Get certificate in TXT format.
NAME
OpenCA::X509 - Perl extension for basic handling x509 Certificates.
SYNOPSIS
use OpenCA::X509;
DESCRIPTION
This module contains all functions needed for handling of X509 certificates. It requires some parameters to be passed such as a reference to a OpenCA::OpenSSL instance. This module provides an interface to X509 structures, no specific crypto functions are performed (see the OpenCA::OpenSSL module for this). When not said different, default operational format is PEM.
FUNCTIONS
sub new () - Create a new instance of the Class.
This function creates an instance of the module. If you provide a certificate it will be parsed and stored in local variable(s) for later usage. The function will return a blessed reference.
Accepted parameters are:
SHELL - Reference to an initialized OpenCA::OpenSSL instance;
CERTIFICATE - Certificate to stored in structure(*); INFILE - Certificate file(*);
FORMAT - Format of the provided certificate, one of PEM|DER|NET(*);
(*) - Optional parameter. EXAMPLE:
$x509 = new OpenCA::X509( SHELL=>$crypto,
CERTIFICATE=>$self->{cert});
sub initCert () - Use a new certificate.
You can use a new certificate without having to get a new module reference. Accepted parameters are: CERTIFICATE - Certificate data to be stored;
FORMAT - Provided certificate's format,
one of PEM|DER|NET(*);
EXAMPLE:
if( not $x509->initCert( CERTIFICATE=>$self->{cert} ) ) {
print "Error in storing certificate!"; }
sub getParsed () - Get an hash structure from certificate
By calling this function you can retrieve a reference to the parsed certificate (PERL hash). This structure will include, for example:
$ret->{SERIAL} ## Serial Number $ret->{DN} ## Subject DN
$ret->{EMAIL} ## Subject e-mail $ret->{CN} ## Subject CN
$ret->{OU} ## Subject OU (list) $ret->{O} ## Subject Organization $ret->{C} ## Subject Country $ret->{ISSUER} ## Issuer DN $ret->{NOT_BEFORE} ## Not Before Date
$ret->{NOT_AFTER} ## Not After Date (Expiration)
$ret->{PK_ALGORITHM} ## Algorithm used (RSA,DSA,..) $ret->{MODULUS} ## Modulus (Size in bits)
$ret->{EXPONENT} ## Exponent EXAMPLE:
my $self->{parsedItem} = $x509->parseCertificate(); print $self->{parsedItem}->{SERIAL};
foreach $ou ( @{ $self->{parsedItem}->{OU} } ) { print "OU=$ou, ";
sub status () - Get certificate status
Get certificate status using provided OpenCA::CRL initialized reference as argument. Returned status can be Valid, Revoked, Expired and Unknown. Accepted arguments:
CRL - Crl to check certificate status; The returned structure is:
$status->{STATUS}; $status->{REVOKATION_DATE}; $status->{EXPIRATION_DATE}; EXAMPLE: my $status = $x509->status( CRL=>$crl ); print $status->{STATUS};
sub getPEM () - Get certificate in PEM format.
Get certificate in PEM format. EXAMPLE:
$pem = $x509->getPEM();
sub getDER () - Get certificate in DER format.
Get certificate in DER format. EXAMPLE:
$der = $x509->getDER();
sub getTXT () - Get certificate in TXT format.
Get certificate in TXT format. EXAMPLE: $der = $x509->getTXT(); OpenCA::OpenSSL • NAME • SYNOPSIS • DESCRIPTION • FUNCTIONS
o sub new () - Creates a new Class instance. o sub setParams () - Set internal module variables.
o sub errno () - Get last command errno value. o sub errval () - Get last command errval value. o sub genKey () - Generate a private Key. o sub genReq () - Generate a new Request.
o sub genCert () - Generate a certificate from a request.
o sub crl2pkcs7 () - Convert a crl and/or certs into pkcs7 structure. o sub dataConvert () - Convert data to different format.
o sub issueCert () - Issue a certificate. o sub revoke () - Revoke a certificate. o sub issueCrl () - Issue a CRL. o sub SPKAC () - Get SPKAC infos.
o sub pkcs7Certs () - Get PKCS7 structure certificate(s). o sub getDigest () - Get a message digest.
o sub updateDB () - Updates the OpenSSL index.txt • Exportable constants
NAME
OpenCA::OpenSSL - Perl Crypto Extention to OpenSSL
SYNOPSIS
use OpenCA::OpenSSL;
DESCRIPTION
This Perl Module implements an interface to the openssl backend program. It actually uses the openssl command and it is not fully integrated as PERL/C mixture.