2013-04-08 3 views
0

Возможно ли восстановить ключ из зашифрованных зашифрованных и разобщенных пар?BLOWFISH: Восстановить ключ от plainttext и hash?

У меня есть несколько строк как зашифрованных, так и простых. Но я не могу вспомнить ключ.

пример зашифрованной строки 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

Blowfish - это блок-шифр, а не хеш-код. Существует BCrypt, хеш пароля на основе blowfish, но у него нет ключа. О каком из них вы говорите? – CodesInChaos

+0

Только угадывая ввод. Точно так же, как восстановление ключа возможно только, угадывая его. Для достаточно сложных ключей это невозможно. Но если вы не уточните свой вопрос, мы не сможем вам помочь, так как Blowfish не является хешем, и ваш вопрос, таким образом, содержит противоречие. – CodesInChaos

+0

моя ошибка, хеш - это не правильное слово, я должен сказать, что зашифрованная строка вместо этого, я задал вопрос –

ответ

5

Отсутствие приличного шифрования (в том числе Blowfish) позволяет эффективно восстанавливать ключевые слова, независимо от того, сколько пар (открытый текст, зашифрованный текст) вы знаете.

Что остается, это грубая атака, когда вы угадываете ключ, а затем проверяете, соответствует ли она известной паре. Для достаточно сложных ключей это становится чрезмерно дорогостоящим. Так что это будет работать, только если ваш ключ был плохим.

+0

, есть ли стандартная длина ключа или его количество ограничено максимальным количеством символов? –

+0

@ PetrVelký Blowfish поддерживает ключи от 32 до 448 бит. 32 - это просто грубая сила, 64 бита становятся раздражающими, возможно 80 битов для мощных атакующих, таких как NSA, и около 100 бит никто на земле не сможет сломать его. – CodesInChaos

+0

как бы вы установили генератор строк для разрыва 32-битного ключа? скажем, на PHP или на любом другом языке программирования BTW спасибо за ваш интерес и помощь –

1

Что вы предлагаете, является esentially known-plaintext attack, который сказал, что, как указывает статья wiki, они не были успешным механизмом восстановления ключей со времен Enigma.

Чтобы даже приблизиться к современной системе ключей восстановления, необходимо использовать выбрало открытый текст, как Differential cryptanalysis, который анализирует различия в шифротексте между специально подобранных парами открытого текста, чтобы получить информацию о ключе. Тем не менее, Blowfish не особенно восприимчив к таким атакам, поэтому это не поможет.

Если вы хотите восстановить свой ключ, вы должны рассмотреть механизмы, которые были использованы для его создания (это происходит от пароля, насколько он велик и т. Д.), А затем придумать способ перебора его, будь то через атаку словаря, итерацию через все 32-битные целые числа и т. д., программа, называемая John the Ripper, может помочь с применением этого грубого принуждения как можно более эффективно.

+0

Линейный криптоанализ Matsui работает против DES, используется только известный открытый текст, а DES намного новее, чем Enigma. –

Смежные вопросы