2016-05-14 1 views
0

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

Скажем, я беру строку «Hello World», и я выкладываю ее «1 0 0 0 ....» до тех пор, пока блок не будет предопределенным размером. Тогда я это сделаю.

Если я использую это хешированное значение в системе шифрования, это не бесполезный тип заполнения, так как кто-то может просто собрать, включая «Hello World10000 ...», основываясь только на размере подписи (до вывести тип шифрования), а затем, основываясь на типичных алгоритмах заполнения, создайте таблицы, в которые входит дополнение?

Я считаю, что страдаю от некоторых основных недоразумений!

Возможно, (?) Единственный способ сделать вышеприведенную систему полезной - всегда накладывать случайную площадку - но «ISO 10126» был прекращен согласно вики, и эта система использовала случайное заполнение. Как мне исправить эту путаницу?

+0

Вы говорите о [* salting *] (https://en.wikipedia.org/wiki/Salt_ (криптография))? –

+0

Ну, как я уже сказал, у меня, похоже, есть недоразумение. Я перепечатываю эту статью, https://en.wikipedia.org/wiki/Padding_(cryptography), где говорится о «Дорогой посол ...» –

+0

Я не понимаю, чего вы пытаетесь достичь, но заполнение не является тривиальным для реализации в криптографически безопасном режиме. Какова цель вашей схемы? –

ответ

1

Есть две причин, в основном, для выполнения обивки:

  1. Длина-расширение: обивка используется, чтобы сделать вход придерживаться ограничений размера следующих функций;
  2. безопасность: заполнение выполняется так, чтобы полученное значение улучшало безопасность для следующих функций.

Первая причина используются для ECB и CBC режимов работы и большинство форм криптографических хешей. Оба используют определенный размер блока внутри, а размер ввода должен быть точным числом раз в размере блока.

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

Вы можете, очевидно, не выполнять случайное заполнение для ввода хеш-функций. Это приведет к случайному выпуску.


Используется вторая причина заполнения. во время генерации и шифрования RSA. Это используется для ввода самого хеш-выхода. После заполнения выполняется модульное возведение в степень RSA. Заполнение требуется, поскольку необработанный RSA уязвим для всех видов атак (если ваше сообщение состоит из числа со значением 1, тогда возведение в степень приведет к числу 1, чтобы назвать только одну проблему).

Для случайной случайности шифрования RSA внутри прокладки. Отступ RSA, однако, сильно отличается от битового заполнения; ISO 10126, конечно, не применяется.