5. 5
PISO EOアクセス制御 〜 暗号化データアクセス例
EMP
View
DBMS
S
SCOTT
JOHN
SQL> select ename, job from scott.emp;
ENAME JOB
--------------- ---------
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN
BLAKE MANAGER
CLARK MANAGER
SCOTT ANALYST
KING PRESIDENT
SQL> select ename, job from scott.emp;
ENAME JOB
--------------- ---------
Encrypted CLERK
Encrypted SALESMAN
Encrypted SALESMAN
Encrypted MANAGER
Encrypted SALESMAN
Encrypted MANAGER
Encrypted MANAGER
Encrypted ANALYST
Encrypted PRESIDENT
権限を持つユーザ 権限を持たないユーザ
6. 6
PISO EOシステム構成(Ver1.0)
Main modules of PISO EO
cubeoned
cubeone_auditor
cubeone_guard
cubeonesql
cubeonesql2
Policy
Manager
Encryption
Manager
Log Manager
PISO EO
Crypto
Access
Log
Database ServerPISO EO Manager
(PISO ISM Console)
8. 8
cubeoned
PISO EO Managerがサーバー上で展開したポリシーを反映します
cubeone_auditor
データベースサーバ上で稼働し、Policy Managerが設定したポリシーに基づいたアクセス記録
を保存します。
暗号化した項目へのユーザ、タスク、アクセスパターン(SUID)について成功・失敗の記録を
⾏います。アクセス失敗の場合には、その理由も記録します。
cubeone_guard
PISO EOのプロセス(cubeoned / cubeone_auditor)を監視します。
• 上記プロセスが稼働していない場合には、再起動を⾏います。
Structure of PISO EO (PISO EO Server)
cubeonesql/cubeonesql2 (Encryption Agent )
データベースサーバ上にインストールされ、PISO EO Managerによりアサインされたタスク
を実⾏します。
• データ暗号化・複合化及び暗号化テーブル管理
• 実⾏結果は、Job Monitorにより確認することが出来ます
crypto (PISO EO Crypto)
データベースがインストールされたサーバで稼働します。ユーザが暗号化・複合化を⾏う際に
権限を確認して正規ユーザである場合のみ実⾏します。
9. 9
PISO EO オブジェクト構成
OS Process
Encrypted Table
View
Advanced Index
DBMS
Shared Memory
Policy & Key Deploy
RSA
S
PISO EO
Manager
Use App…
DBMS Tools…
PISO EO Crypto
PISO EO Object Structure
CubeOne
Server
CubeOne
Auditor
CubeOne
Guard
Trigger/Procedure
PISO EO Manager Database Server Application
12. 12
暗号化によるオブジェクト構成変更〜2
EMP Table
EMP# Table
EMP View
暗号化前
暗号化後
Insert Trigger
Delete Trigger
Update Trigger
Trigger
select empno, empname, acct
from emp
order by empno;
insert into emp(empno, empname, acct)
values(6, ’A.B.C’, ’123-345-456767’);
delete from emp
where empno = 1;
update emp
set acct = ‘111-222-334455’
where empno = 3;
select empno, empname, acct
from emp
order by empno;
insert into emp(empno, empname, acct)
values(6, ’A.B.C’, ’123-345-456767’);
delete from emp
where empno = 1;
update emp
set acct = ‘111-222-334455’
where empno = 3;
13. 13
暗号化前後でテーブルの列定義が変更
EMPテーブル (暗号化前) EMP#テーブル (暗号化後)
Column Name Column Type Column Name Column Type
Object of
encryption
EMPNO NUMBER(10) EMPNO NUMBER(10)
EMPNAME VARCHAR2(50) EMPNAME VARCHAR2(50)
ACCT VARCHAR2(20) ACCT VARCHAR2(44) AES256
CARD CHAR(19) CARD VARCHAR2(44) AES256
PASSWD VARCHAR2(20) PASSWD VARCHAR2(64) SHA256
BONUS NUMBER(10,2) BONUS VARCHAR2(24) AES256
暗号化後インデックスが追加
暗号化によるオブジェクト構成変更〜3
EMPテーブル (暗号化前) EMP#テーブル (暗号化後)
Index Name Attribute of Index Column Name Attribute of Index Note
PK_EMP001 NORMAL PK_EMP001 NORMAL
IX_ACCT_EMP001 NORMAL IX_ACCT_EMP001 NORMAL AES256
ACC717213 DOMAIN INDEX Construction of
Advanced IndexFACC717213 FUNCTION-BASED
14. 14
インデックススキャンファンクション定義
ODEC_[COLUMN TYPE]_SEL([encrypted column], DML NO, ’ITEM’, ’Table, ’Column’)
インデックス作成ファンクションパラメータ定義
Left-hand side :
XX1.ENC_INDEX_[COLUMN TYPE]([Encrypted Data], ’ITEM’)
Right-hand side :
XX1.ENC_INDEX_[COLUMN TYPE]_SEL([plaintext data], ’ITEM’)
暗号化・複合化ファンクションパラメータ定義
Encryption Function :
XX1.ENC_[COLUMN TYPE]_INS([‘data’/column], DML NO, ’ITEM’, ’Table’, ’Column’)
Decryption Function :
XX1.DEC_[COLUMN TYPE]_SEL([‘data’/column], DML NO, ’ITEM’, ’Table’, ’Column’)
暗号化によるオブジェクト構成変更〜4
PISO EO 暗号化/複合化 ファンクション
16. 16
暗号化されたインデックスによる検索が難しい理由
SSN Row_ID
0202021989898 4
0707072121212 2
0808081020202 1
4504044545454 3
Row_ID Name SSN
1 Hong 0808081020202
2 Kim 0707072121212
3 Kang 4504044545454
4 Lee 0202021989898
Select * from customer
Where SSN between ‘0711111111111’
and ‘0811111111111’;
Index Table
Query
SSN Row_ID
/jVG/+SSdl97UUS5NhrZ6w 4
30WauEraEUmE80y16paN 1
GU/wjHxf3LliBGNyDG0rg= 3
5wkKAmBGpayYXYC64pfB 2
Row_ID Name SSN
1 Hong 30WauEraEUmE80y16paN
2 Kim GU/wjHxf3LliBGNyDG0rg=
3 Kang 5wkKAmBGpayYXYC64pfB
4 Lee /jVG/+SSdl97UUS5NhrZ6w
Index Table
Query
Index
Scan
Optimizer
Full Table
Scan
Optimizer
Encrypted
Select * from customer
Where SSN between ‘0711111111111’
and ‘0811111111111’;
データが暗号化され、
データ順序が維持されないため、
Index Range Scanが不可能。
すべてのデータを復号化し、
復号化されたデータを検索。
PISO EOでは、ドメインインデックスとファンクションインデックスを組み合わ
せたアドバンスドインデックスを作成することで暗号化後でも暗号化前と同じオー
ダーを保持したインデックスを使⽤したレンジスキャン検索を⾏うことが出来る
暗号化前
暗号化後
17. 17
Advanced Indexの生成
Advanced Index
Original Indexと同一のデータ順序を維持
平文データと同一のデータ順序を維持するハッシュアルゴリズムを使用
Advanced IndexはDomain IndexとFunction Based Indexで構成
Original Table
Encrypted Table Advanced Index
Row_ID Name SSN
1 Hong 0808081020202
2 Kim 0707072121212
3 Kang 4504044545454
4 Lee 0202021989898
Row_ID Name SSN
1 Hong /jVG/+SSdl97UUS5NhrZ6w
2 Kim 30WauEraEUmE80y16paN
3 Kang 5wkKAmBGpayYXYC64pfB
4 Lee GU/wjHxf3LliBGNyDG0rg=
SSN Row_ID
GU/wjHxf3LliBGNyDG0rg= 4
30WauEraEUmE80y16paN 2
/jVG/+SSdl97UUS5NhrZ6w 1
5wkKAmBGpayYXYC64pfB 3
Encrypt
SSN Row_ID
0202021989898 4
0707072121212 2
0808081020202 1
4504044545454 3
Original Index
データ順序を維持