SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Copyright©2019 NTT Corp. All Rights Reserved.
Transparent Data Encryption in PostgreSQL
NTT Open Source Software Center
Masahiko Sawada
PGCon 2019
2Copyright©2019 NTT Corp. All Rights Reserved.
• Database servers are often the primary target of the
following attacks
• Privilege abuse
• Database SQL injections attacks
• Storage media theft
• Eavesdropping attacks between client and server
• etc.
Database Security Threats
DB administratorApplications
Database server
Eavesdropping
attacks
SQL
injections
Privilege
abuse
Physical storage
theft
3Copyright©2019 NTT Corp. All Rights Reserved.
Encryption
Database Server
Application Server
4Copyright©2019 NTT Corp. All Rights Reserved.
• Protect data from attacks bypassing database access
control layer(ACL)
• Read database file directly
• Taking a backup
• Doesn’t protect from attacks by malicious “privileged”
users
• SELECT SQL command by superuser
• Data is not encrypted while being used
• On shared buffer, on network
• Often implements as transparent data encryption(TDE)
Data at rest Encryption
5Copyright©2019 NTT Corp. All Rights Reserved.
• Full disk encryption (e.g. dmcrypt) is platform dependent
• Doesn’t protect data from logged-in OS users
How About Full Disk Encryption?
6Copyright©2019 NTT Corp. All Rights Reserved.
• Provide set of cryptographic functions
• A convenient tool
But,
• Not transparent to users
• Need to modify SQL, application code
• Triggers and views help
• Could be a cause of performance overhead
• Data needs to be decrypted every time it is accessed
How About contrib/pgcrypto?
7Copyright©2019 NTT Corp. All Rights Reserved.
Transparent Data Encryption in
PostgreSQL
8Copyright©2019 NTT Corp. All Rights Reserved.
Per tablespace encryption
• CREATE TABLESPACE enctblsp ... WITH (encryption = on);
• Fine grained control
• Specified table and its indexes, TOAST table and WAL are
transparently encrypted
• Also encrypt other objects such as system catalogs and
temporary files
• Under discussion on pgsql-hackers
• [Proposal] Table-level Transparent Data Encryption (TDE) and Key
Management Service (KMS)
Proposal
9Copyright©2019 NTT Corp. All Rights Reserved.
PostgreSQL I/O Architecture
postgres
Shared Buffer
Disk
postgres postgres
Page Cache (Kernel)
raw block data
10Copyright©2019 NTT Corp. All Rights Reserved.
PostgreSQL I/O Architecture
postgres
Disk
postgres postgres
Page Cache (Kernel)
raw block data
Shared Buffer
Backend processes
read pages from the
shared buffers and
modify them.
11Copyright©2019 NTT Corp. All Rights Reserved.
PostgreSQL I/O Architecture
postgres
Disk
postgres postgres
Page Cache (Kernel)
raw block data
Shared Buffer
bgwriter periodically
writes the dirty pages
out to the kernel page
cache.
12Copyright©2019 NTT Corp. All Rights Reserved.
PostgreSQL I/O Architecture
postgres
Disk
postgres postgres
raw block data
Shared Buffer
Page Cache (Kernel)
Dirty pages are
flushed to the disk by
the checkpointer or
the kernel.
13Copyright©2019 NTT Corp. All Rights Reserved.
Buffer Level Encryption (our solution)
postgres
Shared Buffer
Disk
Pros:
• Relatively less execution
of encryption and
decryption
• Prevent peeking file on
disk
Cons:
• Possibly repeated
encryption and
decryption of same data
if the database doesn’t fit
in shared buffers
postgres postgres
Page Cache (Kernel)
raw data
encrypted data
14Copyright©2019 NTT Corp. All Rights Reserved.
Latency (90%tile):
vanilla: 1.98 ms, TDE: 2.01 ms,
pgcrypto: 2.28 ms
Results
6000
6500
7000
7500
8000
8500
20
40
60
80
100
120
140
160
180
200
220
240
260
280
300
TPS
Duraiton(sec)
TPS comparison (R:100,W:3)
vanilla tde pgcrypto
8000
8500
9000
9500
10000
10500
11000
10
30
50
70
90
110
130
150
170
190
210
230
250
270
TPS
Duration (sec)
TPS comparison (R:100)
vanilla tde pgcrypto
Latency (90%tile):
vanilla: 2.32 ms, TDE: 2.45 ms,
pgcrypto: 2.66 ms
DB size < shared buffers DB size > shared buffers
15Copyright©2019 NTT Corp. All Rights Reserved.
• Advanced Encryption Standard(AES)
• Symmetric key algorithm
• AES-256
• Block cipher
• 16 bytes block size
• Using openssl is preferable (--with-openssl)
• AES-NI
• Block cipher mode of operation
• CBC or XTS
How To Encrypt
16Copyright©2019 NTT Corp. All Rights Reserved.
• For faster key rotation
• Master key
• Stored outside the database
• Encrypt/Decrypt tablespace keys
• One key per database cluster
• Tablespace Key (= data key)
• Stored inside the database
• Encrypt/Decrypt database objects
• One key per tablespace
2-Tier Key Hierarchy
Master Key
Encrypt/Decrypt
Encrypt/
Decrypt
External Location
Database Server
ENCRYPTED
DATA
Tablespace key
17Copyright©2019 NTT Corp. All Rights Reserved.
• For faster key rotation
• Master key
• Stored outside the database
• Encrypt/Decrypt tablespace keys
• One key per database cluster
• Tablespace Key (= data key)
• Stored inside the database
• Encrypt/Decrypt database objects
• One key per tablespace
2-Tier Key Hierarchy
Master Key
Encrypt/Decrypt
Encrypt/
Decrypt
External Location
Database Server
ENCRYPTED
DATA
Tablespace key
New Master Key
18Copyright©2019 NTT Corp. All Rights Reserved.
• Key management is very important
• How can we robustly manage the master key?
• Better leave it to a specialist
• Usually support some kinds of protocols
• KMIP, HTTPS etc
Key Management
19Copyright©2019 NTT Corp. All Rights Reserved.
• Key manager manages a key management plugin as well as tablespace
keys
• Add generic interface between PostgreSQL and key management
systems (Key management API)
Integration with Key Management Systems
Key management API
get_key(), generate_key(), remove key()
Encrypted file A KMS B KMS
Bufmgr, smgr, encryption etc
File A KMS A KMS
KMIP HTTPSread/write
Key manager (keyring)
Encrypted
Tablespace keys
Shared Memory
master key
Local Memory
Tablespace keys
shared buffer
20Copyright©2019 NTT Corp. All Rights Reserved.
• PostgreSQL gets the master key from KMS at startup
• Cache the master key on the shared memory
• Risk of key leakage when memory dump
• MADV_DONTDUMP of madvise(2) helps
• Risk of key leakage when swapped out
• mlock(2) helps
• Backend processes get the encrypted tablespace key at startup and
decrypt all of them with the master key
Caching Keys
21Copyright©2019 NTT Corp. All Rights Reserved.
• WAL Block Encryption
• Encrypt WAL block every commit time
• WAL writer could encrypt
• WAL Record encryption
• Encrypt WAL when inserting to WAL buffer
• Doesn’t encrypt WAL data that is not pertaining to encrypted tables
WAL Encryption
A block on
WAL Buffer
WAL
file
writeencrypt & write
WAL
file
memcpy encrypt & memcpy
1. Encrypt WAL blocks 2. Encrypt WAL records
22Copyright©2019 NTT Corp. All Rights Reserved.
• It’s more secure if we use the same encryption key for WAL encryption as
that used for table
• Choice #2 would be better approach
WAL Encryption
A block on
WAL Buffer
WAL
file
writeencrypt & write
WAL
file
memcpy encrypt & memcpy
1. Encrypt WAL blocks 2. Encrypt WAL records
23Copyright©2019 NTT Corp. All Rights Reserved.
Performance Overhead of WAL Encryption
• Compare performance on insert-heavy workload
• Encrypt all WAL blocks/records
• pg_wal directory on tmpfs to avoid disk I/O bottleneck
• Each transaction inserts a few records and commit
• Max 7% degradation
1.00
1.06 1.07 1.05 1.04
0.00
0.20
0.40
0.60
0.80
1.00
1.20
No Encrytpion WAL Block WAL Record WAL Record (1/2) WAL Record (1/5)
INSERT 10M rows (tempfs)
24Copyright©2019 NTT Corp. All Rights Reserved.
• pg_wal on HDD
• No big performance overhead
Performance Overhead of WAL Encryption
1.00 1.01 1.00
0.00
0.20
0.40
0.60
0.80
1.00
1.20
No Encrytpion WAL Block WAL Record
INSERT 50k rows (HDD)
25Copyright©2019 NTT Corp. All Rights Reserved.
WAL Record Format
XLogRecord
XLogRecordBlockHeader
(RelfileNode, BlockNumber)
XLogREcordBlockImageHeader
XLogRecordDataHeaderShort
Full page image (w/o hole) for new buffer
xl_heap_header
new tuple
xl_heap_update
xl_heap_header
old tuple
An example of xl_heap_update (wal_level = logical)
Header data
No user data is stored
Block data
FPI and tuples are stored
Main data
Could also contain tuples
26Copyright©2019 NTT Corp. All Rights Reserved.
WAL Record Encryption
XLogRecord
XLogRecordBlockHeader
(RelfileNode, BlockNumber)
XLogRecordBlockImageHeader
XLogRecordDataHeaderShort
Full page image (w/o hole) for new buffer
xl_heap_header
new tuple
xl_heap_update
xl_heap_header
old tuple
Choice #1: Encrypt whole WAL record
• Need another header containing ciphertext
length and tablespace oid (key of encryption
key)
• Need decryption before validation
• Frontend programs(pg_waldump, pg_rewind
etc) need to obtain tablespace keys and master
key
Choice #2: Encrypt only block data + main data
• XLogRecordHeader has a flag saying “hey this record
is encrypted”
• Frontend programs need to obtain tablespace keys
and master key
Choice #3: Move xl_xxx_xxx to just below
header data and #2
• Frontend tools don’t want to see user data don’t need
to decrypt WAL record
• Possible?
27Copyright©2019 NTT Corp. All Rights Reserved.
WAL Record Encryption
XLogRecord (ENCRYPTED!)
XLogRecordBlockHeader
(RelfileNode, BlockNumber)
XLogRecordBlockImageHeader
XLogRecordDataHeaderShort
Full page image (w/o hole) for new buffer
xl_heap_header
new tuple
xl_heap_update
xl_heap_header
old tuple
Choice #1: Encrypt whole WAL record
• Need another header containing ciphertext
length and tablespace oid (key of encryption
key)
• Need decryption before validation
• Frontend programs(pg_waldump, pg_rewind
etc) need to obtain tablespace keys and master
key
Choice #2: Encrypt only block data + main data
• XLogRecordHeader has a flag saying “hey this record
is encrypted”
• Frontend programs need to obtain tablespace keys
and master key
Choice #3: Move xl_xxx_xxx to just below
header data and #2
• Frontend tools don’t want to see user data don’t need
to decrypt WAL record
• Possible?
28Copyright©2019 NTT Corp. All Rights Reserved.
WAL Record Encryption
XLogRecord (ENCRYPTED!)
XLogRecordBlockHeader
(RelfileNode, BlockNumber)
XLogRecordBlockImageHeader
XLogRecordDataHeaderShort
xl_heap_update
Full page image (w/o hole) for new buffer
xl_heap_header
new tuple
xl_heap_header
old tuple
Choice #1: Encrypt whole WAL record
• Need another header containing ciphertext
length and tablespace oid (key of encryption
key)
• Need decryption before validation
• Frontend programs(pg_waldump, pg_rewind
etc) need to obtain tablespace keys and master
key
Choice #2: Encrypt only block data + main data
• XLogRecordHeader has a flag saying “hey this record
is encrypted”
• Frontend programs need to obtain tablespace keys
and master key
Choice #3: Move xl_xxx_xxx to just below
header data and #2
• Frontend tools don’t want to see user data don’t need
to decrypt WAL record
• Possible?
29Copyright©2019 NTT Corp. All Rights Reserved.
• Temporary files are written bypassing the shared buffers
• base/pgsql_tmp/
• pg_replslots/
• pg_stat_statements
Temporary File Encryption
postgres
Shared Buffer
Disk
temp files
30Copyright©2019 NTT Corp. All Rights Reserved.
• Temporary files encryption could use “a disposable key”
• Generated randomly by each backend process before use
• lives only during process lifetime
• No other process need to read temporary files
• Interface problem
• Non-uniformed file access interfaces
Disposable Key
31Copyright©2019 NTT Corp. All Rights Reserved.
CREATE DATABASE ... TABLESPACE enc_tblsp;
• System catalogs could have user sensitive data
• pg_statistics, pg_statistics_ext, pg_proc, pg_class etc
• System catalogs of an encrypted database are encrypted
• Encrypt all system catalogs in database that is created on a
encrypted tablespace
System Catalogs Encryption
32Copyright©2019 NTT Corp. All Rights Reserved.
• Per tablespace, buffer-level transparent data at rest
encryption
• Less performance overhead
• Encrypt WAL, system catalogs and temporary files as well
• 2-tier key architecture
• Fast key rotation
• Integration with KMSs
• Provide more flexible and robust key management
Conclusion Remarks
33Copyright©2019 NTT Corp. All Rights Reserved.
Two proposals
• Cluster-wide data at rest encryption is under development
• "WIP: Data at rest encryption" patch and, PostgreSQL 11-beta3
• Proposed by Antonin Houska
• Per-Tablespace data at rest encryption
• Table-level Transparent Data Encryption (TDE) and Key Management
Service (KMS)
• Proposed by Moon Insung, Masahiko Sawada
Current Status
34Copyright©2019 NTT Corp. All Rights Reserved.
• Further discussion on pgsql-hackers
• Submit a draft version patch set for PostgreSQL 13
Future Plans
35Copyright©2019 NTT Corp. All Rights Reserved.
• Block cipher mode of operation
• https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
• Disk encryption theory
• https://en.wikipedia.org/wiki/Disk_encryption_theory#XEX-
based_tweaked-codebook_mode_with_ciphertext_stealing_(XTS)
Some References
36Copyright©2019 NTT Corp. All Rights Reserved.
Thank you
37Copyright©2019 NTT Corp. All Rights Reserved.
• CTR mode turns a block cipher into a streaming cipher
• Stream cipher: byte-to-byte encryption
• Unlike block mode cipher, random read is available
• Used for stream data such as network packets
CTR (Counter) Mode
https://en.wikipedia.org/wiki/Disk_encryption_theory
38Copyright©2019 NTT Corp. All Rights Reserved.
• The characteristics of WAL is quite similar to stream data
• Append only
• Data once written is never updated
• Stream cipher doesn’t need padding even for 15 byte or
less data
Why Can CTR Mode be Used for WAL Encryption?

Contenu connexe

Tendances

Verizon: Finance Data Lake implementation as a Self Service Discovery Big Dat...
Verizon: Finance Data Lake implementation as a Self Service Discovery Big Dat...Verizon: Finance Data Lake implementation as a Self Service Discovery Big Dat...
Verizon: Finance Data Lake implementation as a Self Service Discovery Big Dat...
DataWorks Summit
 
PostgreSQL major version upgrade using built in Logical Replication
PostgreSQL major version upgrade using built in Logical ReplicationPostgreSQL major version upgrade using built in Logical Replication
PostgreSQL major version upgrade using built in Logical Replication
Atsushi Torikoshi
 

Tendances (20)

Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesPercona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL Architectures
 
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
 
Verizon: Finance Data Lake implementation as a Self Service Discovery Big Dat...
Verizon: Finance Data Lake implementation as a Self Service Discovery Big Dat...Verizon: Finance Data Lake implementation as a Self Service Discovery Big Dat...
Verizon: Finance Data Lake implementation as a Self Service Discovery Big Dat...
 
All about Zookeeper and ClickHouse Keeper.pdf
All about Zookeeper and ClickHouse Keeper.pdfAll about Zookeeper and ClickHouse Keeper.pdf
All about Zookeeper and ClickHouse Keeper.pdf
 
Oracle Office Hours - Exposing REST services with APEX and ORDS
Oracle Office Hours - Exposing REST services with APEX and ORDSOracle Office Hours - Exposing REST services with APEX and ORDS
Oracle Office Hours - Exposing REST services with APEX and ORDS
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 
Snowflake Overview
Snowflake OverviewSnowflake Overview
Snowflake Overview
 
Upgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtimeUpgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtime
 
PySpark Best Practices
PySpark Best PracticesPySpark Best Practices
PySpark Best Practices
 
AWS Summit Singapore 2019 | Snowflake: Your Data. No Limits
AWS Summit Singapore 2019 | Snowflake: Your Data. No LimitsAWS Summit Singapore 2019 | Snowflake: Your Data. No Limits
AWS Summit Singapore 2019 | Snowflake: Your Data. No Limits
 
Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB Cluster
 
Snowflake on AWSのターゲットエンドポイントとしての利用
Snowflake on AWSのターゲットエンドポイントとしての利用Snowflake on AWSのターゲットエンドポイントとしての利用
Snowflake on AWSのターゲットエンドポイントとしての利用
 
Data Guard Architecture & Setup
Data Guard Architecture & SetupData Guard Architecture & Setup
Data Guard Architecture & Setup
 
Introducing the Snowflake Computing Cloud Data Warehouse
Introducing the Snowflake Computing Cloud Data WarehouseIntroducing the Snowflake Computing Cloud Data Warehouse
Introducing the Snowflake Computing Cloud Data Warehouse
 
MAA Best Practices for Oracle Database 19c
MAA Best Practices for Oracle Database 19cMAA Best Practices for Oracle Database 19c
MAA Best Practices for Oracle Database 19c
 
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
Vitess: Scalable Database Architecture -  Kubernetes Community Days Africa Ap...Vitess: Scalable Database Architecture -  Kubernetes Community Days Africa Ap...
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
 
PostgreSQL major version upgrade using built in Logical Replication
PostgreSQL major version upgrade using built in Logical ReplicationPostgreSQL major version upgrade using built in Logical Replication
PostgreSQL major version upgrade using built in Logical Replication
 
A Closer Look at Apache Kudu
A Closer Look at Apache KuduA Closer Look at Apache Kudu
A Closer Look at Apache Kudu
 
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
 
Oracle RAC - New Generation
Oracle RAC - New GenerationOracle RAC - New Generation
Oracle RAC - New Generation
 

Similaire à Transparent Data Encryption in PostgreSQL

Data Security at Scale through Spark and Parquet Encryption
Data Security at Scale through Spark and Parquet EncryptionData Security at Scale through Spark and Parquet Encryption
Data Security at Scale through Spark and Parquet Encryption
Databricks
 
Maaz Anjum - IOUG Collaborate 2013 - An Insight into Space Realization on ODA...
Maaz Anjum - IOUG Collaborate 2013 - An Insight into Space Realization on ODA...Maaz Anjum - IOUG Collaborate 2013 - An Insight into Space Realization on ODA...
Maaz Anjum - IOUG Collaborate 2013 - An Insight into Space Realization on ODA...
Maaz Anjum
 
Oracle Performance On Linux X86 systems
Oracle  Performance On Linux  X86 systems Oracle  Performance On Linux  X86 systems
Oracle Performance On Linux X86 systems
Baruch Osoveskiy
 

Similaire à Transparent Data Encryption in PostgreSQL (20)

Why Disk Level Encryption is Not Enough for Your IBM i
Why Disk Level Encryption is Not Enough for Your IBM i Why Disk Level Encryption is Not Enough for Your IBM i
Why Disk Level Encryption is Not Enough for Your IBM i
 
Transparent Encryption in HDFS
Transparent Encryption in HDFSTransparent Encryption in HDFS
Transparent Encryption in HDFS
 
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast DataDatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
 
InnoDB Tablespace Encryption
InnoDB Tablespace Encryption InnoDB Tablespace Encryption
InnoDB Tablespace Encryption
 
From 1000/day to 1000/sec: The Evolution of Incapsula's BIG DATA System [Surg...
From 1000/day to 1000/sec: The Evolution of Incapsula's BIG DATA System [Surg...From 1000/day to 1000/sec: The Evolution of Incapsula's BIG DATA System [Surg...
From 1000/day to 1000/sec: The Evolution of Incapsula's BIG DATA System [Surg...
 
Accelerate and Scale Big Data Analytics with Disaggregated Compute and Storage
Accelerate and Scale Big Data Analytics with Disaggregated Compute and StorageAccelerate and Scale Big Data Analytics with Disaggregated Compute and Storage
Accelerate and Scale Big Data Analytics with Disaggregated Compute and Storage
 
Encrypting and Protecting Your Data in Neo4j(Jeff_Tallman).pptx
Encrypting and Protecting Your Data in Neo4j(Jeff_Tallman).pptxEncrypting and Protecting Your Data in Neo4j(Jeff_Tallman).pptx
Encrypting and Protecting Your Data in Neo4j(Jeff_Tallman).pptx
 
Big Data Security in Apache Projects by Gidon Gershinsky
Big Data Security in Apache Projects by Gidon GershinskyBig Data Security in Apache Projects by Gidon Gershinsky
Big Data Security in Apache Projects by Gidon Gershinsky
 
Advanced MySql Data-at-Rest Encryption in Percona Server
Advanced MySql Data-at-Rest Encryption in Percona ServerAdvanced MySql Data-at-Rest Encryption in Percona Server
Advanced MySql Data-at-Rest Encryption in Percona Server
 
Data Security at Scale through Spark and Parquet Encryption
Data Security at Scale through Spark and Parquet EncryptionData Security at Scale through Spark and Parquet Encryption
Data Security at Scale through Spark and Parquet Encryption
 
Kudu: Fast Analytics on Fast Data
Kudu: Fast Analytics on Fast DataKudu: Fast Analytics on Fast Data
Kudu: Fast Analytics on Fast Data
 
Blbs tn-double-the-power-half-the-space-uslet-en
Blbs tn-double-the-power-half-the-space-uslet-enBlbs tn-double-the-power-half-the-space-uslet-en
Blbs tn-double-the-power-half-the-space-uslet-en
 
MySQL Data Encryption at Rest
MySQL Data Encryption at RestMySQL Data Encryption at Rest
MySQL Data Encryption at Rest
 
Maaz Anjum - IOUG Collaborate 2013 - An Insight into Space Realization on ODA...
Maaz Anjum - IOUG Collaborate 2013 - An Insight into Space Realization on ODA...Maaz Anjum - IOUG Collaborate 2013 - An Insight into Space Realization on ODA...
Maaz Anjum - IOUG Collaborate 2013 - An Insight into Space Realization on ODA...
 
Feature rich BTRFS is Getting Richer with Encryption
Feature rich BTRFS is Getting Richer with EncryptionFeature rich BTRFS is Getting Richer with Encryption
Feature rich BTRFS is Getting Richer with Encryption
 
You Can't Correlate what you don't have - ArcSight Protect 2011
You Can't Correlate what you don't have - ArcSight Protect 2011You Can't Correlate what you don't have - ArcSight Protect 2011
You Can't Correlate what you don't have - ArcSight Protect 2011
 
Engineering an Encrypted Storage Engine
Engineering an Encrypted Storage EngineEngineering an Encrypted Storage Engine
Engineering an Encrypted Storage Engine
 
Oracle Performance On Linux X86 systems
Oracle  Performance On Linux  X86 systems Oracle  Performance On Linux  X86 systems
Oracle Performance On Linux X86 systems
 
The Pendulum Swings Back: Converged and Hyperconverged Environments
The Pendulum Swings Back: Converged and Hyperconverged EnvironmentsThe Pendulum Swings Back: Converged and Hyperconverged Environments
The Pendulum Swings Back: Converged and Hyperconverged Environments
 
NTTドコモ様 導入事例 OpenStack Summit 2015 Tokyo 講演「After One year of OpenStack Cloud...
NTTドコモ様 導入事例 OpenStack Summit 2015 Tokyo 講演「After One year of OpenStack Cloud...NTTドコモ様 導入事例 OpenStack Summit 2015 Tokyo 講演「After One year of OpenStack Cloud...
NTTドコモ様 導入事例 OpenStack Summit 2015 Tokyo 講演「After One year of OpenStack Cloud...
 

Plus de Masahiko Sawada

Plus de Masahiko Sawada (20)

PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
 
Bloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQLBloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQL
 
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
 
Vacuum more efficient than ever
Vacuum more efficient than everVacuum more efficient than ever
Vacuum more efficient than ever
 
Vacuumとzheap
VacuumとzheapVacuumとzheap
Vacuumとzheap
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Parallel Vacuum
Parallel VacuumParallel Vacuum
Parallel Vacuum
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
FDW-based Sharding Update and Future
FDW-based Sharding Update and FutureFDW-based Sharding Update and Future
FDW-based Sharding Update and Future
 
What’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributorWhat’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributor
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
 
pg_bigmと類似度検索
pg_bigmと類似度検索pg_bigmと類似度検索
pg_bigmと類似度検索
 

Dernier

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Dernier (20)

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 

Transparent Data Encryption in PostgreSQL

  • 1. Copyright©2019 NTT Corp. All Rights Reserved. Transparent Data Encryption in PostgreSQL NTT Open Source Software Center Masahiko Sawada PGCon 2019
  • 2. 2Copyright©2019 NTT Corp. All Rights Reserved. • Database servers are often the primary target of the following attacks • Privilege abuse • Database SQL injections attacks • Storage media theft • Eavesdropping attacks between client and server • etc. Database Security Threats DB administratorApplications Database server Eavesdropping attacks SQL injections Privilege abuse Physical storage theft
  • 3. 3Copyright©2019 NTT Corp. All Rights Reserved. Encryption Database Server Application Server
  • 4. 4Copyright©2019 NTT Corp. All Rights Reserved. • Protect data from attacks bypassing database access control layer(ACL) • Read database file directly • Taking a backup • Doesn’t protect from attacks by malicious “privileged” users • SELECT SQL command by superuser • Data is not encrypted while being used • On shared buffer, on network • Often implements as transparent data encryption(TDE) Data at rest Encryption
  • 5. 5Copyright©2019 NTT Corp. All Rights Reserved. • Full disk encryption (e.g. dmcrypt) is platform dependent • Doesn’t protect data from logged-in OS users How About Full Disk Encryption?
  • 6. 6Copyright©2019 NTT Corp. All Rights Reserved. • Provide set of cryptographic functions • A convenient tool But, • Not transparent to users • Need to modify SQL, application code • Triggers and views help • Could be a cause of performance overhead • Data needs to be decrypted every time it is accessed How About contrib/pgcrypto?
  • 7. 7Copyright©2019 NTT Corp. All Rights Reserved. Transparent Data Encryption in PostgreSQL
  • 8. 8Copyright©2019 NTT Corp. All Rights Reserved. Per tablespace encryption • CREATE TABLESPACE enctblsp ... WITH (encryption = on); • Fine grained control • Specified table and its indexes, TOAST table and WAL are transparently encrypted • Also encrypt other objects such as system catalogs and temporary files • Under discussion on pgsql-hackers • [Proposal] Table-level Transparent Data Encryption (TDE) and Key Management Service (KMS) Proposal
  • 9. 9Copyright©2019 NTT Corp. All Rights Reserved. PostgreSQL I/O Architecture postgres Shared Buffer Disk postgres postgres Page Cache (Kernel) raw block data
  • 10. 10Copyright©2019 NTT Corp. All Rights Reserved. PostgreSQL I/O Architecture postgres Disk postgres postgres Page Cache (Kernel) raw block data Shared Buffer Backend processes read pages from the shared buffers and modify them.
  • 11. 11Copyright©2019 NTT Corp. All Rights Reserved. PostgreSQL I/O Architecture postgres Disk postgres postgres Page Cache (Kernel) raw block data Shared Buffer bgwriter periodically writes the dirty pages out to the kernel page cache.
  • 12. 12Copyright©2019 NTT Corp. All Rights Reserved. PostgreSQL I/O Architecture postgres Disk postgres postgres raw block data Shared Buffer Page Cache (Kernel) Dirty pages are flushed to the disk by the checkpointer or the kernel.
  • 13. 13Copyright©2019 NTT Corp. All Rights Reserved. Buffer Level Encryption (our solution) postgres Shared Buffer Disk Pros: • Relatively less execution of encryption and decryption • Prevent peeking file on disk Cons: • Possibly repeated encryption and decryption of same data if the database doesn’t fit in shared buffers postgres postgres Page Cache (Kernel) raw data encrypted data
  • 14. 14Copyright©2019 NTT Corp. All Rights Reserved. Latency (90%tile): vanilla: 1.98 ms, TDE: 2.01 ms, pgcrypto: 2.28 ms Results 6000 6500 7000 7500 8000 8500 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 TPS Duraiton(sec) TPS comparison (R:100,W:3) vanilla tde pgcrypto 8000 8500 9000 9500 10000 10500 11000 10 30 50 70 90 110 130 150 170 190 210 230 250 270 TPS Duration (sec) TPS comparison (R:100) vanilla tde pgcrypto Latency (90%tile): vanilla: 2.32 ms, TDE: 2.45 ms, pgcrypto: 2.66 ms DB size < shared buffers DB size > shared buffers
  • 15. 15Copyright©2019 NTT Corp. All Rights Reserved. • Advanced Encryption Standard(AES) • Symmetric key algorithm • AES-256 • Block cipher • 16 bytes block size • Using openssl is preferable (--with-openssl) • AES-NI • Block cipher mode of operation • CBC or XTS How To Encrypt
  • 16. 16Copyright©2019 NTT Corp. All Rights Reserved. • For faster key rotation • Master key • Stored outside the database • Encrypt/Decrypt tablespace keys • One key per database cluster • Tablespace Key (= data key) • Stored inside the database • Encrypt/Decrypt database objects • One key per tablespace 2-Tier Key Hierarchy Master Key Encrypt/Decrypt Encrypt/ Decrypt External Location Database Server ENCRYPTED DATA Tablespace key
  • 17. 17Copyright©2019 NTT Corp. All Rights Reserved. • For faster key rotation • Master key • Stored outside the database • Encrypt/Decrypt tablespace keys • One key per database cluster • Tablespace Key (= data key) • Stored inside the database • Encrypt/Decrypt database objects • One key per tablespace 2-Tier Key Hierarchy Master Key Encrypt/Decrypt Encrypt/ Decrypt External Location Database Server ENCRYPTED DATA Tablespace key New Master Key
  • 18. 18Copyright©2019 NTT Corp. All Rights Reserved. • Key management is very important • How can we robustly manage the master key? • Better leave it to a specialist • Usually support some kinds of protocols • KMIP, HTTPS etc Key Management
  • 19. 19Copyright©2019 NTT Corp. All Rights Reserved. • Key manager manages a key management plugin as well as tablespace keys • Add generic interface between PostgreSQL and key management systems (Key management API) Integration with Key Management Systems Key management API get_key(), generate_key(), remove key() Encrypted file A KMS B KMS Bufmgr, smgr, encryption etc File A KMS A KMS KMIP HTTPSread/write Key manager (keyring) Encrypted Tablespace keys Shared Memory master key Local Memory Tablespace keys shared buffer
  • 20. 20Copyright©2019 NTT Corp. All Rights Reserved. • PostgreSQL gets the master key from KMS at startup • Cache the master key on the shared memory • Risk of key leakage when memory dump • MADV_DONTDUMP of madvise(2) helps • Risk of key leakage when swapped out • mlock(2) helps • Backend processes get the encrypted tablespace key at startup and decrypt all of them with the master key Caching Keys
  • 21. 21Copyright©2019 NTT Corp. All Rights Reserved. • WAL Block Encryption • Encrypt WAL block every commit time • WAL writer could encrypt • WAL Record encryption • Encrypt WAL when inserting to WAL buffer • Doesn’t encrypt WAL data that is not pertaining to encrypted tables WAL Encryption A block on WAL Buffer WAL file writeencrypt & write WAL file memcpy encrypt & memcpy 1. Encrypt WAL blocks 2. Encrypt WAL records
  • 22. 22Copyright©2019 NTT Corp. All Rights Reserved. • It’s more secure if we use the same encryption key for WAL encryption as that used for table • Choice #2 would be better approach WAL Encryption A block on WAL Buffer WAL file writeencrypt & write WAL file memcpy encrypt & memcpy 1. Encrypt WAL blocks 2. Encrypt WAL records
  • 23. 23Copyright©2019 NTT Corp. All Rights Reserved. Performance Overhead of WAL Encryption • Compare performance on insert-heavy workload • Encrypt all WAL blocks/records • pg_wal directory on tmpfs to avoid disk I/O bottleneck • Each transaction inserts a few records and commit • Max 7% degradation 1.00 1.06 1.07 1.05 1.04 0.00 0.20 0.40 0.60 0.80 1.00 1.20 No Encrytpion WAL Block WAL Record WAL Record (1/2) WAL Record (1/5) INSERT 10M rows (tempfs)
  • 24. 24Copyright©2019 NTT Corp. All Rights Reserved. • pg_wal on HDD • No big performance overhead Performance Overhead of WAL Encryption 1.00 1.01 1.00 0.00 0.20 0.40 0.60 0.80 1.00 1.20 No Encrytpion WAL Block WAL Record INSERT 50k rows (HDD)
  • 25. 25Copyright©2019 NTT Corp. All Rights Reserved. WAL Record Format XLogRecord XLogRecordBlockHeader (RelfileNode, BlockNumber) XLogREcordBlockImageHeader XLogRecordDataHeaderShort Full page image (w/o hole) for new buffer xl_heap_header new tuple xl_heap_update xl_heap_header old tuple An example of xl_heap_update (wal_level = logical) Header data No user data is stored Block data FPI and tuples are stored Main data Could also contain tuples
  • 26. 26Copyright©2019 NTT Corp. All Rights Reserved. WAL Record Encryption XLogRecord XLogRecordBlockHeader (RelfileNode, BlockNumber) XLogRecordBlockImageHeader XLogRecordDataHeaderShort Full page image (w/o hole) for new buffer xl_heap_header new tuple xl_heap_update xl_heap_header old tuple Choice #1: Encrypt whole WAL record • Need another header containing ciphertext length and tablespace oid (key of encryption key) • Need decryption before validation • Frontend programs(pg_waldump, pg_rewind etc) need to obtain tablespace keys and master key Choice #2: Encrypt only block data + main data • XLogRecordHeader has a flag saying “hey this record is encrypted” • Frontend programs need to obtain tablespace keys and master key Choice #3: Move xl_xxx_xxx to just below header data and #2 • Frontend tools don’t want to see user data don’t need to decrypt WAL record • Possible?
  • 27. 27Copyright©2019 NTT Corp. All Rights Reserved. WAL Record Encryption XLogRecord (ENCRYPTED!) XLogRecordBlockHeader (RelfileNode, BlockNumber) XLogRecordBlockImageHeader XLogRecordDataHeaderShort Full page image (w/o hole) for new buffer xl_heap_header new tuple xl_heap_update xl_heap_header old tuple Choice #1: Encrypt whole WAL record • Need another header containing ciphertext length and tablespace oid (key of encryption key) • Need decryption before validation • Frontend programs(pg_waldump, pg_rewind etc) need to obtain tablespace keys and master key Choice #2: Encrypt only block data + main data • XLogRecordHeader has a flag saying “hey this record is encrypted” • Frontend programs need to obtain tablespace keys and master key Choice #3: Move xl_xxx_xxx to just below header data and #2 • Frontend tools don’t want to see user data don’t need to decrypt WAL record • Possible?
  • 28. 28Copyright©2019 NTT Corp. All Rights Reserved. WAL Record Encryption XLogRecord (ENCRYPTED!) XLogRecordBlockHeader (RelfileNode, BlockNumber) XLogRecordBlockImageHeader XLogRecordDataHeaderShort xl_heap_update Full page image (w/o hole) for new buffer xl_heap_header new tuple xl_heap_header old tuple Choice #1: Encrypt whole WAL record • Need another header containing ciphertext length and tablespace oid (key of encryption key) • Need decryption before validation • Frontend programs(pg_waldump, pg_rewind etc) need to obtain tablespace keys and master key Choice #2: Encrypt only block data + main data • XLogRecordHeader has a flag saying “hey this record is encrypted” • Frontend programs need to obtain tablespace keys and master key Choice #3: Move xl_xxx_xxx to just below header data and #2 • Frontend tools don’t want to see user data don’t need to decrypt WAL record • Possible?
  • 29. 29Copyright©2019 NTT Corp. All Rights Reserved. • Temporary files are written bypassing the shared buffers • base/pgsql_tmp/ • pg_replslots/ • pg_stat_statements Temporary File Encryption postgres Shared Buffer Disk temp files
  • 30. 30Copyright©2019 NTT Corp. All Rights Reserved. • Temporary files encryption could use “a disposable key” • Generated randomly by each backend process before use • lives only during process lifetime • No other process need to read temporary files • Interface problem • Non-uniformed file access interfaces Disposable Key
  • 31. 31Copyright©2019 NTT Corp. All Rights Reserved. CREATE DATABASE ... TABLESPACE enc_tblsp; • System catalogs could have user sensitive data • pg_statistics, pg_statistics_ext, pg_proc, pg_class etc • System catalogs of an encrypted database are encrypted • Encrypt all system catalogs in database that is created on a encrypted tablespace System Catalogs Encryption
  • 32. 32Copyright©2019 NTT Corp. All Rights Reserved. • Per tablespace, buffer-level transparent data at rest encryption • Less performance overhead • Encrypt WAL, system catalogs and temporary files as well • 2-tier key architecture • Fast key rotation • Integration with KMSs • Provide more flexible and robust key management Conclusion Remarks
  • 33. 33Copyright©2019 NTT Corp. All Rights Reserved. Two proposals • Cluster-wide data at rest encryption is under development • "WIP: Data at rest encryption" patch and, PostgreSQL 11-beta3 • Proposed by Antonin Houska • Per-Tablespace data at rest encryption • Table-level Transparent Data Encryption (TDE) and Key Management Service (KMS) • Proposed by Moon Insung, Masahiko Sawada Current Status
  • 34. 34Copyright©2019 NTT Corp. All Rights Reserved. • Further discussion on pgsql-hackers • Submit a draft version patch set for PostgreSQL 13 Future Plans
  • 35. 35Copyright©2019 NTT Corp. All Rights Reserved. • Block cipher mode of operation • https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation • Disk encryption theory • https://en.wikipedia.org/wiki/Disk_encryption_theory#XEX- based_tweaked-codebook_mode_with_ciphertext_stealing_(XTS) Some References
  • 36. 36Copyright©2019 NTT Corp. All Rights Reserved. Thank you
  • 37. 37Copyright©2019 NTT Corp. All Rights Reserved. • CTR mode turns a block cipher into a streaming cipher • Stream cipher: byte-to-byte encryption • Unlike block mode cipher, random read is available • Used for stream data such as network packets CTR (Counter) Mode https://en.wikipedia.org/wiki/Disk_encryption_theory
  • 38. 38Copyright©2019 NTT Corp. All Rights Reserved. • The characteristics of WAL is quite similar to stream data • Append only • Data once written is never updated • Stream cipher doesn’t need padding even for 15 byte or less data Why Can CTR Mode be Used for WAL Encryption?