Cài đặt ứng dụng kiểm soỏt truy cập mạng trờn nền hệ thống BioPKI

Một phần của tài liệu Nghiên cứu xây dựng hệ thống kiểm soát trung cập mạng và an ninh thông tin dựa trên sinh trắc học sử dụng công nghệ nhúng nhánh 3 (Trang 62)

BioPKI

Ứng dụng kiểm soỏt truy cập CSDL trờn mụi trường mạng khụng an toàn, do đú chương trỡnh xõy dựng cần cú cỏc chức năng cơ bản sau:

- Xỏc thực người dựng bằng phương phỏp sử dụng mật khẩu và đối sỏnh đặc trưng sinh trắc.

- Thiết lập kờnh mật SSL.

- Mó húa, giải mó khúa đối xứng. - Ký và xỏc thực chữ kớ số.

a) Giải phỏp cụng nghệ

- Sử dụng thư viện mó nguồn mở OpenSSL để xõy dựng cỏc module mó húa, giải mó, kớ số, xỏc thực chữ kớ và truyền thụng điệp qua kờnh SSL.[4] Hơn nữa, thư viện OpenSSL cũn là một thành phần của OpenCA.

- Sử dụng ngụn ngữ phỏt triển hệ thống là C++ (VC++,.Framework 3.0) vỡ nú vừa hỗ trợ hướng đối tượng vừa tớch hợp được cỏc hàm viết bằng ngụn ngữ C trong thư viện OpenSSL.

- Sử dụng hệ quản trị cơ sở dữ liệu là MySQL vỡ đõy là hệ quản trị cơ sở dữ liệu mó nguồn mở và cú hỗ trợ cỏc hàm C API để thực hiện truy vấn cơ sở dữ liệu.

- Ngoài ra, hệ thống cũng sử dụng cỏc API cú sẵn do hệ BioPKI cung cấp, cụ thể:

• Cỏc APIs làm việc với thẻ sinh trắc Bio-EToken • Cỏc APIs kớ và xỏc thực chữ kớ số

- Giải phỏp hệ thống

Cần phải xõy dựng cỏc module cho Client, RAAS và DB Server. Một số lớp quan trọng được sử dụng để viết cỏc module này:

- CSSLChannel: lớp thực hiện thiết lập kờnh SSL và gửi dữ liệu qua kờnh mật.

- CXMLProfile: lớp thực hiện việc đọc ghi file định dạng XML khi thực hiện cấu hỡnh cho cỏc ứng dụng.

- Rijndael: Lớp thực hiện mó AES (mó húa đối xứng), được Client và DB Server sử dụng.

- Cài đặt cỏc thành phần của ứng dụng - Client:

• Module đọc thẻ và xỏc thực sinh trắc (Sử dụng cỏc API cú sẵn do hệ BioPKI -OpenCA cung cấp)

• Cỏc hàm băm, mó húa và giải mó đối xứng bằng thuật toỏn AES mật khẩu truy cập từ xa bằng khúa phiờn, mó húa và giải mó bất đối xứng. Ở đõy thuật toỏn mó húa AES cho phộp làm việc với khúa cú độ dài bất kỳ. Sử dụng cỏc hàm cú sẵn của thư viện OpenSSL để thực hiện mó húa và giải mó khúa bất đối xứng.

• Module kớ và xỏc thực chữ kớ: chữ kớ của RAAS, chữ kớ của DB Server (Sử dụng cỏc API cú sẵn do hệ BioPKI-OpenCA cung cấp).

• Module thiết lập kờnh mật SSL. Sử dụng cỏc hàm trong thư viờn OpenSSL để thiết lập.

- RA Application Server:

• Module dịch vụ liờn quan đến chứng thư số (check valid, download…) tận dụng luụn của RA Server trong hệ thống BioPKI

• Module sinh khúa phiờn, quản lý, phõn phối và hủy khúa phiờn

• Module thiết lập kờnh mật SSL - DBServer:

• Cỏc hàm băm, mó húa và giải mó đối xứng bằng thuật toỏn AES mật khẩu truy cập từ xa bằng khúa phiờn, mó húa và giải mó bất đối xứng

• Module kớ và xỏc thực chữ kớ • Module làm việc với CSDL • Module thiết lập kờnh mật SSL

- Miờu tả một số hàm được xõy dựng trong ứng dụng - Cỏc hàm sử dụng để thiết lập kờnh mật SSL:

• Hàm đọc chứng thư từ File

X509* LoadCertificate(const char* cerPath);

Miờu tả: Hàm này được cả Client và Server sử dụng. Đầu vào: đường dẫn tới file chứng thư (adsbygoogle = window.adsbygoogle || []).push({});

Đầu ra: chứng thư dưới dạng X509* • Hàm đọc khúa riờng từ file

EVP_PKEY* LoadPrivateKey(const char* keyPath,LPCTSTR strPasshare);

Miờu tả: Hàm này được cả Client và Server sử dụng.

Đầu vào: đường dẫn tới file khúa riờng, và Pass để đọc khúa riờn Đầu ra: Khúa riờng dưới dạng EVP_PKEY*

• Hàm thiết lập trạng thỏi cơ bản cho kờnh mật SSL

SSL_CTX* InitSSL(SSL_CTX* m_ctx, X509* CACert,X509 *ServerCert,EVP_PKEY *ServerKey,int nMode, int nDepth );

Miờu tả: Hàm này được cả Client và Server sử dụng.

Đầu vào: chứng thư của Client(Server), chứng thư của CA, khúa riờng của Client(Server)

Đầu ra: Trạng thỏi khởi tạo của kờnh mật • Thiết lập kờnh mật SSL

SSL* CreatSSL(SSL_CTX *m_ctx,SSL *m_ssl);

Miờu tả: Hàm này được cả Client và Server sử dụng. Đầu vào: trạng thỏi khởi tạo của kờnh mật, biến kờnh mật Đầu ra: biến kờnh mật SSL*

BIO* SettingServerSocket(BIO *IOData,UINT port);

Miờu tả: Hàm này chỉ được gọi bởi Server.

Đầu vào: địa chỉ port và biến kiểu BIO*, cú nhiệm vụ nhận và gửi dữ liệu qua port.

Đầu ra: biến BIO* sau khi khởi tạo.

• Hàm kết nối với Server sử dụng kờnh mật

SSL* ConnectToServer(SSL_CTX *m_ctx,SSL *m_ssl,const char* ServerIP, int nPort)

Miờu tả: Hàm này được gọi bởi Client, để kết nối với Server

Đầu vào: trạng thỏi khởi tạo kờnh mật bờn phớa Client, địa chỉ IP và port của Server.

Đầu ra: Biến kờnh mật của Client, chứa cỏc thụng tin trạng thỏi kờnh mật kết nối với Server.

• Hàm chấp nhận yờu cầu kết nối của Client

SSL* AcceptConnect(SSL_CTX *m_ctx,SSL *m_ssl, BIO *IOData);

Miờu tả: Hàm này được sử dụng bởi Server, khi một Client gửi yờu cầu kết nối tới Server.

Đầu vào: trạng thỏi khởi tạo của kờnh mật bờn phớa Server, Biến BIO* sử dụng để ghi/đọc dữ liệu qua port đó khởi tạo.

Đầu ra: Biến kờnh mật của Server, chứa cỏc thụng tin trạng thỏi kờnh mật kết nối với Client.

• Hàm gửi dữ liệu lờn đường truyền

int SendData(SSL *m_ssl,char *DataOut, int len);

Miờu tả: hàm này được cả Server và Client sử dụng

Đầu vào: biến trạng thỏi kờnh mật, dữ liệu và số lượng dữ liệu cần gửi đi.

Đầu ra: số lượng dữ liệu thực tế đó được gửi đi • Hàm đọc dữ liệu từ kờnh truyền. (adsbygoogle = window.adsbygoogle || []).push({});

int ReceiveData(SSL *m_ssl,char *DataIn, int len);

Miờu tả: hàm này được cả Server và Client sử dụng

Đầu vào: biến trạng thỏi kờnh mật, biến chứa dữ liệu đọc từ kờnh mật và số lượng dữ liệu định đọc.

Đầu ra: số lượng dữ liệu thực tế đọc được từ kờnh mật. • Hàm tắt hoàn toàn mọi kờnh mật

int Shutdown(SSL_CTX *m_ctx,SSL *m_ssl,BIO *IOdata);

Miờu tả: hàm này được gọi bởi Server

Đầu vào: biến trạng thỏi khởi tạo kờnh mật, trạng thỏi kờnh mật, và biến BIO*.

• Hàm ngắt 1 kờnh mật

int ClearSSL(SSL *m_ssl);

Miờu tả: Hàm này được sử dụng bởi cả Client và Server. Đầu vào: trạng thỏi kờnh mật hiện tại.

• Hàm giải phúng một kờnh mật

void FreeSSL(SSL *m_ssl);

Miờu tả: được gọi bởi cả Client và Server Đầu vào: trạng thỏi kờnh mật hiện tại.

• Hàm giải phúng cỏc trạng thỏi khởi tạo của kờnh mật

void CTXFree(SSL_CTX *m_ctx);

Miờu tả: được sử dụng bởi cả Client và Server Đầu vào: trạng thỏi khởi tạo ban đầu của kờnh mật. - Quỏ trỡnh thiết lập kờnh mật được thực hiện như sau:

• B1: Đọc chứng thư, khúa riờng • Ở phớa Client:

o Chứng thư của Client

o Khúa riờng của Client

o Chứng thư của CA • Ở phớa Server:

o Chứng thư của Server

o Khúa riờng của Server

o Chứng thư của CA

• B2: Sau khi đó cú được chứng thư và khúa phiờn sử dụng hàm InitSSL() để thiết lập trạng thỏi khởi tạo cho kờnh mật.

• B3: Cả Client và Server sử dụng hàm createSSL() để tạo kờnh mật • B4: Server sử dụng hàm SettingServerSocket() để tạo cổng lắng

nghe kết nối từ phớa Client.

• B5: Client gửi yờu cầu kết nối tới Server sử dụng hàm ConnectToServer().

• B6: Bờn phớa Server khi nhận được yờu cầu kết nối của Client sẽ sử dụng hàm AcceptConnect() để xử lý yờu cầu kết nối này.

• B7. Sau khi quỏ trỡnh bắt tay giữa 2 bờn kết thỳc, việc trao đổi dữ liệu giữa 2 bờn được thực hiện bởi hàm SendData() và ReceiveData().

• B8: Việc ngắt kết nối cú thể được thực hiện bởi Client hoặc Server bằng việc sử dụng cỏc hàm Shutdown(),ClearSSL(), FreeSSL() - Cỏc hàm thực hiện kớ và xỏc thực chữ kớ: (adsbygoogle = window.adsbygoogle || []).push({});

• Hàm kớ lờn thụng điệp:

unsigned char* SignMessage(CString message,EVP_PKey* privatekey);

Đầu vào: thụng điệp cần kớ, khúa riờng. Đầu ra: chữ kớ của thụng điệp

• Hàm xỏc thực chữ kớ:

int VerifyMessage(CString message, unsigned char* sig,EVP_PKEY* pPublicKey);

Đầu vào: Thụng điệp gốc, chữ kớ của thụng điệp gốc và khúa cụng khai

Đầu ra: Kết quả xỏc thực

- Hàm mó húa/gii mó khúa đối xng AES:

• Hàm mó húa:

char* EncryptAES(char* message, char* AESkey);

Đầu vào: thụng điệp cần mó húa và khúa đối xứng Đầu ra: mó húa của thụng điệp

• Hàm giải mó:

char* decryptAES(char* encryptMessage, char* AESkey);

Đầu vào: thụng điệp mó húa, khúa đối xứng Đầu ra: thụng điệp gốc

- Cỏc hàm làm việc với CSDL:

• Hàm kết nối với CSDL

BOOL Init(CString strDBHost, int nPort, CString strDbName, CString strUserName, CString strPwd);

Đầu vào: DBHost, cổng, DBname, tờn người dựng đăng nhập CSDL và mật khẩu

Đầu ra: Kết quả kết nối • Hàm xử lý cõu truy vấn select

MYSQL_RES* ExecuteSelect(CString strSelectCommand);

Đầu vào: cõu truy vấn select Đầu ra: Con trỏ dữ liệu

• Hàm xử lý cỏc cõu lệnh insert, update, delete, create

BOOL Query(CString strQuery);

Đầu vào: Cõu truy vấn insert, update, delete hoặc create Đầu ra: Kết quả thực hiện.

Một phần của tài liệu Nghiên cứu xây dựng hệ thống kiểm soát trung cập mạng và an ninh thông tin dựa trên sinh trắc học sử dụng công nghệ nhúng nhánh 3 (Trang 62)