2009-08-25 5 views
16

Windows DPAPI를 사용하여 중요한 데이터를 암호화하고 있습니다. 암호는 레지스트리에 저장됩니다. 이것은 모두 잘 작동하지만 누군가가 (선택적으로) .NET의 ProtectedData.Protect()에 제공되는 '엔트로피'바이트에 대한 내 이해를 명확히 할 수 있는지 궁금합니다.Windows DPAPI - 엔트로피와 어떻게해야할까요?

'엔트로피'바이트 배열은 다른 암호화 기법과 함께 사용되는 초기화 벡터 나 소금과 유사하지만 MSDN에서 엔트로피 바이트에 대한 적절한 설명을 볼 수 없습니다. 코드 샘플 나는 단지 엔트로피 바이트의 하드 코드를 보았습니다.

엔트로피 바이트가 ProtectedData.Protect()에 제공됩니까 & 보호 된 데이터입니다. IV 또는 소금과 비슷한 보호 기능이 있습니까? 엔트로피 바이트를 암호와 함께 안전하게 저장할 수 있습니까? 그렇지 않으면 보안이 손상 될 수 있습니까?

답변

13

엔트로피는 데이터를 보호하는 응용 프로그램에 특정한 보조 키입니다. 일반적인 생각은 올바르게 기억한다면 여러 응용 프로그램이 단일 사용자 계정으로 데이터를 암호화 할 수 있도록 허용하지만 서로간에 보안을 유지해야한다는 것입니다. 예를 들어 응용 프로그램에서 UserA 아래의 데이터를 암호화 할 수 있습니다. 내 응용 프로그램이 UserA에서 해당 데이터의 암호를 해독하기를 원한다면 DPAPI가 사용자 키를 사용하기 때문에 실제로 그렇게하지 못하게 할 수있는 방법이 없습니다. 그러나 응용 프로그램 특정 "엔트로피"를 고려하면 UserA를 보호하기 위해 데이터를 해독하는 엔트로피를 알아야합니다.

엔트로피는 암호화 된 내용을 더 추상화하는 데 사용되는 추가 키 또는 암호이므로 소금과 비슷한 것으로 간주 될 수 있습니다. 소금과 달리, 응용 프로그램의 엔트로피는 주어진 자격 증명에 따라 모든 암호화 작업에 대해 동일하게 유지되어야합니다. 소금으로, 일반적으로 가능한 한 자주 변경하는 것이 가장 좋습니다.

엔트로피는 본질적으로 추가 키이며 다른 암호화 키처럼 취급해야합니다. 개인적이고 안전하게 유지하십시오.

BTW, 나는 '엔트로피'가이 목적을 위해 사용하는 잔인한 말이었다고 생각합니다. '차별 자'와 같은 것 또는 '구별 자'와 같은 단어를 만드는 것조차 더 좋았을 것입니다. : P 매우 혼란스러운 용어 사용.

+0

감사합니다. 훌륭한 답변입니다. 그래서 엔트로피를 앱으로 하드 코딩하는 것은 완전한 재앙이 아니라 키처럼 다루는 것이 좋습니다. 키를 암호화하고 있기 때문에 키를 보호하기 위해 다른 "키"를 사용하는 것이 약간 미쳐 가고 있습니다. – saille

+0

예, 그것의 복잡한 convoluted 개념. 그러나 "엔트로피"가 연결하는 것을 목표로하는 보안 구멍은 매우 현실입니다. Windows의 자격 증명 관련 암호화는 사용자에게 매우 편리하지만 악성 프로그램이 악의적 인 프로그램이 해독 할 수없는 경우 해독 할 수있는 새로운 기회를 제공합니다. 또한 "다른"프로그램이 좋지 않다고 가정하지 마십시오 ... 사용자가 자신의 시스템에 있는지조차 모르는 멀웨어는 엔트로피가 아닌 암호화 된 데이터를 조사하려고 시도 할 수 있습니다. – jrista

1

응용 프로그램 자체를 암호로 보호하려면 유용합니다. 암호 (또는 암호가 변경 될 때 응용 프로그램 데이터를 재사용 할 필요가 없도록 암호로 생성 및 암호화 된 다른 키)는 응용 프로그램 데이터를 저장하는 동안 엔트로피로 사용될 수 있습니다.

관련 문제