3.4.3. Ứng dụng mã hóa, ký số xác thực và giải mã trên Lotus Note
Qua những phân tích về hệ thống văn phòng điện tử Lotus Notes. Chúng tôi nghiên cứu đề xuất hai giải pháp xây dựng ứng dụng ký số, mã hóa, xác thực và giải mã trên văn phòng điện tử Lotus Notes.
Giải pháp 1: Xây dựng các module ký số, mã hóa, xác thực và giải mã. Sau đó, tích hợp và hệ thống Lotus Notes.
Giải pháp 2: Xây dựng các module ký số, mã hóa, xác thực và giải mã, độc lập với ứng dụng Lotus Notes.
Dựa trên các giải pháp đã đề xuất chúng tôi tập trung vào giải pháp 2, ứng dụng bao gồm hai modul chính nhƣ sau:
1. Modul mã hóa và giải mã 2. Module ký số và xác thực
3.4.3.1. Modul mã hóa và giải mã
Sử dụng thuật toán AES trong modul mã hóa và giải mã
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ử dụn g 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 t hiết kế đă ̣c tả thuâ ̣t toán bao gồm các nội dung sau:
1. Đi ̣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 T iêu chuẩn mã hóa tiên tiến 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ể đánh số liệt kê Bit Giá trị nhị 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 bits xem nhƣ thực thể hoặc Array của 8 bits đơn.
Cipher Key
Khóa mã hóa bí mật đƣợc dùng bởi Key Expansion nhằm tạo ra các tập Round Keys có 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 minh (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 hoặc đầu ra của Inverse Cipher
Rijndael Thuật toán mã hóa cơ sở của AES
Round Keys Các giá trị nhận ra từ Cipher Key bằng cách 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 ở đó
RoundKey đƣợ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 State
InvMixColumns() Phép biến đổi trong Inverse Cipher là ngƣợc của MixColumns()
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 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 thì Nk có thể là 4, 6 hoặc 8
Nr Số vòng là chức năng của Nk và Nb đƣợc cố định, trong chuẩn này thì Nr có thể là 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 bytes và nhận hoán vị vòng
ShiftRows() Biến đổi trong Cipher xử lý State bằng dịch vòng ba cột cuối của State với offsets khác
SubBytes() Biến đổi trong Cipher xử lý State bằng phép thay thế phi tuyến S-Box lên các bytes của State độ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 Cipher Key, K, là 128, 192, hay 256. Độ dài key đƣợc thể hiện với: Nk = 4, 6, hay 8 là số 32 bits words trong Cipher Key.
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ểu diển bởi Nr. Giá trị Nr =10 khi Nk = 4, Nr =12 khi Nk = 6, 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 byes:
1. SubBytes: Biến đổi trong Cipher xử lý State bằng phép thay thế phi tuyến S-Box lên các bytes của State độc lập.
2. ShiftRows: Biến đổi trong Cipher xử lý State bằng dịch vòng ba cột cuối của State với offsets khác.
3. 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 cột mới.
4. AddRoundKey: Phép bến đổi trong Cipher và Inverse Cipher ở đó RoundKey đƣợc thêm vào State dùng phép toán XOR. Độ dài của RoundKey bằng kích thƣớc State.
Demo thực hiện mã hóa và giải mã tài liệu
Từ giao diện chính của Lotus Note ta thực hiện tạo một e-mail mới để thực hiện chức năng mã hóa: