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 (LUẬN văn THẠC sĩ) 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 53 - 85)

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:

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.

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

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 nghi ̃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ị nhị phân 0 hoă ̣c 1

Block Chuỗi bits nhi ̣ 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 tạ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 để tạ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á trị nhận ra từ Cipher Key bằng các sử dụ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

Để 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

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

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

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

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ố.

- 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).

KẾT LUẬN

Kết quả đạt đƣợc

Nghiên cứu vấn đề an ninh, an toàn VPĐT. Từ đó xây dựng các chính sách, giải pháp VPĐT an toàn.

Tìm hiểu, so sánh, đánh giá các VPĐT được sử dụng phổ biến hiện nay. Nghiên cứu về mật số vấn đề về lý thuyết mật mã như hệ mật mã, hàm băm, chữ ký số.

Phân tích, so sánh, lựa chon, triển khai mô hình đăng nhập duy nhất trên VPĐT trên công nghệ mở và cụ thể là xây dựng giải pháp đăng nhập duy nhất CAS cho phần mềm VPĐT Alfresco.

Nghiên cứu triển khai ứng dụng bảo mật, xác thực VPĐT trên công nghệ mở và cụ thể là xây dựng ứng dụng mã hóa, giải mã tài liệu; ký và xác thực chữ ký trên file word 2007 trên nền tảng văn phòng điện tử mã nguồn mở Alfresco.

Hƣớng phát triển của đề tài

Trước những kết quả đạt được luận văn đưa ra một số hướng pháp triển Nghiên cứu giải pháp bảo mât mail dựa trên công nghệ mở.

Nghiên cứu giải pháp bảo mật cơ sở dữ liệu dựa trên công nghệ mở. Nghiên cứu giải pháp bảo mật và xác thực Web dựa trên công nghệ mở. Nghiên cứu giải pháp tích hợp hạ tầng khóa công khai cho ứng dụng bảo mật file trên mail, cơ sở dữ liệu và web.

TÀI LIỆU THAM KHẢO Tiếng Việt

[1]. Phan Đình Diệu, Lý thuyết mật mã và an toàn thông tin, Đại Học Quốc Gia Hà Nội, năm 2002.

[2]. TS Dương Anh Đức, Trần Minh Triết, Giáo trình mã hóa và ứng dụng, Đại Học quốc gia TP.HCM, 2005.

[3]. Phạm Huy Điển, Hà Huy Khoái, Mã hóa thông tin cơ sở toán học và ứng dụng, Viện toán học, năm 2004.

[4]. Hồ Văn Hương, Đào Thị Ngọc Thuỳ, Ứng dụng hệ thống kiểm soát truy nhập mạng theo mô hình truy nhập một lần, Tạp chí An toàn thông tin, số 1 (025) 2013.

[5]. Hồ Văn Hương, Hoàng Chiến Thắng, Nguyễn Quốc Uy, Giải pháp bảo mật và xác thực cho văn phòng điện tử, Hội nghị Quốc gia về điện tử và truyền thông (REV 2013-KC01).

[6]. Nguyễn Đình Thúc, Bùi Doãn Khanh, Hoàng Đức Hải, Giáo trình mã hóa thông tin Lý thuyết và ứng dụng , NXB Lao động xã hội, năm 2006.

Tiếng Anh

[7]. Carlisle Adams, Steve Lloyd, Understanding PKI: Concepts, Standards, andDeployment Considerations, Addison-Weslsey, 2002. [8]. William Stallings, Cryptography and Network Security Principles and

Practies, Fourth Edition, Prentice Hall, 2006

[9]. Jeff Potts, Alfresco Developer Guide, Packt Publishing, 2008.

Tài liệu trên Internet

[10]. http://eoffice.com.vn/ [11]. http://wiki.alfresco.com/wiki/Alfresco_cas_with_jasig_cas_client [12]. http://www.openoffice.org/ [13]. http://www.softbless.com/en/SSO-Setting-CAS-Alfresco [14]. http://www.alfresco.com [15]. http://www.openoffice.org/

PHỤ LỤC

Cài đặt và cấu hình OpenLDAP trên máy chủ CenOS

* Cài đặt OpenLdap

Thực hiện cài đặt các gói openldap-servers, openldap-clients

# yum -y install openldap openldap-clients openldap-servers * Cấu hình OpenLdap

Sử dụng lệnh slappasswd để sinh ra password dạng băm dùng để đăng nhập vào tài khoản quản trị OpenLDAP (ở đây sử dụng password là 123456).Copy lại password đã được băm này.

Chuyển tới thư mục cn\=config bằng lệnh:

# cd /etc/openldap/slapd.d/cn\=config.

Sửa file olcDatabase\=\{2\}bdb.ldif như sau: Chỉnh file DN (distinguished name) của trường olcSuffix cho đúng với tên miền đã định trước (ở đây là dc=demo, dc=trinhminhphu đối với tên miền là demo.trinhminhphu). Chỉnh tương tự với

olcRootDN với Manager là tài khoản quản trị của OpenLDAP. Bên cạnh đó cũng cần thêm trường olcRootPW với giá trị là password đã được băm ở trên.

Chỉnh file olcDatabase={1}monitor.ldif với trường olcAccess như sau: olcAccess:{0}to*by

dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=demo,dc=trinhminhphu" read by * none

Để mã hash của các user không bị nhìn thấy bởi các user không có thẩm quyền thì ta chỉnh olcDatabase\=\{2\}bdb.ldif bằng cách thêm vào hai dòng sau đây:

olcAccess: {0}to attrs=userPassword by self write by

olcAccess: {1}to * by dn.base="cn=Manager,dc=demo,dc=trinhminhphu" write by self write by * read

Để ldap khởi động cùng hệ thống mỗi khi khởi động lại ta sử dụng lệnh:

# chkconfig slapd on

Start ldap sử dụng lệnh:

# /etc/init.d/slapd start

Thêm một entry vào cây thư mục LDAP như sau:

*Ví dụ tạo 1 tập tin trinhminhphu.ldif với nội dung như sau: dn: dc=demo,dc=trinhminhphu

objectClass: dcObject objectClass: organization dc: demo

o : demo

Sau đó sử dụng lệnh sau để thêm tập tin trên vào cây thư mục LDAP

# ldapadd -f trinhminhphu.ldif -D cn=Manager,dc=demo,dc=trinhminhphu - w 123456

Thêm hai ou là People và Groups bằng cách tương tự với các file group.ldif tương ứng như sau:

dn: ou=People,dc=demo,dc=trinhminhphu ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=demo,dc=trinhminhphu ou: Group objectClass: top objectClass: organizationalUnit

Thực hiện thêm bằng lệnh sau và ta có kết quả trả về thêm thành công # ldapadd -f group.ldif -D cn=manager,dc=demo,dc=trinhminhphu -w 123456 adding new entry "ou=People,dc=demo,dc=trinhminhphu"

Tiếp theo ta tạo một số user và thêm vào tương tự như trên, ta tạo file user.ldif và thêm nội dung như sau:

dn: cn=admin,ou=people,dc=demo,dc=trinhminhphu cn: admin objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: top userPassword: admin123 sn: admin uid: administrator dn: cn=trinhminhphu,ou=people,dc=demo,dc=trinhminhphu cn: admin objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: top userPassword: trinhminhphu123 sn: Trinh uid: MinhPhu

Một phần của tài liệu (LUẬN văn THẠC sĩ) 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 53 - 85)

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

(85 trang)