2009-09-22 4 views
4

랜덤 액세스 모드 (파일의 일부에 액세스)에서 작동 할 수 있어야하는 AES를 기반으로 파일 암호화를 구축 중입니다. 예를 들어 Counter의 AES를 사용할 수는 있지만 두 번 사용하지 않은 고유 한 시퀀스가 ​​필요하다는 것은 잘 알려져 있습니다. 이 경우 단순화 된 Fortuna PRNG를 사용할 수 있습니까 (특정 파일에 고유하게 임의로 선택된 고유 키로 카운터 암호화). 이 접근법에는 약점이 있습니까?Fortuna PRNG를 사용하여 AES In Counter 모드로 랜덤 액세스 암호화 :

그래서 암호화/암호 해독 오프셋에서 블록의

암호화처럼 보일 수 있습니다 블록의

rndsubseq = AESEnc(Offset, FileUniqueKey) 
xoredplaintext = plaintext xor rndsubseq 
ciphertext = AESEnc(xoredplaintext, PasswordBasedKey) 

암호 해독 오프셋에서 :

rndsubseq = AESEnc(Offset, FileUniqueKey) 
xoredplaintext = AESDec(ciphertext, PasswordBasedKey) 
plaintext = xoredplaintext xor rndsubseq 

한 관찰. 나는 Fortuna에서 혼자서 사용 된 아이디어에 도달했고, 나중에 그것이 이미 발명되었다는 것을 확실히 발견했다. 그러나 내가 읽는 모든 곳에서 보안에 대한 핵심 포인트가 있지만, 좋은 지적이 있습니다. 즉, (랜덤 액세스 방식의) 의사 난수 생성기로 말하면서 (단순화 된 형태로) 말입니다. 그래서 PRNG는 아주 좋은 시퀀스를 생성 할뿐만 아니라 (Ent와 Die Hard로 테스트했습니다.) 또한 단계 번호를 알고 있으면 하위 시퀀스에 액세스 할 수 있습니다. 그래서 Fortuna를 보안 응용 프로그램에서 "임의 액세스"PRNG로 사용하는 것이 일반적입니까?

는 편집 : 즉

은, 내가 제안하는 랜덤 액세스 기능이있는 tweakable AES 암호화를 형성하는 팅겨으로 포르투나 PRNG를 사용하는 것입니다. Liskov, Rivest 및 Wagner의 작업을 읽었지 만 조작 모드의 암호와 조정할 수있는 암호의 주요 차이점을 이해할 수 없었습니다. 그들은 암호 자체 내부에서 높은 수준에서이 접근법을 가져올 것을 제안했지만, 예를 들어 비틀어 짐으로 일반 텍스트를 꾸미는 경우와 같이 이것이 비틀기인지 아닌지 여부

답변

5

"tweakable block ciphers"가 작동하고 디스크 암호화 문제가 해결되는 방법을 살펴 보는 것이 좋습니다. . 전체 디스크를 암호화하는 것은 문제와 유사합니다. 각 섹터의 암호화는 독립적으로 수행되어야합니다 (서로 다른 오프셋에서 독립적 인 데이터 암호화를 원함). 그러나 모든 것이 안전해야합니다. 거기에 많은 작업이 이루어집니다. Wikipedia는 좋은 개요를 제공하는 것 같습니다.

EDITED : 편집 : 예, 조정할 블록 암호화를 AES에서 일반 텍스트로 XOR 처리하려고합니다. 보다 구체적으로, AES (K, ...)는 키 K와 f (T)를 갖는 AES 암호화를 의미하는 Enc (T, K, M) = AES 비틀기 (당신의 경우에는 Fortuna라고 생각합니다). 언급 한 논문에 대해 간략하게 살펴본 결과,이 방법이 이 아니고이 아니라면 보안 조정할 수있는 블록 암호를 생성한다는 것을 알 수 있습니다. (Liskov, Rivest, Wagner 논문의 2 절의 정의에 기반한) 아이디어는 다음과 같습니다. 우리는 암호화 oracle 또는 무작위 순열 중 하나에 접근 할 수 있으며 우리는 어느 것이 상호 작용하고 있는지 말하고 싶습니다. 비틀기 T와 평문 M을 설정할 수 있고 대응하는 암호문을 되 찾을 수 있지만 사용되는 키는 알 수 없습니다. 다음은 우리가 건설 AES (K, f (T) x 또는 M)를 사용하는지 알아내는 방법입니다. 두 개의 다른 값 T, T '를 선택하고 f (T), f (T')를 계산하십시오. 임의의 메시지 M을 선택하고 두 번째 메시지를 M '= M x 또는 f (T) x 또는 f (T')로 계산하십시오. 이제 암호화 오라클에게 Tweak T와 M '을 사용하여 M을 암호화하도록 요청하십시오. 고려 된 구성을 처리하면 출력은 동일합니다. 무작위 순열 (random permutations)을 다룬다면, 출력은 (확률 1-2^-128) 거의 다를 것입니다. 이는 AES 암호화에 대한 두 입력 모두가 동일하므로 암호문도 동일합니다. 두 출력이 동일 할 확률이 2^-128이기 때문에 무작위 순열을 사용할 경우에는 그렇지 않습니다. 최종선은 입력에 대한 xoring 조정은 아마도 안전한 방법이 아니라는 것입니다.

이 백서에는 안전한 구조로 입증 될 수있는 몇 가지 예가 나와 있습니다. 가장 단순한 것은 Enc (T, K, M) = AES (K, Tx 또는 AES (K, M)) 인 것 같습니다. 블록 당 두 개의 암호화가 필요하지만이 구성의 보안을 증명합니다. 그들은 또한 더 빠른 변종을 언급하지만, 그들은 원시적 (거의 xor- 보편적 인 함수 계열)을 필요로한다.

+0

이미 (디스크 암호화 이론) 기사를 읽었지 만 여기서 언급하는 것이 좋습니다 (+1). 방금 조정할 수있는 블록 암호에 대한 문서를 읽고 게시물을 편집합니다. – Maksee

1

귀하의 접근 방식이 안전하다고 생각 되더라도 CTR보다 이점이 없습니다. 똑같은 문제가 있습니다. 암호문에 진정한 무작위성을 주입하지 마십시오. 오프셋은 알려진 체계적인 입력입니다. 키로 암호화되었지만 여전히 무작위가 아닙니다.

또 다른 문제는 FileUniqueKey를 안전하게 유지하는 것입니다. 비밀 번호로 암호화? 여러 개의 키를 사용하면 전체 묶음 문제가 발생합니다.

카운터 모드는 무작위 액세스 파일을 암호화하는 것으로 간주됩니다. 모든 종류의 취약점이 있지만 모든 것이 잘 연구되어있어 위험을 측정 할 수 있습니다.

+0

동일한 암호로 암호화 된 여러 파일에 대해 동일한 위반으로 동일한 암호 블록의 모양을 처리하기 위해 CTR에서 간단한 카운터를 사용하지 않으려했습니다. 따라서 AES CTR을위한 고유 시퀀스가 ​​필요합니다. 물론 그것은 예를 들어 파일마다 고유 한 Guid 일 수 있고 다음 블록마다 +16 일 수도 있지만 동일한 GUID의 PRNG는 데이터를 블록별로 더 구체적으로 변경합니다. FileKey 비밀을 유지하는 것조차 필요하지 않은 것 같습니다. 어쩌면 틀렸어.하지만 파일 당 시퀀스의 고유성을 보장하면 어떤 종류의 정보 유출이 가능한지에 관심이있다. – Maksee