Xây dựng ứng dụng mã hóa, ký số, xác thực chữ ký

Một phần của tài liệu Nghiên cứu giải pháp bảo mật xác thực cho ứng dụng văn phòng điện tử dựa trên công nghệ mở (Trang 52 - 69)

CHƯƠNG 3: GIẢI PHÁP BẢO MẬT, XÁC THỰC VĂN PHÒNG ĐIỆN TỬ VÀ XÂY DỰNG ỨNG DỤNG

3.4. Xây dựng ứng dụng mã hóa, ký số, xác thực chữ ký tài liệu lưu trữ trên văn phòng điện tử Alfresco

3.4.3. Xây dựng ứng dụng mã hóa, ký số, xác thực chữ ký

3.4.3.1. Phân tích thiết kế hệ thống ứng dụng mã hóa Alfresco Phân tích yêu cầu người dùng

Mã hóa trong Alfresco là một chức năng mở rộng của Alfresco cung cấp cho người dùng dịch vụ mã hóa dữ liệu, tăng cường tính bảo mật và an ninh cho tài liệu lưu trữ trên kho dữ liệu của Alfresco.

Những yêu cầu cần có cho ứng dụng mã hóa cho Alfresco:

 Người sử dụng upload, lựa chon, thay đổi các file lưu trữ khóa theo chuẩn JKS (Java Keystore) hoặc PKSC#12(Personal Information Exchange Syntax Standard) để tạo khóa bí mật từ cặp khóa công khai và khóa riêng từ các file lưu trữ khóa đó.

 Tài liệu mã hóa, giải mã có dấu hiệu nhận biết riêng.

 Người quản trị không biết mật khẩu bảo vệ của file lưu trữ khóa của người dùng.

Phân tích đặc tả yêu cầu người dùng

Ứng dụng mã hóa trên Alfresco có hai modul chính là mã hóa và giải mã.

Để mã hóa, giải mã cần có file lưu trữ khóa theo chuẩn JKS hoặc PKCS#12. Phải nhập mật khẩu bảo vệ file lưu trữ khóa để kiểm tra. Khi kiểm tra mật khẩu thành công, khóa công khai và khóa riêng của file lưu trữ sẽ được lấy ra. Sau đó sử dụng thuật toán SHA1 băm khóa công khai được một chuỗi có độ dài 160 bit. Sử dụng thuật toán RSA để mã hóa chuỗi đó bằng khóa riêng thu được khóa bí mật có độ dài 128 bit dùng để mã hóa, giải mã bằng thuật toán đối xứng AES.

3.4.3.2. Phân tích thiết kế ứng dụng ký số, xác thực chữ ký Phân tích yêu cầu người dùng

Các tài liệu lưu trữ trên VPĐT hiện này nói chung và Alfresco nói riêng chủ yếu là các file Microsoft Office hoặc pdf, để xây dựng ứng dụng ký số và xác thực trên các file nói trên nhiều giải pháp mã nguồn mở đã được triển khai trong đó có giải pháp OpenXM14J. Giải pháp này hỗ trợ các thư viện ký số và xác thực chữ ký trên các file Microsoft Office 2007. Vì vậy, tôi lựa chọn sử dụng một số api có sẵn của mã nguồn trên để xây dựng ứng dụng ký số, xác thực chữ ký trên các file Microsoft Office 2007 trên nền tảng VPĐT Alfresco.

Các file lưu trữ khóa theo chuẩn JKS hoặc PKCS#12 không chỉ lưu trữ

khóa mà còn lưu trữ chứng thư số. Do vậy sẽ tiếp tục khai thác, sử dụng các file lưu trữ khóa để phục vụ cho quá trình ký số và xác thực chữ ký.

Phân tích đặc tả yêu cầu người dùng

Ứng dụng ký số trên Alfresco gồm hai modeul chính ký số và xác thực.

Để ký số và xác thực trên file word 2007 người dùng cần có file lưu trữ khóa PKCS#12 hoặc JKS, đồng thời nhập mật khẩu bảo vệ file lưu trữ khóa đó để lấy khóa bí mật và chứ thư số phục vụ cho quá trình ký số và xác thực.

3.4.3.3. Ứng dụng mã hóa, ký số và xác thực chữ ký tài liệu lưu trữ trên Alfresco

Module mã hóa và giải mã tài liệu Kiến trúc module mã hóa

Trong Alfresco thì mọi dữ liệu đều ở dạng một “node”. Phần dữ liệu đó được xác định dưới dạng DataType.

Module mã hóa bao gồm hai phần chính Data Processing và Data Encryption

● Bộ phận thứ nhất Data Processing: Đọc dữ liệu từ repository và ghi dữ liệu trở lại, thay đổi thuộc tính dữ liệu.

● Bộ phần thứ hai Data Encrypting: Mã hóa và giải mã dữ liệu.

Sơ đồ kiến trúc tổng quan

Hình 3.6. Sơ đồ mã hóa

Hình 3.7. Sơ đồ giải mã

Thiết kế thuật toán AES Giới thiệu

AES (Advanced Encryption Standard) là tiêu chuẩn mã hóa theo thuâ ̣t toán mã

hóa đối xứng Rijndael. Tiêu chuẩn được chính phủ Mĩ và NIST (U.S National

Institute of Standard and Tecnology) công nhận làm tiêu chuẩn liên bang. Ngày nay tiêu chuẩn mã hóa AES được sử du ̣ng rô ̣ng rãi trong nhiều lĩnh vực.

Ngoài ý nghĩa tiêu chuẩn, AES được đề câ ̣p tới là thuâ ̣t toán mã hóa các khối dữ liệu 128 bits bằng các khóa đô ̣ dài 128, 192 hoă ̣c 256 bits tương ứng với AES- 128, AES-192 và AES-256. Trong bản thiết kế đă ̣c tả thuâ ̣t toán bao gồm các nô ̣i dung sau:

1. Định nghĩa các khái niê ̣m, kí hiê ̣u và hàm 2. Mô tả thuâ ̣t toán

3. Các vấn đề khi cài đă ̣t

Đi ̣nh nghĩa, khái niệm và kí hiệu Thuật ngữ

AES Advanced Encryption Standard

Affine

transformation

Phép biến đổi gồm phép nhân với mô ̣t ma trâ ̣n sau đó cô ̣ng vớ i mô ̣t vector

Array Tập các thực thể được đánh số liê ̣t kê Bit Giá trị nhi ̣ phân 0 hoă ̣c 1

Block Chuỗi bits nhị phân gồm input, output, State và Round Key. Độ dài củ a chuỗi là số bits nó chứa. Block có thể xem như Array của bytes.

Byte Một nhó m 8 bit xem như mô ̣t thực thể hoă ̣c như Array của 8 bits đơn Cipher Chuỗi các biến đổi bản tường minh (plain text) thành bản mã

hóa(cirphertext) dùng Cipher Key

Cipher Key Khóa mã hóa bí mâ ̣t được dùng bởi Key Expansion nhằm ta ̣o ra tập các Round Keys:co thể xem như Array củ a bytes có 4 hàng và Nk cô ̣t.

Ciphertext Dữ liê ̣u đầu ra từ Cipher hoă ̣c đầu vào Inverse Cipher Inverse Cipher Chuỗi các biến đổi biến bản mã hóa (ciphertext) thành bản

tường mình (plaintext) dùng Cipher Key.

Key Expansion Các bướ c dùng để ta ̣o ra chuỗi các Round Keys từ Cipher Key Plaintext Dữ liê ̣u đầu vào của Cipher hay đầu ra của Inverse Cipher Rijndael Thuật toán mã hóa cơ sở của AES

Round Key Các giá tri ̣ nhâ ̣n ra từ Cipher Key bằng các sử du ̣ng Key Expansion.

Hàm, tham số và các ký hiệu

AddRoundKey() Phép biến đổi trong Cipher và Inverse Cipher ở đó Round Key được thêm vào State dùng phép toán XOR. Đô ̣ dài của Round Key bằng kích thước của State.

InvMixColumns() Phép biến đổi trong Inverse Cipher là ngược của MixColumns InvShiftRows() Phép biến đổi trong Inverse Cipher là ngược của ShiftRows() InvSubBytes() Phép biến đổi trong Inverse Cipher là ngược của SubBytes()

K Cipher Key

MixColumns() Phép biến đổi trong Cipher lấy tất cả các cô ̣t của State và trô ̣n dữ

liệu của nó mô ̣t cách đô ̣c lâ ̣p cho ra mô ̣t cô ̣t mới Nb Số cô ̣t trong State, trong chuẩn này thì Nb=4

Nk Số cột trong Cipher Key, trong chuẩn này Nk có thể là 4, 6 hoă ̣c 8 Nr Một số vò ng là chức năng của Nk và Nb được cố đi ̣nh. Trong

chuẩn này Nr = 10, 12 hoă ̣c 14

Rcon[] Một Word Array không đổi quay vòng

RotWord() Hàm dùng Key Expansion nhâ ̣n 4 byte và hoán vi ̣ vòng

ShiftRows() Biến đổi trong Cipher xử lí State bằng di ̣ch vòng ba cô ̣t cuối của State vớ i offsets khác

SubBytes() Biến đổi Cipher xử lí State bằng phép thế phi tuyến (S-box) lên các bytes của Start đô ̣c lâ ̣p

SubWord() Hàm dùng trong Key Expansion nhận 4 bytes đầu vào và

dù ng S- box cho ra mô ̣t word

Mô tả thuật toán

Trong thuật toán AES, độ dài input block, output block và State là 128 bits.

Nó được thể hiện qua Nb = 4 là số 32-bit word trong State.

Trong thuật toán AES, độ dài Cipher Key, K, là 128, 192, hay 256. Độ dài key được thể hiện bới

Nk = 4, 6, hay 8 là số 32-bit words trong Cipher Key.

Trong thuật toán AES, số vòng (rounds) được trình diễn suốt quá trình thực thi thuật toán phụ thuộc vào độ dài key. Số vòng được biết diễn bởi Nr. (Nr= 10 khi Nk= 4, Nr= 12 khi Nk= 6, và Nr= 14 khi Nk= 8.)

Trong cả Cipher và Inverse Cipher, thuật toán AES sử dụng hàm round, được tạo ra từ các phép biến đổi bytes:

1. Byte substitution using a substitution table (S-box) 2. Shifting rows of the State array by different offsets 3. Mixing the data within each column of the State array 4. Adding a Round Key to the State.

Kiểm thử Module mã hóa và giải mã tài liệu

Từ giao diện chính của phần mềm Alfresco share, ta vào kho chứa tài liệu DEMO

Hình 3.8. Kho chứa tài liệu DEMO của Alfresco share

Để mã hóa file “NTLM is Dead –DefCon16.pdf” thực hiện chọn vào thanh công cụ ở bên phải, chọn vào more... và thực hiện chọn chức năng Encrypt Document

Hình 3.9. Chức năng Encry Document

Chức năng sẽ hiện thị popup yêu cầu nhập password, ta tiến hành nhập password vào và chọn ok để mã hóa tài liệu, sau khi mã hóa thành công sẽ có thông báo như sau và hình cái khóa ở góc trên bên trái của tài liệu như hình sau

Hình 3.10. Chức năng mã hóa thành công

Sau khi mã hóa thành công, người dùng khi chọn vào tài liệu để xem, nội dung của tài liệu sẽ không hiển thị và yêu cầu người dùng download

Hình 3.11. Tài liệu sau khi mã hóa

Thực hiện download về để xem thì sẽ báo lỗi không thể mở file được như vậy tài liệu đã được mã hóa

Hình 3.12. Báo lỗi không thể mở file sau khi mã hóa tài liệu

Tại kho chứa tài liệu, chọn tài liệu mã hóa muốn giải mã ta thực hiện chọn vào chức năng Dycrypt Document

Hình 3.13. Chọn tài liệu giải mã

Sau đó chọn vào Decypt Document chương trình hiển thị popup yêu cầu người dùng nhập đúng mật khẩu khi đã mã hóa, để thực hiện quá trình giải mã

Hình 3.14. Nhập mật khẩu để giải mã

Sau khi nhập password và chọn ok, nếu thành công thì sẽ hiện thị “Decyped the document successfully!” và loại bỏ icon hình cái khóa ở trên tài liệu

Hình 3.15. Mật ikhẩu gải mã thành công

Ngược lại nếu người dùng nhập mật khẩu sai sẽ hiện lên thông báo như sau:

Hình 3.16. Mật khẩu giải mã không thành công

Sau khi giải mã tài liệu ta thực hiện mở tài liệu để kiểm chứng quá trình mã hóa thành công chưa, bằng cách view tài liệu trên ứng dụng

Hình 3.17. View tài liệu của quá trình mã hóa thành công

Sau khi giải mã ta có thể đọc tài liệu bình thường như lúc đầu.

Module chữ ký số Kiến trúc

Module chữ ký số cho alfresco là module thực hiện một Action lên một node trong Alfresco. Action ở đây chính là SignAction (ký tài liệu) thao tác lên Node chính là file (tài liệu). Chuẩn kiến trúc của action dựa trên mô hình MCV.

Hình 3.18. Mô hình MCV

1. View: Giao diện tương tác với người dùng, ở đây người dùng lựa chọn thực hiện chức năng ký hay xác thực chữ ký.

2. Controller: Liên kết giữa View và Model, ngoài ra nó giao tiếp với một hệ thống con thực hiện chức năng ký.

3. Model: Cung cấp các API thao tác lên dữ liệu, thực tế chính là các Node lưu trữ trong workspace

Mô tả quá trình hoạt động

Khi người dùng yêu cầu ký tài liệu nào đó, họ cần thao tác lên View, View gửi request tới Controller. Controller gửi request tới Model lấy tài liệu, sau đó dùng Signature Util để ký tài liệu. Cuối cùng gửi tài liệu đã ký tới người dùng.

Mô hình hoạt động của module

Demo thực hiện ký số

Để thực hiện ký số chúng ta có 2 bước:

- Nạp chữ ký số.

- Thực hiện ký file

- Tài liệu sau khi ký

- Xác thực chữ ký

Trên đây tôi đã trình bày về giải pháp đảm bảo an toàn trong quản lý tài liệu trên hệ thống Alfresco là 2 module Mã hóa- Giải mã tài liêu (Document Encryption - Decryption) và module chữ ký số (Digital Signing).

Một phần của tài liệu Nghiên cứu giải pháp bảo mật xác thực cho ứng dụng văn phòng điện tử dựa trên công nghệ mở (Trang 52 - 69)

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

(84 trang)