Mó hoỏ dữ liệu

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Vấn đề bảo mật cơ sở dữ liệu trong cơ sở dữ liệu phân tán (Trang 92 - 105)

IV.3.2.1. Sử dụng gúi DBMS_CRYPTO mó hoỏ dữ liệu

Để thờm vào việc điều khiển truy cập, ta cú thể sử dụng mó hoỏ dữ liệu để làm giảm rủi ro. Tuy nhiờn, mó hoỏ dữ liệu khụng phải là phƣơng ỏn bảo vệ

- 91 -

đõy. Vớ dụ: SSL một giao thức mó hoỏ và xỏc thực chuẩn trờn mạng Internet, sử dụng mó hoỏ để xỏc thực một cỏch chắc chắn ngƣời dựng bằng phƣơng tiện cỏc chứng chỉ số X.509. SSL cũng sử dụng mó hoỏ để bảo mật dữ liệu và checksum nhằm đảm bảo tớnh toàn vẹn của dữ liệu khi mó hoỏ và giải mó. Việc mó hoỏ dữ liệu là mối liờn hệ trong suốt với ngƣời dựng hoặc ứng dụng. Cỏc giải phỏp mó hoỏ dữ liệu đƣợc ứng dụng để mó hoỏ dữ liệu nhạy cảm cần đƣợc bảo mật trƣớc khi lƣu trữ trong CSDL nhƣ những dữ liệu về số thẻ tớn dụng, số chứng minh thƣ …

Để đỏp ứng những yờu cầu khi xõy dựng hệ thống quản lý thụng tin Xuất nhập cảnh, cỏc giải phỏp bảo mật dữ liệu do hệ quản trị CSDL Oracle cung cấp đƣợc cõn nhắc lựa chọn. Hệ quản trị CSDL Oracle cung cấp gúi DBMS_CRYPTO trong PL/SQL để mó hoỏ và giải mó dữ liệu lƣu trữ. Gúi này đƣợc cung cấp vài chuẩn cụng nghệ về mó hoỏ và hàm băm bao gồm thụõt toỏn mó hoỏ AES. AES đƣợc NIST chấp nhận để thay thế chuẩn mó hoỏ DES. Trong DBMS_CRYPTO cú chứa những thủ tục và hàm mó hoỏ cơ bản cho phộp mó hoỏ và giải mó cỏc trƣờng dữ liệu cần che dấu trờn đƣờng truyền thuộc những kiểu dữ liệu đƣợc Oracle hỗ trợ. Đặc biệt nú cũn hỗ trợ mó hoỏ và giải mó cỏc trƣờng dữ liệu thuộc kiểu dữ liệu BLOBs và CLOBs. Do vậy, khi sử dụng cỏc giải phỏp mó hoỏ và giải mó dữ liệu cũng phự hợp cho việc mở rộng hệ thống sau này. Hơn nữa nú cũn hỗ trợ để cú thể mó hoỏ dữ liệu chuyển từ cỏc kiểu dữ liệu khỏc nhau qua cỏc CSDL khỏc nhau.

IV.3.2.2. Cỏc thuật toỏn sử dụng mó hoỏ dữ liệu

CSDL Oracle cài đặt package này trong khung nhỡn của ngƣời dựng SYS, Quản trị CSDL cú thể phõn quyền truy cập và sử dụng gúi này cho một số ngƣời dựng yờu cầu.

Gúi DBMS_CRYPTO cung cấp những thuật toỏn mó hoỏ sau:

1. DES - Thụõt toỏn mó hoỏ DES chuẩn. Nú làm việc trờn khối dữ liệu 64

bit và sử dụng 56 bit khoỏ. Ngƣời dựng cú thể cung cấp 64 bit khoỏ và thủ tục sẽ lấy 7 bit từ mỗi byte và tạo ra một khoỏ 56 bit.

- 92 -

2. 3DES_2KEY – Thụõt toỏn DES thao tỏc trờn 1 khối đầu vào ba lần

(3DES) và sử dụng hai khoỏ (2KEY). Độ dài của khoỏ cú là 112 bit.

3. 3DES_2KEY – Thụõt toỏn DES thao tỏc trờn 1 khối đầu vào ba lần

(3DES) và sử dụng hai khoỏ (2KEY). Độ dài của khoỏ cú là 112 bit.

4. 3DES – Thuật toỏn DES thao tỏc trờn khối dữ liệu ba lần và sử dụng ba

khoỏ. Độ dài của khoỏ là 168 bit.

5. AES128 – Thuật toỏn AES làm việc trờn khối dữ liệu đầu vào 128 bit

với khoỏ cú độ dài 128-bit.

6. AES192 – Thuật toỏn AES với 192 bit khoỏ.

7. AES256 – Thuật toỏn AES với 256-bit khoỏ.

8. RC4 – mó hoỏ dũng. Nú sử dụng một bớ mật, tạo một cỏch ngẫu nhiờn,

khoỏ là duy nhất cho mỗi phiờn

DBMS_CRYPTO cung cấp ba thuật toỏn băm mà cú thể đƣợc gọi qua cỏc hàm băm chức năng. Bao gồm:

1. MD4 – Thụng điệp đƣợc đệm để chắc chắn rằng nú cú độ dài cộng với

64bit thỡ chia hết cho 512. Sau đú nú đƣợc băm và tạo ra 128 bit băm.

2. MD5–Thuật toỏn MD5 với đầu vào là một thụng điệp cú độ dài xỏc

định và tạo ra một thụng điệp băm cú độ dài 128-bit.

3. SH1–SHA-1 (Thuật toỏn băm an toàn) Thuật toỏn này tạo ra một

thụng điệp băm cú độ dài 160 bit.

DBMS_CRYPTO cung cấp 2 thụõt toỏn khoỏ băm:

1. HMAC_MD5: Thuật toỏn này sử dụng thuật toàn MD5 để tạo ra một

thụng điệp băm nhƣng ngoài thụng điệp băm nú cũn tạo ra một khoỏ để kiểm tra giỏ trị băm.

2. HMAC_SH1: Thuật toỏn này sử dụng thuật toỏn SHA-1 để tạo ra một

thụng điệp băm nhƣng ngoài thụng điệp băm nú cũn tạo ra một khoỏ để kiểm tra giỏ trị băm.

- 93 -

 CHAIN_CFB

 CHAIN_OFB

Bộ đệm

DES và AES đều đƣợc gọi là cỏc thuật toỏn mó hoỏ khối. Dữ liệu trƣớc khi mó hoỏ đƣợc chia ra là cỏc khối dữ liệu cú độ dài cố định bằng nhau. Sau đú sử dựng cỏc thuật toỏn mó hoỏ để mó hoỏ cỏc khối dữ liệu đó đƣợc phõn chia. Độ dài của khối phải là 64 bit đối với thuật toỏn DES, 128 bit đối với AES. Nếu độ dài của chuỗi đầu vào khụng phải là bội số của độ dài khối yờu cầu khi đú khối dữ liệu cuối cựng sẽ cú độ dài ngắn hơn yờu cầu. Nhƣ vậy sẽ phải đệm thờm vào khối để khối cú độ dài yờu cầu. Gúi DBMS_CRYPTO cung cấp ba chế độ bộ đệm:

NONE: Trong chế độ này bộ đệm khụng đƣợc chỉ ra, khối dữ liệu đƣa vào mặc nhiờn phải cú đỳng kớch thƣớc yờu cầu nếu khụng hệ thống sẽ bỏo lỗi. ZERO: Chuỗi đƣợc đệm vào là chuỗi cỏc số 0 nhị phõn.

PKCS#5: Đõy là chế độ sử dụng bộ đệm phức tạp hơn. Nú tớnh toỏn số byte cần phải đệm để thờm vào (N) và đệm vào chuỗi đầu vào N ký tự kiểu CHR(N). Điểm hạn chế của phƣơng phỏp này là nếu chuỗi đầu vào là bội số của khối thỡ sẽ thờm một khối khụng cần thiết.Sau khi cú đƣợc dữ liệu giải mó thỡ phải cắt khối đệm thỡ mới cú đƣợc dữ liệu giải mó đỳng cho ngƣời dựng.

IV.3.2.3. Thụng tin dữ liệu mó hoỏ

Trong nhiều năm qua, cụng tỏc quản lý cỏc thủ tục cung nhƣ cỏc loại giấy tờ liờn quan đến lĩnh vực Xuất nhập cảnh nhƣ thị thực nhập cảnh, hộ chiếu, thụng hành,… việc lợi dụng kẽ hở thay đổi thụng tin, giả mạo giấy tờ,… luụn là vấn đề gõy nhiều khú khăn cho cơ quan chức năng . Vấn đề này khụng chỉ xảy ra đối với cơ quan quản lý tại Việt Nam mà cũn tiềm ẩn nhiều nguy cơ và nhức nhối đối với mọi quốc gia trờn thế giới. Do vậy, việc mó hoỏ cỏc thụng tin dữ liệu nhạy cảm, cốt yếu trƣớc đƣa lờn đƣờng truyền là một trong những giải phỏp bảo mật tƣơng đối hiệu quả, nõng cao tớnh bảo đảm an toàn bớ mật thụng tin dữ liệu trong toàn hệ thống. Chớnh vỡ vậy cỏc thụng tin liờn quan tới

- 94 -

xuất nhập cảnh sẽ đƣợc xem xột mó hoỏ, bao gồm: số hộ chiếu, số thị thực,

ảnh chõn dung, số chứng minh thư, số xuất nhập cảnh, địa chỉ, mó số đối

tượng cấm, thời hạn cấm, cơ quan đăng ký,.. Việc tớnh toỏn, cõn nhắc lựa

chọn trƣờng dữ liệu trờn cỏc bảng dữ liệu là cần thiết, vỡ việc mó hoỏ dữ liệu này sẽ ảnh hƣởng tới tốc độ truy xuất dữ liệu trờn hệ thống.

Hạn chế của việc mó hoỏ trong suốt dữ liệu này là khụng mó hoỏ cỏc trƣờng dữ liệu làm khoỏ ngoại (foreign key). Bởi vậy mỗi bảng sẽ chỉ cú duy nhất một khoỏ mó trƣờng dữ liệu.

IV.3.2.4. Cỏc vần đề cần quan tõm khi sử dụng DBMS_CRYPTO

IV.3.2.4.1. Khi nào thỡ sử dụng cỏc hàm hoặc thủ tục mó hoỏ và giải mó

Gúi DBMS_CRYPTO bao gồm cỏc hàm và thủ tục mó hoỏ và giải mó dữ liệu. Cỏc thủ tục dựng để mó hoỏ và giải mó cỏc kiểu dữ liệu dạng LOB(gồm CLOB và BLOB). Cỏc hàm ENCRYPT và DECRYPT đƣợc sử dụng để mó hoỏ và giải mó cỏc kiểu dữ liệu RAW.

IV.3.2.4.2. Khi nào thỡ sử dụng hàm băm hay hàm mó xỏc thực thụng địờp

Gúi DBMS_CRYPTO cung cấp hai loại hàm băm một chiều khỏc nhau: Hàm HASH và hàm MAC. Cỏc giỏ trị băm phải cú độ dài ớt nhất 128 bit để đảm bảo tớnh an toàn.

Ta cú thể sử dụng giỏ trị băm để xỏc minh xem dữ liệu cú bị thay đổi hay khụng. Vớ dụ trƣớc khi lƣu trữ dữ liệu Laurel chạy DBMS_CRYPTO.HASH cho dữ liệu lƣa trữ để tạo ra một giỏ trị băm. Khi nhận lại toàn bộ dữ liệu lƣu trữ sau 1 khoảng thời gian cụ ta cú thể chạy lại thuật toỏn băm DBMS_CRYPTO.HASH để thu đƣợc một giỏ trị băm. Nếu hai giỏ trị băm của lần băm thứ nhất và lần băm thứ hai là giống nhau tức là dữ liệu khụng bị thay đổi nếu ngƣợc lại dữ liệu đó bị thay đổi. Giỏ trị băm cũng tƣơng tự nhƣ dấu võn tay đƣợc sử dụng để kiểm tra tớnh toàn vẹn của dữ liệu

- 95 -

thờm một khoỏ bớ mật. Nú làm việc nhƣ DBMS_CRYPTO.HASH trừ việc nú chỉ cú một số ngƣời cú khoỏ để kiểm tra giỏ trị băm.

MACs cú thể đƣợc sử dụng để xỏc thực cỏc file giữa ngƣời dựng. Chỳng cũng cú thể đƣợc sử dụng bởi một ngƣời dựng để xỏc định nếu những file của họ bị thay đổi, cú thể là do virus. Một ngƣời dựng cú thể tớnh toỏn đƣợc MAC cỏc file của ngƣời dựng và lƣu những giỏ trị đú ở trong cỏc bảng. Nếu ngƣời dựng khụng dựng hàm MAC thỡ virus cú thể tớnh toỏn đƣợc những giỏ trị băm mới sau khi lõy nhiễm và thay đổi chỳng trong bảng lƣu trữ. Một virius khụng thể làm việc đú với MAC vỡ nú khụng biết khoỏ.

IV.3.2.5. Những nguyờn tắc cơ bản của mó hoỏ dữ liệu

Trong khi cú rất nhiều lý do để thực hiện mó hoỏ dữ liệu thỡ cũng cú khụng ớt lý do để khụng thực hiện mó hoỏ. Mó hoỏ khụng phải là phƣơng phỏp để giải quyết tất cả cỏc vấn đề về bảo mật hơn nữa nú cũn mang lại một số rắc rối.

 Mó hoỏ dữ liệu khụng giải quyết đƣợc vấn đề điều khiển truy cập

 Mó hoỏ dữ liệu khụng chống lại đƣợc quản trị dữ liệu cú ỏc ý

 Mó hoỏ mọi dữ liệu khụng làm cho dữ liệu đƣợc an toàn hơn

IV.3.2.6. Nguyờn lý hoạt động của mó hoỏ trong suốt dữ liệu

Việc mó hoỏ trong suốt dữ liệu về cơ bản dựa trờn việc quản trị hệ thống. Chỉ cú những cỏ nhõn đƣợc phõn quyền hệ thống mới xem đƣợc dữ liệu đó đƣợc mó hoỏ. Trờn một bảng cú thể cú nhiều trƣờng dữ liệu đƣợc mó hoỏ nhƣng chỉ cú một trƣờng đƣợc mó hoỏ sử dụng làm khoỏ đại diện cho cỏc trƣờng khỏc trong bảng, khoỏ đại diện này đƣợc gọi là khoỏ mó. Tất cả cỏc khoỏ mó của cỏc bảng, đại diện cho tất cả cỏc trƣờng dữ liệu mó hoỏ trờn cỏc bảng dữ liệu, sẽ đƣợc mó hoỏ bởi một khoỏ mó chủ (master encrytion key) bờn trong mỏy chủ CSDL và lƣu giữ từ diển cỏc bảng dữ liệu bờn trong CSDL.

Khoỏ mó chớnh đƣợc lƣu giữ bờn trong module bảo mật nằm ngoài và độc lập với CSDL, chỉ cú ngƣời quản trị an ninh mới cú quyền truy nhập. Vớ dụ: Oracle wallet, chứa khoỏ mó chủ nhằm đảm bảo an toàn trỏnh sự truy nhập trỏi phộp.

- 96 -

IV.3.2.6.1. Hoạt động cơ bản của mó hoỏ dữ liệu trong suốt

Để thực hiện việc mó hoỏ trong suốt dữ liệu, cần phải cú quyền của hệ thống ALTER SYSTEM và mật khẩu trờn Oracle wallet. Để tạo khoỏ mó chủ, thực hiện cú thể tạo theo cõu lệnh cú cấu trỳc nhƣ sau:

ALTER SYSTEM SET [ENCRYPTION] KEY IDENTIFIED BY password

Lƣu password sẽ phải đặt trong cặp “ ”, cõu lệnh trờn sẽ tạo ra khoỏ mó chủ của hệ quản trị cơ sở dữ liệu, trờn đú cú chứa cỏc cột khoỏ mó của mỗi bảng dữ liệu. Cỏc trƣờng dữ liệu trong cỏc bảng chỉ cú thể đƣợc mó hoỏ sau khi khoỏ mó chủ đƣợc tạo.

Khi shutdown batabase instance thỡ khụng thể truy nhập đƣợc khoỏ mó chủ. Sau khi khởi động lại cơ sở dữ liệu thỡ dựng cõu lệnh sau để truy nhập khoỏ mó chủ:

ALTER SYSTEM SET [ENCRYPTION] WALLET OPEN IDENTIFIED BY

password

Để tạo bảng cú cỏc trƣờng dữ liệu đƣợc mó hoỏ thi dựng lệnh sau:

CREATE TABLE table_name ( column_name column_type ENCRYPT,....);

- 97 -

last_name VARCHAR2(128), empID NUMBER,

salary NUMBER(6) ENCRYPT

);

Để tạo bảng dữ liệu trong mó hoỏ cỏc trƣờng dữ liệu, sử dụng giải thuật ■ 3DES168

■ AES128

■ AES192 (default) ■ AES256

để mó hoỏ cỏc trƣờng dữ liệu cụ thể thỡ sử dụng cõu lệnh sau, vớ dụ: CREATE TABLE employee (

first_name VARCHAR2(128), last_name VARCHAR2(128),

empID NUMBER ENCRYPT NO SALT,

salary NUMBER(6) ENCRYPT USING '3DES168'

);

Với SALT/ No SALT tƣơng ứng với việc mặc định trƣờng dữ liệu đú cần làm rừ (cleartext) trƣớc kia mó hoỏ do vậy làm cho hacker khú lấy cắp thụng tin đú. Tuy nhiờn nếu muốn tạo index trờn trƣờng dữ liệu mó hoỏ thỡ phỏi chọn No SALT.

Với mỗi trƣờng dữ liệu cần mó hoỏ thỡ sử dụng một từ ENCRYPT sau nú. Nếu cần sửa cấu trỳc bảng đó cú sẵn thỡ dựng lệnh sau:

ALTER TABLE table_name MODIFY ( column_name column_type

ENCRYPT,...);

Để tạo Index trờn trƣờng dữ liệu đó đƣợc mó hoỏ thực hiện lệnh cú cỳ phỏp nhƣ sau:

CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128),

empID NUMBER ENCRYPT NO SALT,

salary NUMBER(6) ENCRYPT USING '3DES168' );

- 98 -

Để ngăn chặn việc truy nhập tới tất cả cỏc trƣờng dữ liệu mó hoỏ trong CSDL thỡ dựng lệnh sau:

ALTER SYSTEM SET [ENCRYPTION] WALLET CLOSE

Sau khi thực hiện lệnh trờn thỡ khụng thể sử dụng đƣợc khoỏ mó chủ và đồng thời khụng thể truy cập đƣợc cỏc trƣờng dữ liệu đó mó hoỏ. Muốn truy nhập trở lại khoỏ mó chủ phải dựng lệnh sau để mở Oracle wallet

ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY password

IV.3.2.6.2.Trƣờng hợp sử dung mó hoỏ trong suốt dữ liệu

- Sử dụng mó hoỏ trong suốt khi cần thiết

- Tạo hoặc tạo lại khoỏ mó chủ

- Mở Oracle wallet

- Tạo cỏc bảng trong đú cú mó hoỏ cỏc trƣờng dữ liệu

- Mó hoỏ cỏc trƣờng dữ liệu trờn cỏc bảng dữ liệu đó tồn tại

- Tạo Index trờn cỏc trƣờng dữ liệu đó mó hoỏ

- Thờm hoặc loại bỏ Salt trờn trƣờng dữ liệu đó mó hoỏ

- Thay đổi khoỏ mó hay giải thuật đối với cỏc bảng cú cỏc trƣờng dữ liệu

đƣợc mó hoỏ

IV.3.2.6.3.Truy xuất dữ liệu

Cỏc truy xuất dữ liệu đến bảng gốc sẽ đƣợc thay thế bằng truy xuất đến bảng ảo. Bảng ảo đƣợc tạo ra để mụ phỏng dữ liệu trong bảng gốc. Khi thực thi lệnh “select”, dữ liệu sẽ đƣợc giải mó cho bảng ảo từ bảng gốc (đó đƣợc mó húa). Khi thực thi lệnh “Insert, Update”, “instead of” trigger sẽ đƣợc thi hành và mó húa dữ liệu xuống bảng gốc.

Quản lý phõn quyền truy cập đến cỏc cột sẽ đƣợc quản lý ở cỏc bảng ảo. Ngoài cỏc quyền cơ bản do CSDL cung cấp, hai quyền truy cập mới đƣợc định nghĩa:

1. Ngƣời sử dụng chỉ đƣợc quyền đọc dữ liệu ở dạng mó húa (ciphertext). Quyền này phự hợp với những đối tƣợng cần quản lý CSDL mà khụng cần đọc nội dung dữ liệu.

- 99 -

những hạn chế sau:

Những cột index khụng thể đƣợc mó húa, do đú hạn chế cỏc ứng dụng cần hỗ trợ index

Dữ liệu mó húa cú kớch thƣớc lớn so với dữ liệu gốc. Sự chờnh lệch này khụng đỏng kể đối với cỏc dữ liệu chữ (text), nhƣng rất đỏng kể đối với cỏc dữ liệu số và dạng nhị phõn. Vớ dụ, dữ liệu số 1 byte sẽ bị tăng lờn 2 byte sau khi mó húa. Tốc độ truy cập CSDL giảm do quỏ trỡnh thực thi tầng mó húa.

IV.3.2.7. Vấn đề tạo và lƣu trữ khoỏ

Gúi DBMS_CRYPTO cú thể tạo ra một đại lƣợng ngẫu nhiờn cho khoỏ mó hoỏ nhƣng nú khụng thể cung cấp một cơ chế để duy trỡ nú. Cỏc nhà phỏt triển ứng dụng phải rất thận trọng và phải chắc chắn rằng cỏc khoỏ mó hoỏ sử dụng với gúi này đƣợc tạo ra và lƣu trữ an toàn. Và cũng chỳ ý rằng cỏc thao tỏc mó hoỏ và giải mó dữ liệu đƣợc thực hiện bằng DBMS_CRYPTO xuất hiện trờn mỏy chủ khụng phải trờn mỏy trạm. Nếu khoỏ đƣợc gửi qua những kết

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Vấn đề bảo mật cơ sở dữ liệu trong cơ sở dữ liệu phân tán (Trang 92 - 105)

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

(105 trang)