[Powerpoint] - Always_Encrypted

Propaganda
Analisando o Always Encrypted
Gustavo Moura Fé Maia
@GuzzMFM | UBEC
[email protected]
PATROCINADORES
Próximos eventos
 09/10/2016 (amanhã!)
PosConf – 150 otimizações que você deveria
conhecer (por Fabiano Amorim)
 14 a 18/11/2016
24 Hours of PASS em Português
 26/11/2016
SQL Saturday #573 (Brasília)
Apresentação pessoal




Gustavo Maia – um de muitos =]
M(TA|CTS?) #RegExLover
Database enthusiast desde 2009
SQL Server geek desde 2012
Agenda




Porque Always Encrypted?
Como funciona?
Implantando o Always Encrypted
Analisando dados criptografados
Porque Always Encrypted?
 Michael Stonebraker
 Professor do MIT;
 Vencedor do Turing
Award (2014);
 Criador do INGRES e
PostGRES;
 “The Traditional RDBMS
Wisdom is (Almost
Certainly) All Wrong”
(2013).
Tempo gasto em uma consulta
24%
24%
Buffer Pool
Latching
Locking
4%
Processamento
24%
Recovery
24%
Fonte:
Custo da memória ao longo dos anos
Porque Always Encrypted?
 Barateamento da memória RAM +
Tecnologias In-Memory
 Mais dados por mais tempo em memória
 Segurança da informação no SQL Server
 TDE, backup criptografado, SSL, IPSec, etc.
 Ataques de Memory Sniffing e Memory Dump
Agenda




Porque Always Encrypted?
Como funciona?
Implantando o Always Encrypted
Analisando dados criptografados
Chaves criptográficas
 Column Master Key (CMK)
 Key-protecting key
 RSA_OAEP
 Column Encryption Key (CEK)




Data encryption key
AEAD_AES_256_CBC_HMAC_SHA_256
IV depende do tipo de criptografia
Determinístico vs Aleatório
Tamanho da coluna criptografada




Version
1
Version byte (1B);
MAC (32 B);
Vetor de inicialização (16 B);
Texto cifrado (16+ B).
MAC
32
IV
cipher_text
16
(FLOOR (DATALENGTH (cell_data) / 16) + 1) * 16
Key Store
 Local de armazenamento da CMK
 Azure Key Vault;
 Hardware Security Modules (HSM);
 Windows Certificate Store.
 Certificado de chave pública (CA ou Auto-assinado).
Always Encrypted Driver
 Responsável pela interação com a Key Store
 Realiza a criptografia e descriptografia do
conteúdo
 Promove transparência para a aplicação
SELECT * FROM dbo.Pessoa
SELECT * FROM dbo.Pessoa
App
ADO.NET
Nome
CPF
Logradouro
Gustavo
12345678910
Perto de Lá
Nome
CPF
Logradouro
José Silva
01234567891
Lugar nenhum
Gustavo
0x749...
0x692...
José Silva
0x193...
0x666...
Data Flow
dbo.Pessoa.CPF
dbo.Pessoa.Logradouro
Metadata
Nome
CPF
Logradouro
Gustavo
0x749...
0x692...
José Silva
0x193...
0x666...
EXEC sys.sp_describe_parameter_encryption
‘SELECT Nome,Logradouro FROM Pessoa
WHERE CPF = @CPF’
SELECT Nome, Logradouro
FROM Pessoa WHERE
CPF = ‘12345678910’
SELECT Nome,Logradouro FROM
Pessoa WHERE CPF = @CPF
(@CPF = 0x749...)
App
Nome
Logradouro
Gustavo
Perto de Lá
Data Flow
Metadata Flow
ADO.NET
dbo.Pessoa.CPF
Metadata
Nome
Logradouro
Nome
CPF
Logradouro
Gustavo
0x692...
Gustavo
0x749...
0x692...
José Silva
0x193...
0x666...
dbo.Pessoa.Logradouro
Metadata
Agenda




Porque Always Encrypted?
Como funciona?
Implantando o Always Encrypted
Analisando dados criptografados
Implantando o
Always Encrypted
Agenda




Porque Always Encrypted?
Como funciona?
Implantando o Always Encrypted
Analisando dados criptografados
Analisando dados criptografados
 Data pages




8K ou 8192 bytes;
In-row;
Row-overflow;
LOB (Large Object).
Fonte: DELANEY et al (2013)
Analisando dados criptografados
Fonte: DELANEY et al (2013)
Analisando dados
criptografados em
memória
Analisando dados criptografados
 Tabular Data Stream (TDS)
 Protocolo da camada de aplicação usado entre o
SQL Server e o Cliente;
 Trabalha com mensagens e tokens;
 Versão 7.4 – atualizada com o lançamento do
SQL Server 2016.
Analisando dados criptografados
Cliente
Servidor
PRELOGIN
PRELOGIN RESPONSE
LOGIN7
LOGINACK
SQL BATCH
ROW DATA
Analisando dados criptografados
TDS Header


COLMETADATA

ROW DATA
Token Type
Cek Table
 EK Value Count
 Database ID
 Cek ID
 Cek Version
 Encrypted Key
 Key Store Name
 Key Path
 Asymmetric
Algorithm
Column Data
 Flags
 Type Info
 Crypto Metadata
 Colname
Analisando dados criptografados
Download