2013-04-08 2 views
0

복어 암호화 된 암호문과 일반 텍스트 쌍에서 키를 복원 할 수 있습니까?BLOWFISH : 일반 텍스트와 해시에서 키를 복원 하시겠습니까?

나는 여러 개의 문자열을 모두 암호화하고 평범합니다. 그러나 나는 열쇠를 기억할 수 없다. 암호화 된 문자열 24026B7101030657757D01 해독 된 문자열의

예는 AC C1312463

$key = ''; 
$plaintext = ''; 
$crypttext = '24026B7101030657757D01'; 

$cache = array(); 

while($plaintext != 'AC C1312463') 
{ 
    $key = random_string(); 
    while(array_search($key,$cache) !== FALSE) 
    { 
    $key = random_string(); 
    } 
    $cache[] = $key; 

    $bf = new Crypt_Blowfish($key); 

    $plaintext = $bf->decrypt($crypttext); 
} 
    print_r($key); 
    die(); 

이의 내가 이런 알고리즘을 가지고 있다고 가정 해 봅시다이다. random_string 함수는 32 비트 무작위 키를 얻으려면 어떻게해야합니까?

+0

블로우 피쉬는 해시가 아닌 블록 암호입니다. 복어 기반 암호 해시 인 BCrypt가 있지만 키가 없습니다. 어느 쪽 얘기하고 있니? – CodesInChaos

+0

입력을 추측해서 만. 키를 복원하는 것만 큼 그것을 추측하여 가능합니다. 충분히 복잡한 키의 경우 실행 불가능합니다. 그러나 귀하의 질문을 명확히하지 않는 한, 복어는 해시가 아니므로 귀하의 질문에 모순이 포함되어 있으므로 귀하를 도울 수는 없습니다. – CodesInChaos

+0

내 실수, 해시가 올바른 단어가 아니며 대신 암호화 된 문자열을 말해야합니다. 고정 된 질문 –

답변

5

괜찮은 암호 (Blowfish 포함)가 없으면 얼마나 많은 (평문, 암호문) 쌍을 알고 있더라도 효율적인 키 복구가 가능합니다.

남아있는 것은 키를 추측 한 다음 알려진 쌍과 일치하는지 확인하는 무차별 공격입니다. 충분히 복잡한 키의 경우 이것은 엄청나게 비쌉니다. 그래서 이것은 열쇠가 나쁘다면 작동 할 것입니다.

+0

키의 표준 길이가 있거나 최대 문자 수 제한이 있습니까? –

+0

@ PetrVelký Blowfish는 32 비트에서 448 비트까지의 키를 지원합니다. 32는 무력화하기 쉽고, 64 비트는 성가 시게되고, NSA와 같은 강력한 공격자는 80 비트가 가능할 것이며, 약 100 비트 정도면 지구상의 아무도 그것을 깰 수 없을 것입니다. – CodesInChaos

+0

어떻게 32 비트 키를 깨는 문자열 생성기를 설치 하시겠습니까? PHP 또는 다른 프로그래밍 언어로 말할 수 있습니다. BTW에게 관심과 도움을 주셔서 감사합니다. –

1

당신이 제안하는 것은 기본적으로 known-plaintext attack입니다. 위키 기사에서 지적했듯이 Enigma 시대부터 성공적인 키 복구 메커니즘이 아니 었습니다.

도 현대 키 복구 시스템에 가까운 얻으려면, 당신은 키에 대한 정보를 얻기 위해 특별히 선택된 평문 쌍 사이의 암호문의 차이를 분석 Differential cryptanalysis 같은 선택 일반 텍스트 공격을 사용해야합니다. 즉, 복어는 특히 그러한 공격에 취약하지 않으므로 어쨌든 도움이되지 않을 것입니다.

키를 복구하려면 키를 생성하는 데 사용 된 메커니즘 (암호에서 파생 된 크기, 크기 등)을 고려한 다음 무차별 대입하는 방법을 찾아야합니다. 사전 공격, 모든 32 비트 정수 반복 등을 통해 John the Ripper라는 프로그램은이 무차별 대입을 최대한 효율적으로 적용하는 데 도움이 될 수 있습니다.

+0

마쓰이의 선형 암호 해독은 DES에 대해 작동하고 알려진 일반 텍스트 만 사용하며 DES는 Enigma보다 훨씬 새 것입니다. –

관련 문제