2009-07-11 3 views
1

데이터베이스에 암호화 된 데이터를 저장하도록 요구하는 서버 측 응용 프로그램을 구축하고 있습니다. 클라이언트가 데이터에 액세스하면 암호화 된 데이터도 전송되어야합니다. 클라이언트마다 고유 한 로그인 정보가 있습니다.암호화 된 데이터에 대한 다중 사용자 액세스

원래이 아이디어는 AES와 같은 대칭 알고리즘으로 암호화 된 데이터를 저장하는 것입니다. 따라서 클라이언트가 데이터에 액세스하려고 할 때 암호화 된 데이터는 클라이언트로 전송되는 반면 키는 클라이언트의 공개 키로 암호화됩니다.

데이터를 안전하게 저장하고 전송할 수 있습니까? 아니면이 문제에 대한 더 나은 해결책이 있습니까?

업데이트 : 각 클라이언트의 공개 키를 사용하여 암호화 된 AES 키의 복사본을 유지하려는 Søren의 제안을 따르는 경우 추가 클라이언트를 추가하기 위해 어딘가에 저장 될 키가 포함되지 않거나 어떤 방식 으로든 생성 될 수 있습니다 ?

+1

나중에 다른 클라이언트에 데이터에 대한 액세스 권한을 부여해야하는 경우 관리 공개 키를 사용하여 대칭 키를 저장하는 것이 좋습니다. 원래 AES 키를 가져와 새 공개 키로 다시 암호화하려면 개인 키 중 하나가 필요합니다. – Thorarin

+0

사실. 기존 클라이언트는 서버에서 AES 키를 가져온 다음 새 클라이언트의 개인 키로 서명하여 새 클라이언트에 대한 액세스 권한을 부여 할 수 있습니다. 또는 클라이언트가 하나의 개인 키를 공유 할 수 있습니다. 정확한 보안 요구 사항에 따라 달라집니다. –

답변

3

은 먼저 예를 들어, 당신이 제공 할 몇 가지 보안 속성을 정의하는 것부터 시작해야합니다

  1. 는 다른 사용자가 동일한 비밀 키에 대한 액세스를 제공하는 됐나요? File1이 AES를 키 K로 암호화 한 경우 사용자 Alice와 Bob에게 모두 K가 주어지면 문제가 될 수 있습니다.

  2. 시스템에서 사용자를 취소하려면 어떻게해야합니까? (시나리오 1의 Bob은 사실 우리 회사에서 일하는 중국인 스파이이며, 어떻게 시스템에서 안전하게 쫓아 낼 수 있습니까?)

  3. 데이터베이스에 저장된 암호화 된 데이터를 검색해야합니까?

  4. 구성에 도움이되도록 데이터베이스에 저장되는 데이터의 양 (있는 경우)과 평문 데이터는 얼마나됩니까? 데이터베이스는 데이터에 고유 한 키가 있어야합니다. 이 키가 정보를 유출하지는 않지만 나중에 데이터를 검색 할만큼 유용하다는 것을 확인해야합니다.

  5. 얼마나 자주 비밀 키를 변경해야합니까? 파일을 저장하고 있고 여러 사용자가 암호화 된 파일에 액세스 할 수있는 경우 사용자 X가 파일을 수정하면 어떻게됩니까? 비밀 키가 바뀌 었습니까? 새 키를 모든 사용자에게 보내야합니까?

  6. 2 명의 사용자가 동일한 데이터를 동시에 수정하면 어떻게됩니까? 데이터베이스가 수정하지 않고도이 문제를 처리 할 수 ​​있습니까?

다른 많은 것들이 있습니다.

서버가 신뢰되지 않아서 일반 텍스트 데이터를 볼 수없는 경우 다음은 가능한 해결책에 대한 일반적인 개요입니다.

클라이언트가 암호화를 완전히 관리하게하십시오. 클라이언트는 서버를 인증하고 데이터베이스에 데이터를 저장할 수 있습니다. 데이터가 암호화되어 있는지 확인하는 것은 클라이언트의 책임입니다. 이 시나리오에서 키는 클라이언트 컴퓨터에만 안전하게 저장되어야합니다. 다른 곳에 배치해야한다면 "마스터 키"를 만들 수 있습니다.

0

실제로 이는 일반적인 접근 방식입니다. 또한 NTFS 파일 암호화에 사용됩니다.

3

무엇으로부터 보호 하시겠습니까? 목표를보다 명확하게 정의해야합니다.

솔루션은 전송 중에 데이터를 보호하지만 설명에 따르면 서버는 암호화되지 않은 AES 키를 저장해야하므로 데이터에 대한 모든 액세스 권한을 갖습니다. 즉, 서버에 액세스 할 수있는 해커 또는 도둑이 데이터에 대한 모든 액세스 권한을 갖습니다.

보안 전송이 원하는 경우 데이터베이스 연결을 중심으로 SSL/TLS 래퍼를 사용하십시오. 이것은 모든 주요 공급 업체의 표준 솔루션입니다.

데이터 서버 측을 보호하려면 서버에 AES 키가 없어야합니다. 클라이언트 수가 제한된 경우 서버는 모든 클라이언트에 대해 AES 키 사본을 저장할 수 있습니다. 키의 각 사본은 각 클라이언트의 공용 키로 이미으로 암호화되어 있으므로 서버에 일반 텍스트 데이터가 표시되지 않습니다. 모든 암호화되지 않은 AES 키.

관련 문제