:Kiến trúc tổng quan của Secured SMS

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và phát triển ứng dụng chữ ký số trên các thiết bị cầm tay (Trang 55)

Vì phải dùng Token (Soft và Hard) để đăng nhập vào phần mềm và để lấy khóa bí mật thực hiện việc giải mã nội dung, do đó SecureSMS yêu cầu phải có lớp PKCS#11 Wrapper.

Crypto Libs thực hiện các công việc nhƣ: sinh cặp khóa đối xứng, mã hóa tin nhắn SMS với chứng thƣ số của ngƣời nhận, giải mã nội dung với khóa bí mật của ngƣời sử dụng.

Lớp Contact thực hiện việc đồng bộ hóa danh bạ, lấy chứng thƣ số của những ngƣời đang sử dụng SecureSMS. Các chứng thƣ số này đƣợc lƣu trữ trong Cert Store và cả trên hệ thống máy chủ của VDC.

b. Quy trình giải mã và mã hóa SMS

 Mã hóa Compos e SMS SMS Message SMS Content SMS Header - Recipient Get Cert Encrypt Recipient s Cert Send SMS Hình 13:Quy trình mã hóa

Qúa trình mã hóa SMS yêu cầu ngƣời dùng cung cấp đầy đủ: Nội dung SMS và số điện thoại của ngƣời nhận. Ứng dụng sẽ kiểm tra và lấy chứng thƣ số tƣơng ứng với số điện thoại đã cung cấp từ Cert Store và máy chủ qua các Web-service. Nếu không có chứng thƣ số tƣơng ứng, quá trình mã hóa không thể thực hiện, ngƣời dùng chỉ có thể gửi SMS bình thƣờng.  Giải mã Encrypted SMS Encrypted Content PIN code Get Private key Send SMS User s Private Key Clear Content Hình 14:Quy trình giải mã

Quá trình giải mã cần đến khóa bí mật của ngƣời dùng, do đó cần cung cấp chính xác mã PIN của Token cho ứng dụng.Để đảm bảo tính bảo mật, mỗi lần đọc nội dung đã mã hóa đều cần nhập mã PIN, kể cả nội dung đã giải mã trƣớc đó.

c. Các chuẩn và thƣ viện áp dụng

- PKCS#11: bộ API giao tiếp với Token và SmartCard.

- OpenSSL: thƣ viện mã hóa mã nguồn mở thực thi các giao thức SSL/TLS, đƣợc viết bằng ngôn ngữ C.

- Bouncy Castle: thƣ viện mã hóa mã nguồn mở đƣợc viết bằng ngôn ngữ Java. - DroidSMS: ứng dụng quản lý SMS mã nguồn mở cho Android.

3.3.3. Kiến trúc Secured Email Client App

Mail Core

PKCS#11 Wrapper Crypto Libs Contact Apptentive Connect

UI View

WebService

Cert Store

Hình 15:Kiến trúc của Secured Email Client

Kiến trúc phần mềm đƣợc thiết kế phân tách nhiều lớp độc lập, để có thể hoạt động linh hoạt, dễ dàng phát triển và triển khai.

- Mail Core là tầng thấp nhất trong phần mềm, xử lý các tác vụ lấy email, phân tích và gửi email.

- PKCS#11 Wrapper và Crypto Libs là các thƣ viện thực hiện kết nối Token và thực hiện các quá trình mã hóa, xác thực email.

- Contact cho phép ứng dụng quản lý danh bạ, chứng thƣ số trong danh bạ và Apptentive Connect có nhiệm vụ kết nối ứng dụng với AppStore, Google Play Store, feedback nhà phát triển.

b. Quy trình tạo email SMIME của phần mềm

MIME Message Soạn email Phân tích MIME Nội dung Tiêu đề

Ứng dụng khi ký số hay mã hóa email chỉ thực hiện với phần Nội dung của email, bao gồm cả các tệp đính kèm. Vì vậy cần tách nội dung theo chuẩn MIME để thực hiện quy trình này. Ký số, mã hóa Crypto libs, PKCS#11 Wrapper PKCS#7 SMIME SMIME Message Gửi email Nội dung Tiêu đề Cert Store, Web Service

Hình 17:Quy trình mã hóa Email

Nếu thực hiện mã hóa, ứng dụng bắt buộc phải có chứng thƣ số của ngƣời nhận, lớp Cert Store lƣu trữ các chứng thƣ số này và lớp Web Service thực hiện đồng bộ danh bạ và các chứng thƣ số giữa ứng dụng và Server đặt tại VDC.

Quy trình ký số yêu cầu ứng dụng phải giao tiếp với Token (Soft hoặc Hard), lớp PKCS#11 Wrapper thực hiện chức năng giao tiếp này.Ngƣời dùng cung cấp mã PIN để lớp Wrapper lấy khóa bí mật thực hiện ký số hoặc giải mã các email. Chữ ký số cho email phải theo đúng chuẩn PKCS#7 trƣớc khi chèn Header và đóng gói toàn bộ theo chuẩn SMIME trƣớc khi gửi đi.

c. Các chuẩn và thƣ viện áp dụng

- MIME: chuẩn định dạng cho thƣ điện tử khi truyền qua Internet - S/MIME: chuẩn mã hóa và ký số cho thƣ điện tử MIME

- PKCS#11: bộ API giao tiếp với Token và SmartCard - PKCS#7: chuẩn định dạng tin nhắn mã hóa

- OpenSSL: thƣ viện mã hóa mã nguồn mở thực thi các giao thức SSL/TLS, đƣợc viết bằng ngôn ngữ C.

- SMTP, IMAP: các giao thức gửi nhận email.

- K-9 Mail: ứng dụng Mail Client mã nguồn mở cho Android. - Mailcore2: thƣ viện xử lý email mã nguồn mở cho iOS.

3.3.4. Kiến trúc Signing Apps

a. Kiến trúc tổng quan

PKCS#11 Wrapper Crypto Libs OOXML Lib PDF Lib

UI View

Hình 18:Mô hình kiến trúc Signing Apps

Tƣơng tự với 2 ứng dụng trên, Secure Mail và Secure SMS, Signtool cũng cần kết nối với Token (Soft hoặc Hard) qua lớp PKCS#11 Wrapper. Cũng cần các thƣ viện mã hóa nhƣ OpenSSL và BouncyCastle trong lớp Crypto Libs để thực hiện các chức năng ký số.

Lớp các thƣ viện OOXML Lib và PDF Lib cho phép ứng dụng phân tích và đóng gói các tài liệu OOXML (Office là một trong số đó) và PDF, lấy ra các thông tin cần thiết để tạo chữ ký số.

b. Các chuẩn và thƣ viện áp dụng

- PKCS#11: Bộ API giao tiếp với Token và SmartCard.

- PKCS#1 :Chuẩn cung cấp các định nghĩa, khuyến nghị cơ bản để thực hiện thuật toán RSA cho mã hóa công khai.

- PKCS#7: Chuẩn định dạng tin nhắn mã hóa.

- OOXML: Open Office XML, chuẩn định dạng dữ liệu của Microsoft cho các tài liệu Office: Word, Excel, PowerPoint,…

3.3. Các mô hình thiết kế UseCase

3.3.1.Thiết kế Usecase tổng quan cho Soft Token

Để có thể thao tác với Soft Token, tất cả các chức năng đều yêu cầu ngƣời dùng đăng nhập trƣớc, trừ trƣờng hợp ngƣời dùng chọn chức năng Unlock Token (Quên mật khẩu)

Tạo mới chứng thư

Thanh toán

Liệt kê chứng thư

Đổi PIN

Mở khóa Token

Sao lưu Token

Khôi phục Token Gia hạn chứng thư Đăng nhập precedes precedes precedes precedes precedes precedes precedes

- Phân rã chức năng Tạo mới chứng thƣ số

Chức năng Tạo mới chứng thƣ số đƣợc thực hiện bởi ngƣời dùng, đƣợc chia thành 3 use-case nhỏ là: Nhập thông tin khách hàng, Chọn gói chứng thƣ số và Xác thực thông tin khách hàng.

Tạo mới chứng thư Nhập thông tin khách hàng Chọn gói chứng thư Xác thực thông tin khách hàng <<extend>> <<extend>> <<extend>>

- Phân rã chức năng Thanh toán

Chức năng Thanh toán cho phép ngƣời dùng có thể chọn: thanh toán bằng thẻ cào và thanh toán bằng tài khoản ngân hàng.

Thanh toán

Thanh toán thẻ cào

Thanh toán e-Banking <<extend>>

<<extend>>

- Phân rã chức năng Gia hạn chứng thƣ

Tƣơng tự nhƣ Tạo mới chứng thƣ số, Gia hạn chứng thƣ số đều có các use case nhỏ là: Nhập thông tin chứng thƣ số và Xác thực thông tin chứng thƣ số. Tuy nhiên chức năng này dựa trên gói chứng thƣ số mà ngƣời dùng đang có, vì vậy không có use case con: Chọn gói chứng thƣ số.

Gia hạn chứng thư

Sửa thông tin khách hàng

Xác thực thông tin khách hàng <<extend>>

<<extend>>

- Phân rã chức năng Mở khóa Token

Chức năng mở khóa Token đƣợc sử dụng khi ngƣời dùng mất mã PIN của Token, không thể đăng nhập. Use case này đƣợc chia thành các use case con là: Tạo yêu cầu mở khóa và Đặt lại mật khẩu

Mở khóa Token

Tạo yêu cầu mở khóa

Đặt lại mật khẩu <<extend>>

<<extend>>

Kích hoạt <<include>>

Trong use case Đặt lại mật khẩu, ứng dụng yêu cầu ngƣời dùng phải nhập mã kích hoạt từ Server gửi về.

Người dùng

Liệt kê tin nhắn

Gửi tin nhắn Đọc tin nhắn Quản lý bảo mật Tìm kiếm người dùng Quản lý hiển thị Cập nhật Đăng ký Đăng nhập Máy chủ

- Phân rã chức năng Gửi tin nhắn

Ứng dụng cho phép ngƣời dùng gửi tin nhắn SMS hoặc tin nhắn Internet, tin nhắn có mã hóa hoặc không.

Gửi tin nhắn

Gửi tin mã hóa

Gửi tin thường <<extend>>

<<extend>>

- Phân rã chức năng đọc tin nhắn

Tin nhắn khi nhận có thể là tin mã hóa hoặc không. Use case này đƣợc chia thành 2 use case nhỏ: Đọc tin nhắn mã hóa và Đọc tin nhắn thƣờng.

Đọc tin nhắn

Đọc tin mã hóa

Đọc tin thường <<extend>>

<<extend>>

- Phân rã chức năng Quản lý bảo mật

Ứng dụng hỗ trợ ngƣời dùng mã hóa, giải mã với chứng thƣ số, đồng thời cung cấp tính năng sử dụng mật khẩu để truy cập vào trong ứng dụng.

Quản lý bảo mật Quản lý truy cập ứng dụng Quản lý chứng thư số <<extend>> <<extend>> Xác thực mật khẩu ứng dụng Xác thực mật khẩu Token <<include>> <<include>>

User

Liệt kê email

Gửi email Đọc email Quản lý bảo mật Quản lý hiển thị Đăng nhập hòm mail Server

- Phân rã chức năng Gửi email

Use case này đƣợc chia thành 2 use case nhỏ là: Gửi email thƣờng và Gửi email bảo mật

Gửi email

Gửi email thường

Gửi email bảo mật <<extend>> <<extend>> Gửi có ký số Gửi có mã hóa <<extend>> <<extend>> Đăng nhập Token <<include>>

Đọc email

Đọc email thường

Đọc email bảo mật <<extend>>

<<extend>> Giải mã email

Xác thực email <<extend>>

<<extend>>

Đăng nhập Token <<include>>

- Phân rã chức năng Quản lý bảo mật

Ứng dụng hỗ trợ ngƣời dùng mã hóa, giải mã với chứng thƣ số, đồng thời cung cấp tính năng sử dụng mật khẩu để truy cập vào trong ứng dụng.

Quản lý bảo mật Quản lý truy cập ứng dụng Quản lý chứng thư số <<extend>> <<extend>> Xác thực mật khẩu ứng dụng Xác thực mật khẩu Token <<include>> <<include>>

3.3.4. Mô hình Usecase tổng quan ứng dụng Signtool

Ứng dụng cho phép ngƣời dùng sử dụng chứng thƣ số từ Soft token để ký số văn bản, đƣợc chia thành các use case nhƣ hình dƣới.

User List file List Certificate Sign document Send document 3.4. Một số thiết kế màn hình

3.4.1. Một số màn hình thiết kế Soft Token

- Giao diện đăng nhập Soft token

- Giao diện danh sách chứng thƣ số

Hình 20:Giao diện danh sách chứng thƣ số

- Giao diện tạo chứng thƣ số

- Giao diện thông tin chứng thƣ số

Hình 22:Giao diện thông tin chứng thƣ số

3.4.2 Một số màn hình thiết kế SMS

- Màn hình thiết kế giao diện truy xuất vào trình soát SMS. Để truy xuất vào trong SMS, cần phải đăng nhập dùng chữ ký số để đăng nhập.

Hình 23:Giao diện đăng nhập Secured SMS

Hình 24:Giao diện duyệt tin nhắn

- Thiết kế màn hình gửi tin nhắn

Hình 25:Giao diện gửi tin nhắn

3.4.3 Thiết kế một số màn hình Secured Email Client

Hình 26:Giao diện tạo tài khoản Email

- Thiết kế màn hình danh sách Email

Hình 27:Giao diện danh sách Email

Hình 28:Giao diện mã hóa và ký email

3.4.4 Thiết kế Signing Apps

- Thiết kế màn hình chọn loại file để ký.

Hình 29:Giao diện lựa chọn loại File để ký

Hình 30:Giao diện ký file

- Thiết kế màn hình lựa chọn chữ ky số để ký

Hình 31:Giao diện lựa chọn chữ ký số

Hình 32:Giao diện đăng nhập nhập truy xuất chữ ký số

- Màn hình hiển thị kết quả khi ký.

KẾT LUẬN

1. NHỮNG CÔNG VIỆC MÀ LUẬN VĂN ĐÃ ĐẠT ĐƢỢC

Luận văn này với mục tiêu nghiên cứu và ứng dụng lý thuyết cũng nhƣ các chuẩn công nghiệp đƣợc chấp nhận toàn cầu vào lĩnh vực chữ ký số để áp dụng vào thực tiễn trển khai trên các thiết bị cầm tay. Xet về mặt kết quả tổng quan, Luận văn đã đƣa ra đƣợc các:

- Nghiên cứu tổng quan về chữ ký số.

- Nghiên cứu tình hình triển khai chữ ký số tổng quan trong nƣớc và quốc tế. - Nghiên cứu lý thuyết cơ sở về chữ ký số.

- Nghiên cứu các chuẩn công nghiệp về chữ ký số.

- Phát triển các ứng dụng chữ ký số nhằm tƣơng tác với thiết bị cầm tay tƣơng đƣơng với việc ứng dụng chữ ký số đang đƣợc sử dụng trên máy tính thông thƣờng.

Kết quả của Luận văn đã đƣợc vào triển khai thực tiễn và đã đƣợc áp dụng vào các ứng dụng chữ ký số thực tiễn đầu tiên tại Việt Nam trên nền thiết bị di động và đã đƣợc một số doanh nghiệp sử dụng và từng bƣớc mở sang toàn bộ cộng đồng Việt Nam và quốc tế.

2. KHẢ NĂNG PHÁT TRIỂN CỦA LUẬN VĂN

Luận văn này dựa trên nghiên cứu cơ sở lý thuyết, thực tiễn phát triển và ứng dụng chữ ký số, mở sang một nền tảng áp dụng sản phẩm chữ ký số trên thiết bị cầm tay. Trên cơ sở thực tế của Luận văn sẽ có nhiều cơ sở để thúc đẩy thị trƣờng chữ ký số trên thiết bị cầm tay, đảm đảm an ninh thông tin trên thiết bị cầm tay. Và chính trên nền tảng mở ra nền tảng ứng dụng chữ ký số trên thiết bị cầm tay đƣợc áp dụng trong mọi giao dịch điện tử, và đây cũng là hƣớng phát triển tƣơng lai thực sự của Luận văn để mở sang một kỳ vọng cho tƣơng lai là mọi giao dịch thực hiện đƣợc trên nền tảng điện tử hoàn toàn mà vẫn đảm bảo tin cậy, xác thực, bảo mật.

TÀI LIỆU THAM KHẢO

[1.] PGD.TS Trịnh Nhật Tiến,“Giáo trình an toàn thông tin”

[2.] RSA Laboratories,“PKCS #1: RSA Cryptography Standard, Version 2.2”

[3.] RSA Laboratories, “PKCS #11: Cryptographic Token Interface Standard, Version 2.30”

[4.] RSA Laboratories, “PKCS #7: Cryptographic Message Syntax Standard”

[5.] RSA Laboratories, “PKCS #15: Cryptographic Token Information Format Standard”

[6.] Andrew Nash, William Duane, Celia Joseph, Derek Brink “PKI Implementing amd Managing E-Security ”

PHỤ LỤC

CÀI ĐẶT MỘT SỐ CHỨC NĂNG TRÊN MOBILE Phụ lục 1: CÀI ĐẶT CÁC HÀM CƠ SỞ

- Class định nghĩa Bộ sinh số ngẫu nhiên

/**

* This class represents a random number (RNG) generator object. */

class RandomNumberGenerator {

public:

/**

* Create a seeded and active RNG object for general application use */

staticRandomNumberGenerator* make_rng();

/**

* Randomize a byte array.

* @param output the byte array to hold the random output. * @param length the length of the byte array output.

*/

virtualvoid randomize(byte output[], size_t length) = 0;

/**

* Return a random vector

* @param bytes number of bytes in the result * @return randomized vector of length bytes */

SecureVector<byte> random_vec(size_t bytes) {

SecureVector<byte>output(bytes); randomize(&output[0], output.size());

return output; }

/**

* Return a random byte * @return random byte */

byte next_byte();

/**

* Check whether this RNG is seeded.

* @return true if this RNG was already seeded, false otherwise. */

virtualbool is_seeded() const { returntrue; }

/**

* Clear all internally held values of this RNG. */

virtualvoid clear() = 0;

* Return the name of this object */

virtualstd::string name() const = 0;

/**

* Seed this RNG using the entropy sources it contains. * @param bits_to_collect is the number of bits of entropy to attempt to gather from the entropy sources

*/

virtualvoid reseed(size_t bits_to_collect) = 0;

/**

* Add this entropy source to the RNG object

* @param source the entropy source which will be retained and used by RNG */

virtualvoid add_entropy_source(EntropySource* source) = 0;

/**

* Add entropy to this RNG.

* @param in a byte array containg the entropy to be added * @param length the length of the byte array in

*/

virtualvoid add_entropy(constbytein[], size_t length) = 0; RandomNumberGenerator() {}

virtual ~RandomNumberGenerator() {}

private:

RandomNumberGenerator(constRandomNumberGenerator&) {}

RandomNumberGenerator&operator=(constRandomNumberGenerator&) { return (*this); }

};

/**

* Null/stub RNG - fails if you try to use it for anything */

class Null_RNG : publicRandomNumberGenerator

{

public:

void randomize(byte[], size_t) { throwPRNG_Unseeded("Null_RNG"); }

void clear() {}

std::string name() const { return"Null_RNG"; }

void reseed(size_t) {}

bool is_seeded() const { returnfalse; }

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và phát triển ứng dụng chữ ký số trên các thiết bị cầm tay (Trang 55)

Tải bản đầy đủ (PDF)

(84 trang)