Что такое PBEWithMD5AndDes? - PullRequest
       1

Что такое PBEWithMD5AndDes?

0 голосов
/ 11 января 2019

Я изучаю алгоритм шифрования на Java и наткнулся на этот алгоритм:

  SecretKey key = SecretKeyFactory.getInstance(
                    "PBEWithMD5AndDES").generateSecret(keySpec);

Я знаю, что это шифрование на основе пароля с алгоритмами MD5 и DES. Я знаю, что MD5 и DES - это два отдельных ключа шифрования алгоритма, но что именно PBEWithMD5AndDes означает как алгоритм?

В Интернете не так много ресурсов, которые бы хорошо объясняли этот "алгоритм".

Я надеялся, что кто-нибудь сможет дать простое и краткое объяснение того, как это отличается от обычного алгоритма MD5 или обычного DES.

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Расширение предыдущего ответа

Что именно PBEWithMD5AndDes означает как алгоритм?

PBE использует ключ шифрования, сгенерированный из пароля, случайной соли и количества итераций, см. Параметры KeySpec.

KeySpec pbeSpec = new PBEKeySpec(password.toCharArray(), psswdSalt, PBKDF_INTERATIONS, SYMMETRIC_KEY_LENGTH)

Идея в том, что пароли, как правило, короткие и недостаточно случайные, поэтому их легко угадать. Использование количества итераций должно усложнить процесс угадывания.

PBEWithMD5AndDes использует MD5 и DES для генерации ключа, см. пример кода . Реальная реализация должна использовать намного большее количество итераций

Как это отличается от использования MD5 или DES? Это то, что я хотел бы знать.

Теоретически - вы можете использовать чистый MD5 или DES, но современный компьютер может очень быстро угадать пароли.

Обратите внимание, что DES и MD5 устарели сегодня. Столкновение MD5 можно обнаружить менее чем за минуту на обычном оборудовании, а DES использует 64-битный ключ, что довольно мало, чтобы сегодня считаться безопасным.

0 голосов
/ 09 июля 2019

PBEWithMD5AndDES в криптографической инфраструктуре Java - это алгоритм, описанный в https://docs.oracle.com/javase/9/docs/specs/security/standard-names.html#cipher-algorithm-names. Алгоритм, описанный в PKCS # 5 (https://tools.ietf.org/html/rfc2898#section-6.1.1).

По сути, на первом этапе алгоритм превращает пароль в ключ. Это называется деривацией ключей и использует MD5 в качестве функции "скремблирования". Выходные данные предоставляют IV и ключ, подходящий для DES в режиме CBC, которые используются на втором этапе для шифрования.

Алгоритм больше не является безопасным, в основном потому, что DES использует только 56-битные ключи, что слишком мало для современных атак (например, https://crack.sh/).. Даже если MD5 склонен к коллизиям, на самом деле это может не быть проблема здесь (коллизии будут давать только альтернативные пароли для данного ключа, но ключ не передается).

0 голосов
/ 11 января 2019

PBE означает «Шифрование на основе пароля», метод, при котором ключ шифрования (который является двоичными данными) получен из пароля (текст).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...