HINH 3.2: Ham compress trong thuật toán SHA-256. Trong đó W; là từ thứ t, K;
là một hang sé.
e Gia sử D là dữ liệu đầu vào và được chia thành N khối kích thước 512 bit, khối
thứ i được ký hiệu là D,
ô Từ thứ j của khối thứ i được ký hiệu là Dị,.
¢ Quá trình băm được biểu điễn như sau:
function SHA256(D)
xX + Xo
¡0 while i < N do
/c0
while j < 64 do
X < compress(D ĩj+1
end while
it i+l1 end while
ij X)
26
Chương 3. BÀI TOÁN, CƠ SỞ LÝ THUYẾT, PHƯƠNG PHAP ĐỀ XUẤT
return X end function
© Trong đó, X là một tập hợp gồm 8 giá trị 4 byte, ký hiệu lần lượt là A, B, C, D,
E,F, G, H. Các giá trị này được khởi tạo dựa trên các giá trị chuẩn của thuật toán SHA-256. Ham compress trong thuật toán trên được mô tả ở hình|3.2|
3.2.3. Xác thực tính toàn vẹn của dư liệu
HÌNH 3.3: Phương pháp đảm bảo tính toàn vẹn do sự cố dựa trên checksum
của một gói tin TCP.
Có nhiều phương pháp để kiểm tra tính toàn vẹn của đữ liệu, nhưng phương pháp phổ biến nhất là sử dụng hàm băm. Tùy thuộc vào giao thức mà cách thức sử dụng hàm băm để kiểm tra cũng khác nhau. Chẳng hạn để kiểm tra nội dung của gói tin
có bị thay đổi do sự có hay không, người ta thường đính kèm gói tin với giá trị hàm
băm của gói tin đó và kiểm tra nó ở nơi nhận (hình (3.3). Tuy nhién, phuong phap
này không hiệu quả đối với bai toán nội dung gói tin bi thay đổi do có ý. Những bài toán này cần phương pháp phức tạp hơn, chẳng hạn sử dụng HMAC như trong
27
Chương 3. BÀI TOÁN, CO SO LY THUYET, PHƯƠNG PHAP ĐỀ XUẤT
message message
Z ` Z
HINH 3.4: Phương pháp đảm bao tính toàn vẹn của gói tin sử dụng HMAC.
hình
Trong bài toán của chúng tôi, dữ liệu được lưu trữ ở máy chủ đám mây và chúng tôi
muốn kiểm tra tính toàn vẹn của dữ liệu này trước khi thực hiện các thao tác với nó. Các cách đơn giản nhất được đề ra là:
1. Máy khách tải vé đữ liệu va tự tính toán giá trị hàm băm.
2. Yêu cầu máy chủ đám mây tính toán giá trị hàm băm và gửi nó cho máy khách.
Đối với cách thứ nhất, tải về dữ liệu sẽ tiêu tốn một lượng băng thông và tài nguyên tính toán lớn đối với máy khách, đặc biệt hơn khi các máy khách trong bài toán của chúng tôi là những thiết bi IoT. Cách thứ hai sẽ đảm bảo giảm tải được băng thông, tuy nhiên vẫn yêu cau tính toán nhiều ở máy chủ. Hơn nữa nhà cung cấp dịch vụ đám mây có thể sử dụng phương pháp replay-attack để đánh lừa người dùng về sự toàn vẹn của dữ liệu, do giá trị hàm băm của một tệp tin là không đổi.
3.2.4 Kỹ thuật kiểm tra tính toàn ven an toàn
Trong phần này, chúng tôi mô tả phương pháp yêu cầu máy chủ đám mây tính toán
giá trị hàm băm mà vẫn có thể chống lại các cuộc tấn công replay-attack. Ateniese
và cộng sự 6| đề xuất thêm một giá trị đặc biệt vào dữ liệu trước khi tính toán giá
trị hàm băm, giá trị này được gọi là nonce. nonce là một giá trị ngẫu nhiên được sinh
ra bởi máy khách mỗi lần nó cần tính toán giá trị hàm băm, điều này dẫn đến giá
28
Chương 3. BÀI TOÁN, CO SO LY THUYET, PHƯƠNG PHAP ĐỀ XUẤT
trị hàm băm sẽ luôn thay đổi. Giá trị này chỉ được máy chủ biết đến khi nó được yêu cầu chứng minh sự toàn vẹn của dữ liệu. Phương pháp dé xuất của Ateniese và
cộng sự được tóm gọn như sau:
nonce ‹*- {0,1}!
digest = hash(nonce + data)
Cu thé, trước khi gửi dữ liệu lên máy chu, Alice cần tinh toán một số giá tri digest của dữ liệu đó với các giá trị nonce ngẫu nhiên. Cô ấy cần giữ bí mật các giá trị này với máy chủ. Khi cần xác thực tính toàn vẹn, Alice chọn một cặp nonce và digest bat
kỳ, sau đó gửi nonce đến máy chủ đám mây và yêu cầu nó tinh toán lai digest bang công thức trên. Nếu kết quả của máy chủ giống với kết quả đã tính toán trước, dữ liệu đã được chứng minh là toàn vẹn. Ngược lại, Alice có thể phát hiện dữ liệu của mình bị hỏng. Vì nonce được sinh ra ngẫu nhiên và khác nhau với mỗi lần xác thực,
nó có thể chống lại replay-attack. Lưu ý rằng ta không được dùng lại các giá trị nonce
đã được sử dụng. Sau khi sử dụng hết các cặp nonce và digest đã được tính trước ở máy cục bô, chúng ta cần tải lại di liệu và tính thêm các cặp giá trị mới cho những lần xác thực tiếp theo.
3.2.5 Kiểm tra tính toàn ven mang tính xác suất
Mặc dù chúng ta có thể xác thực toàn bộ dữ liệu, điều này rất tốn tài nguyên để tính
toán các thông tin xác thực. Ateniese và cộng sự l6] đã đề xuất phương pháp sử
dụng ít chi phí tính toán hơn bằng cách chỉ xác thực một phần của dữ liệu. Dữ liệu được chia thành nhiều khối nhỏ; máy khách chỉ yêu cầu máy chủ chứng minh sự toàn vẹn của một số khối mà nó chọn. Các tác giả cho biết, nếu dữ liệu được chia thành 10,000 khối và người xác thực yêu cầu bằng chứng của 460 khối (4.6% của 10,000), thì khả năng người này có thể phát hiện được sự thay đổi của 100 khối (1%
của 10,000) là 99%.
Trong nghiên cứu này, chúng tôi sẽ áp dung các phương pháp được dé xuất bởi
Ateniese và cộng sự [6] vào bài toán xác thực dữ liệu của chúng tôi. Gọi:
¢ Dla dit liệu và được đại điện bởi đ khối có kích thước bằng nhau: D[1], D[2],
..„ Did).
29
Chương 3. BÀI TOÁN, CO SO LY THUYET, PHƯƠNG PHAP ĐỀ XUẤT
® SHẶ) là hàm băm SHA-256.
® nonce là một giá trị được tạo ngẫu nhiên bởi máy khách.
đ I =i,ù›,...,1„ là danh sỏch cỏc khối được chọn dộ chứng minh tớnh toàn vẹn.
Trong đó, r là số lượng khối cần chứng minh. Giống với nonce, I cũng được tao ngẫu nhiên bởi máy khách.
Máy khách cần tính toán digest bằng công thức sau:
digest = SHA(nonce, Dị¡|, Dịi] ..., Dị¡;])
Trong đó, các dau phẩy được coi là phép nối dữ liệu. Trong hướng tiếp cận nay, các
dữ liệu bí mật được lưu trữ ở máy cục bộ bao gồm nonce, I và digest. Máy khách cần
gửi nonce và I khi cần xác thực tính toàn ven của dit liệu. Các bước tiếp theo trong
giao thức được thực hiện giống với phẩn|3.2.4|
3.2.6 Đối sánh mẫu với phép toán XOR
Có nhiều thuật toán đối sánh mẫu đã được đề xuất, tuy nhiên, chúng tôi sẽ sử dụng phương pháp cơ bản nhất với toán tử XOR. Thuật toán này sẽ so sánh từng byte giữa hai mẫu đữ liệu với nhau. Nếu hai byte giống nhau, kết quả của phép toán XOR trên hai byte đó là 0, ngược lại là một số khác 0. Để tính toán được độ tương đồng giữa hai mẫu, ta cần đếm số lượng byte có giá trị là 0 trong kết quả phép XOR và chia nó
cho kích thước của mẫu. Chúng tôi trình bày công thức của thuật toán như sau:
counto(Pị @ Pạ)
size(P) í
similarity =
trong đó, Pị và P là hai mẫu, size(P) là kích thước của mẫu P; và nó cũng bằng với kích thước của mẫu P; (để đơn giản hóa, chúng tôi giả định kích thước của hai mẫu
là bằng nhau). Phép toán XOR là phép toán đặt biệt, nó có thể tương tác tốt với chế
độ CTR của mã hóa khối và là trọng điểm trong nghiên cứu của chúng tôi. Thêm vào đó, nó cũng có hai tính chất đơn giản nhưng thú vị mà chúng tôi sẽ sử dụng
30
Chương 3. BÀI TOÁN, CO SO LY THUYET, PHƯƠNG PHAP ĐỀ XUẤT
trong mô hình dé xuất, đó là:
0@a=a
(3.1) a@a=0
3.3. Phương pháp đề xuất
Trong phần này, chúng tôi dé xuất mô hình đối sánh mẫu an toàn gồm ba giao thức
sau:
1. Giao thức tải lên dữ liệu: mô tả cách chủ sở hữu dữ liệu mã hóa, sinh dữ liệu
xác thực và tải dữ liệu lên máy chủ đám mây.
2. Giao thức kiểm tra tính toàn vẹn: giúp máy khách kiểm tra dữ liệu có bị thay
đổi hay không, chuẩn bị cho quá trình đối sánh mẫu.
3. Giao thức đối sánh mẫu an toàn: mô tả cách máy chủ thực hiện đối sánh mẫu
trên các dữ liệu đã bị mã hóa được lưu trữ ở dịch vụ đám mây.
3.3.1 Ký hiệu
Đầu tiên, chúng tôi sẽ liệt kê các ký hiệu được sử dụng trong các mô hình đề xuất.
® klà khóa bí mật của Alice.
® Dy, là dữ liệu của Alice và Dp là dữ liệu của Bob. Chúng có cùng kích thước và
có thể được biểu diễn dưới dạng tập hợp đ khối bằng nhau: D¡ [1],..., D¡|[đ] và
D;[1|,..., Dạ|đ].
® SHẶ) là hàm băm mật mã SHA-256.
© AES,(.) là phép mã hóa bằng thuật toán AES-256 với counter mode và khóa k.
¢ RNG() là một hàm sinh số ngẫu nhiên.
® RPG,(r) là một ham sinh hoán vị ngẫu nhiên. Nó có thể sinh ra một tổ hợp
chập r cua tập hợp {1,..., 4}.
31
Chương 3. BÀI TOÁN, CO SO LY THUYET, PHƯƠNG PHAP ĐỀ XUẤT
3.3.2 Giao thức tải lên dữ liệu
(1) Encrypt the data
(2) Randomly generate the nonce and indices
©
(3) Compute the digest
ơ
\
CSP
DATA OWNER _ (°°) Upload the encrypted data dk
® i =Q
(4) Keep the nonce, indices and digest at local
HINH 3.5: Giao thức tải lên dữ liệu
Trong phần này, Alice muốn tải dữ liệu Dị lên máy chủ đám mây. Đầu tiên, cô ấy cần sinh ra một số dữ liệu xác thực Proof theo các bước dưới đây:
1. AES,(Dị) > DJ.
2. RNG() —> nonce.
3. RPGa(r) > I = {ủ,...,ớ„}, với r là số lượng khối dữ liệu cần được chứng
minh.
4. SHA(nonce, D‡[i4],..., Di [í„]) —> digest.
5. Proof = {nonce, I, digest}.
32
Chương 3. BÀI TOÁN, CO SO LY THUYET, PHƯƠNG PHAP ĐỀ XUẤT
Sau đó, Alice chỉ gửi dữ liệu đã mã hóa D} lên CSP và có thể xóa đi dữ liệu gốc DỊ. Các dữ liệu xác thực Proof cần được giữ bí mật với máy chủ đám mây và lưu trữ ở máy cục bộ cho việc kiểm tra tính toàn vẹn của dữ liệu trong tương lai.
3.3.3. Giao thức kiểm tra tính toàn vẹn dữ liệu
(1) Send the nonce and indices as = (2) Compue Ae digest with the
the challenge allenge
„( CSP `
©