/ / MS SQL Server: Zabezpečenie dát na úrovni stĺpcov - java, sql-server, zabezpečenie, šifrovanie, hash

MS SQL Server: Zabezpečenie dát na úrovni stĺpcov - java, sql-server, zabezpečenie, šifrovanie, hash

Už máme vyvinutú aplikáciu a teraz chceme zaistiť (šifrovanie) stĺpce tabuľky v databáze (MS SQL Server 2008). Tieto niekoľko stĺpcov sú ako heslá, čísla kreditných kariet, SSN atď.

to je Jáva (1.5) a nepoužívame žiadnu api ako hibernáciu. Všetko bolo vykonané od začiatku.

Chcem tieto údaje zabezpečiť takým spôsobom, že to nie je užitočné pre každého, kto ju číta. Môže niekto poradiť, ako to urobiť (osvedčené postupy) a aké sú nevýhody z hľadiska výkonu?

Môžem to urobiť na úrovni databázy (nehovorím o celom db encrytion)?

Vďaka

odpovede:

1 pre odpoveď č. 1

SQL server má zabudované šifrovanie. Tu je ukážka kódu, ktorú som prevzal z mojej knihy o bezpečnosti (SQL Server 2012 Security Cookbook):

USE marketing ;

-- create the database master key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = "a very strong password";

-- a sample table
CREATE TABLE dbo.Customer (
CustomerId int NOT NULL IDENTITY(1,1) PRIMARY KEY,
Firstname varchar(50) NOT NULL,
Lastname varchar(50) NOT NULL,
CreditCardInfo varbinary(2000) NOT NULL
)

-- a certificate to protect the encryption key
CREATE CERTIFICATE KeyProtectionCert
WITH SUBJECT = "to protect symmetric encryption keys";

-- the symmetric encryption key
CREATE SYMMETRIC KEY CreditCardSKey
WITH ALGORITHM = AES_256,
KEY_SOURCE = "4frT-7FGHFDfTh98#6erZ3dq#«",
IDENTITY_VALUE = "l·Fg{(ZEfd@23fz4fqeRHY&4efVql"
ENCRYPTION BY CERTIFICATE KeyProtectionCert;

-- using the encryption key
OPEN SYMMETRIC KEY CreditCardSKey
DECRYPTION BY CERTIFICATE KeyProtectionCert;

INSERT INTO dbo.Customer (Firstname, LastName, CreditCardInfo)
VALUES ("Jim", "Murphy",
EncryptByKey(Key_Guid("CreditCardSKey"), "1111222233334444;12/13,456", 1, "JimMurphy")
);

CLOSE SYMMETRIC KEY CreditCardSKey;

--To read the data and get back the original unencrypted data (the plaintext), we use the DecryptByKey() function:
OPEN SYMMETRIC KEY CreditCardSKey DECRYPTION BY CERTIFICATE KeyProtectionCert;

SELECT Firstname, Lastname,
CAST(DecryptByKey(CreditCardInfo, 1, Firstname + Lastname) as varchar(50))
FROM dbo.Customer;

CLOSE SYMMETRIC KEY CreditCardSKey;

-- or without opening it :
SELECT Firstname, Lastname,
CAST(DecryptByKeyAutoCert(CERT_ID("KeyProtectionCert"), NULL, CreditCardInfo, 1, Firstname + Lastname) as varchar(50))
FROM dbo.Customer;