2010-03-05 2 views
4

MS의 CryptoAPI를 사용하는 TripleDES와 같은 대칭 암호화 알고리즘을 사용하여 암호화 된, .NET 구성 파일을 사용하지 않고 디스크의 파일에 권한있는 정보를 저장하는 Windows.Forms 기반 .NET 데스크톱 응용 프로그램이 있습니다. 이 파일은 여러 번 프로그램 실행/기계 전원주기 동안 읽거나 쓰고, 일명 동일한 키/IV를 매번 사용해야합니다. 여기서 명백한 질문은 Key (및 가능한 경우 IV)를 보호하는 방법이며 여기에있는 몇 가지 질문은 단순히 "DPAPI 사용"이라고 말하고 왕복 암호화/암호 해독의 간단한 예제를 제공합니다.DPAPI를 사용하여 암호화 키 보호 : 확실한 구멍이 있습니까?

이미 DPAPI를 사용하는 방법을 알고 있지만 Key/IV가 다른 암호화 체계에 공급되도록 보호하는 데 사용하는 것이 명백한 문제인 것 같습니다. 다음 코드를 고려하십시오 때문에 당신이 할당해야합니다 사실

TripleDESCryptoServiceProvider^ cryptoprov = gcnew TripleDESCryptoServiceProvider; 
cryptoprov->Key = ProtectedData::Unprotect(encryptedKey, salt, DataProtectionScope::CurrentUser); 
cryptoprov->IV = ProtectedData::Unprotect(encryptedIV, salt, DataProtectionScope::CurrentUser); 

을 SymmetricAlgorithm 공격자가 그냥 뭐 키/IV를 알아낼 쉽게이 시점에 중단 점을 설정하고 수 없었다 클래스의 키 및 IV 유도 뭐야?

  • 내가 키를 보호하기 위해 DPAPI를 사용하는 점을 놓친 다음과 같이

    내 질문

    은? 어떻게 할 건데?
  • 파일 암호화에 DPAPI를 사용해야합니까? 따라서 Key/IV 스토리지가 필요하지 않습니다.
  • 비대칭 암호화를위한 CspParameters의 존재를 확인했습니다. 대칭보다 본질적으로 더 좋은 선택입니까? (내 시나리오의 컨텍스트 내에서, 대칭과 대칭이 아닌)

고마워!

+3

좋은 이유가없는 한 TripleDES가 아니라 Rijndael을 사용해야합니다. – SLaks

답변

2

DPAPI의 목표는 지속적인 데이터를 스누핑 및 변조로부터 보호하기위한 것이므로 응용 프로그램의 메모리에있는 비밀 데이터를 보호 할 수있는 방법이 없습니다.

3

공격자가 중단 점을 설정할 수 있으면 이미 손실 된 것입니다.
공격자는 데이터가 해독 된 후 중단 점을 설정하고 일반 텍스트를 읽을 수 있습니다.

어떤 종류의 공격자가 두려운가?

원할 경우 if (Debugger.IsAttached) Environment.FailFast()이라고 쓸 수 있지만 공격자는 Reflexil을 사용하여 수표를 제거 할 수 있습니다.

+0

예, 좋은 지적입니다. 암호 해독을 위해 열쇠를 무시하고 누가 암호 해독을 볼 수 있다면 누가 신경을 쓸 것인가 ... 나는 민감한 정보를 찾고 싶어하는 캐주얼/호기심이 강한 사용자를 막으려 고합니다. 그러나 헌신적 인 사람으로부터 보호하려고하는 것은 거대한 시간 낭비처럼 보입니다. –

+0

공격자는 누구입니까? 시스템 관리자? 네트워크에있는 누군가? 다른 사람? – SLaks

+0

사용자가 로그인 한 상태에서 소프트웨어가 실행중인 시스템에 물리적으로 액세스 할 수있는 사람. 합법적 인 사용자가 시스템을 잠그지 않았고 잠글지 않았으며 일부 리프 - 러프 단계까지 진행될 수 있습니다. 소프트웨어를 실행하는 사용자와 동일한 자격 증명이 있습니다. –