Рассмотрим симметричное шифрование. Вот как вы конвертируете некоторые данные во что-то нечитаемое, за исключением тех, у кого есть секретные знания, которые позволяют отменить операцию. Это «симметрично», потому что знание, необходимое для шифрования, такое же, как знание, необходимое для дешифрования.
Исторически это «секретное знание», состоящее в описании шагов, которые необходимо выполнить для скремблирования данных.В какой-то момент стало интересно разделить «метод шифрования» на две части, один из которых представляет собой алгоритм (общее описание этапов метода), а второй - это ключ (точные параметры, используемые в этом случае) , На компьютере алгоритм становится программой, в которой работает машина; ключ - это числовой параметр, последовательность нулей и единиц. Компьютеры усугубляют потребность в этом расколе: компьютерная программа очень трудно сохранить конфиденциальность. Программа громоздка, она записывается в жесткий диск ... с другой стороны, ключ достаточно короткий, чтобы вписаться в человеческий мозг, который будет набираться при его использовании, чтобы быть сохраненным в устройстве столь же мелко, как дешевая смарт-карта, и так далее.
В порядке, ключ концентраты секрет. Все, что является секретным в шифровании, лежит в этом ключе.
В вашем примере XOR метод следующий: «мы XOR данные с ключом», а ключ представляет собой фактическую последовательность нулей и единиц, которые относятся к XOR. Известно, что метод шифрования по методу XOR чрезвычайно трудно использовать (в основном, ключ должен быть до тех пор, пока данные для шифрования, что очень часто нецелесообразно, но с использованием более короткого ключевого средства повторное использование некоторых частей ключа, который открывает много смертельных слабостей). Обычные симметричные системы шифрования намного сложнее и стремятся обеспечить «ваши деньги стоит» от ключа.
Сколько стоит ключ? Ну, так как ключ является единственной частью всего, что является секретным, все, что должен сделать атакующий, - угадать ключ. Самая основная форма угадывания - исчерпывающий поиск: злоумышленник просто пытается использовать все возможные ключи. Количество возможных ключей растет довольно быстро с длиной ключа. Например, 10-битный ключ имеет 1024 возможных ключа. С 20-битным ключом имеется 1048576 возможных ключей. Каждый дополнительный бит удваивает количество возможных ключей.
Алгоритм считается «надежным», если Известная атака является исчерпывающим поиском. В этом смысле надежный алгоритм - это алгоритм, который не предлагает лучшего пути атаки, чем жестокий исчерпывающий поиск, который всегда «выполним», но может быть непомерно дорогостоящим. Если алгоритм является надежным и, используемый ключ является достаточно большим, чтобы прервать исчерпывающий поиск, тогда шифрование защищено. «Достаточно большой», с практической точки зрения, означает «сто бит или больше». Самый большой ключ, который был атакован исчерпывающим поиском, - это 64-битный ключ. Количество комбинаций было огромным (18446744073709551616), что могло быть достигнуто с помощью существующих технологий (потребовалось несколько лет и тысячи компьютеров). Постоянный прогресс в скорости компьютера делает исчерпывающий поиск лучше и лучше, но не так быстро, как можно было себе представить. В основном, исчерпывающий поиск увеличивается на 1 бит каждые 12-18 месяцев (это известно как «закон Мура»). Существует много веских причин, по которым закон Мура не может быть соблюден до 2020 года (именно это и предсказывал сам Гордон Мур), и в этот момент вычислительная мощность по данной цене каким-то образом застопорится. 100-битный ключ должен оставаться в безопасности (это слишком много комбинаций для того, что компьютер сможет сделать через 10 лет). Обычные алгоритмы шифрования используют 128-битный ключ, потому что «128» выглядит хорошо, когда записывается в двоичном формате.
Есть также асимметричный шифрование и цифровые подписи. Основной принцип остается тем же: ключ - это часть, которая является секретной, в отличие от метода (программы), который известен всем. Асимметричное шифрование и цифровые подписи пытаются выполнять сложные вещи, в которых, например, у кого-то, кто знает, как шифровать , нет, достаточно информации, чтобы знать, как расшифровать. Для этого требуются некоторые сложные математические структуры. Ключами являются тогда математические объекты, которым требуется больше бит, когда они закодированы.Опять же, количество возможных ключей растет с размером ключа, но не так быстро, потому что очень немногая последовательность бит будет иметь требуемую математическую структуру. Кроме того, эта же структура позволяет использовать более быстрые пути атаки, подразумевая при этом более крупные ключи для обеспечения безопасности. Вот почему мы слышим о таких вещах, как «1024-битный ключ RSA». Ключ RSA состоит из нескольких целых чисел, наиболее важным из которых является то, что нецелесообразно превращать его в произведение простого целого числа. 1024-битное целое число (целое число, которое, будучи записано в двоичном выражении, состоит из 1024 нулей и единиц), которое должно быть чуть более 300 цифр в десятичной форме) кажется достаточно большим, чтобы помешать факторизации (текущая запись для 768-битного целое число).
[Кодовая книга Симона Сингха] (http://www.amazon.co.uk/Code-Book-History-Code-breaking-ebook/dp/B003VWDOK2/ref=kinw_dp_ke?ie=UTF8&m=A3TVV12T0I6NSM) является отличное чтение, если вы заинтересованы в истории криптографии/криптоанализа, включая криптографию с открытым ключом. – razlebe