Bình thường, dữ liệu lưu trữ trong các datafile không được mã hóa. Do đó không cần phải có database, chỉ dùng các thao tác cơ bản cũng có thể xem nội dung datafile. Điều này rất nguy hiểm nếu datafile chứa các thông tin quan trọng.

 

Để giải quyết vấn đề này, Oracle đưa ra Transparent Data Encryption (TDE), 1 tính năng bảo mật dữ liệu nằm trong Advanced Security Option và chỉ có ở phiên bản Enterprise. TDE hỗ trợ mã hóa dữ liệu ở mức lưu trữ trong datafile, và dữ liệu được giải mã tự động khi ứng dụng truy cập (transparent). Ở phiên bản 10gR2, Oracle cung cấp tính năng column encryption, mã hóa dữ liệu theo cột. Từ 11g, Oracle hỗ trợ tablespace encryption, và hỗ trợ sử dụng HSM (Hardware Security Module).

 

 

TDE sử dụng kiến trúc mã hóa 2 lớp:

  • Table key/Tablespace key: table key dùng để mã hóa column trong table, được lưu trong dictionary. Tablespace key dùng để mã hóa tablespace, được lưu trong datafile header
  • Master encryption key: dùng để mã hóa table key/tablespace key. Master key được lưu bên ngoài db, có thể ở trong Oracle Wallet, hay lưu ở HSM

 

Cấu hình TDE

 

Đầu tiên ta cần 1 thư mục để làm wallet. Ta tạo thư mục trên OS và cấu hình thêm nội dung ENCRYPTION_WALLET_LOCATION vào file sqlnet.ora

 

 

Tạo wallet với password bảo vệ

 

 

Trong thư mục wallet, 1 file ewallet.p12 được tạo ra, lưu giữ master key. Wallet sẽ được open ngay khi tạo xong

 

 

Đến đây coi như đã có thể sử dụng tính năng TDE.

 

Lưu ý rằng wallet chứa master key rất quan trọng, do đó cần backup đầy đủ, cũng như trước và sau khi thực hiện các thao tác tác động lên wallet hay master key.

 

Cấu hình auto login

 

Nếu không cấu hình auto login, khi shutdown database và start lại, ta phải tự open wallet, nếu không dữ liệu mã hóa sẽ không truy cập được. 

 

 

Cấu hình auto login giúp wallet luôn được open. Ta sử dụng orapki để cấu hình auto login. 1 file cwallet.sso sẽ được tạo ra trong thư mục

 

 

Thử close wallet, wallet vẫn open

 

 

So sánh giữa TDE column encryption và TDE  tablespace encryption

 

TDE column encryptionTDE tablespace encryption
Phiên bản hỗ trợ10gR2 trở đi11gR1 trở đi
Thuật toán mã hóa hỗ trợ3DES168, AES128, AES192, AES2563DES168, AES128, AES192, AES256
Thuật toán mặc địnhAES192AES128
Encrypt đối tượng có sẵnCó thể encrypt column đã có dữ liệuKhông thể encrypt tablespace có sẵn, phải tạo mới
Hỗ trợ khóa ngoạiKhông
Hỗ trợ indexChỉ B-tree thông thườngMọi loại index
Kiểu dữ liệu hỗ trợvarchar2, nvarchar2, char, nchar, number, raw, binary_float, binary_double, timestamp, date, SecureFile (11gR1 and later)Mọi kiểu dữ liệu
Ảnh hưởng tới lưu trữ3DES168: +8 bytes || AES: +16 bytes || SALT: +16 bytes (tùy chọn) || MAC: +20 bytes (tùy chọn)Không
Ảnh hưởng tới performanceTùy trường hợp, thường có ảnh hưởng. Nên sử dụng các phiên bản mới để giảm thiểu tác độngTùy trường hợp, nhưng thường mức độ ảnh hưởng thấp
Nên dùng khiKhông sợ ảnh hưởng các vấn đề ở cột bên cạnhƯu tiên performance. Không biết đầy đủ các column cần mã hóa. Columm có data type không hỗ trợ. Column mã hóa dùng làm khóa ngoại. Cần dùng index range scan trên column mã hóa. Cần tạo index khác B-tree trên column mã hóa.

 

Trong các phần tiếp theo chúng ta sẽ tìm hiểu cách mã hóa dữ liệu bằng 2 hình thức trên.