본문 바로가기
Tech/Database

SQL Server 비대칭 키 암호화

by Augustine™ 2018. 7. 15.
반응형

SQL Server에서 비대칭 키를 이용한 암호화를 지원한다. 비대칭 키의 핵심은 개인키와 공개키로 구성된다는 것이다. 비대칭 키의 대한 내용은 구글링해서 찾아보자. 쉽게 설명된 자료가 아주 많다.

SQL Server에서 비대칭 키를 이용하는데 사용하는 구문은 아래와 같다.

항목

설명

CREATE ASYMMETRIC KEY (Transact-SQL)비대칭 키를 만들기 위한 명령에 대해 설명합니다.
SIGNBYASYMKEY(Transact-SQL)

개체를 서명하는 옵션을 표시합니다.


먼저 AdventureWorks2012(AdventureWorks2012설치) Database를 선택한 다음, 아래와 같이 테스트 테이블을 만든다.

Use AdventureWorks2012
go

if OBJECT_ID('dbo.EmpTest') IS NOT NULL
	drop table dbo.EmpTest
go

--테이블 만들기
select BusinessEntityID, LoginID, JobTitle, HireDate 
	into dbo.EmpTest
from 
HumanResources.Employee
go


테스트 테이블을 만든 후, 아래와 같이 비대칭 키를 만든다.

참고로 SQL Server 비대칭키 지원 암호화 알고리즘은 

RSA_4096 | RSA_3072 | RSA_2048 | RSA_1024 | RSA_512 이다.

--비대칭 키 만들기
Create ASYMMETRIC key TestASymKey
	with algorithm = RSA_512
	encryption by password = 'P@ssw0rd' -- 복잡한 암호 지정
go	

키를 만들고 나면, 아래 그림과 같이 비대칭 키가 생긴다.




별도로 암호화할 속성을 만들고, LoginId를 만든 비대칭키를 이용하여 추가한 암호화 속성에 업데이트 처리한다.

alter table dbo.EmpTest Add encLoginId varbinary(256) go -- 새로운 열에 암호화 된 데이터 저장 update dbo.EmpTest set encLoginId = ENCRYPTBYASYMKEY (ASYMKEY_ID('TestASymKey'), LoginID) GO


select * from dbo.EmpTest


암호화가 잘 되었는지 확인하고, 기존  암호화 안된 속성을 삭제한다.


아래는 복호화해서 확인 하는 쿼리다.

--복호화해서 확인 select BusinessEntityID, JobTitle, HireDate ,CONVERT(nvarchar, DECRYPTBYASYMKEY (ASYMKEY_ID('TestASymKey'), encLoginId, N'P@ssw0rd')) as encLoginId from dbo.EmpTest



반응형

'Tech > Database' 카테고리의 다른 글

SQL 파싱과 최적화  (0) 2018.07.21
PostgreSQL - 주식 월평균 전년대비 쿼리  (0) 2018.07.19
SQL Server 권한 부여  (0) 2018.07.14
SQLServer Login & User 의 이해  (1) 2018.07.12
누적 데이터 query  (0) 2018.07.11

댓글