1)
CREATE SYMMETRIC KEY SecureSymmetricKey
WITH ALGORITHM = DESX
ENCRYPTION BY PASSWORD = N'StrongPassword';
Estou tentando descobrir sobre a criptografia do SQL Server.
- depois de executar o código acima, existe alguma maneira de descobrir mais tarde qual é o valor da senha para o
SecureSymmetricKey
?
2)
Se agora estou fazendo isso com Certificates
: Sou o administrador e criei:
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = 'DB Master key password!'
GO
só eu sei a senha.
mais tarde eu :
CREATE CERTIFICATE MyCertificate
WITH SUBJECT = 'My Certificate Subject'
CREATE SYMMETRIC KEY MySymetricKey
WITH ALGORITHM = TRIPLE_DES ENCRYPTION
BY CERTIFICATE MyCertificate
até agora, está tudo bem.
Agora, quando um hacker chega ao computador, tudo o que ele precisa fazer é :
OPEN SYMMETRIC KEY MySymetricKey DECRYPTION
BY CERTIFICATE MyCertificate
e depois :
SELECT
convert( NVARCHAR(max), decryptbykey(namePAss))
FROM tbl1
então onde está a proteção em certificados? Ninguém pediu uma senha a ele (como na criptografia de senha (como na minha primeira pergunta) ...? Ele só precisava saber o nome do certificado
OPEN SYMMETRIC KEY MySymetricKey DECRYPTION
BY CERTIFICATE MyCertificate
e não é um problema descobrir qual é o nome do certificado ... Então, onde está a proteção em decifrar dados do hacker?
A finalidade de um certificado no SQL Server é proteger as chaves simétricas, mas é mais para proteger seus dados offline: arquivos .mdb e backups. Na verdade, não foi projetado para impedir o acesso aos dados quando um invasor tiver acesso à instância SQL em execução (com permissão suficiente para acessar os dados e executar a descriptografia).