MSSQL 컬럼 암호화
[제목] SQL 서버 자체에서 데이터 입력시 암호화하여 입력받기
비밀번호나 주민번호를 같이 관리자라 할지라도 열람하지 말아야 하는 정보는
MySql에서는 Encryption 으로 암호화 하여 저장한다고 합니다.
전에 타 업체에서 MSSQL 2000으로도 이런것을 하는 것을 보왔습니다.
제 짧은 생각으로는 입력받는 프로그램에서 암호화 하여 값을 입력하였겠지 생각하였습니다.
그런데 MySql에서 Encryption 으로 압호화 하여 값을 입력받을 수 있다는 말을 듣고
MS-SQL에서도 이런 기능이 있을까 하는 생각에 책을 찾아봤지만
책에서는 찾지 못했습니다.
개인 신상 정보는 어떠한 일이 있어도 외부혹은 사내 직원까지 포함해서
함부로 연람 해서는 안된다고 생각하는 사람입니다.
답변 부탁드립니다.
감사합니다.
-----------------------------------------------------------
[제목] Undocumented Stored Procedure를 사용하면 가능하나.
Encrytion된 데이타의 길이가 원 데이타의 사이즈와는 별개로 고정(varbinary(255))되므로
테이블의 사이즈가 커져서 불필요한 공간낭비가 심각해지고,
쿼리하기 위해 모든 암호화값을 Decryption 해야하므로 오버헤드가 커지며,
where 절에서 비교하기전에 변형이 발생할 수 밖에 없으므로 인덱스를 전혀 사용할 수 없게되며,
향후 버젼에서 undocumented sp는 변경될 여지가 높으므로
사용을 권장하지는 않으나 굳이 사용한다면 사용자데이타중의 password 컬럼 정도에만 사용하는 것을 권합니다.
pwdencrypt()와 pwdcompare() 함수가 그 일을 해주는데 최근 이 함수에 buffer overflow 버그가 있다는 보고가 있었으므로 반드시 관련 패치를 하시기 바랍니다.
-----------------------------------------------------------
[제목]컬럼 암호화에 대한 조언
db의 컬럼을 암호화 할 수 있는 방법이 있다고 하는데
어떻게 하면 가능한지 고수님들의 많은 조언 부탁 드립니다.
--------------------------------------------------------
답변:
테이블 만들때..
VARBINARY로 DataType를 설정하시구염..
값을 입력할때..
ENCRYPT 라는 함수 비스무리한것을 이용해서.. 캐스팅 하듯이..
입력하면 되구..
참조할대..
디코딩은 안되니깐..
비교할 값을 ENCRYPT로.. 인코딩해서 같은지 비교하면 됩니다..^^
-----------------------------------------------------------
[제목]pwdencrypt/pwdcompare를 이용해보세요.
pwdencrypt로 입력된내용은 pwdcompare함수를 이용해 일치여부만 알 수 있습니다.
일치할경우 1/일치하지 않을경우 0을 돌려줍니다.
간단한 예제입니다.
출처: http://manito77.blog.segye.com/tag/%EB%8D%B0%EC%9D%B4%ED%83%80%EC%95%94%ED%98%B8%ED%99%94