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의 존재를 확인했습니다. 대칭보다 본질적으로 더 좋은 선택입니까? (내 시나리오의 컨텍스트 내에서, 대칭과 대칭이 아닌)
고마워!
좋은 이유가없는 한 TripleDES가 아니라 Rijndael을 사용해야합니다. – SLaks