3.12 Yêu cầu bảo mật
Chúng tôi dé ra các yêu cầu về bảo mật mà các đối tượng nêu trên cần phải tuân
theo:
© Máu khách-Alice va Bob: là người giữ khóa bí mật của riêng họ. Nếu Alice tin
tưởng Bob, cô ay có thể chia sẻ khóa bí mật cho Bob. Nhung Bob không được phép tải về dữ liệu của Alice cho dù có sở hữu khóa bí mật của cô ay.
© Máu chỉ-nhà cung cấp dich vu đám mây: được giả định là HBC (honest-but-
curious). Điều này có nghĩa là nó tuân thủ đúng các bước đặt ra trong giao thức nhưng vẫn có thể cố gắng học tất các những gì có thể dựa trên các dữ liệu
mà nó nhận được. Thêm vào đó, máy chủ được giả định là không được cấu kết
với một trong các máy khách (Alice hoặc Bob).
3.1.3 Mục tiêu
Các mục tiêu của bài toán bao gồm:
1. Chủ sở hữu dữ liệu có thể lưu trữ dữ liệu của họ trên dịch vụ đám mây mà
không tiết lộ thông tin về dữ liệu gốc cho nhà cung cấp dịch vụ.
. Dữ liệu trên dịch vụ đám mây cần toàn vẹn trước khi thực hiện đối sánh mẫu.
. Nhà cung cấp dich vụ thực hiện đối sánh mẫu trên các dữ liệu được lưu trữ của chủ sở hữu dữ liệu mà không cần giải mã chúng.
. Các thuật toán và giao thức được thiết kế cần phù hợp với khả năng tính toán trên các thiết bi IơT.
3.2 Cơ sở lý thuyết
3.2.1 Ma hóa AES
AES là một thuật toán mã hóa khối, nghĩa là văn bản gốc được chia thành nhiều khối
và thuật toán mã hóa sẽ được thực hiện trên từng khối đó. Mỗi khối trong thuật toán
22
Chương 3. BÀI TOÁN, CO SO LY THUYET, PHƯƠNG PHAP ĐỀ XUẤT
AES có độ dài cố định là 128 bit hay 16 byte bat kể kích thước khóa. AES-256 là thuật
toán mã hóa AES mà nó sử dụng khóa có độ dai 256 bit. Với kích thước khóa đủ lớn,
AES-256 là một trong số các mật mã có thể chống lại được các cuộc tấn công lượng
tử [15].
AES là một thuật toán được xây dựng dựa trên phương pháp thay thế-hoán vị. Trong thuật toán, các khối dt liệu được biểu diễn như một ma trận có kích thước 4x4. Qua trình mã hóa một khối được thực hiện trong nhiều chu trình và mỗi chu trình có một khóa chu trình riêng. Các khóa chu trình có kích thước cô định là 16 byte và được tạo ra từ một khóa chính thông qua quá trình mở rộng khóa (KeyExpansion). Có bốn bước chính trong mỗi chu trình mã hóa, bao gồm:
1. AddRoundKey: mỗi byte dữ liệu được kết hợp với một byte tương ứng của khóa
chu trình bằng toán tử XOR.
2. SubBytes: thay thé mỗi byte trong dữ liệu bang một byte khác dựa trên bang
Rijndael S-box.
3. ShiftRows: hàng thứ 7 trong ma trận dữ liệu được dịch xoay vòng sang trái i
byte.
4. MixColumns: mỗi cột trong ma trận dữ liệu được nhân với một hệ số có định
khác nhau.
Cụ thể, một thuật toán AES có n chu trình được thực hiện như sau:
1. Khởi tạo: Thực hiện bước AddRoundKey với khóa chu trình khởi tạo. Lưu ý rằng
một thuật toán AES n chu trình sé sinh ra # + 1 khóa chu trình, khóa chu trình
đầu tiên là khóa chu trình khởi tạo.
2. Chu trình 1 đến n — 1:
(a) SubBytes (b) ShiftRows (c) MixColumns (đ) AddRoundKey
23
Chương 3. BÀI TOÁN, CO SO LY THUYET, PHƯƠNG PHAP ĐỀ XUẤT
3. Chu trình n:
(a) SubBytes (b) ShiftRows (c) AddRoundKey
Counter Counter + 1
:ơ E51 -
Py <0, P2 SP,
Cy Cz
(a) Encryption
Counter Counter + 1
HÌNH 3.1: Chế độ mã hóa CTR.
Có nhiều chế độ mã hóa trong một thuật toán mã hóa khối, có thể kể đến là chế độ ECB, CBC, CTR. Tuy nhiên, nghiên cứu nay tập trung vào chế độ mã hóa CTR vì nó
có một số tính chất quan trọng liên quan đến thuật toán đối sánh mẫu được đề xuất. Thay vì mã hóa dữ liệu như các chế độ khác, CTR mã hóa một số đặc biệt được gọi
là số counter. Kết quả của phép mã hóa này là một keystream. Sau đó keystream này được kết hợp với văn bản gốc bằng phép toán XOR để tạo ra văn bản được mã hóa. Lược dé của chế độ CTR cho một khối dữ liệu được tóm tắt như sau:
24
Counter +N -1
Chương 3. BÀI TOÁN, CO SO LY THUYET, PHƯƠNG PHAP ĐỀ XUẤT
AES; (counter) —> keystream
keystream @® plainblock —> cipherblock
Số counter của khối đầu tiên được chọn ngẫu nhiên và tăng thêm 1 với mỗi khối tiếp theo. Quá trình mã hóa và giải mã một văn bản hoàn chỉnh bằng chế độ mã hóa CTR được minh họa trong hình |3. |
3.2.2 Hàm băm SHA
SHA (Standard Hash Algorithms) là một nhóm các hàm băm mật mã được công bó bởi Viện Tiêu chuẩn và Công nghệ Quốc gia Mỹ (NIST). Để một hàm băm đủ tiêu chuẩn trở thành một hàm băm mật mã, nó phải thỏa mã được ba tính chất tiên quyết,
bao gồm: pre-image resistance, second pre-image resistance, va collision resistance.
Định nghĩa: Cho ham số ƒ : X —› Y và một giá trị y € Y, tập hop P = {x|f(x) =
} được gọi là pre-image (hay nghịch ảnh, tạo anh) của y dưới ƒ.
Theo đó, các tính chất tiên quyết của một hàm băm mật mã được phát biểu như sau:
® Pre-image resistance: rat khó tìm được một phần tử nào thuộc một tập hợp
pre-image cho trước.
® Second pre-image resistance: cho một phan tử thuộc một tập hợp pre-image,
rat khó tìm được một phan tử khác của tập hợp pre-image đó.
* Collision resistance: rat khó tìm được hai phan tử bat kỳ thuộc cùng một tập
hợp pre-image.
SHA-256 là một thuật toán SHA mà nó vẫn có thể duy trì tốt các tính chất của một
hàm băm mật mã dưới sự tấn công của các thuật toán lượng tử (15). Nó nhận đầu
vào là một dữ liệu có độ dài bat ky và cho ra một giá trị hàm băm có độ dài 256 bit.
Cụ thể, thuật toán SHA-256 chia dữ liệu đầu vào thành nhiều khối có kích thước bằng nhau và bằng 512 bit. Mỗi khối tiếp tục được chia thành 16 khối con, mỗi khối con 32 bit. Sau đó, SHA tạo ra 64 từ (word) dựa trên 16 khối con này. Thuật toán
được mô tả một cách tổng quan như sau:
25