Как ключи используются в алгоритмах шифрования? - PullRequest
3 голосов
/ 13 марта 2010

Я просматривал и нашел хорошие статьи о шифровании. Однако ни один из них не описал, почему длина ключа важна и для чего именно используется ключ. Я предполагаю, что это может работать так:

Plaintext:   0101001101010101010
Key:         01010010101010010101   //the longer the key, the longer unique sequence
XOR or smth: //result

Это хотя бы немного, как это работает, или я что-то упустил?

Ответы [ 3 ]

5 голосов
/ 13 марта 2010

Системы шифрования, как правило, намного сложнее, чем система XOR, которую вы описали. Фактически, XORing действительно работает, только если у вас есть ключ, который имеет как минимум столько же бит, сколько текстовое сообщение, и вы когда-либо используете ключ только для шифрования одного сообщения. Это называется шифрованием "one time pad".

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

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

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

1 голос
/ 13 марта 2010

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

Исторически сложилось так, что «секретные знания» заключались в описании шагов, которые необходимо выполнить для шифрования данных. В какой-то момент стало интересно разделить «метод шифрования» на две части, одна из которых - алгоритм (общее описание шагов метода), а вторая - ключ ( точные параметры, используемые в этом случае). На компьютере алгоритм становится программой, которую запускает машина; ключ представляет собой числовой параметр, последовательность нулей и единиц. Компьютеры усугубляют необходимость такого разделения: компьютерную программу очень сложно сохранить в тайне. Программа громоздка, она записана на жесткий диск ... с другой стороны, ключ достаточно короткий, чтобы поместиться в человеческом мозге, чтобы его можно было набирать при использовании, чтобы хранить в устройстве, которое ничтожно, как дешевая смарт-карта и т. д.

В некотором смысле ключ концентрирует секрет. Все, что является секретным в шифровании, заключается в этом ключе.

В вашем примере XOR метод следующий: «мы XOR данные с ключом», а ключ - это фактическая последовательность нулей и единиц, с которой XOR. Известно, что метод шифрования по XOR чрезвычайно трудно использовать должным образом (в основном, ключ должен быть таким же, как и данные для шифрования, что очень непрактично; однако использование более короткого ключа означает повторное использование некоторые части ключа, что открывает множество смертельных слабостей). Обычные симметричные системы шифрования намного сложнее и стремятся обеспечить "ценность ваших денег" с помощью ключа.

Сколько стоит ключ? Что ж, поскольку ключ является единственной секретной частью, все, что нужно сделать атакующему, - это угадать ключ. Самая основная форма угадывания - исчерпывающий поиск : атакующий просто пробует все возможные ключи. Количество возможных ключей растет довольно быстро с длиной ключа. Например, 10-битный ключ имеет 1024 возможных ключа. С 20-битным ключом есть 1048576 возможных ключей. Каждый дополнительный бит удваивает количество возможных ключей.

Алгоритм считается «устойчивым», если наилучшая известная атака - это исчерпывающий поиск. В этом смысле надежный алгоритм - это алгоритм, который не предлагает лучшего пути атаки, чем жестокий исчерпывающий поиск, который всегда «выполним», но может быть чрезмерно дорогим. Если алгоритм устойчивый и , используемый ключ достаточно велик, чтобы помешать исчерпывающему поиску, тогда шифрование secure . «Достаточно большой» на практике означает «сто бит или более». Самый большой ключ, который был атакован исчерпывающим поиском, - это 64-битный ключ. Количество комбинаций было огромным (18446744073709551616), которое можно было достичь с помощью существующих технологий (на это потребовалось несколько лет и тысячи компьютеров). Непрерывный прогресс в скорости компьютера делает исчерпывающий поиск лучше и лучше, но не так быстро, как можно было представить. По сути, исчерпывающий поиск увеличивается на 1 бит каждые 12-18 месяцев (это известно как «закон Мура»). Существует много веских причин, по которым закон Мура не может быть соблюден после 2020 года (это, собственно, и предсказывал сам Гордон Мур), и в этот момент вычислительная мощность по данной цене как-то застаивается. Тогда 100-битный ключ должен оставаться в безопасности (это слишком много комбинаций для того, что компьютер сможет сделать через 10 лет). Обычные алгоритмы шифрования используют 128-битный ключ, потому что «128» выглядит хорошо, когда записано в двоичном формате.

Существует также асимметричное шифрование и цифровые подписи. Основной принцип остается тем же: ключ - это та часть, которая является секретной, в отличие от метода (программы), который известен всем. Асимметричное шифрование и цифровые подписи пытаются делать сложные вещи, в которых, например, тот, кто знает, как шифровать , не имеет достаточно информации, чтобы знать, как расшифровать. Это требует некоторых сложных математических структур. Ключи - это математические объекты, которым требуется больше битов при кодировании. Здесь снова число возможных ключей увеличивается с размером ключа, но не так быстро, потому что очень небольшая последовательность битов будет иметь требуемую математическую структуру. Кроме того, та же самая структура учитывает более быстрые пути атаки, а затем подразумевает использование более крупных ключей для достижения безопасности. Вот почему мы слышим о таких вещах, как «1024-битный ключ RSA». Ключ RSA состоит из нескольких целых чисел, наиболее важным из которых является то, что его нецелесообразно превращать в произведение простого целого числа. 1024-битное целое число (целое число, которое при записи в двоичном коде состоит из 1024 нулей и единиц - это будет чуть более 300 цифр в десятичной дроби) кажется достаточно большим, чтобы помешать факторизации (текущая запись для 768-битной целое число).

1 голос
/ 13 марта 2010

Прошло много времени (более 25 лет) с моего курса криптографии для студентов, но я постараюсь помочь.

Хотя это не идеальный пример для вещей в современной криптографии, возможно, более простое понимание придет, если рассмотреть шифр Vigenere , использующий строго алфавитный простой текст и ключ. В таком шифре ваш ключ будет представлять собой последовательность букв - часто слово или фразу - и используется для поворота через серию Цезарь-шифров для шифрования простого текста. Например, простой текст «dog» с ключом «cat» приведет к зашифрованному тексту «foz» (при условии, что я сделал это правильно).

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

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