продолжение шифрования с общим ключом diffie-hellman - PullRequest
3 голосов
/ 29 октября 2011

В настоящее время я работаю над протоколом, который использует Диффи-Хеллмана для обмена ключами.Я получаю пакет, который состоит из зашифрованной части aes-128 и 128-битного открытого ключа DH.

На последнем шаге протокола ключ aes отправляется другому узлу в сети.Этот aes-ключ должен быть зашифрован с помощью шифра с использованием 128-битного секретного ключа.

Я планирую использовать Blowfish (также может быть другим шифром, на самом деле проблема не имеет)

Теперь, чтобы зашифровать ключ aes, скажем, с помощью blowfish, мне нужно создать секретный ключ для шифрования с классом SecretKeySpec (я использую javax.crypto stuff), который использует byteArray в конструкторе для построения secretKey.

Общий ключ от DH - это 128-битный BigInteger.Что ж, теперь я могу интерпретировать свой общий ключ как byteArray (который дает мне еще 128 бит в 16 байтах [где числа интерпретируются как кадры 8-битных данных])

Итак, мой вопрос, насколько силенмой ключ действительно?

Есть ли какое-либо влияние, потому что я использую числа только как входные данные для byteArray (так ли это ограничивает пространство клавиш в любом случае?)

Я думаю, что это не так,но я не уверен на 100%.Может быть, кто-то может сделать математику и доказать, что я прав или нет.

Если я ошибаюсь, какой размер ключа для общего ключа подскажет мне, наконец, получить 128Bit SecretKey для шифрования?

Ответы [ 2 ]

2 голосов
/ 30 октября 2011

Веб-сайт Crypto ++ предлагает использовать минимальный p из 3072 бит (или 256 бит для реализации ECC ) для передачи 128-битного ключа AES.

Возможно, вы захотите изучить ссылки, приведенные на http://www.keylength.com/en/compare/, для получения дополнительной информации о сравнении длин ключей среди различных алгоритмов.

1 голос
/ 30 октября 2011

Здесь не специалист по DH, но мне кажется, что пространство ключей DH для общего ключа, представленного в n битах, несколько меньше, чем 2 ^ n .

...