Должен ли я использовать вектор инициализации (IV) вместе с моим шифрованием?

Вы можете использовать следующий запрос MySQL:

SELECT
    Name,
    lastName,
    address,
    people.conID,
    postNum,
    region
FROM
    people
JOIN
    countries
        ON people.conID = countries.conID
WHERE
    num = 1
37
задан Scott Saad 15 September 2008 в 19:17
поделиться

5 ответов

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

причина состоит в том, потому что под большинством режимов шифрования два сообщения, зашифрованные с тем же ключом, могут быть проанализированы вместе. В простом поточном шифре, например, XORing, который два шифрованных текста зашифровали с теми же ключевыми результатами в XOR двух сообщений, из которых простой текст может быть легко извлечен с помощью традиционных методов криптоанализа.

А слабый IV является частью того, что сделало WEP вскрываемым.

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

25
ответ дан Andrew 15 September 2008 в 19:17
поделиться

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

9
ответ дан 15 September 2008 в 19:17
поделиться
  • 1
    @Als: Делает " доступ к энергозависимому object" == " разыменование указателя на энергозависимый object"? – Jesse Good 5 March 2012 в 08:53

Я нашел рецензию Автора Обзора HTTP ( RFC 2617 ) очень полезный в понимании использования и потребности в IVS / данные случаи.

2
ответ дан Peter Stone 15 September 2008 в 19:17
поделиться
  • 1
    FWIW, терминология, которую я предпочитаю, когда этот материал становится волосатым, - то, что volatile T* " pointer-to-volatile". referand указателя-к-энергозависимому может или не может на самом деле быть энергозависимым объектом, that' s вопрос того, как объект был определен, а не тип указателя, который Вы, оказывается, имеете. int i; volatile int *p = &i; создает указатель-к-энергозависимому чей referand isn' t энергозависимый объект, таким образом звоня p указатель на энергозависимый объект потенциально сбивает с толку. Обычно нет. – Steve Jessop 5 March 2012 в 10:27

Бросьте хороший взгляд на изображение (см. ниже) режима CBC. Вы быстро поймете, что взломщик, знающий IV, похож на взломщика, знающего предыдущий блок шифрованный текст (и да они уже знают многое из этого).

Вот то, что я говорю: большинством "проблем" с IV=0 являются общие проблемы с режимами блочного шифрования, когда Вы не делаете , гарантируют целостность данных. Действительно необходимо гарантировать целостность.

Вот то, что я делаю: используйте сильную контрольную сумму (криптографический хеш или HMAC) и предварительно ожидайте его к Вашему простому тексту перед шифрованием. Существует Ваш известный первый блок шифрованного текста: это - IV того же самого без контрольной суммы, и Вам нужна контрольная сумма по миллиону других причин.

Наконец: любая аналогия между CBC и поточными шифрами не ужасно проницательна, по моему скромному мнению.

Только посмотрели на изображение режима CBC, я думаю, что Вы будете приятно удивлены.

Вот изображение:

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

текст ссылки

5
ответ дан ine 15 September 2008 в 19:17
поделиться
  • 1
    @Jesse: Нет, " доступ к энергозависимому object" ∋ " разыменование указателя на энергозависимый object". существуют другие способы получить доступ к энергозависимому объекту: непосредственно, или через ссылку. Кроме того, вероятно, необходимо было записать " разыменование энергозависимого указателя на object". – MSalters 5 March 2012 в 09:09

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

, Например, давайте зашифруем 'привет мировое' использование IV один символ долго. IV случайным образом выбран, чтобы быть 'x'. Текст, который тогда шифруется, является тогда 'xhello миром', который уступает, скажем, 'asdfghjkl'. Если мы шифруем его снова, сначала генерируем новый IV - говорят, что мы получаем 'b' на этот раз - и шифруем как нормальный (таким образом шифрующий 'bhello мир'). На этот раз мы получаем 'qwertyuio'.

Дело в том, что взломщик не знает то, что IV и поэтому должен вычислить каждый возможный IV для данного простого текста для нахождения шифрованного текста соответствия. Таким образом IV действует как соль пароля . Обычно, IV используется с шифром объединения в цепочку (или поточный или блочный шифр). В блочном шифре объединения в цепочку результат каждого блока простого текста питается к алгоритму шифра для нахождения шифрованного текста для следующего блока. Таким образом каждый блок объединяется в цепочку вместе.

Так, если Вам использовали случайный IV для шифрования простого текста, как Вы дешифруете его? Простой. Передайте IV (в простом тексте) наряду с Вашим зашифрованным текстом. Используя наш пример кулака выше, заключительный шифрованный текст был бы 'xasdfghjkl' (IV + шифрованный текст).

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

статья Wikipedia о , векторы инициализации предоставляют общий обзор.

0
ответ дан John 15 September 2008 в 19:17
поделиться