postgreSQL extensions
privacy
diskへアクセスするときにindex fikeのencrypt/decrypt処理を修正
postgressをDBMS engineとして活用可能
throughput 30%減
tradeoffs
full sql,
minotr modification to the underlying DBMS
security/performance
security
snapshot adversary
memory/diskのsnapshotに対してそれぞれの暗号化data itemになんの情報も得られない
persistent adversary
query実行されたときにmemory/diskで比較されない暗号化data itemになんの情報も得られない
query実行時でのleakageはcomplete SQLをサポートしているprevious workと同じかそれ以上。
https://gyazo.com/f3f9bca0e9fb12d4b1834d3c8347f43f
first
syscallなどサポートしていない
libos系でfeasible
EPC size limitation
second
query executorのみenclaveなので、selections, projections, joins時に個々のtableがenclaveへいくのでepc sizeのscalability issues。
https://gyazo.com/976f4528226ec89272e7a08340c0f962
datasizeが増えると指数的に増加
query processingはside-channel attackを防ぐの大変
query executorだけenclaveに入れるよう修正するの大変
third
暗号化されたdataもhost。
query treeをparseしたlowest levelのprimitive operators(+, <=,..)をenclaveで実行
enclave codeを最小限にできる一方、query実行時encrypted data valuesの関係は漏洩
https://gyazo.com/5ea9a66cdbcd9b842e6bf37ee30140bc
c1: normal
c2: second
c3: third by exitless (queue, eleos)
5~10x overhaed
c4: third by ecall
100x overhaed
https://gyazo.com/c4984d8d3733eb42c0fef5d6330332aa
auth: client authentication
initialization
keygen -> master key for aes enc/dec operations
local attestaionでpreprocessor/opsへmaster key送信
preorpcessor/opsはKをsealingし記録
authにownerがmaster clidentialとaccess policiesをra後に送信しsealingし保存。
client authentication
ra後、password/ssh keyを送りinit時にsealingしておいたcredentialから検証し、session keyをclientへ送信
preprocessorとclient interactionへ
preprocessor: query pre-processing
query execution
clientはquery string全体をsession keyで暗号化
db ownerのclient acess polictyをcheck
our query parserでencrypted datatypeを識別
query parse -> query plan後にencrypted datatypesのfunctionが必要
ops enclaveにextensionから呼び出す処理を実装
ops: operation
unencrypted datatypesはnative way
encrypted datatypesとunencrypted dataypes間でcomp可能
primitive opsだけなのでdta-oblivous methodsが実装可能
encrypting indexes
treeのそれぞれのvalueが暗号化されていても不均一であることがrevealしてしまう
snapshot adversaryもindex生成が終わった後可能
sol1. index tree構造に暗号化されたvaluesを置くとき、再暗号化することでtableとindexのlinkできないようにする
order-revealing encryption(ORE) でindex生成から利用までのpersistent adversaryへのセキュリティ強化可能
sol2. index fileをdiskに書き込む前に暗号化し、読み取るときに復号する
index_OP enclaveでindex data pagesの暗号化・復号をする
architectures
security
background worker
pgx examples
scan
auth
fdw in rust
fdw