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을 돌려줍니다.

간단한 예제입니다.


언어 : sql
  1. USE Tempdb
  2. GO
  3.  
  4. DROP TABLE TBL_Users
  5. GO
  6.  
  7. CREATE TABLE TBL_Users (
  8.     UserID    NVARCHAR(10)
  9. ,    UserPW    NVARCHAR(36)
  10. )
  11. GO
  12.  
  13. INSERT INTO TBL_Users VALUES('User1', pwdencrypt('PW1'))
  14. INSERT INTO TBL_Users VALUES('User2', pwdencrypt('PW2'))
  15. INSERT INTO TBL_Users VALUES('User3', pwdencrypt('PW3'))
  16. INSERT INTO TBL_Users VALUES('User4', pwdencrypt('PW4'))
  17.  
  18. SELECT * FROM TBL_Users
  19.  
  20. SELECT    pwdcompare('A',UserPW) -- 0 Return
  21. FROM    TBL_Users
  22. WHERE    UserID = 'User1'
  23.  
  24. SELECT    pwdcompare('PW1',UserPW) -- 1 Return
  25. FROM    TBL_Users
  26. WHERE    UserID = 'User1'



출처: http://manito77.blog.segye.com/tag/%EB%8D%B0%EC%9D%B4%ED%83%80%EC%95%94%ED%98%B8%ED%99%94

이올린에 북마크하기(0) 이올린에 추천하기(0)
top


http://www.joon.pe.kr/blog/trackback/306


<< Prev   1   ... 40   41   42   43   44   45   46   47   48   ... 336   Next >>