Bảo mật trên hệ quản trị CSDL Oracle

Một phần của tài liệu GIẢI PHÁP TRUY vấn TRỰC TIẾP TRÊN dữ LIỆU mã hóa NHẰM NÂNG CAO TÍNH bảo mật cơ sở dữ LIỆU TRỰC TUYẾN (Trang 31 - 36)

2. Một số phương pháp bảo mật trên các hệ quản trị Cơ sở dữ liệu

2.2. Bảo mật trên hệ quản trị CSDL Oracle

Bảo mật CSDL cho phép hoặc không cho phép các hành động của người sử dụng (user) trên CSDL và các đối tượng bên trong CSDL. Oracle sử dụng các lược đồ (Schemas) và các miền bảo mật (Security Domains) để kiểm soát truy cập dữ liệu và để giới hạn sử dụng các nguồn tài nguyên CSDL.

Các cơ chế đảm bảo an toàn CSDL do Oracle hỗ trợ:

 Mã hóa và che giấu (Encryption and Masking):  An toàn mức cao (Oracle Advanced Security).

28  Sao lưu an toàn (Oracle Secure Backup).  Che giấu dữ liệu (Oracle Data Masking).  Điều khiển truy nhập (Access Control):

 Điều khiển truy nhập kho CSDL (Oracle Database Vault).  Điều khiển truy nhập dựa trên nhãn (Oracle Label Security).  Kiểm toán và giám sát (Auditing and Monitoring).

 Kiểm toán kho dữ liệu (Oracle Audit Vault).

 Quản lý cấu hình (Oracle Configuration Management).  Cấp và thu hồi quyền (Oracle Total Recall).

 Chặn và truy nhập (Blocking and Logging)

 Tường lửa CSDL (Oracle Database Firewall).

Hình 19. Kiến trúc an toàn của Oracle

Giải pháp mã hóa TDE trong Oracle

Trong phần này sẽ trình bày cách để bảo mật dữ liệu nhạy cảm bên trong CSDL Oracle bằng cách sử dụng mã hóa dữ liệu trong suốt (Transparent Data Encryption – TDE). Mã hóa dữ liệu trong suốt cho phép chúng ta mã hóa các cột dữ liệu và quản lý các khóa mã hóa.

Mã hóa dữ liệu trong suốt kích hoạt mã hóa dễ dàng và đơn giản dữ liệu nhạy cảm theo các cột ngoài việc yêu cầu các User hoặc các ứng dụng quản lý khóa mã hóa (Encryption Key). Không cần sử dụng các hiển thị để giải mã dữ liệu vì dữ liệu được giải mã trong suốt mỗi khi User vượt qua các kiểm tra kiểm soát truy cập cần thiết. Các quản trị bảo mật đảm bảo rằng dữ liệu trên đĩa được mã hóa, điều khiển dữ liệu được mã hóa trở nên trong suốt với các ứng dụng.

Sử dụng mã hóa dữ liệu trong suốt để bảo vệ dữ liệu bí mật như thẻ tín dụng và các số liệu bảo mật xã hội mà không quản lý khóa hoặc tạo các bảng, các View và các Trigger. Một ứng dụng xử lý dữ liệu nhạy cảm có thể sử dụng đặc điểm này để cung cấp mã hóa dữ liệu mạnh với việc không thay đổi đến ứng dụng.

Tuy nhiên không sử dụng mã hóa dữ liệu trong suốt với các CSDL có đặc điểm sau: - Các loại index khác B-tree.

29

- Các loại đối tượng lớn như BLOB và CLOB. - Các tiện ích Import/Export.

- Các công cụ và các tiện ích CSDL khác truy cập các file dữ liệu trực tiếp.

Các ứng dụng cần sử dụng các đặc điểm không hỗ trợ trên có thể sử dụng gói DBMS_CRYPTO cho các yêu cầu mã hóa của ứng dụng.

Hỗ trợ hai kiểu mã hóa – mã hóa bảng (TDE Tablespace Encryption) và mã hóa cột (TDE Column Encryption).

Các thuật toán mật mã: AES, T-DES.

Các khóa mã hóa: Quản lý khóa chủ TDE (Master key) sử dụng các chuẩn PKCS #12 và PKCS #5 cho lưu trữ khóa (Oracle Wallet). Hoặc Oracle Key Vault sử dụng giao thức tương thích quản lý khóa KMIP (OASIS Key Management Interoperability Protocol) và các chuẩn PKCS #11 cho trao đổi. Người dùng có thể chọn Oracle Wallet hoặc Oracle Key Vault để lưu trữ khóa.

Thư viện mật mã mà TDE sử dụng trong Oracle Database được kiểm tra tuân thủ theo U.S. FIPS 140-2.

Các phiên bản bắt đầu hỗ trợ: TDE column encryption (from 10gR2) và TDE tablespace encryption (from 11gR1).

Mã hóa dữ liệu trong suốt là hệ thống kiểm soát truy cập dựa trên khóa. Nếu dữ liệu mã hóa được truy cập, hệ thống không hiểu cho tới khi xảy ra quá trình giải mã xác thực, đây là quá trình tự động đối với các User xác thực truy cập tới bảng dữ liệu (Table).

Khi một Table chứa các cột được mã hóa, một khóa được sử dụng để mã hóa các cột cần được mã hóa. Các khóa cho tất cả các Table chứa các cột sẽ được mã hóa và được lưu trữ tại một bảng từ điển (Dictionary Table) trong CSDL. Không khóa nào được lưu trữ mà có thể nhìn thấy rõ ràng.

Trên hình 3.15, khóa chủ của Server được lưu trữ trong module bảo mật mở rộng nằm bên ngoài CSDL và chỉ truy cập đến bởi người quản trị bảo mật. Đối với module bảo mật mở rộng này, Oracle sử dụng một Oracle Wallet. Lưu trữ khóa chủ theo cách này ngăn chặn sử dụng không xác thực của Oracle. Ngoài ra lưu trữ khóa chủ, Oracle Wallet cũng sử dụng để sinh ra các khóa mã hóa và thực hiện mã hóa và giải mã.

Sử dụng module bảo mật mở rộng tách biệt với các chức năng chương trình từ các hoạt động mã hóa, tạo ra khả năng phân chia công việc giữa quản trị CSDL và quản trị bảo mật. Bảo mật được nâng cao vì không người quản trị nào được bảo đảm truy cập tới tất cả dữ liệu.

Sơ lược các hoạt động mã hóa dữ liệu trong suốt:

Để sử dụng mã hóa dữ liệu trong suốt, phải có đặc quyền ALTER SYSTEM và một mật khẩu hợp pháp tới Oracle Wallet. Nếu một Oracle Wallet không có sẵn, khi đó một Oracle Wallet được tạo bằng cách sử dụng mật khẩu cho trước trong câu lệnh SQL.

Để tạo một khóa chủ mới và bắt đầu sử dụng mã hóa dữ liệu trong suốt, sử dụng câu lệnh dưới đây:

30

Lệnh này sinh ra khóa mã hóa chủ, khóa này sử dụng để mã hóa khóa mã hóa cột cho mỗi bảng. Không cột nào của bảng trong CSDL được mã hóa cho tới khi khóa chủ của Server được thiết lập.

Một khóa chủ được thiết lập còn truy cập tới CSDL cho tới khi đóng CSDL. Để tải khóa chủ sau khi CSDL được khởi động lại thì sử dụng câu lệnh sau:

CREATE TABLE table_name (column_name column_type ENCRYPT,…) Từ khóa ENCRYPT dựa trên một cột cụ thể mà cột này sẽ được mã hóa.

Nếu một bảng có sẵn có các cột mà yêu cầu mã hóa, khi đó sử dụng lệnh ALTER TABLE dưới đây:

ALTER TABLE table_name MODIFY (column_name, column_type ENCRYPT,…) Từ khóa ENCRYPT dựa trên một cột cụ thể mà cột đó sẽ được mã hóa.

Để ngắt truy cập tới tất cả các cột được mã hóa trong CSDL, sử dụng lệnh dưới đây: ALTER SYSTEM SET WALLET CLOSE

Lệnh này ngắt truy cập tới khóa chủ trong Oracle Wallet và ngăn chặn truy cập tới dữ liệu trong các cột được mã hóa.

Sử dụng mã hóa dữ liệu trong suốt:

Chỉ cần vài bước để cấu hình và sử dụng mã hóa dữ liệu trong suốt. Kích hoạt mã hóa dữ liệu trong suốt:

Trước khi mã hóa dữ liệu trong suốt có thể được kích hoạt, mức độ tương thích cho CSDL phải là 10.2. Để bắt đầu sử dụng mã hóa dữ liệu trong suốt, quản trị bảo mật phải tạo một Wallet và thiết lập khóa chủ.

Wallet có thể là Wallet CSDL mặc định được chia sẻ với các thành phần CSDL Oracle khác hoặc một Wallet riêng biệt đã sử dụng mã hóa dữ liệu trong suốt. Oracle chỉ ra rằng để bảo mật tốt hơn, một Wallet riêng biệt đã sử dụng để lưu trữ các khóa chủ mã hóa dữ liệu trong suốt.

Mở Wallet mã hóa cho truy cập dữ liệu tới các khóa mã hóa:

Module bảo mật mở rộng lưu trữ các khóa mã hóa trong Oracle Wallet. CSDL phải tải khóa chủ và các khóa mã hóa cột vào trong bộ nhớ từ Wallet trước khi CSDL mã hóa hoặc giải mã các cột. Sử dụng lệnh ALTER SYSTEM dưới đây để thực hiện mở wallet:

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY passowrd ở đây password là một giá trị chuỗi cụ thể trong sqlnet.ora vì password được lưu ở Wallet.

Mỗi khi Wallet được mở thì nó cứ mở cho tới khi chúng ta tắt CSDL (hoặc đóng CSDL bởi sử dụng lệnh ALTER SYSTEM SET ENCRYPTION WALLET CLOSE). Khi chúng ta khởi động CSDL, chúng ta phải sử dụng lại lệnh ALTER SYSTEM SET ENCRYPTION WALLET OPEN.

Nếu Schema không có đặc quyền ALTER SYSTEM, hoặc Wallet không tồn tại, hoặc mật khẩu không chính xác, khi đó lệnh trả lại một lỗi và thoát. Nếu Wallet đã mở sẵn, lệnh trả lại một lỗi và không hành động.

31

Khóa chủ được lưu trữ trong Module bảo mật mở rộng và được sử dụng để bảo vệ các khóa mã hóa cột. Mặc định, khóa chủ là một khóa ngẫu nhiên được sinh bởi mã hóa dữ liệu trong suốt. Khóa chủ cũng là cặp khóa có sẵn từ chứng thực PKI cho mã hóa. Để sử dụng mã hóa dữ liệu trong suốt với các cặp khóa PKI, ủy quyền chứng thực PKI phải sử dụng các chứng thực X.509v3 với trường sử dụng khóa được đánh dấu cho mã hóa.

Không loại khóa nào là bảo mật hơn nhưng nếu chúng ta đã triển khai PKI bên trong tổ chức, khi đó chúng ta có thể sử dụng các dịch vụ PKI thành khóa trao đổi và khóa khôi phục. Tuy nhiên, mã hóa sử dụng các thuật toán PKI hiện tại yêu cầu các nguồn tài nguyên hệ thống nhiều hơn mã hóa khóa đối xứng. Sử dụng một cặp khóa PKI như là khóa chủ sẽ làm giảm hiệu quả khi truy cập các cột được mã hóa trong CSDL.

Để thiết lập hoặc thiết lập lại khóa chủ, sử dụng cùng lệnh ALTER SYSTEM. Tạo các bảng chứa các cột được mã hóa:

Để tạo các bảng quan hệ với các cột được mã hóa, cụ thể là mệnh đề ENCRYPT khi chúng ta định nghĩa các cột CSDL với lệnh CREATE TABLE.

Tạo bảng với một cột được mã hóa sử dụng thuật toán mặc định

Mặc định, mã hóa dữ liệu trong suốt sử dụng AES với một khóa độ dài 192 bit (AES192).

Quản lý mã hóa dữ liệu trong suốt:

Quản lý Oracle Wallet cho mã hóa dữ liệu trong suốt:

Để lưu trữ các khóa chủ, mã hóa dữ liệu trong suốt có thể sử dụng Wallet CSDL mặc định được chia sẻ bởi tất cả các thành phần Oracle hoặc Wallet riêng biệt. Wallet có thể là một Wallet cho phép truy cập tới dữ liệu được mã hóa mà không yêu cầu quản trị thực hiện mở Wallet.

Backup và khôi phục Oracle Wallet:

Vì các khóa chủ được yêu cầu để truy cập dữ liệu được mã hóa nên chúng phải được Backup hoàn hảo. Điều này nghĩa là Wallet sẽ được Backup theo khoảng thời gian trong một vị trí bảo mật theo các file CSDL Oracle. Chúng ta phải Backup một bản sao của Wallet mỗi khi một khóa chủ mới thiết lập.

Nếu bị mất Wallet đang lưu trữ khóa chủ, thì có thể khôi phục truy cập tới dữ liệu được mã hóa bằng cách sao chép phiên bản được Backup của Wallet tới vị trị thích hợp. Nếu Wallet khôi phục được thực hiện sau lần cuối khóa chủ được thiết lập lại (Reset), khi đó các hành động bổ sung sẽ không được lưu.

Nếu Wallet được khôi phục không chứa khóa chủ gần nhất, khi đó chúng ta có thể khôi phục dữ liệu cũ đến thời điểm khi khóa chủ được Reset bởi Rolling Back trạng thải của CSDL tới điểm đó theo thời gian. Tất các các thay đổi tới các cột được mã hóa sau khóa chủ Reset sẽ mất.

Các giới hạn của mã hóa kiểu TDE.

 Ảnh hưởng hiệu năng (Performance Overheads):

TDE ảnh hưởng đến hiệu năng chỉ khi dữ liệu được tác động bởi các câu truy vấn trên các cột dữ liệu được mã hóa. Nó không làm ảnh hưởng đến hiệu năng đối với các truy vấn

32

trên các cột không mã hóa, thậm chí nếu các cột này thuộc các bảng có chứa các cột được mã hóa.

Truy vấn dữ liệu trên các cột được mã hóa chỉ giảm suy giảm một chút hiệu năng. Sự suy giảm liên quan đến các cột mã hóa được ước tính chỉ khoảng 5%. Điều này có nghĩa rằng đối với một lệnh SELECT (liên quan đến giải mã) hoặc INSERT (liên quan đến mã hóa) sẽ chỉ tăng khoảng 5% thời gian so với khi thực hiện trên dữ liệu rõ.

Sự suy giảm tổng cộng hiệu năng phụ thuộc vào số của các cột được mã hóa và tần suất truy vấn chúng. Các cột được mã hóa thường là các cột chứa các dữ liệu nhạy cảm.

 Ảnh hưởng đến lưu trữ (Storage Overheads):

Dữ liệu mã hóa cần nhiều không gian lưu trữ hơn so với dữ liệu rõ. Mỗi giá trị được mã hóa được kết hợp với 20 byte giá trị kiểm tra toàn vẹn (integrity check). Ngoài ra, TDE cần đệm thêm vào các giá trị mã hóa để thành giá trị 16 byte. Điều này có nghĩa nếu một số credit card yêu cầu 9 byte để lưu trữ thì giá trị mã hóa của credit card sẽ cần đệm thêm 7 byte. Cũng vậy, nếu dữ liệu được mã hóa với salt (một giá trị đệm khởi tạo), thì mỗi giá trị mã hóa sẽ cần thêm 16 byte để lưu trữ.

Tóm lại, việc mã hóa mỗi cột sẽ cần thêm 32 đến 48 byte không gian lưu trữ cho mỗi hàng (tính trung bình).

Hình 20. Mã hóa dữ liệu trong suốt

Các giới hạn khác khi sử dụng mã hóa TDE liên quan đến việc hỗ trợ mã hóa các kiểu dữ liệu khác nhau.

Nhận xét: Hệ quản trị Oracle cũng cũng cấp các phương pháp mã hóa tương tự như đối

với hệ quản trị SQL Server. Tuy nhiên, nó không hỗ trợ giải pháp truy vấn trên dữ liệu mã như đối với giải pháp AE của SQL Server.

CHƯƠNG 2. BẢO MẬT CƠ SỞ DỮ LIỆU DỰA TRÊN TRUY VẤN TRỰC TIẾP TRÊN DỮ LIỆU MÃ

Một phần của tài liệu GIẢI PHÁP TRUY vấn TRỰC TIẾP TRÊN dữ LIỆU mã hóa NHẰM NÂNG CAO TÍNH bảo mật cơ sở dữ LIỆU TRỰC TUYẾN (Trang 31 - 36)

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

(69 trang)