2011-03-09 3 views
20

데이터베이스 테이블의 암호화 된 형식으로 적은 수의 데이터베이스 필드 (~ 3)를 저장해야합니다.SQL 서버와 네트워크 암호화

일반적으로 .net 암호화를 사용하는 응용 프로그램 내에서 데이터를 암호화/암호 해독하거나 대칭 키 암호화를 사용하여 데이터베이스의 데이터를 암호화/암호 해독하는 것이 더 낫습니까? 두 가지 방법의 장점/단점은 무엇입니까? 여기

내 환경입니다 : - 인트라넷 웹 응용 프로그램
개발 플랫폼 -
응용 프로그램 비주얼 스튜디오 2010, ASP.Net, 닷넷 프레임 워크 3.5
서버 운영 체제 - 윈도우 서버 2008
데이터베이스 - SQL 서버 2008

답변

11

위대한 질문입니다.

필자의 주장에 따르면 데이터 저장 책임을 맡은 부분도 데이터 암호화를 담당하게되었습니다. 이 경우 SQL 서버가 암호화를 관리하게하십시오.

주된 이유는 더 이상 독립적 인 응용 프로그램을 거의 만들지 않기 때문입니다. 여러 애플 리케이션이 동일한 데이터베이스 백엔드를 사용하는 것이 더 일반적입니다. 또한 앱을 제작하는 데 사용 된 기술을 대체하는 것보다는 데이터베이스 엔진을 대체하는 것이 더 일반적입니다.

코드로 작성하면 데이터 저장소를 사용하는 모든 앱이 자체 암호화/암호 해독 라이브러리를 사용해야 데이터에 액세스 할 수 있습니다. SQL Server에서 수행 된 경우 동일한 수준의 보호를 유지하는 동안 앱이 프로세스를 잘 모를 수 있습니다.

이와 함께 SQL Server에 대한 연결을 암호화하는 기능을 활용해야합니다.이 기능을 사용하면 웹/응용 프로그램 서버와 데이터베이스간에 이동 중에 데이터를 암호화 된 상태로 유지할 수 있습니다. 또한 브라우저 -> 웹 서버 -> 데이터베이스 서버간에 데이터가 해독되지 않도록 브라우저와 웹 사이트간에 SSL을 사용하도록 설정해야합니다.

희망이 있습니다.

+0

+1 좋은 점 : –

3

인터넷에서 "조사자"에 대해 걱정하지 않는 내부 응용 프로그램의 경우 데이터베이스에서 암호화하는 것을 선호합니다. 그렇게하면 어떤 이유로 응용 프로그램을 사용하여 무언가가 남쪽으로 가면 데이터를 다시 얻을 수있는 응용 프로그램에 의존하지 않게됩니다. 또한 앱에는 암호화 메커니즘에 대한 의존성이나 애플리케이션 수행의 오버 헤드가 없습니다. 그것은 코드를보다 maintainable하게 만드는 데이터베이스를 처리 할 것이라고 가정 할 수 있습니다.

여러 개의 인터페이스 또는 게이트웨이가있는 앱에 더 편리합니다. 데이터는 중앙에서 암호화/해독됩니다. 그렇다면 보안 터널 (SSL 또는 VPN 또는 이와 비슷한)을 통해 데이터가 데이터베이스로 /로부터 전달되는지 확인해야합니다. 그렇지 않으면 데이터를 암호화하는 것이 아닙니다. 모든; 그것은 표준 네트워크 스니퍼로 쉽게 가로 챌 수 있습니다.

공유 호스팅 환경의 경우 보안을 위해 앱 내에서 암호화하는 것을 선호합니다. 그 상황에서 나는 호스트 제공자가 아닌 키를 제어한다.

관련 문제