Рейтинг:0

RC4-40 с настройкой IV (32-битная)

флаг pk

я взял это реализация RC4, написанная на C.

У меня 40-битный ключ и 32-битный IV (оба в шестнадцатеричном формате).

Итак, вопросы касаются шаг KSA:

  1. Как мне преобразовать значение шестнадцатеричного ключа в массив символов? Просто преобразовать его в длинный?

  2. Где я должен ввести IV? (Некоторые пишут, чтобы объединить его с ключом, другие пишут что S это уже IV)

  3. Если S уже является IV, как мне преобразовать мой 32-битный IV в 40-битный массив? Следующим способом?

    for (int i = 0; i < 32; i++) S[i] = (iv >> (32 - 1 - i)) & 1; ?

Я провел некоторое расследование, прежде чем спрашивать здесь, но не могу найти ответы.

fgrieu avatar
флаг ng
Как сказано в [ответе] (https://crypto.stackexchange.com/a/99456/555), 40-битный ключ слишком короткий и не может быть безопасным. И объединение даже более широкого ключа и IV небезопасно. Таким образом, неясно, как следует понимать вопрос «должен». Воспроизводит ли он какую-то существующую систему? В этом случае следует исследовать, что это за система и что она делает. Объединение ключа и IV (и, возможно, заполнение нулями до 256 байт) было бы одним из самых простых способов. Но опять же, это не безопасно. Если нужна безопасная система на основе RC4, поможет [растягивание ключей](https://en.wikipedia.org/wiki/Key_stretching).
Рейтинг:3
флаг fr

RC4 не принимает IV. Это относительно редко встречается в потоковых шифрах, но имеет место в RC4.

Кажется заманчивым просто соединить ключ с IV, и именно этот подход используется в WEP. Этот подход также совершенно небезопасен, потому что RC4 уязвим для атак с использованием связанных ключей. В сочетании с тем фактом, что ключевой поток RC4 имеет значительные смещения даже при использовании полностью случайного ключа, этого обычно достаточно для восстановления открытого текста. Это можно сделать для WEP с помощью автоматизированных инструментов относительно быстро даже для 104-битного ключа.

В наши дни вы не должны использовать RC4 ни для каких целей, и уж точно не с 40-битным ключом. Если вам нужен безопасный потоковый шифр с IV, я бы порекомендовал ChaCha20 с 256-битным ключом. Он более безопасен и быстрее, чем RC4.

Если вы планируете использовать случайный IV, я бы порекомендовал вариант XChaCha20, который допускает случайный 192-битный одноразовый номер. Одноразовый номер для обычного ChaCha20 слишком короткий, чтобы использовать случайные одноразовые номера из-за риска коллизии, но это нормально, если вы собираетесь использовать одноразовый подход на основе счетчика.

Если вы используете это в реальном мире, вам также понадобится защита целостности, которая обычно предоставляется Poly1305 в сочетании с ChaCha, но вы также можете использовать HMAC encrypt-then-MAC.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.