2012-10-26 3 views
1

내 프로젝트에서 파일 암호화를 구현하려고하지만 핵심 저장소에 대한 모범 사례가 궁금합니다.암호화 키 저장소

우리의 응용 프로그램은 다양한 클라이언트 그룹에 배포됩니다. 각 그룹은 여러 사용자로 구성되는 여러 지리적 사이트로 구성됩니다. 사용자는 중앙 동기화 서버를 통해 다른 사이트와 동기화되는 파일을 만듭니다. 이러한 파일은 저장 시점에서 암호화되어야하며 클라이언트 사이트에서로드 될 때만 해독되어야합니다.

이와 같이 모든 대칭 키는 그룹 수준에서 고유해야하며 각 사이트에 안전하게 저장되어야합니다.

우리는 AES를 사용하고 있지만 키는 현재 응용 프로그램 내에 하드 코딩되어 저장되어 있으므로 디 컴파일을 통해 쉽게 액세스 할 수 있으며 모든 클라이언트에서 동일하게 액세스 할 수 있으므로 상당히 걱정 스럽습니다. 일단 우리 응용 프로그램에 액세스하면이 종류의 설정을 해킹하는 것은 매우 사소한 것처럼 보입니다.

그렇다면 각 그룹마다 고유 한 키 생성을 보장 한 다음 해당 키를 안전하게 각 사이트에 저장하는 방법은 무엇입니까?

답변

1

유일한 보안 하나의 대칭 키를 유지하는 방법은 암호문/암호를 입력하고 키를 생성하는 것입니다. 그렇게하면 애플리케이션이 사용자 입력없이 키를 알 수 없습니다.

암호화가 작동하도록 응용 프로그램에 제공해야하는 개별 파일 (인터페이스, 레지스트리 또는 단순히 적절한 경로에 배치)을 통해 키를 제공하거나 제공하십시오.

결국 보안은 항상 사용자에게 제공됩니다.

+0

+1 동의합니다. 나는 한 걸음 더 나아가서 키가 무작위이어야하며 키는 PBE로 암호화되어야한다고 말합니다. 그렇게하면 파일을 다시 암호화하지 않고도 필요한 경우 암호를 변경할 수 있습니다. 나는 ac [native port] (https://github.com/jbtule/keyczar-dotnet/tree/master/dotnet)의 google [keyczar] (http://www.keyczar.org/)에서 일하고있다.) 프로젝트는 가까운 장래에 공식적으로 공개 될 예정이며 PBE 키 외에도 키 순환 및 버전 관리 기능이 내장되어 있습니다. – jbtule

+0

여러분,이 솔루션은 훌륭하지만 제가 사용할 수있는 것은 아닙니다. 파일 암호화 키는 그룹 내의 모든 사이트에서 사용할 수 있어야하며 키 (또는 관련 비밀)는 소수의 수퍼 유저 만 사용할 수 있어야합니다. 따라서 정기적으로 키를 활용할 수 있도록 비밀번호를 어딘가에 저장해야합니다. – pixelbadger

0

이것은 내 리그에서 조금 벗어나서 내가 아는 것을 말하고있는 것입니다.

인증서를 사용하여 Windows 인증서 저장소에서 사용 했습니까? 내 말은

, 즉이 대칭 암호화를위한 좋은 사용하는 경우가 아니라

0

... 내 생각은, 기본적으로 안전하게 저장할 수있는 유일한 장소입니다. 비대칭 보안이 실제로 필요한 곳입니다. 공개 키를 배포 할 수 있습니다 (PKI를 사용하거나 응용 프로그램 내의 트러스트 스토어에 배포). 그런 다음 수신자 (예 : 중앙 서버에 속한 키 쌍 중 하나 또는 그룹 중 하나)의 공개 키로 대칭 키를 암호화하고 실제 데이터를 대칭 키로 암호화합니다.

때때로 대칭 암호화가이 방법으로 사용됩니다. 스마트 카드에 키 저장이 가능하지만 키 관리는 비대칭 암호화에 비해 항상 끔찍합니다.