it-swarm-korea.com

AES Crypt 구현은 암호를 8192 번 해시하여 키를 생성합니다. 이것이 필요합니까?

AES Crypt 참조 구현을 사용하여 작은 파일 (수백 KB)을 암호화하는 것을 고려하고 있습니다. 소스를 살펴보면 암호화 키가 IV와 비밀번호에서 파생 된 것으로 보이며이 키를 버퍼에 연결 한 다음 반복적으로 해시합니다. IV는 해시의 "소금"역할을합니다. 반복해서, 나는 8192 번을 의미합니다.

이 방법의 이점은 키 생성에 필요한 시간을 늘리고 무차별 대입 공격을 수행하여 암호를 찾는 데 비용이 많이 든다는 것을 이해합니다. 또한 단점은 실제 사용자를 위해 합법적 인 암호화 및 암호 해독 작업을 수행하는 데 시간이 더 오래 걸린다는 것입니다. 또한, 사용자와 공격자가 시간이 지남에 따라 더 빠른 컴퓨터를 구매함에 따라 이점과 단점은 0이되는 경향이 있습니다.

그래서 내 질문은 현재 컴퓨터 기능이 있고 전용 클러스터를 소유하지 않은 동기를 가진 공격자가 8192 번의 반복이 불충분하거나 과잉 또는 "정확한"것이라고 가정합니다. 또한이 키 생성에 대한 분석에서 놓친 부분이 있습니다. 좋은 반복을 선택하는 여러 가지 반복을 선택 해야하는 다른 이유가 있습니까?

16
user185

암호 기반 암호화에 대한 RSA의 표준은 "최소한 1000 번"의 반복을 권장하므로이 요소가 문제가되는 것 같습니다.

8192 반복을 사용하면 암호에 13 비트의 엔트로피를 추가하거나 영숫자 문자 2 개 (무차별 대입 공격 만 해당)를 추가하는 것과 같은 인수로 무차별 대입 공격을 완료하는 데 필요한 시간이 본질적으로 증가합니다. 계산 능력을 향상시키는 것과 무관하기 때문에 생각하는 것이 좋습니다.

문제는 : 귀하 또는 귀하의 사용자가 사용하게 될 암호의 보안이 주어지면, 무차별 강제하는 것이 가능한가? 13 비트를 추가하면 무차별 강제 할 수 있습니까?

사용자가 강력한 암호를 사용하는 경우 두 가지 모두에 대한 대답은 아닐 것입니다. 사용자가 사전 단어를 사용하는 경우 13 비트로는 보안 영역으로 푸시하기에 충분하지 않을 수 있습니다. 컴퓨터가 더욱 강력 해짐에 따라 이러한 질문에 대한 답변이 시간이 지남에 따라 변경됩니다.

18
PulpSpy

암호가 사전 Word 인 경우 Rainbow 테이블을 빠르고 효율적으로 생성 할 수 있습니다. 소금에 절인 암호를 사용하면 유용한 Rainbow 테이블을 생성하기위한 크기/시간 요구 사항이 높아집니다. 해시 (salt + pass)를 여러 번 반복하면 Rainbow 테이블의 유용성을 크게 줄일 수 있습니다. Apache의 소금에 절인 MD5 구성표가 1000 번 수행한다고 생각합니다. 숫자는 완전히 임의적이며 해시 메커니즘을 물리 치기 위해 문제를 던질 하드웨어의 양을 크게 늘리는 것입니다. 더 나은 해싱 메커니즘을 사용하면 (그리고 SHA-1을 넘어서는 의미는 NSA 's Suite B ) 더 이상 존재하지 않습니다. 무어의 법칙의 결과로 '암호 해독 속도 크리프'를 직접 다루는 알고리즘을 사용하여 무언가를 해시하는 데 걸리는 시간을 선택할 수 있습니다.

5
Marcin

암호화 패키지를 선택하는 경우 AES 암호화 대신 GPG 또는 PGP를 권장합니다. GPG와 PGP는 암호화 커뮤니티로부터 많은 신중한 심사를 받았습니다. 내가 아는 한, AES Crypt는 그렇지 않았습니다. 따라서 AES Crypt보다 GPG 또는 PGP를 더 높게 신뢰합니다.

암호 해싱을 반복하는 횟수는 암호화/복호화 동안 대기 할 시간과 해시 기능의 속도에 따라 결정됩니다. 먼저 기다릴 시간을 결정하십시오 (예 : 100msec). 그런 다음 사용하는 컴퓨터에서 반복 해싱 프로세스가 100msec가 걸리도록하는 여러 반복을 선택하십시오. 끝난.

@ PulpSpy가 정확하게 설명했듯이 해싱을 N 번 반복하면 비밀의 유효 엔트로피가 약 lg (N) 비트만큼 증가합니다. 여기서 lg는 밑이 2 인 로그입니다. 예를 들어, 8192 = 2 ^ 13 반복은 13 비트의 유효 엔트로피에 해당합니다. 이것을 효과적인 암호 길이로 변환하는 것은 쉽지 않습니다. (@PulpSpy가 쓴 것과 반대로, 모든 암호 문구의 모든 문자가 동일한 양의 엔트로피를 갖지는 않기 때문에 13 비트의 엔트로피가 2 자로 직접 변환되지 않습니다. @nealmcb가 올바르게 설명 하듯이 암호 구문의 문자 당 엔트로피는 다양하지만 일반적으로 문자 당 1-2 비트 범위에있을 수 있으므로 대략 8 자 정도의 암호 구문 길이가 증가 할 수 있습니다.)

마지막으로 암호 문구에서 암호화 키를 선택하는 것은 일반적으로 위험한 관행으로 간주됩니다. 사람이 선택한 암호는 종종 암호화에 대한 무차별 공격으로부터 보호하기에 충분한 엔트로피를 제공하지 않습니다. 따라서, 높은 보안 조치에는 사람이 선택한 암호를 사용하지 않는 것이 좋습니다 (또는 사람이 선택한 암호를 사용해야하는 경우 소프트웨어를 사용하여 높은 엔트로피 암호를 선택하는 데 도움이 됨). 최고의 암호 소프트웨어는 사람이 선택한 암호 대신 가능한 한 암호 키에 대해 임의성을 사용하는 경향이 있습니다.

3
D.W.

반복 횟수는 가용 전력에 따라 조정되어야하므로 처리 시간이 여전히 제한된 사용자 인내심의 어려운 제약 조건에 맞아야합니다. 당신은 여전히 ​​가능한 한 높은 숫자를 만들고 싶습니다.

수학 사용 : 암호를 처리하는 데 시스템에서 T 시간이 걸리지 만 (예 : 1 초) 공격자가 사용할 준비가 된 경우 T ' 암호를 해독 (예 : 3 주)하고 집합 적으로 P 배의 컴퓨터에 액세스 할 수있는 경우 공격자는 요인의 이점 T '* P/T 이에 대한 방어는 암호 엔트로피입니다. 암호에 엔트로피 e 비트가있는 경우 공격자는 T '* P/T <2 인 경우에만 평균적으로 패배합니다.e-1. T = 1 초, T ' = 3 주, P = 1 (공격자) 3000 달러 미만의 예산으로 일부 GPU를 갖춘 5 대의 PC를 보유한 경우 암호는 엔트로피가 27.4 비트 이상이어야합니다. 아마도 약간의 보안 마진을 갖고 30 비트를 가고 싶을 것입니다. 정보가있는 개인으로서 can보다 강력한 암호를 선택하십시오 ( this question 에서 해당 주제에 대해 약간의 토론이 있음); 그러나 대부분의 사용자도 그렇게 기대하는 것은 매우 낙관적입니다.

위의 방정식에서 반복 횟수는 T 을 변경하는 데 사용됩니다. 적절한 숫자는 궁극적으로 가용 한 힘과 평균 사용자 인내심에 달려 있지만 8192 번의 반복 횟수는 너무 적습니다. 비밀번호 변환 프로세스에 대한 설명 (반복 된 해싱-축소 된 버전 PBKDF2 )에 따라 일반적인 PC의 반복 횟수는 millions =.

말하자면, 사용자 정의 암호 처리 기술은 강한 적색 경고가되어야합니다 : 이것은 좋지 않습니다. PBKDF2 또는 bcrypt 와 같은 입증 된 표준화 된 알고리즘에 의존하는 것이 훨씬 좋습니다 (후자는 "프로세싱 역률"을 낮추기 때문에 선호되어야합니다. [~ # ~] p [~ # GPU를 사용하는 공격자의 ~]-자세한 내용은 이 답변 을 참조하십시오).

3
Thomas Pornin

"필수"는 아니지만 암호 크래킹을 어렵게 만듭니다. 이를 "키 강화"라고합니다. 논리적으로 암호 끝에 두 문자 (상위/하위 기호)를 추가하는 것과 같습니다. 꽤 흔합니다. 예를 들어, 액세스 포인트를 보호하는 WPA는 비밀번호를 4000 번 해시합니다.

2