Professional Documents
Culture Documents
Hà Nội 2018
1
MỤC LỤC
DANH MỤC CÁC CHỮ VIẾT TẮT...........................................................4
LỜI MỞ ĐẦU................................................................................................5
CHƯƠNG 1. TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY VÀ VẤN
ĐỀ BẢO MẬT DỮ LIỆU TRONG ĐIỆN TOÁN ĐÁM MÂY..................7
1.1. Khái niệm....................................................................................7
1.2. Mô hình kiến trúc điện toán đám mây.....................................7
1.2.1. Kiến trúc phân lớp dịch vụ...................................................................7
1.2.1.1. Dịch vụ ứng dụng (Software as a Service – SaaS).......................11
1.2.1.2. Dịch vụ nền tảng hệ thống (Platform as a Service – PaaS).........12
1.2.1.3. Dịch vụ cơ sở hạ tầng (Infrastructure as a Service – IaaS)........12
1.2.2.1. Đám mây riêng................................................................................14
1.2.2.2. Đám mây công cộng........................................................................14
1.2.2.3. Đám mây lai....................................................................................15
1.2.2.4. Đám mây cộng đồng.......................................................................16
1.3. Vấn đề bảo mật trong điện toán đám mây.............................16
1.3.1.1. An ninh ở mức hạ tầng...................................................................17
1.3.1.2. An ninh ở mức dịch vụ nền tảng...................................................18
1.3.1.3. An ninh ở mức dịch vụ phần mềm................................................19
2
CHƯƠNG 3: PHÂN LOẠI DỮ LIỆU VÀ CHIẾN LƯỢC BẢO
MẬT..............................................................................................................46
3.1 Giới thiệu..........................................................................................46
3.2 Phân loại dữ liệu............................................................................47
3.2.2 Access Control......................................................................................47
3.2.3 Content..................................................................................................47
3.3.3 Storage..................................................................................................48
3
DANH MỤC CÁC CHỮ VIẾT TẮT
4
DANH MỤC CÁC HÌNH VẼ
5
Hình 2. 18 Lược đồ cơ sở dữ liệu sau bước 1.........................................................39
Hình 2. 19 Lược đồ cơ sở dữ liệu sau bước 1.........................................................39
Hình 2. 20 Lớp mã hóa của các cột sau bước 1......................................................39
Hình 2. 21 Lớp mã hóa của các cột sau bước 1......................................................39
Hình 2. 22 Lược đồ cơ sở dữ liệu sau bước 2.........................................................40
Hình 2. 23 Lược đồ cơ sở dữ liệu sau bước 2.........................................................40
Hình 2. 24 Bảng được cập nhật với các giá trị Grade được thêm...........................42
Hình 2. 25 Bảng được cập nhật với các giá trị Grade được thêm...........................42
Hình 2. 26 Bảng được cập nhật được mã hóa bên Proxy Server............................42
Hình 2. 27 Bảng được cập nhật được mã hóa bên Proxy Server............................42
LỜI MỞ ĐẦU
Ngày nay, cùng với sự phát triển của công nghệ thông tin, hệ thống phần
mềm ứng dụng, hệ thống máy chủ của các tổ chức doanh nghiệp ngày càng
tăng nhanh. Điều đó dẫn tới chi phí đầu tư cho hạ tầng công nghệ thông tin
ngày càng lớn, chi phí cho việc quản lý hệ thống cũng tăng lên. Để giảm thiểu
được các chi phí đó và tăng khả năng ứng dụng công nghệ thông tin trong sản
xuất kinh doanh của doanh nghiệp, điện toán đám mây là giải pháp đang được
rất nhiều doanh nghiệp lựa chọn. Bên cạnh những lợi ích to lớn mà điện toán
đám mây đem lại, nó cũng tồn tại một số hạn chế nhất định, nhất là trong vấn
đề bảo mật dữ liệu của người sử dụng. Trong thời đại ngày nay, nhiều thông
tin, dữ liệu nhạy cảm có giá trị rất to lớn, đôi khi nắm vai trò sống còn của
một doanh nghiệp, vấn đề đảm bảo bí mật cho những thông tin, dữ liệu như
vậy khi lưu trữ trên đám mây của nhà cung cấp dịch vụ lại càng trở nên quan
trọng hơn bao giờ hết.
Đề tài “Bảo mật dữ liệu trong điện toán đám mây” nhằm mục đích
nghiên cứu, tìm hiểu, xây dựng, và đưa ra phương pháp mới giải quyết bài
toán bảo đảm bí mật cho những dữ liệu, thông tin nhạy cảm được lưu trữ trên
điện toán đám mây.
6
Chương 1. Tổng quan về điện toán đám mây và vấn đề bảo mật dữ
liệu trong điện toán đám mây. Kết thúc chương này ta sẽ có cái nhìn tổng
quan nhất về điện toán đám mây, biết được những lợi ích to lớn mà điện toán
đám mây đem lại so với điện toán truyền thống cũng như một số vấn đề về
bảo mật dữ liệu chúng ta sẽ gặp phải khi sử dụng các dịch vụ điện toán đám
mây.
Chương 2. Mã hóa dữ liệu trong bảo mật điện toán đám mây. Chương
này sẽ trình bày về Database-as-a-Service – DBaaS hay còn gọi là cơ sở dữ
liệu như một dịch vụ.
Chương 3. Phân loại dữ liệu và các chiến lược bảo mật. Chương này sẽ
trình bày về một số loại dữ loại kèm them đó là các chiến lược bảo mật.
7
CHƯƠNG 1. TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY VÀ
VẤN ĐỀ BẢO MẬT DỮ LIỆU TRONG ĐIỆN TOÁN ĐÁM
MÂY.
Khái niệm.
Theo Wikipedia: “Điện toán đám mây (cloud computing) là một mô hình điện
toán có khả năng co giãn (scalable) linh động và các tài nguyên thường được ảo
hóa được cung cấp như một dịch vụ trên mạng Internet”. Điện toán đám mây,
còn gọi là điện toán máy chủ ảo, là mô hình điện toán (hình 1.1) sử dụng các
công nghệ máy tính và phát triển dựa vào mạng Internet.
Theo Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST): “Điện
toán đám mây là một mô hình cho phép truy cập mạng thuận tiện, theo nhu
cầu đến một kho tài nguyên điện toán dùng chung, có thể định cấu hình:
mạng, máy chủ, lưu trữ, ứng dụng,…có thể được cung cấp và thu hồi một
cách nhanh chóng với yêu cầu tối thiểu về quản lý hoặc can thiệp của nhà
cung cấp dịch vụ.”
8
Hình 1. 2 Mô hình kiến trúc dịch vụ điện toán đám
mây của SOMF
Tuy nhiên các mô hình kiến trúc dịch vụ điện toán đám mây đều có ba loại
dịch vụ điện toán đám mây cơ bản là: dịch vụ cơ sở hạ tầng (Infrastructure as
a Service – IaaS), dịch vụ nền tảng (Platform as a Service – PaaS) và dịch vụ
phần mềm (Software as a Service – SaaS). Cách phân loại này thường được
gọi là mô hình SPI.
Hình 1.3 dưới đây sẽ mô tả mô hình dịch vụ SPI (Software – Platform –
Infrastructure).
9
Hình 1. 3 Mô hình SPI
Trong hình 1.4 dưới đây sẽ cho chúng ta thấy mô hình SPI của điện toán
đám mây gắn liền với một số ứng dụng, dịch vụ cụ thể trong thực tế.
10
Mô hình dịch vụ xác định tùy chọn điều khiển khác nhau cho các khách
hàng và cung cấp dịch vụ điện toán đám mây. Ví dụ, khách hàng SaaS chỉ
cần sử dụng các ứng dụng và dịch vụ được cung cấp bởi các CSP, nơi IaaS
khách hàng duy trì kiểm soát môi trường của mình được lưu trữ trên cơ sở
hạ tầng cơ bản của CSP. Ba mô hình dịch vụ thường được sử dụng nhất
được mô tả như sau.
SaaS: Khả năng cho khách hàng sử dụng các ứng dụng của nhà cung cấp
đang chạy trên một cơ sở hạ tầng điện toán đám mây. Các ứng dụng có thể
truy cập từ các thiết bị khách hàng khác nhau hoặc thông qua một giao diện
chẳng hạn như một trình duyệt web, hoặc một giao diện chương trình.
PaaS: Khả năng cho khách hàng triển khai các ứng dụng của họ (được tạo
ra hoặc mua lại) vào cơ sở hạ tầng điện toán đám mây, sử dụng ngôn ngữ lập
trình, thư viện, dịch vụ, và các công cụ hỗ trợ của nhà cung cấp.
IaaS: Khả năng cho khách hàng sử dụng xử lý của nhà cung cấp, lưu trữ,
mạng, và tài nguyên máy tính cơ bản khác để triển khai và chạy hệ điều hành,
các ứng dụng và phần mềm khác trên một cơ sở hạ tầng điện toán đám mây.
Sự khác biệt chính giữa các cấp dịch vụ liên quan đến cách điều khiển
được chia sẻ giữa các khách hàng và CSP, do đó ảnh hưởng đến mức độ trách
nhiệm cho cả hai bên. Cần lưu ý rằng, khác hơn trong một đám mây thực sự
tin (on-premise) kịch bản, khách hàng hiếm khi có bất kỳ kiểm soát phần
cứng, và nó là mức độ mà các thành phần ảo, các ứng dụng và phần mềm
được quản lý bởi các bên khác nhau để phân biệt các mô hình dịch vụ. Theo
nguyên tắc chung, SaaS cung cấp cho khách hàng với số tiền ít nhất kiểm
soát, trong khi IaaS cung cấp sự kiểm soát nhất cho khách hàng.
Điều quan trọng cần lưu ý là những mô tả triển khai và mô hình dịch vụ,
mặc dù được chấp nhận rộng rãi bởi các ngành công nghiệp, có thể không
hoàn toàn được theo sau bởi các nhà cung cấp điện toán đám mây hoặc phản
ánh môi trường điện toán đám mây thực tế. Ví dụ, một CSP có thể được bán
một "đám mây riêng" dịch vụ không đáp ứng được mục đích của "tư nhân"
như được mô tả ở trên. Tương tự như vậy, các chi tiết về những gì được và
những gì không được bao gồm trong một dịch vụ cụ thể có thể sẽ khác nhau
11
giữa các CSP, ngay cả khi họ từng xác định dịch vụ của họ bằng cách cùng kỳ
hạn (IaaS, PaaS hay SaaS).
Mức độ trách nhiệm an ninh trên các mô hình dịch vụ điện toán đám mây
nói chung và di cư đối với khách hàng là khách hàng di chuyển từ một mô
hình SaaS (trách nhiệm của khách hàng ít nhất) đến một mô hình IaaS (hầu
hết trách nhiệm của khách hàng). Mức độ lớn nhất của trách nhiệm cho các
CSP để duy trì kiểm soát an ninh và hoạt động hiện diện trong mô hình dịch
vụ SaaS.
Hình 1. 5 Mức độ kiểm soát/trách nhiệm giữa khách hàng và nhà cung cấp dịch vụ
Trong khi khách hàng có thể được thu hút vào các mô hình SaaS và PaaS
do tiết kiệm tài nguyên và giảm trách nhiệm về quản lý môi trường điện toán
đám mây, họ nên biết rằng các mô hình này cũng tương ứng với một mất mát
lớn hơn của kiểm soát các dữ liệu nhạy cảm của họ. Thỏa thuận hợp đồng và
thẩm định liên tục trở nên đặc biệt quan trọng, nơi kiểm soát là bên ngoài, để
đảm bảo rằng các biện pháp an ninh cần được đáp ứng và duy trì bởi CSP
trong thời gian thỏa thuận.
12
dịch vụ quản lý và kiểm soát để đảm bảo ứng dụng luôn sẵn sàng và hoạt
động ổn định.
Hình 1. 7 PaaS cho phép khách hàng truy cập vào một nền
tảng trên điện toán đám mây
13
Hình 1. 8 IaaS cho phép nhà cung cấp dịch vụ thuê những tài nguyên
phần cứng
Các dịch vụ cơ sở hạ tầng tập trung vào vấn đề trang bị cho các trung tâm
dữ liệu bằng cách đảm bảo công suất điện toán khi cần thiết. Trên thực tế các
kỹ thuật ảo hóa thường được sử dụng trong tầng này, nên có thể thấy rõ sự tiết
kiệm chi phí khi sử dụng tài nguyên hệ thống.
Hình 1. 9 Phạm vi kiểm soát giữa nhà cung cấp/sử dụng dịch vụ IaaS
1.2.2. Mô hình triển khai
Điện toán đám mây phân thành ba mô hình triển khai: điện toán đám mây
riêng, đám mây công cộng và đám mây lai. Sau đây chúng ta sẽ đi tìm hiểu
lần lượt từng mô hình triển khai.
14
Các đám mây riêng đưa ra nhiều lợi ích giống như các đám mây chung,
điểm khác biệt chính là doanh nghiệp chịu trách nhiệm thiết lập và bảo trì đám
mây. Việc thiết lập đám mây riêng đôi khi không còn chi phí cho việc sử dụng
và duy trì hoạt động liên tục của đám mây và có thể vượt quá chi phí khi sử
dụng một đám mây chung.
Các đám mây công cộng cung cấp cho khách hàng các dịch vụ công
nghệ thông tin tốt nhất. Có thể là phần mềm, cơ sở hạ tầng ứng dụng hoặc cơ
sở hạ tầng vật lý. Các nhà cung cấp đám mây chịu trách nhiệm cài đặt, quản
lý, cung cấp và bảo trì. Khách hàng tính phí cho các tài nguyên nào mà họ sử
dụng.
15
Các dịch vụ thường được cung cấp với các quy ước về cấu hình, chúng
được cung cấp với những trường hợp sử dụng phổ biến nhất. Khách hàng chỉ
có quyền truy cập vào tài nguyên được cấp phát.
16
Hạn chế chính với đám mây lai là khó khăn trong việc tạo ra và quản lý
chúng. Giải pháp đặt ra là tiếp nhận và cung cấp các dịch vụ từ các
nguồn khác nhau như thể chúng có nguồn gốc từ một nơi và có thể
tương tác giữa các đám mây riêng và chung.
Một đám mây cộng đồng có thể được thiết lập bởi một số tổ chức có
yêu cầu tương tự và tìm cách chia sẻ cơ sở hạ tầng để thực hiện một số lợi ích
của điện toán đám mây.
Tùy chọn này là tốn kém hơn nhưng có thể đáp ứng về sự riêng tư, an
ninh hoặc tuân thủ các chính sách tốt hơn.
1.3.1. An toàn liên quan đến kiến trúc của điện toán đám mây
17
Một đám mây là một cụm máy tính kết nối nhau thông qua mạng cục bộ
hoặc mạng diện rộng trên cơ sở ảo hóa tài nguyên phần cứng nhờ chức năng
ảo hóa để cung cấp một cách trong suốt ba dịch vụ cơ bản của điện toán đám
mây là SaaS, PaaS và IaaS. Mô hình triển khai đám mây có thể là công cộng,
đám mây riêng hoặc cộng đồng hay hỗn hợp như đã nói ở phần trên. Các dịch
vụ điện toán đám mây có kiến trúc phân tầng (layer), mỗi tầng cung cấp các
dịch vụ và tiện ích (chức năng) riêng của nó trên cơ sở các dịch vụ và tiện ích
của tầng thấp hơn. Vì vậy an ninh của hệ thống phụ thuộc vào an ninh của
mỗi tầng được thiết kế và cài đặt kèm theo như là 1 dịch vụ hay tiện ích.
Hình 1. 14 Kiến trúc phân tầng dịch vụ trong điện toán đám mây
1.3.1.1. An ninh ở mức hạ tầng
An ninh của các dịch vụ ở tầng thấp như tầng vật lý hay hạ tầng (IaaS)
phụ thuộc vào nhà cung cấp, tức là chủ sở hữu của đám mây. Hiện tại, có một
số nhà cung cấp dịch vụ IaaS nhưng chưa có chuẩn nào về an ninh cho các
dịch vụ này. Về mặt nguyên tắc, khách hàng thuê bao dịch vụ IaaS có thể áp
đặt các chính sách an ninh của mình bằng cách phát triển các dịch vụ hay tiện
ích riêng thông qua các dịch vụ của tầng vật lý và các dịch vụ IaaS của nhà
cung cấp. Chính sách về an toàn ở mức này là rất phức tạp vì nhiều chính sách
khác nhau áp đặt lên cùng một môi trường phần cứng (vật lý).
Những mối đe dọa an toàn ở mức này có thể liên quan tới máy chủ ảo
(Virtual Machine) như là vi-rút và các phần mềm độc hại khác. Nhà cung cấp
dịch vụ chịu trách nhiệm chính về giải pháp cho vấn đề này. Khách hàng thuê
bao cũng có thể thực hiện các giải pháp và chính sách an toàn riêng cho mình,
18
từ đó làm gia tăng gánh nặng lên phần cứng và hiệu năng chung của hệ thống.
Các máy chủ ảo vẫn có thể bị lây nhiễm hay bị kiểm soát bởi phần mềm độc
hại. Trong trường hợp này, các chính sách an ninh của khách hàng có thể bị
vô hiệu, như vậy nhà cung cấp dịch vụ phải là người có vai trò chính trong an
ninh ở mức này. Ngoài ra, vì IaaS khai thác hạ tầng vật lý và chính sách chung
như DNS Server, Switch, IP protocol,… Vì vậy, khả năng bị tấn công vào
“khách hàng yếu nhất” sau đó “lây lan” cho các khách hàng khác. Vấn đề này
hiện nay khách hàng thuê bao không thể can thiệp gì vì nhiều máy chủ ảo chia
sẻ cùng tài nguyên vật lý như CPU, bộ nhớ, đĩa,… Mọi ánh xạ vật lý- máy ảo,
máy ảo-vật lý đều thông qua một “bộ ảo hóa”, nếu bộ này bị phần mềm độc
hại kiểm soát thì toàn bộ khách hàng trong đám mây sẽ bị cùng một mối hiểm
họa như nhau.
Vì dịch vụ nền tảng là dịch vụ đa thuê bao, nhiều người dùng nên cơ chế
xác thực, chứng thực là rất quan trọng. Trách nhiệm bảo mật và an toàn trong
trường hợp này liên quan đến cả nhà cung cấp, người thuê bao và người dùng
(user). Các dịch vụ PaaS phải cung cấp môi trường để phát triển ứng dụng bao
gồm chức năng tác nghiệp, các chức năng an toàn và quản lí hệ thống. Nhà
cung cấp cần có cơ chế bắt buộc chứng thực để truy cập các dịch vụ PaaS,
người thuê bao có trách nhiệm phát triển hay cung cấp các chức năng bảo mật
cần thiết thông qua cơ chế chứng thực chung và người dùng phải có trách
nhiệm bảo vệ tài khoản đăng nhập cá nhân của mình.
19
Ở mức dịch vụ phần mềm (SaaS), các phần mềm được cung cấp như là
dịch vụ trên mạng, sử dụng các chính sách bảo mật dữ liệu và tài nguyên khác
từ các tầng bên dưới cung cấp. Một số dịch vụ phần mềm khá phổ biến hiện
nay là Google Search Engine, Google mail… Khách hàng của các dịch vụ này
không biết được dữ liệu của mình được quản lí và khai thác như thế nào và nó
nằm ở đâu trên thế giới này. Vấn đề an ninh ở đây liên quan đến bảo mật dữ
liệu, rò rỉ thông tin nhạy cảm và nguy cơ bị tấn công từ chối truy cập… Trách
nhiệm về an toàn được chia sẻ cho nhà cung cấp hạ tầng đám mây và nhà
cung cấp dịch vụ phần mềm. Người dùng đầu cuối (end user) chỉ là người
dùng phần mềm với các lựa chọn cấu hình khác nhau được cung cấp bởi phần
mềm nên không có nhiều vai trò trong an toàn hệ thống. Người dùng cuối chỉ
biết tin vào nhà cung cấp phần mềm và các cam kết của nhà cung cấp về trách
nhiệm bảo mật. Thông thường các cam kết này có thể là điều khoản trong hợp
đồng thuê bao phần mềm, như là: an toàn thông tin và chất lượng dịch vụ.
Chúng thường bao gồm: dung lượng dữ liệu, toàn vẹn dữ liệu, chính sách về
phân tán, sao lưu và phục hồi dữ liệu khi có sự cố, độ tin cậy, tính riêng tư và
an toàn mạng cùng với các cam kết khác về chất lượng dịch vụ như dung
lượng đường truyền, tính sẵn dùng.
Ở mức này, các phần mềm được cung cấp trên nền web (web-based
application). Các web này thường được đặt ở máy chủ ảo trên đám mây, cho
nên chúng phải được kiểm tra bằng cách quét các yếu điểm web nhờ vào một
ứng dụng quét nào đó. Các tường lửa có thể được dùng đển ngăn chặn các tấn
công vào điểm yếu đã biết của các phần mềm nền web. Những công việc này
thuộc về nhà cung cấp phần mềm hoặc đám mây, người dùng cuối nhiều lắm
là tham gia vào lựa chọn các cấu hình (option) khác nhau mà thôi. Tình hình
này có thể dẫn đến những lộn xộn trong cấu hình an toàn chung của hệ thống
do tính chất đa thuê bao, kéo theo những lỗ hổng trong an toàn hệ thống. Vì
vậy, các nhà cung cấp phải có những chính sách chung bắt buộc và cách kiểm
soát sao cho những cấu hình an toàn, bảo mật phải nhất quán, chặt chẽ và
không có lỗ hổng.
Điện toán đám mây cung cấp các dịch vụ trên cơ sở một hợp đồng trách
nhiệm (SLA – Service Level Agreement), đây là pháp lý quan trọng trong các
tranh chấp, bất đồng sau này. Hợp đồng thông thường bao gồm chất lượng
dịch vụ, tính sẵn dùng, độ tin cậy và an toàn. Và như bao cam kết hợp đồng,
nó có những điều khoản về trả phí dịch vụ xử phạt và bồi thường. Một đòi hỏi
cao về an toàn thường dẫn đến một tiêu tốn nhiều nguồn lực và vì vậy mức
giá dịch vụ sẽ cao lên tương ứng. Cần lưu ý rằng những đòi hỏi khắc khe về
an toàn có thể ảnh hưởng đến hiệu năng chung của hệ thống (cồng kềnh hơn,
chậm hơn,…). Vì vậy, cần có sự cân bằng giữa yêu cầu an toàn, chi phí và
hiệu năng của hệ thống.
21
CHƯƠNG 2. MÃ HÓA DỮ LIỆU TRONG BẢO MẬT ĐIỆN
TOÁN ĐÁM MÂY.
CryptDB và Mô hình xử lý dữ liệu đã mã hóa
CryptDB giải quyết vấn đề khi một người quản trị cơ sở dữ liệu “tò mò”
(curious database administrator – DBA) hoặc có ý đồ xấu truy cập vào dữ liệu
cá nhân của người dùng (ví dụ các bản ghi sức khỏe,các báo cáo tài chính,
thông tin cá nhân) bằng cách đánh cắp dữ liệu trên máy chủ DBMS; tại đây,
CryptDB ngăn chặn các DBA này đọc được dữ liệu cá nhân của người dùng.
Nhưng có một điều cần cân nhắc đó là đánh đổi giữa giữa việc tối thiểu
những thông tin quan trọng để lộ cho máy chủ DBMS và khả năng thực thi có
hiệu quả một loạt các truy vấn. Các phương pháp tiếp cận hiện tại để tính toán
trên dữ liệu mã hóa hoặc là quá chậm hoặc là không cung cấp đủ tính bí mật.
Mặt khác, việc mã hoa dữ liệu với một hệ thống mã hóa mạnh, như AES
chẳng hạn, sẽ ngăn chặn máy chủ DBMS thực thi nhiều truy vấn SQL. Trong
trường hợp này, giải pháp thực tế duy nhất sẽ là để cho server DBMS truy cập
tới key mã hóa, nhưng điều đó cũng sẽ cho phép kẻ xấu đạt được truy cập tới
toàn bộ dữ liệu.
CryptDB giải quyết thách thức này bằng những ý tưởng chính sau:
Đầu tiên là thực thi các truy vấn SQL trên dữ liệu mã hóa. CryptDB thực
hiện ý tưởng này bằng cách sử dụng một chiến lược mã hóa nhận biết
SQL (SQL-aware encryption). CryptDB mã hóa mỗi mục dữ liệu theo
cách mà cho phép DBMS thực thi trên dữ liệu chuyển đổi. CryptDB hiệu
quả bởi nó chủ yếu sử dụng mã hóa đối xứng, tránh mã hóa đồng cấu đầy
đủ (fully homomorphic encryption), và chạy trên phần mềm DBMS
không sửa đổi (bằng cách sử dụng các hàm chức năng người dùng định
nghĩa).
Kỹ thuật thứ hai là điều chỉnh mã hóa dựa trên truy vấn (adjustable
query-based encryption). Một vài lược đồ mã hóa làm rò rỉ thông tin về
dữ liệu cho máy chủ DBMS nhiều hơn một số khác, nhưng được yêu cầu
để xử lý các truy vấn nhất định. Để tránh tiết lộ tất cả mã hóa có thể của
dữ liệu cho DBMS từ trước đó, CryptDB điều chỉnh lược đồ má hóa nhận
biết SQL (SQL-aware encryption scheme) cho bất kỳ mục dữ liệu đã cho
nào, tùy thuộc vào các truy vấn được thực hiện. Để thực hiện những điều
chỉnh này một cách hiệu quả, CryptDB sử dụng onions of encryption (sẽ
được giải thích rõ ràng hơn trong các phần sau). Các onion là một cách
23
mới để lưu trữ một cách chặt chẽ nhiều bản mã trong mỗi onion khác
trong cơ sở dữ liệu để tránh chi phí trong việc mã hóa lại.
2.2Truy vấn trên dữ liệu mã hóa
Bây giờ ta sẽ tìm hiểu cách mà CryptDB thực thi các truy vấn SQL trên
dữ liệu mã hóa nhằm chống lại mối đe dọa từ các DBA xấu của bên thứ ba.
Các máy DMBS và những người quản trị không đáng tin cậy, nhưng ứng
dụng và proxy là tin cậy.
CryptDB cho phép máy chủ DBMS thực thi các truy vấn SQL trên dữ liệu
mã hóa gần như giống với nó được thực thi cùng các truy vấn trên dữ liệu rõ.
Các ứng dụng có sẵn không cần thiết thay đổi. Cách tiến hành truy vấn của
DMBS cho truy vấn mã hóa thường giống như đối với các truy vấn nguyên
gốc, ngoại trừ các toán tử bao gồm truy vấn, chẳng hạn như lựa chọn
(selections), phép chiếu (projections), kết hợp (joins), tập hợp (aggregates),
và xếp thứ tự (ordering), được thực hiện trên bản mã, và sử dụng các toán tử
sửa đổi trong một số trường hợp.
Proxy của CryptDB lưu trữ một secret master key MK, lược đồ cơ sở dữ
liệu, và các lớp (layers) mã hóa hiện tại của tất cả các cột. Máy chủ DBMS
server chỉ thấy một lược đồ ẩn danh (với tên bảng và tên cột nào được thay
thế bởi các định danh hoàn toàn vô nghĩa), dữ liệu người dùng mã hóa, và một
vài bảng phụ được CryptDB sử dụng. CryptDB cũng trang bị cho máy chủ
với các chức năng người dùng định nghĩa cụ thể cho phép máy chủ tính toán
trên các bản mã cho các phép toán nhất định.
Ứng dụng sinh ra một truy vấn, proxy chặn lại và viết lại: để bảo vệ
danh tính của các bảng và cột, nó ẩn danh mỗi tên bảng, tên cột, sử
dụng master key MK mã hóa mỗi hằng số (constant) trong truy vấn
với một lược đồ mã hóa phù hợp nhất cho phép toán mong muốn
Proxy kiểm tra xem liệu máy chủ DBMS có được đưa các key để
điều chỉnh các lớp mã hóa trước khi thực thi truy vấn, và nếu có,
sinh ra một truy vấn UPDATE tại máy chủ DBMS để gọi một UDF
để điều chỉnh lớp mã hóa của các cột thích thợp
Proxy chuyển tiếp truy vấn được mã hóa đến máy chủ DBMS, nơi
24
thực hiện nó sử dụng SQL tiêu chuẩn (đôi khi gọi UDFs cho các
hàm tập hợp (aggregation) hoặc tìm kiếm từ khóa).
DBMS server trả về kết quả truy vấn (được mã hóa), proxy sẽ giải
mã và trả về cho ứng dụng.
Random (RND). RND cung cấp bảo mật tối đa trong CryptDB: an toàn
ngữ nghĩa dưới một tấn công lựa chọn bản rõ thích ứng - IND-CPA, hai giá trị
bằng nhau được ánh xạ tới hai bản mã khác nhau. Mặt khác, RND không cho
phép bất cứ sự tính toán nào được thực hiện hiệu quả trên bản mã. Một cấu
trúc hiệu quả của RND là sử dụng mã hóa khối như AES hoặc Blowfish trong
chế độ CBC với một vector khởi tạo ngẫu nhiên (IV). (hầu như sử dụng AES,
ngoại trừ các giá trị nguyên, Blowfish được sử dụng với kích thước khối là 64
bit vì khối 128 bit của AES sẽ khiến cho bản mã dài hơn đáng kể). Lớp mã
hóa này cho phép máy chủ thực hiện các truy vấn SELECT không có điều
kiện.
Deterministic (DET). DET có một đảm bảo hơn yếu hơn, nhưng nó vẫn
cung cấp bảo mật mạnh mẽ: nó chỉ rò rỉ các giá trị mã hóa tương ứng với giá
trị cùng một dữ liệu, bằng cách sinh ra cùng bản mã cho cùng bản rõ. Lớp mã
hóa này cho phép server thực hiện các equality checks, có nghĩa là nó có thể
thực hiện SELECT … WHERE …, GROUP BY, IN, COUNT, DISTINCT,…
Trong giới hạn mật mã, DET là một phép hoán vị giả ngẫu nhiên (pseudo-
random permutation – PRP – hay còn gọi là Block ciphers). Với các giá trị 64
bit và 128 bit, một mã hóa khối với một kích thước khối phù hợp được sử
dụng (Blowfish và AES tương ứng). Các giá trị nhỏ hơn 64 bít sẽ được đệm
(padding), nhưng với dữ liệu dài hơn một khối AES 128 bit, chế độ CBC tiêu
chuẩn của phép toán sẽ rò rỉ tiền tố bằng nhau (ví dụ, nếu hai mục dữ liệu có
một tiền tố đồng nhất dài ít nhất 128 bit). Để tránh vấn đề này, AES được sử
dụng với biến thể của chế độ CMC [7].
25
Order-preserving encryption (OPE). OPE cho phép quan hệ thứ tự giữa
các mục dữ liệu được thiết lập dựa theo các giá trị mã hóa của chúng mà
không tiết lộ dữ liệu của chính nó. Nếu x < y, thì OPEK(x) < OPEK(y), với bất
cứ khóa bí mật K nào. Vì thế, nếu một cột được mã hóa với OPE, server có
thể thực hiện các truy vấn sắp xếp (range queries) khi các hằng số được mã
hóa đã cho OPEK(c1) và OPEK(c2) tương ứng với khoảng [c1, c2]. Server cũng
có thể thực hiện ORDER BY, MIN, MAX, SORT, vv…
OPE là một lược đồ mã hóa yếu hơn DET vì nó để lộ thứ tự. Do đó,
CryptDB proxy sẽ chỉ để lộ các cột được mã hóa OPE cho máy chủ nếu
những người dùng yêu cầu các truy vấn thứ tự (order queries) trên các cột đó.
Thuật toán mã hóa của Boldyreva [8] được sử dụng giúp OPE đạt được những
đảm bảo an toàn có thể chứng minh được: mã hóa tương đương với một ánh
xạ ngẫu nhiên duy trì thứ tự.
Chú ý răng SEARCH chỉ cho phép CryptDB thực hiện các tìm kiếm từ
khóa từ đầy đủ (full-word keyword searches); nó không thể hỗ trợ các biểu
thức chính quy tùy ý. Với các ứng dụng yêu cầu tìm kiếm nhiều từ liền kề,
CryptDB cho phép nhà phát triển ứng dụng vô hiệu hóa việc loại bỏ trùng lặp
và sắp xếp lại bằng cách chú thích lược đồ, mặc dù đây không phải là mặc
định. Sử dụng LIKE hầu hết được SEARCH hỗ trợ với những chú thích như
vậy. Tất nhiên, ta vẫn có thể kết hợp nhiều toán tử LIKE với AND hoặc OR
để kiểm tra xem nhiều từ độc lập có trong văn bản hay không.
Các truy vấn được xử lý như các cột trong cơ sở dữ liệu, do đó, CryptDB
là hướng cột (column-oriented). Nếu một giá trị cần được giải mã tới lớp yếu
hơn, thì toàn bộ cột chứa giá trị đó sẽ được giải mã. Tuy nhiên, nó gây ra rò rỉ
thông tin nhiều hơn yêu cầu. Nếu chúng ta cần một giá trị được giải mã đến
lớp yếu nhất, toàn bộ cột có chứa giá trị đó cũng sẽ được giải mã tới lớp này
và dẫn tới rò rỉ thông tin. Cũng lưu ý rằng lớp trong cùng là lớp yếu nhất,
nhưng nó cũng không tiết lộ bất kỳ bản rõ nào cho máy chủ DBMS. Lớp bên
trong của các onion là Equi-JOIN, OPE-JOIN, SEARCH và HOM không bao
giờ được gỡ bỏ.
Hình 2. 2 EQ Onion.
EQ Onion. Tại lớp an toàn nhất của EQ onion là lớp RND. Lớp RND này
mã hóa mỗi giá trị với AES (thuật toán Rjindaels) trong chế độ CBC. Với số
nguyên, Blowfish trong chế độ CBC thích hợp hơn vì kích thước khối 64 bit
của nó thay vì kích thước khối 128 bit sẽ giảm độ dài của bản mã. Giá trị khởi
tạo cho cả hai loại mã hóa là các giá trị được chọn ngẫu nhiên. Mỗi giá trị
được mã hóa thành các bản mã khác nhau kể khi bản rõ là như nhau. Vì lý do
này, lớp RND không thể bị tấn công lựa chọn bản rõ thích ứng. Tuy nhiên,
lớp này không cung cấp chức năng hiệu quả.
28
Khi cần thiết thực hiện equality check, Lớp RND cần được loại bỏ. Lớp
bên trong tiếp theo của EQ onion là lớp DET. Lớp này là lớp bất định
(derministic layer). Sau khi mã hóa được thực hiện, nếu hai giá trị giống nhau
thì bản mã tương ứng của chúng cũng giống nhau.
Với các giá trị trong cùng một cột, hai lớp RND và DET đủ để xử lý các
truy vấn. Tuy nhiên, một vài truy vấn cần kiểm tra sự bằng nhau (equality)
của hai cột khác nhau hoặc hai cột khác nhau của các bảng khác nhau. Đối
với những trường hợp này, lớp hiện tại cần được cập nhật thành lớp Equi-
JOIN.
ORD onion. Lớp an toàn nhất của ORD onion giống như EQ onion, là lớp
RND. Lớp bên trong của RND cho ORD onion là lớp OPE. Các thuật toán mã
hóa duy trì thứ tự không có đủ an toàn và hiệu quả cho đến bây giờ. Nếu mã
hóa của x nhỏ hơn mã hóa của y, thì giá trị x cũng nhỏ hơn giá trị y. Nếu
chúng ta tìm ra bất kỳ giá trị được mã hóa nào gữa hai mã hóa này, thì bản rõ
cũng sẽ nằm giữa x và y. Cụ thể, lược đồ này rò rỉ thứ tự, do đó, nó là một
lược đồ yếu hơn khi được so sánh với sự rò rỉ của equality.
Đối với các giá trị tại cùng một cột, lớp này là đủ để xử lý các truy vấn,
nhưng nếu hai cột khác nhau được so sánh để kiểm tra thứ tự, thì chúng ta cần
tháo bỏ lớp OPE, và đạt tới lớp OPE-JOIN. Lớp này thiếu tính chức năng hơn
lớp EQUI-JOIN của EQ onion. Để điều chỉnh hai cột là không thể vì sự thiếu
29
hiệu quả của các thuật toán duy trì thứ tự. Có hai giải pháp. Giải pháp đầu tiên
là ứng dụng sẽ khai báo các cột có thể được kết nối, và trong khi sắp xếp các
khóa, cùng một khóa sẽ được sử dụng cho những cột này. Nó không hợp lý
trong hầu hết tình huống khai báo trước. Giải pháp thứ hai là cùng một khóa
sẽ được sử dụng cho tất cả các cột tại lớp này. Giải pháp này cũng không phải
là giải pháp tốt. May thay, các range join không được sử dụng quá nhiều.
SEARCH & ADD onions. SEARCH onion chỉ có một lớp, vì thế không
có quá trình giải mã nào cho onion này. SEARCH onion có một giá trị, và lớp
SEARCH trong đó bao gồm giá trị này. Thuật toán tìm kiếm được sử dụng
trong CryptDB là thuật toán tìm kiếm của Song. Mục đích của SEARCH
onion là tìm kiếm các giá trị mã hóa bên trong một bảng mã hóa. ADD onion
cũng tương tự như vậy. Lớp HOM là lớp duy nhất của ADD onion. Mục đích
của onion này là cung cấp một số chức năng với các giái trị mã hóa mà không
truy cập bản rõ. Điều này có thể đạt được với mã hóa đồng cấu (homomorphic
encryption). Thuật toán được sử dụng cho mã hóa đồng cấu của CryptDB là
thuật toán của Paillier.
Nếu chúng ta có một bảng được gọi là Square có hai cột là EdgeLength và
Number, thì chúng ta có thể tạo một UDF để tính toán diện tích của các hình
vuông bên trong cơ sở dữ liệu. Ví dụ bảng Square trong Hình 2.6.
30
Hình 2. 5 Bảng Square.
Không cần thiết phải giữ các giá trị diện tích thêm vào cơ sở dữ liệu.
Chúng ta có thể tạo một UDF, và gọi nó khi cần tính toán diện tích. Đây là
một ví dụ tạo một UDF.
Hình 2. 7 Các lớp mã hóa Onion và các lớp tính toán được phép.
Tên của Onion cho biết các phép toán chúng cho phép tại một vài lớp của
chúng (Equality, Order, Search, và Addition). Trong thực tế cần nhiều onion,
vì các phép toán được hỗ trợ bởi các lược đồ mã hóa khác nhau không luôn
luôn theo thứ tự một cách hoàn toàn, và vì cần phải cân nhắc hiệu suất thực
hiện (kích thước của bản mã và thời gian mã hóa cho các lớp onion lồng vào
nhau). Phụ thuộc vào loại dữ liệu (và các chú thích (annotations) được cung
cấp bởi nhà phát triển ứng dụng trên lược đồ cơ sở dữ liệu), CryptDB có thể
không duy trì tất cả các onion cho mỗi cột. Ví dụ, Search onion không có ý
nghĩa đối với các số nguyên (integers), và Add onion không có ý nghĩa cho
các chuỗi (strings).
Với mỗi lớp của mỗi onion, proxy sử sử dụng cùng một key cho các giá trị
đang mã hóa trong cùng một cột, và các key khác nhau trên các bảng, các cột,
các onion, và các lớp onion khác nhau. Việc sử dụng cùng một key cho tất cả
các giá trị trên một cột cho phép proxy thực hiện các phép toán trên một cột
mà không phải tính toán các key riêng biệt cho từng hàng. Việc sử dụng các
32
key khác nhau trên các cột ngăn chặn máy chủ tìm ra bất kỳ mối liên hệ bổ
sung nào. Tất cả những key này được bắt nguồn từ masterk key MK. Ví dụ,
với bảng t, cột c, onion o, và lớp mã hóa l, proxy sử dụng key
với PRP là một hoán vị giả ngẫu nhiên – pseudo random permutation (ví
dụ, AES)
Mỗi onion bắt đầu được mã hóa với lược đồ mã hóa an toàn nhất (RND
cho onion Eq và Ord, HOM cho onion Add, và SEARCH cho onion Search).
Khi proxy nhận các truy vấn SQL từ ứng dụng, nó xác định xem các lớp mã
hóa nào cần được gỡ bỏ. Để cho phép P trên cột c thực thi một truy vấn trên
máy chủ, proxy đầu tiên thiết lập lớp onion cần thiết để tính toán P trên c. nếu
mã hóa của c không phải là đã ở một lớp onion mà cho phép P, proxy bóc
tách các lớp onion để cho phép P trên c, bằng cách gửi key onion tương ứng
tới máy chủ. Proxy không bao giờ giải mã dữ liệu qua các lớp onion mã hóa
kém an toàn.
CryptDB thực hiện việc giải mã lớp onion sử dụng các UDF chạy trên
máy chủ DBMS. Ví dụ, để giải mã onion Ord của cột 2 trong bảng 1 tới lớp
OPE, proxy sinh ra truy vấn sau tới server sử dụng DECRYPT_RND UDF:
với K là key phù hợp được tính toán từ phương trình (1). Tại cùng thời
điểm, proxy cập nhật trạng thái bên trong của chính nó để ghi nhớ rằng cột
C2-Ord trong Table1 bây giờ đang ở lớp OPE trong DBMS.
Chú ý rằng việc giải mã onion được thực hiện toàn bộ bởi máy chủ
DBMS. Trong trạng thái ổn định, việc giải mã ở phía máy chủ là không cần
thiết bởi vì việc giải mã onion xảy ra chỉ khi một lớp tính toán mới được yêu
cầu trên một cột. Ví dụ, sau một equality check được yêu cầu trên một cột và
máy chủ đưa cột đó vào lớp DET, cột vẫn tồn tại trong trạng thái đó, và các
truy vấn sau đó với các equality check không yêu cầu giải mã.
33
2.2.5 Cấu trúc dữ liệu trong CryptDB
Trong các hệ thống cơ sở dữ liệu, người dùng yêu cầu một vài thông tin
hoặc chức năng từ các ứng dụng. Các truy vấn SQL được sử dụng để đám ứng
nhu cầu của người dùng. Các máy chủ ứng dụng gửi các truy vấn tới máy chủ
DBMS. Máy chủ DBMS xử lý và phản hồi tập kết quả. Hệ thống này có thể
bị kẻ xấu tấn công hoặc nghe trộm. Các máy chủ DBMS cũng tò mò về các
truy vấn và theo dõi các truy vấn với kết quả của chúng. Khả năng khác là
truy cập vật lý và đĩa có thể gây mất trộm dữ liệu. Trong CryptDB, cơ chế của
các truy vấn là tương tự, nhưng kiến trúc máy chủ một cách nào đó thay đổi
và một máy chủ bổ sung được gọi là Proxy Server được thêm vào hệ thống cơ
sở dữ liệu.
Nó giả định rằng tất cả truy vấn từ máy chủ ứng dụng được thực hiện bởi
Proxy Server và gửi tới DBMS Server sau khi sửa đôi. Mục đích là giữ thông
tin vô nghĩa tại phía DBMS Server để ngăn chặn những người quản trị cơ sở
dữ liệu tò mò dòm ngó tới nội dung của các bảng trong cơ sở dữ liệu của nó.
Vì lý do này, chúng ta cần làm cho toàn bộ dữ liệu trở nên vô nghĩa.
Việc đầu tiên là tạo một bảng để giữ một vài dữ liệu bên trong cơ sở dữ
liệu của DBMS Server. Trong CryptDB, bảng của DBMS Server hoàn toàn
khác với bảng thực. Proxy Server thay đổi tên bảng. Sau đó, tùy theo loại của
cột (ví dụ int, varchar), sẽ được đưa vào các onion có thể. Proxy Server giữ tất
cả các dữ liệu của onion có thể trong các cột khác nhau một cách riêng biệt
trong bảng này. Bảng trong Hình 2.9 là một ví dụ đơn giản.
Bảng được tạo mới từ bảng trong Hình 2.9 bởi Proxy Server được thể hiện
trong Hình 2.10.
Khi một truy vấn đến Proxy Server, nó thay đổi truy vấn, Trước hết, Proxy
Server quyết định onion nào được sử dụng cho truy vấn này. Proxy Server có
các bảng thêm, một trong số chúng là để giữ trạng thái hiện tại của từng onion
của từng cột. Sau khi quyết định onion của truy vấn, Proxy Server nhìn vào
bảng này, và kiểm tra xem bảng hiện tại của onion có đang ở lớp cần thiết cho
truy vấn này không. Nếu không, Proxy Server gọi UDF chịu trách nhiệm gỡ
bỏ lớp hiện tại đến lớp cần thiết. Sau quá trình này, Proxy Server thay đổi truy
vấn, và gửi nó nó DBMS Server. Toàn bộ dữ liệu được lưu trữ trong cơ sở dữ
liệu của DBMS Server đã được mã hóa, và các truy vấn không có ý nghĩa đối
với người quản trị cơ sở dữ liệu.
DBMS Server xử truy vấn đã được sửa đổi và trả về một kết quả đã mã
hóa cho Proxy Server. Proxy Server lấy các giá trị mã hóa, giải mã chúng và
gửi cho Application Server. Application Server không quan tâm đến bất kỳ
quá trình mã hóa nào, nó chỉ gửi bản rõ gốc và lấy kết quả, cung cấp dịch vụ
cho các client với những kết quả này. Cấu trúc máy chủ cơ bản của CryptDB
là như vậy.
Proxy cũng thay thế mỗi hằng số trong truy vấn với mã hóa onion tương
ứng của hằng số đó, dựa trên các tính toán trong đó nó được sử dụng. Ví dụ,
nếu một truy vấn chứa WHERE Name = „Alice‟, proxy mã hóa „Alice‟ bằng
cách áp dụng lần lượt tất cả các lớp mã hóa tương ứng với onion Eq mà vẫn
chưa được loại bỏ khỏi C2-Eq.
Cuối cùng, server thay thế các toán tử nhất định với các UDF tương ứng.
Ví dụ, toán tử tập hợp SUM và toán tử cộng cột „+‟ phải được thay thế với một
lời gọi của một UDF mà thực hiện phép tính cộng HOM của các bản mã. Các
toán tử Equality và Order (như „=‟ và „<‟ chẳng hạn) không cần thiết thay thế
như vậy và có thể được áp dụng trực tiếp vào các bản mã DET và OPE.
Khi proxy chuyển đổi truy vấn, nó gửi truy vấn tới DBMS server, nhận
các kết quả truy vấn (bao gồm dữ liệu mã hóa), giải mã các kết quả sử dụng
các onion key tương ứng, và gửi kết quả giải mã cho ứng dụng.
Thực thi các truy vấn không có chức năng. Giả sử bảng bảng Studens
có hai cột là ID và Name. Cột ID có giá trị nguyên trong khi cột Name có giá
trị là chuỗi. Bảng Students được tạo ra bằng câu lệnh sau:
Sau khi tạo bảng, chúng ta chèn một vài giá trị như sau:
Khi chúng ta chạy tất cả các truy vấn này, Application Server tạo bảng
Students. bảng này có dữ liệu thô, vì vậy nó không phải là cách tốt để lưu trữ
bảng này trong cơ sở dữ liệu của DBMS Server vì lý do an ninh. Cụ thể,
Proxy Server tạo một bảng đã mã hóa mới cho DBMS Server. Bảng mã hóa
được tạo mới sẽ như bảng trong Hình 2.12.
Vì loại dữ liệu của cột ID là nguyên, SEARCH onion không dùng cho cột
này và loại dữ liệu của cột Name là chuỗi, HOM onion cũng không dùng cho
cột này. Như đã mô tả từ trước, tất cả các lớp sẽ ở lớp mã hóa an toàn nhất lúc
đầu. Có bảy lớp. Các lớp an toàn nhất của các onion là ba lớp RND,
SEARCH và HOM. Tuy nhiên, chúng cũng có ít chức năng nhất. Ví dụ, lớp
RND không rò rỉ bất kỳ dữ liệu nào, nhưng nó không có chức năng hiệu quả.
Nếu chúng ta quay trở lại ví dụ, bằng cách sử dụng lớp an toàn nhất, chúng ta
có thể chạy các truy vấn như SELECT * FROM Students;”, “SELECT Name
FROM Students;”
Chú ý rằng Proxy phải thay đổi các truy vấn để bảo vệ nội dung bảng gốc.
Nếu chúng ta tiếp tục với truy vấn “SELECT Name FROM Students;”, truy
vấn được thay đổi sẽ như sau:
DBMS Server sẽ xử lý truy vấn này, và trả về kết quả trong Hình 2.13
Thực thi truy vấn với chức năng equality check. Để hiểu sự thực thi
truy vấn trên các bản mã, xem xét lược đồ cơ sở dữ liệu ví dụ sau.
Giả sử Eq Onion đang ở lớp mã hóa mặc định RND, thực hiện truy vấn
sau:
SELECT ID FROM Employees WHERE Name = „Alice‟ Lúc này mã hóa của Name
sẽ được yêu cầu giảm xuống tới lớp DET. Sau đây là các bước để thực hiện được truy vấn trên dữ liệu
mã hóa:
với cột C2-Eq tương ứng với Name. Tại DBMS, cột C2-Eq được giải mã
tới lớp DET:
proxy sau đó cập nhật vào log rằng Table1 cột C2-Eq hiện tại đang ở lớp
DET trong DMBS.
với cột C1-Eq tương ứng với ID, và x7b3d là mã hóa Eq onion của
“Alice” với các key KT1,C2,Eq,JOIN và KT1,C2,Eq,DET. Chú ý rằng proxy phải yêu càu
IV ngẫu nhiên từ cột C1-IV để giải mã bản mã RND từ C1-Eq. Các lớp Eq
Onion và các giá trị mã hóa vẫn không thay đổi sau bước UPDATE.
Thực thi truy vấn với các chức năng order check. Mã hóa duy trì thứ tự
(Order preserving encryption) là một vấn đề khó khăn trong các cơ chế tìm
kiếm riêng tư bao gồm cả trong CryptDB. Phần này có thể được tóm tắt như
sau, nếu giá trị mã hóa của x nhỏ hơn giá trị mã hóa của y, thì ta biết được
rằng giá trị x nhỏ hơn y. Nếu chúng ta tìm ra bất kỳ giá trị mã hóa nào nằm
giữa hai giá trị mã hóa này, thì dạng giải mã sẽ nằm giữa x và y. Lược đồ này
để lộ thứ tự, nó là lược đồ yếu nhất. các truy vấn “lớn hơn”, “nhỏ hơn”,
ORDER BY, SORT, MAX, MIN có thể được thực hiện với lược đồ mã hóa.
Việc thực hiện mã hóa duy trì thứ tự không được thực hiện cho đến khi có
CryptDB, và thậm chí cũng không có ước lượng nào cho tính thực tế của lược
đồ. Có nghĩa là, CryptDB là triển khai đầu tiên của mã hóa duy trì thứ tự sử
dụng thuât toán của Boldyreva [8].
Các truy vấn với chức năng tìm kiếm. CryptDb sử dụng triển khai thuât
toán tìm kiếm của Song [11]. Thuật toán này thực hiện các tìm kiếm từ đầy đủ
(full-word) với các truy vấn LIKE. Trong CryptDB, việc lặp lại các từ được
loại bỏ và các từ được hoán vị để cung cấp an toàn hơn trong tìm kiếm. Tuy
nhiên bằng cách so sánh số lượng bản mã RND với bản mã SEARCH, có thể
biết được số lượng các từ lặp lại. Sau đó, các từ được đệm (padded) tới độ dài
cố định N bit để mã hóa theo thuật toán của Song. Các truy vấn có thể được
chạy như sau:
Sau khi truy vấn này tới Proxy Server, nó sẽ sửa đổi truy vấn với việc mã
hóa chuỗi “Alice”. Mã hóa được giả sử là x29b0 trong ví dụ.
Một trong các UDF làm cho DBMS Server kiểm tra sự phù hợp của bản
mã trong cột SEARCH với mã hóa của chuỗi “Alice”. Sự rò rỉ duy nhất cho
DBMS Server là liệu có sự phù hợp nào với từ đầy đủ này hay không. Các
biểu thức chính quy và nhiều từ không được hỗ trợ, chỉ các tìm kiếm từ đầy
đủ (full-word) có thể được thực hiện với thuật toán này, vì thế phần tìm kiếm
này của CryptDB không đủ đáp ứng nhu cầu của chúng ta cho các truy vấn
tìm kiếm.
Các truy vấn với chức năng tính tổng các giá trị. Từ quan điểm của các
truy vấn SQL, tổng của số nguyên được sử dụng không chỉ cho các truy vấn
SUM mà còn được sử dụng để tính toán giá trị trung bình. Việc thực hiện
chức năng cộng cho bản mã có thể đạt được bằng cách sử dụng mã hóa đồng
cấu. Trong mã hóa đồng cấu, phép nhân của hai bản mã là mã hóa của phép
cộng của bản rõ của hai bản mã đó. Ta có thể mô tả như sau:
m1 và m2 là bản rõ của hai giá trị
c1 × c2 = Enc(m1 + m2) với Enc là hàm mã hóa có đặc tính đồng cấu.
Thuật toán đồng cấu được sử dụng trong CryptDB là thuật toán của Paillier
[10]. Trong CryptDB, chúng ta giữ các giá trị mã hóa trong cơ sở dữ liệu. Vì
lý do này, đặc tính đồng cấu là một giải pháp cho CryptDB. Các truy vấn với
SUM và AVG được bao gồm trong phần này. Chúng ta có thể tạo ra một truy
vấn theo ví dụ sau, ta sẽ tính toán tổng số điểm (Grade) của các học sinh trong
bảng ví dụ sau được minh họa trong Hình 2.20.
Hình 2. 24 Bảng được cập nhật với các giá trị Grade được thêm.
Hình 2. 25 Bảng được cập nhật với các giá trị Grade được thêm.
Bảng trong Hình 2.20 không được giữ bên trong cơ sở dữ liệu. Proxy
Server mã hóa các giá trị cho việc tạo ra một bảng khác cho DBMS Server.
Cơ sở dữ liệu được tạo ra cho DBMS Server sẽ giống như bảng trong Hình
2.21.
Hình 2. 26 Bảng được cập nhật được mã hóa bên Proxy Server.
Hình 2. 27 Bảng được cập nhật được mã hóa bên Proxy Server.
Truy vấn ví dụ của chúng ta có thể giống như sau:
Proxy Server sẽ chỉnh sửa truy vấn, và gửi tới DBMS Server. Theo bảng
của DBMS Server, truy vấn sửa đổi sẽ như sau:
SELECT SUM (c3-Hom) AS average FROM DBMS_Table2;
Sau khi lấy truy vấn SQL này, DBMS Server sẽ gọi UDF chịu trách nhiệm
tính toán tổng của các giá trị. Tính tổng này sẽ được thực hiện bằng cách sử
dụng đặc tính đồng cấu. Có nghĩa là, các giá trị mã hóa của cột C3-HOM sẽ
được nhân và kết quả sẽ là dạng mã hóa của các bản rõ.
Ở đây, các giá trị là qmdl, ahc0, và h9dj. Giả sử rằng giá trị của phép nhân
là a83g.
Lưu ý rằng DBMS Server sẽ không thể biết được các giá trị và kết quả vì
mã hóa. Các bản mã được nhân sẽ dẫn đến kết quả một bản mã mới. Proxy
Server sẽ lấy kết quả mã hóa này và sẽ giải mã nó. Giá trị giải mã này sẽ là
tổng của các giá trị bên trong cột Grade nhờ đặc tính đồng cấu.
nếu Dec là hàm giải mã của Enc có đặc tính đồng cấu thì ta sẽ có:
Dec (a83g) = 86 + 77 + 95
Cuối cùng, phép tính tổng được thực hiện chính xác trên phía DBMS
Server mà không để lộ ra bất kỳ thông tin nào trên dữ liệu. Cụ thể là, DBMS
Server sẽ không thể nhìn thấy các bản rõ, những nó vẫn có thể tính tổng chỉ
bằng cash tính toán phép nhân trên các bản mã.
Thực thi các truy vấn viết. Để hỗ trợ các truy vấn INSERT, DELETE, và
UPDATE, proxy áp dụng cùng một xử lý cho các vị từ (ví dụ, mệnh đề
WHERE) như cho các truy vấn đọc. Các truy vấn DELETE không yêu cầu
thêm xử lý nào khác. Với tất cả các truy vấn INSERT và UPDATE mà thiết
lập giá trị của một cột thành một hằng số, proxy mã hóa từng giá trị của cột
được chèn vào với từng lớp onion mà vẫn chưa được gỡ bỏ trong cột đó.
Các đặc điểm DMBS khác. Hầu hết các cơ chế DMBS khác, như giao
dịch (transaction) và lập chỉ mục (indexing) hoạt động tương tự với CryptDB
trên dữ liệu mã hóa như chúng làm trên bản rõ mà không có sự thay đổi nào.
CryptDB hiện tại không hỗ trợ các thủ tục lưu trữ, mặc dù các thủ tục lưu trữ
nhất định có thể được hỗ trợ bằng cách viết lại mã của chúng theo cùng cách
mà proxy của CryptDB viết lại các câu lệnh SQL.
DBMS xây dựng các chỉ mục cho dữ liệu mã hóa theo cùng một cách như
cho bản rõ. Hiện tại, nếu ứng dụng yêu cầu một chỉ mục (index) trên một cột,
proxy yêu cầu máy chủ DBMS xây dựng các chỉ mục trên các lớp DET, Equi-
JOIN, OPE, hoặc OPE-JOIN onion của cột đó (nếu chúng bị lộ), nhưng không
phải cho RND, HOM, hoặc SEARCH. Các thuật toán lựa chọn chỉ mục hiệu
quả hơn có thể được nghiên cứu.
Nếu các truy vấn mà có thể được sinh ra hoặc các cặp cột mà có thể được
liên kết được biết từ trước đó,việc hỗ trợ equi-join rất dễ dàng: CryptDB có
thể sử dụng mã hóa DET với cùng key cho mỗi nhóm của các cột mà được
liên kết với nhau. Tuy nhiên, trường hợp khó khăn là khi proxy không biết tập
các cột được liên kết từ trước đó, và do đó không biết các cột nào phải được
mã hóa với các khóa phù hợp.
Để giải quyết vấn đề này, một cơ sở mật mã mới được giới thiệu, JOIN-
ADJ (adjustable join), cho phép DMBS server điều chỉnh khóa của từng cột
tại thời điểm chạy. JOIN-ADJ có thể được coi như là một băm mật mã được
bảo vệ bằng khóa (keyed cryptographic hash) với các đặc điểm bổ sung mà
các băm có thể được điều chỉnh để thay đổi khóa của chúng mà không cần
truy cập tới bản rõ. JOIN-ADJ là một hàm tất định của các đầu vào của nó, có
nghĩa là nếu hai bản rõ giống nhau, các giá trị JOIN-ADJ tương ứng cũng
bằng nhau. JOIN-ADJ chống được đụng độ (collision-resistant), và có chiều
dài đầu ra đủ dài (192 bit) để cho phép chúng ta thừa nhận rằng các đụng độ
không bao giờ xảy ra trong thực tế.
Lược đồ mã hóa Equi-JOIN là một chuỗi kết nối Equi-JOIN(v) = JOIN-
ADJ(v)||DET(v). cấu trúc này cho phép proxy giải mã một cột JOIN(v) để thu
được v bằng cách giải mã thành phần DET, và cho phép máy chủ DBMS
kiểm tra hai giá trị Equi-JOIN có bằng nhau không bằng cách so sánh các
thành phần JOIN-ADJ.
Mỗi cột ban đầu được mã hóa tại lớp Equi-JOIN sử dụng khóa khác nhau,
do đó ngăn chặn bất kỳ các liên kết nào giữa các cột. Khi một truy vấn yêu
cầu một liên kết, proxy đưa cho máy chủ DBMS một khóa onion để điều
chỉnh các giá trị JOIN-ADJ trong một hoặc hai cột, để nó phù hợp với khóa
JOIN-ADJ của cột khác (được ký hiệu là cột join-base). Sau khi điều chỉnh,
các cột chia sẻ cùng một khóa JOIN-ADJ, cho phép máy chủ DBMS liên kết
chúng lại với nhau. Các thành phần DET của Equi-JOIN vẫn được mã hóa với
các khóa khác nhau.
Chú ý rằng liên kết điều chỉnh được ở đây có tính bắc cầu: nếu người dùng
liên kết các cột A và B và rồi liên kết cột B và C, máy chủ có thể liên kết A và
C. Tuy nhiên, máy chủ không thể liên kết các cột trong “các nhóm bắc cầu”
khác nhau. Ví dụ, nếu cột D và E được liên kết với nhau, DBMS server không
thể liên kết cột A và D.
Sau một truy vấn liên kết ban đầu, các giá trị JOIN-ADJ vẫn được chuyển
đổi với cùng khóa, vì vậy không cần thiết điều chỉnh lại cho các truy vấn liên
kết đến sau giữa cùng hai cột. Một ngoại lệ là nếu ứng dụng sinh ra truy vấn
khác, liên kết một trong các cột đã được điều chỉnh với một cột thứ ba, sẽ
khiến cho proxy điều chỉnh lại cột sang một join-base khác. Để tránh những
dao động (oscillations) và để hội tụ (converge) tại một trạng thái mà tất cả các
cột trong một nhóm bắc cầu chia sẻ cùng join-base, CryptDB chọn cột đầu
tiên có tên theo thứ tự từ điển trong bảng là join-base. Với n cột, số lượng
tổng thế tối đa của các chuyển đổi join là n(n-1)/2.
Đối với các range join, một lược đồ tái điều chỉnh động tương tự là khó
khăn để xây dựng do thiếu sót cấu trúc trong các lược đồ OPE. Thay vào đó,
CryptDB yêu cầu cặp cột đó mà sẽ được liên hệ với nhau bằng các liên kết
được ứng dụng khai báo trước, do đó các key phù hợp được sử dụng cho lớp
OPE-JOIN của các cột đó; nếu không, cùng một key sẽ được sử dụng cho tất
cả các cột tại lớp OPE-JOIN. May mắn thay, các range join hiếm khi xuất
hiện.
Cấu trúc JOIN-ADJ. Thuật toán được sử dụng để mã hóa là đường cong
elliptic (elliptic-curve cryptography - ECC). JOIN-ADJ K(v) được tính toán
như sau:
Với K là khóa khởi tạo cho bảng, cột, onion và lớp đó, P là một điểm trên
một đường cong elliptic (là một tham số public), và PRFK0 là một hàm giả
ngấu nhiên (pseudo-random function) ánh xạ các giá trị tới các số giả ngẫu
nhiên, như AESK0(SHA(v)) chẳng hạn, với K0 là một khóa, khóa này như nhau
cho tất cả các cột và có nguồn gốc từ MK. Các “lũy thừa” (“exponentiation”)
thực tế là sự bổ sung các hình lặp đi lặp lại của các điểm đường cong elliptic;
nó nhanh hơn đáng kể so với lũy thừ RSA.
Khi một truy vấn join cột c và c’, mỗi khóa K và K’ tại lớp join, proxy tính
toán ΔK = K/K’ (trong một nhóm thích hợp) và gửi nó cho máy chủ. Sau đó
với JOIN-ADJK’(v) đã cho (các giá trị JOIN-ADJ từ cột c‟) và ΔK, máy chủ
DBMS sử dụng một UDF để điều chỉnh key trong c’ bằng cách tính :
Bây giờ các cột c và c‟ chia sẻ cùng JOIN-ADJ key, và DBMS có thể thực
hiện một equi-join trên c và c‟ bằng cách lấy bộ phận JOIN-ADJ của JOIN
onion cipertext.
Tại một mức cao hơn, độ an toàn của lược đồ này là máy chủ không thể
suy ra các mối quan hệ liên kết giữa các nhóm của các cột mà không được
yêu cầu bởi các truy vấn liên kết hợp pháp, và lược đồ không để lộ bản rõ.
CHƯƠNG 3: PHÂN LOẠI DỮ LIỆU VÀ CHIẾN LƯỢC
BẢO MẬT
3.1 Giới thiệu
Dữ liệu là tài nguyên quan trọng cho bất kỳ tổ chức nào. Dữ liệu có thể thuộc
nhiều dạng khác nhau, như dạng số, từ, hình ảnh, v.v. Bảo mật dữ liệu và an ninh
là vấn đề quan trọng cho mọi tổ chức. Dữ liệu kèm theo những đặc tính khác nhau
như độ chính xác, tính hợp lệ, và độ tin cậy, v.v. Được mô tả như bên dưới:
Độ chính xác: Đề cập tới độ chính xác của dữ liệu được xác định bởi nguồn
gốc. Dữ liệu phải chính xác cho mục đích sử dụng và nên được sử dụng một
lần tại đúng thời điểm.
Tính hợp lệ: Dữ liệu được ghi lại và sử dụng cho các yêu cầu liên quan.
Đầy đủ: Dữ liệu được sử dụng phải đầy đủ và hoàn chỉnh.
Khả năng truy cập: Liên quan tới thời gian và chi phí truy cập dữ liệu
Tính nhất quán: Đề cập tới sự đồng nhất về mặt nội dung liên quan đến các
thay đổi và giao dịch sử dụng dữ liệu.
Vấn đề bảo mật dữ liệu bao gồm tính bí mật, toàn vẹn, sẵn sàng. Tính bí mật dữ
liệu liên quan tới chính sách bảo mật dữ liệu bao gồm xác thực và quyền truy cập
dữ liệu nhạy cảm. Tính toàn vẹn dữ liệu liên quan tới nội dung dữ liệu. Tính nhất
quán và độ chính xác của dữ liệu là cần thiết để đạt được tính toàn vẹn. Các vấn đề
tính sẵn sàng của dữ liệu liên quan tới việc lưu trữ, quy định về khôi phục thảm
họa và kế hoạch dự phòng.
Mối quan tâm về tính sẵn sàng dữ liệu là một vấn đề quan trọng đối với bất kỳ tổ
chức nào khi chuyển qua đám mây. Các vấn đề bảo mật liên quan tới sự gia tăng
dữ liệu khi chuyển lên đám mây. Kiểm soát người dùng về dữ liệu, cơ chế bảo vệ
dữ liệu được cung cấp và tính sẵn sàng dữ liệu là một vài vấn đề mà người dùng
cần biết trước khi sử dụng đám mây cho việc lưu trữ dữ liệu. Dữ liệu được lưu trữ
trên đám mây nên được bảo vệ từ thảm họa mã độc không mong muốn. Các thảm
họa này có thể là nhân tạo hay tự nhiên.
Phân loại dữ liệu là quá trình xác định mức độ dữ liệu khác nhau và quyết định độ
nhạy cảm của nó. Nó là một hoạt động cần thiết tại các giai đoạn khác nhau như
khi dữ liệu đang được khởi tạo, sửa đổi, lưu trữ, hay vận chuyển. Việc phân loại
dữ liệu xác định mức độ cần được bảo mật và giá trị của dữ liệu đó về tài sản
doanh nghiệp. Phân loại dữ liệu hoàn thành dựa trên các yếu tố khác nhau. Một số
phân loại dữ liệu theo điểm yếu liên quan tới những thứ đã biết. Chúng được công
khai. Một số thì phân loại dữ liệu dựa trên cách nó được tạo, dữ liệu cá nhân người
dùng, mẫu sử dụng của chúng, vv.
Trong tài nguyên dữ liệu môi trường điện toán đám mây là rất quan trọng phụ
thuộc vào doanh nghiệp và mô hình phân phối dịch vụ. Để cung cấp việc kiểm soát
truy cập và xác thực, phân loại dữ liệu dựa trên tiêu chí mức độ an toàn khu vực
mà nhiều tổ chức sử dụng hoặc cung cấp dịch vụ đám mây.
3.2 Phân loại dữ liệu
Phân loại dữ liệu là quá trình định danh thành phần dữ liệu liên quan tới giá trị của
nó trong doanh nghiệp. Giá trị được định danh dựa trên phạm vi truy cập và sử
dụng của chúng. Hình 3.1 chỉ ra ba loại đặc tính trên dữ liệu phải được phân loại
và có thể cân nhắc các bảo mật phù hợp.