저희 회사에서 이번에 프로젝트로 고객관리 웹사이트를 만들고 있는데요. 아무래도 민감정보 '주민번호' 등이 DB에
들어갈 것 같습니다. 그래서 개인정보보호법 (?) 에 따라 DB를 암호화 해야 되는데요 시중에 나와있는 국정원 인증된
좋은 솔루션등은 너무 많지만 가격이 비싸 엄두가 안나고 해서 저희가 자체적으로 DB 암호화를 만들어서 하려고 합니다.
SQL 의 TDE 는 Enterprise 버전부터 해당이 되는것 같아 어려울 것 같고, asp.net 으로 직접 만들려고 하는데
asp.net의 경우는 128bit 암호화 블럭을 사용하는 함수가 있고 관련 소스도 많이 보입니다.
저의 의문은 실제로 DB암호화에 대한 부분을 자체적으로 만드는 경우가 많이 있는지 있다면
대략 어떠한 방법으로 하게 되는지 궁금합니다.
그리고 그러한 방법으로 진행했을 경우 개인정보보호법에 합당한건지도 궁금합니다.
사례들을 찾아보았지만 뭔가 확실치 않고, 키관리 라든지 접근제어부분도 들어가야 되는것 같아 많이 헷갈려서 질문드리게 됐습니다.
외람된 질문인것 같아 죄송합니다.
Comment 5
-
메칸더
2013.06.20 13:58
-
나는짱이야
2013.06.20 14:53
주민등록 수집 못할텐데요..DI값만 저장가능할텐데요..
-
트리플
2013.06.20 18:21
그렇군요. 올해 2월 부터 무조건 단방향 암호화로만 저장 되게끔 바뀐것 같네요.
암호화를 자체적으로 하신경험은 없으신가요? 아니면 주위에서 라도 ㅜㅜ
-
catchv
2013.06.21 12:07
경험을 이야기 드리자면 C#으로 자체 암호화를 몇년 전에 한적이 있습니다.
CLR function 을 만들어서 암호화 복호화 하는데 사용 했습니다. ASP.NET으로 하시면 웹을 통해서만 암호화 복호화를
하실 수 있을텐데 조회시의 문제점을 확인해 보셔야 할 것 같습니다.
이걸 가지고 방통위 시절 ISMS 인증을 받기도 했는데 심사관들은 DB의 데이터를 암호화 했는지만 관심을 가졌습니다.
모듈을 자체 개발하시면 핵심은 키(key, IV)를 어떻게 보관하고 사용하실지 고민하시면 됩니다.(댓글을 보니 또 법이 바뀐 것 같네요.)
고객사 개발이라고 하시면 반드시 키와 암호화 방식에 대한 고객사의 동의를 문서로 꼭 받으셔야 나중에 책임여부에서
조금이라도 자유로울 수 있을 것 같습니다.(해킹 당하면 키가 유출될 경우 문제가 크니깐요.)
요즘 Hash 알고리즘을 사용해도 Hash값 조회하는 사이트도 있고 해서 저 같은 경우는 간단한 자체 암호화를 한번 더 적용했었습니다.
-
쓸만한게없네(윤선식)
2013.06.26 13:24
현재는 법이 조금 더 까다로워지고, 안행부 관련 분들도 지식이 많아져서 단순히 암/복호화를 했는지 여부만 보진 않고,
어떠한 알고리즘을 썼는데, 그 알고리즘이 권고하는 알고리즘인지 등도 보고 있습니다.
또한, 감사나 접근제어 부분도 함께 확인하는 것으로 알고 있습니다.
다만, 키 관리 부분 등은 관리방법이 여러가지가 있으며, DB에서 사용할 것인지, Application에서 사용할 것인지는 환경에 따라 달리 보셔야 할 듯 합니다.
만약 ASP.NET만 사용하신다면 .NET Framework에 있는 것만 사용해도 충분히 적용 가능하실 수 있지만, 다른 언어가 있다면 방법이 달라질 수도 있습니다.
물론 SHA2-256 등의 알고리즘 적용은 JAVA 나 .NET 이나 충분한 샘플들이 존재하므로 크게 걱정 안하셔도 됩니다.
여기에 HashTable을 만들지 못하게 하는 Salted Hash 등을 적용하시는 것도 더 좋은 방법이 됩니다.
알고리즘은 다음 그림을 참고하세요.
안전행정부 발행. 개인정보 기술적 보호조치 문서 발췌.
http://www.sqlworld.pe.kr/mboard/mboard/mboard.asp?board_id=notice&group_name=board&idx_num=87&page=1&category=&search=&b_cat=0&order_c=idx_num&order_da=desc
여기 자료를 한번 살펴보심이...