Методы шифрования: Обзор

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

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

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

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

Число шагов, на которые сдвигаются буквы, считается ключом в этом типе шифрования. Оно задается не как число, а как соответствующая буква алфавита. При сдвиге на три цифры в качестве ключа используется буква «С».

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

Как работает шифрование?

Метод шифрования формируется из двух основных компонентов: криптографического алгоритма и как минимум одного ключа шифрования. Если алгоритм описывает метод шифрования (например, «перемещать каждую букву по порядку алфавита»), то ключ задает параметры («С = три шага»). Таким образом, шифрование можно описать как метод, при котором открытый текст и ключ проходят через криптографический алгоритм, и получается секретный текст.

Цифровые ключи

Современные методы шифрования используют цифровые ключи в виде битовых последовательностей. Существенным критерием безопасности шифрования является длина ключа в битах. Она определяет логарифмические единицы для количества возможных комбинаций ключа. В этом случае ее также называют пространством ключей. Чем больше ключевое пространство, тем более устойчивым будет шифрование к атакам «грубой силы» — методу взлома, основанному на проверке всех возможных комбинаций.

Для объяснения атак методом перебора мы используем в качестве примера шифр Цезаря. Его ключевое пространство равно 25, что соответствует длине ключа менее 5 бит. Чтобы расшифровать открытый текст, взломщику нужно перебрать всего 25 комбинаций, поэтому шифрование с помощью шифра Цезаря не представляет собой серьезного препятствия. Современные методы шифрования, с другой стороны, используют ключи, которые могут обеспечить значительно большую защиту. Например, Advanced Encryption Standard (AES) предлагает возможность выбора длины ключа в 128, 192 или 256 бит. Длина ключа этого метода, соответственно, велика.

Даже при 128-битном шифровании 2128 условия могут быть сопоставлены. Это соответствует более чем 240 секстиллионам возможных комбинаций ключей. Если AES работает с 256 битами, то количество возможных ключей составляет более 115 кваттуорвигинтиллионов (или 1075). Даже при наличии соответствующего технического оборудования на перебор всех возможных комбинаций уйдет вечность. При сегодняшних технологиях атаки «грубой силой» на длину ключа AES просто нецелесообразны. По данным EE Times, для взлома 128-битного ключа AES суперкомпьютеру потребуется 1 миллиард миллиардов лет, что превышает возраст Вселенной.

Принцип Керкхоффа

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

Согласно принципу Керкхоффса, безопасность криптосистемы основана не на секретности алгоритма, а на ключе. Еще в 1883 году Огюст Керкхоффс сформулировал один из принципов современной криптографии: Чтобы надежно зашифровать открытый текст, достаточно предоставить известный математический метод с секретными параметрами. Эта теория остается практически неизменной и сегодня.

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

Расширение ключа: От пароля к ключу

Пользователи, которые хотят зашифровать или разшифровать файлы, обычно не сталкиваются с ключами, а используют более управляемую последовательность: пароль. Надежные пароли состоят из 8-12 символов, используют комбинацию букв, цифр и специальных символов и имеют решающее преимущество перед битовыми последовательностями: Люди могут запоминать пароли без особых усилий.

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

Популярным методом создания ключей из паролей является PBKDF2 (Password- Based Key Derivation Function 2). В этом методе пароли дополняются псевдослучайной строкой, называемой значением соли, а затем преобразуются в битовую последовательность нужной длины с помощью криптографических хэш-функций.

Хэш-функции — это односторонние функции, защищенные от столкновений, то есть вычисления, которые относительно легко выполнить, но для их обратного преобразования требуются значительные усилия. В криптографии метод считается безопасным, если разным документам присваиваются разные хэши. Пароли, преобразованные в ключи с помощью односторонней функции, могут быть восстановлены только при значительных вычислительных усилиях. Это похоже на поиск в телефонной книге: В то время как легко найти телефонный номер, соответствующий заданному имени, поиск имени только по номеру телефона может оказаться невыполнимой задачей.

В рамках PBKDF2 математический расчет выполняется в несколько итераций (повторений), чтобы защитить сгенерированный ключ от атак методом перебора. Значение соли увеличивает усилия по реконструкции пароля на основе радужных таблиц. Радужная таблица — это схема атаки, используемая взломщиками кодов для закрытия хранимых хэш-значений неизвестного пароля.

Другие методы хэширования паролей — scrypt, bcrypt и LM-Hash, однако последний считается устаревшим и небезопасным.

Проблема распределения ключей

Центральной проблемой криптологии является вопрос о том, как информация может быть зашифрована в одном месте и расшифрована в другом. Даже Юлий Цезарь столкнулся с проблемой распределения ключей. Если он хотел отправить зашифрованное сообщение из Рима в Германию, он должен был быть уверен, что тот, кто его получит, сможет расшифровать секретное послание. Единственное решение: Гонец должен был передать не только секретное сообщение, но и ключ. Но как передать ключ без риска, что он попадет в чужие руки?

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

Классификация методов шифрования

В современной криптологии различают симметричные и асимметричные методы шифрования. Эта классификация основана на обращении с ключом.

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

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

Симметричные методы шифрования

С 1970-х годов шифрование информации основывается на симметричных криптосистемах, истоки которых лежат в древних методах, таких как шифр Цезаря. Основной принцип симметричного шифрования заключается в том, что шифрование и расшифровка осуществляются с использованием одного и того же ключа. Если две стороны хотят общаться с помощью шифрования, отправитель и получатель должны иметь копии одного и того же ключа. Чтобы защитить зашифрованную информацию от доступа третьих лиц, симметричный ключ хранится в секрете. Это называется методом закрытого ключа.

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

  • Потоковые шифры: Каждый символ или бит открытого текста связан с символом или битом ключевого потока, который преобразуется в шифрованный выходной символ.
  • Блочные шифры: Символы или биты, подлежащие шифрованию, объединяются в блоки фиксированной длины и преобразуются в шифр фиксированной длины.

Популярные методы шифрования симметричных криптосистем — это относительно простые операции, такие как подстановка и транспонирование, которые комбинируются в современных методах и применяются к открытому тексту в нескольких последовательных раундах (итерациях). Сложения, умножения, модулярная арифметика и операции XOR также включены в современные алгоритмы симметричного шифрования.

Известные методы симметричного шифрования включают устаревший стандарт шифрования данных (DES) и его преемник, усовершенствованный стандарт шифрования (AES).

Стандарт шифрования данных (DES)

DES — это метод симметричного шифрования, который был разработан компанией IBM в 1970-х годах и стандартизирован в 1977 году Национальным институтом стандартов и технологий США (NIST). По стандартам того времени DES был безопасным методом шифрования с помощью компьютера и стал основой для современной криптографии. Стандарт не запатентован, но из-за относительно небольшой длины ключа в 64 бита (фактически всего 56 бит), он практически устарел для использования сегодня. Еще в 1994 году криптосистема была взломана с помощью всего двенадцати рабочих станций HP-9735 и 50-дневных вычислительных усилий. При сегодняшней технологии ключ DES может быть взломан всего за несколько часов с помощью атаки грубой силы.

Симметричный алгоритм блочного шифрования работает на уровне битов. Открытый текст разбивается на блоки по 64 бита, которые затем индивидуально шифруются 64-битным ключом. Таким образом, 64-битный открытый текст преобразуется в 64-битный секретный текст. Поскольку каждый восьмой бит ключа выполняет функцию бита четности (или контрольного бита), для шифрования доступно только 56 бит.

Алгоритм шифрования DES представляет собой так называемую сеть Фейстеля и основан на комбинации замен и транспозиций, выполняемых за 16 итераций. Процесс, названный в честь сотрудника IBM Хорста Фейстеля, можно описать в четыре этапа:

1. Начальная перестановка: Включенный 64-битный блок открытого текста подвергается входной перестановке, которая изменяет порядок следования битов. Результат этой перестановки записывается в два 32-битных регистра. В результате образуется левая половина блока (L) и правая половина блока (R).

2. Перестановка ключа: 56 бит ключа, которые имеют значение для шифрования, также подвергаются перестановке, а затем делятся на два 28-битных блока (C и D). Каждые 16 итераций генерируется раундовый ключ из обоих ключевых блоков C и D. Для этого биты обеих половин блока циклически сдвигаются влево на 1 или 2 бита соответственно. Это должно гарантировать, что в каждом раунде шифрования будет использоваться другой раундовый ключ. После этого два половинных блока C и D отображаются на 48-битный круглый ключ.

3. Раунд шифрования: Каждый раунд шифрования включает шаги с a) по d). Для каждого цикла в шифрование вставляются полублок R и круглый ключ. Полублок L первоначально остается снаружи.

  • Расширение: Полублок R расширяется до 48-битного блока с помощью расширения. Для этого 32 бита полублока делятся на 4-битные группы в рамках расширения, а затем частично дублируются и переставляются по следующей схеме:
  • XOR-связь блока данных и ключа раунда: В каждом раунде шифрования 48-битный расширенный блок R связывается с 48-битным ключом раунда с помощью операции XOR. Результатом XOR-связи, в свою очередь, является 48-битный блок.
  • S-боксы (блоки подстановки): После операции XOR 48-битный блок разбивается на восемь 6-битных блоков, заменяется восемью 4-битными блоками с помощью S-боксов, а затем объединяется в 32-битный блок. Результат подстановочных блоков снова подвергается перестановке.
  • XOR-связь блока R и блока L: После каждого раунда шифрования результат S-блоков соединяется с еще неиспользованными L-блоками посредством XOR. В результате получается 32-битный блок, который затем поступает на второй этап шифрования в качестве нового R-блока. Блок R первого раунда служит блоком L второго раунда.

4. Окончательная перестановка: Если все 16 сеансов шифрования завершены, блоки L и R объединяются в 64-битный блок и подвергаются обратной перестановке для окончательной перестановки. Открытый текст зашифрован.

На следующем графике показано схематическое представление алгоритма DES. XOR-связи обозначены как красные круги с белыми крестами.

Расшифровка зашифрованных DES секретных текстов происходит по той же схеме, но в обратном порядке.

Основная критика DES заключается в том, что небольшая длина ключа в 56 бит приводит к сравнительно небольшому ключевому пространству. Такая длина больше не может противостоять атакам грубой силы, которые доступны при современных вычислительных мощностях. Метод перестановки ключей, который генерирует 16 почти одинаковых круглых ключей, считается слишком слабым.

Был разработан вариант DES — Triple-DES (3DES), в котором метод шифрования выполняется в три последовательных раунда. Однако эффективная длина ключа 3DES по-прежнему составляет всего 112 бит, что ниже минимального стандарта сегодняшнего дня — 128 бит. Кроме того, 3DES более требователен к компьютеру, чем DES.

Поэтому стандарт шифрования данных был в значительной степени заменен. Его преемником стал алгоритм Advanced Encryption Standard, который также является симметричным шифрованием.

Расширенный стандарт шифрования (AES)

В 1990-х годах стало очевидно, что DES, наиболее часто используемый стандарт шифрования, уже не отвечает современным технологиям. Требовался новый стандарт шифрования. В качестве его замены разработчики Винсент Риймен и Джоан Демен создали алгоритм Rijndael (произносится «Рейн-дал») — метод, который, благодаря своей безопасности, гибкости и производительности, был реализован в рамках открытого тендера и сертифицирован NIST как Advanced Encryption Standard (AES) в конце 2000 года.

AES также делит зашифрованный открытый текст на блоки, поэтому система основана на блочном шифровании, как и DES. Стандарт поддерживает 128, 192 и 256-битные ключи. Но вместо 64-битных блоков AES использует значительно более крупные 128-битные блоки, которые шифруются с помощью сети подстановочных перестановок (SPN) в несколько последовательных раундов. DES-преемник также использует новый ключ раунда для каждого раунда шифрования, который рекурсивно получается из выходного ключа и связывается с блоком данных, подлежащим шифрованию, с помощью XOR. Процесс шифрования делится примерно на четыре этапа:

1. Расширение ключа: AES, как и DES, использует новый раундовый ключ для каждого цикла шифрования. Он получается из выходного ключа с помощью рекурсии. При этом длина выходного ключа также увеличивается, чтобы можно было сопоставить необходимое количество 128-битных раундовых ключей. Каждый раундовый ключ основан на части расширенного выходного ключа. Количество необходимых круглых ключей равно количеству раундов (R), включая ключевой раунд, плюс круглый ключ для предварительного раунда (количество ключей = R + 1).

2. Предварительный раунд: В предварительном раунде 128-битный входной блок переносится в двумерную таблицу (Array) и связывается с ключом первого раунда с помощью XOR (KeyAddition). Таблица состоит из четырех строк и четырех столбцов. Каждая ячейка содержит один байт (8 бит) шифруемого блока.

3. Раунды шифрования: Количество раундов шифрования зависит от длины используемого ключа: 10 раундов для AES128, 12 раундов для AES192 и 14 раундов для AES256. Каждый раунд шифрования использует следующие операции:

  • SubBytes: SubBytes — это моноалфавитная подстановка. Каждый байт в шифруемом блоке заменяется на эквивалент с помощью S-образного блока.
  • ShiftRows: В преобразовании ShiftRow байты в ячейках массива (см. предварительный раунд) непрерывно сдвигаются влево.
  • MixColumns: При использовании MixColumns алгоритм AES использует преобразование, при котором данные перемешиваются в столбцах массива. Этот шаг основан на пересчете каждой отдельной ячейки. Для этого столбцы массива подвергаются матричному умножению, а результаты соединяются с помощью XOR.
  • Добавление ключа: В конце каждого раунда шифрования происходит еще одно добавление ключа. Он, как и предварительный раунд, основан на XOR-связи блока данных с ключом текущего раунда.

4. Ключевой раунд: Ключевой раунд — это последний раунд шифрования. В отличие от предыдущих раундов, он не включает преобразования MixColumn, и поэтому включает только операции SubBytes, ShiftRows и KeyAddition. Результатом последнего раунда является шифротекст.

Шифрование данных, зашифрованных AES, основано на вложении алгоритма шифрования. Это относится не только к последовательности шагов, но и к операциям ShiftRow, MixColumns и SubBytes, направления которых также меняются на противоположные.

AES сертифицирован как обеспечивающий высокий уровень безопасности благодаря своему алгоритму. Даже сегодня не было известно ни одной практической атаки на релевантность. Атаки методом перебора неэффективны при длине ключа не менее 128 бит. Такие операции, как ShiftRows и MixColumns, также обеспечивают оптимальное перемешивание битов: В результате каждый бит зависит от ключа. Криптосистема внушает доверие не только благодаря этим мерам, но и благодаря простой реализации и высокому уровню секретности. AES используется, в частности, в качестве стандарта шифрования для WPA2, SSH и IPSec. Этот алгоритм также используется для шифрования сжатых файловых архивов, таких как 7-Zip или RAR.

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

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

Доступными альтернативами AES являются симметричные криптосистемы MARS, RC6, Serpent и Twofish, которые также основаны на блочном шифровании и наряду с Rjindael входили в число финалистов конкурса AES. Blowfish, предшественник Twofish, также все еще используется. Salsa20, разработанный Дэниелом Дж. Бернштейном в 2005 году, является одним из финалистов европейского проекта eSTREAM.

Методы асимметричного шифрования

Если в симметричных криптосистемах один и тот же ключ используется на обеих сторонах зашифрованного сообщения, то в асимметрично зашифрованном сообщении обе стороны генерируют пару ключей для каждой страницы. Каждый участник коммуникации имеет в своем распоряжении два ключа: один открытый и один закрытый. Чтобы иметь возможность шифровать информацию, каждая сторона должна объявить свой открытый ключ. Обычно это происходит через сервер ключей и называется методом открытого ключа. Закрытый ключ остается в секрете. В этом заключается сила асимметричной криптосистемы:  В отличие от симметричного метода шифрования, секретный ключ никогда не выходит из поля зрения своего владельца.

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

Пример:

Пользователь A хочет отправить пользователю B зашифрованное сообщение. Для этого А нужен открытый ключ В. Открытый ключ В позволяет А зашифровать сообщение, которое может расшифровать только закрытый ключ В. Кроме В, никто не может прочитать сообщение. Даже у А нет возможности расшифровать шифр.

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

Недостатком этого метода шифрования является то, что B не может быть уверен, что зашифрованное сообщение действительно пришло от A. Теоретически, третий пользователь (C) может использовать открытый ключ B для шифрования сообщения — например, для распространения вредоносного ПО. Кроме того, A не может быть уверен, что открытый ключ действительно принадлежит B. Открытый ключ мог быть создан C и выдан за ключ B для перехвата сообщения от A к B. Для асимметричного шифрования необходим механизм, позволяющий пользователям проверять подлинность своих партнеров по общению.

Цифровые сертификаты и подписи являются решениями этой проблемы.

  • Цифровые сертификаты: Для обеспечения безопасности методов асимметричного шифрования партнеры по общению могут получить подтверждение подлинности своих открытых ключей от официального органа сертификации. Популярным стандартом для сертификации открытых ключей является X.509. Он используется, например, при передаче данных с шифрованием TLS/SSL через HTTPS или как часть шифрования электронной почты через S/MIME.
  • Цифровые подписи: Если цифровые сертификаты могут использоваться для проверки открытых ключей, то цифровые подписи используются для бесспорной идентификации отправителя зашифрованного сообщения. Для создания подписи используется закрытый ключ. Затем получатель проверяет эту подпись с помощью открытого ключа отправителя. Подлинность цифровой подписи обеспечивается с помощью иерархически структурированной инфраструктуры открытых ключей (PKI). Децентрализованной альтернативой иерархической PKI является так называемая Web of Trust (WoT) — сеть, в которой пользователи могут прямо и косвенно проверять друг друга. Первая научная публикация об асимметричных методах шифрования была сделана в 1977 году математиками Ривестом, Шамиром и Адлеманом. Метод RSA, названный в честь изобретателей, основан на односторонних функциях с «люком» и может использоваться для шифрования данных, а также в качестве метода подписи.

Ривест, Шамир, Адлеман (RSA)

RSA — один из самых безопасных и хорошо описанных методов с открытым ключом. Идея шифрования с использованием открытого ключа шифрования и секретного ключа дешифрования восходит к криптологам Уитфилду Диффи и Мартину Хеллману. Этот метод был опубликован в 1976 году как обмен ключами Диффи-Хеллмана, который позволяет двум партнерам по общению договориться о секретном ключе по незащищенному каналу. Исследователи сосредоточились на головоломках Меркла, разработанных Ральфом Мерклом, поэтому этот метод иногда также называют обменом ключами Диффи-Хеллмана-Меркла (DHM).

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

Ривест, Шамир и Адлеман также искали сокращения односторонней функции — первоначально с целью опровергнуть теорию ловушки. Но в итоге их исследования пошли по другому пути и привели к процессу шифрования, названному их именем. Сегодня RSA — это первый научно опубликованный алгоритм, позволяющий передавать зашифрованные данные без использования секретного ключа.

RSA использует алгоритм, основанный на умножении больших простых чисел. Хотя обычно не возникает никаких проблем с умножением двух простых чисел на 100, 200 или 300 цифр, до сих пор не существует эффективного алгоритма, который мог бы разложить результат такого вычисления на простые множители. Прайм-факторизацию можно объяснить на следующем примере:

Если умножить простое число 14 629 и 30 491, то получится произведение 446 052 839. У этого числа только четыре возможных делителя: Один — это оно само, а два других — исходные простые числа, которые были перемножены. Если вы разделите первые два делителя, то получите исходные значения 14 629 и 30 491, так как каждое число делится на 1 и на себя.

Эта тема лежит в основе генерации ключей RSA. И открытый, и закрытый ключ представляют собой две пары чисел:

                Открытый ключ: (e, N)

                Закрытый ключ: (d, N)

N — это так называемый модуль RSA. Он содержится в обоих ключах и является результатом произведения двух случайно выбранных, очень больших простых чисел p и q (N = p x q).

Чтобы сгенерировать открытый ключ, необходимо e — число, которое выбирается случайным образом в соответствии с определенными ограничениями. Соедините N и e, чтобы получить открытый ключ, который передается открытым текстом каждому партнеру по общению.

Для генерации закрытого ключа нужны N, а также d, поскольку они содержат значение, полученное в результате случайного генерирования простых чисел p и q, а также случайного числа e, которое вычисляется на основе функции Эйлера phi (ϕ).

Какие простые числа используются для вычисления закрытого ключа, должно оставаться в тайне, чтобы гарантировать безопасность шифрования RSA. Произведение обоих простых чисел, однако, может быть использовано в открытом ключе в открытом виде, поскольку предполагается, что на сегодняшний день не существует эффективного алгоритма, способного за приемлемое время обратить произведение простых чисел на их простые коэффициенты. Также невозможно вычислить p и q из N, если только вычисления не могут быть сокращены. Этот лючок представляет собой значение d, которое известно только владельцу закрытого ключа.

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

Для безопасной работы процесса RSA NIST предоставляет рекомендации, в которых указывается количество бит и предлагаемые значения N для различных уровней безопасности, а также различные длины ключей.

Метод открытого ключа на основе идентификатора

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

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

Теория шифрования на основе идентификатора решает основную проблему асимметричной криптосистемы, а вместо нее вводит две другие бреши в безопасности: центральным пунктом критики является вопрос о том, как закрытый ключ дешифрования передается от PKG получателю зашифрованного сообщения. Здесь снова возникает знакомая проблема ключа. Другим недостатком метода, основанного на идентификаторе, является ситуация, когда рядом с получателем зашифрованного сообщения находится другой субъект, который затем также узнает ключ расшифровки от PKG. Тогда ключ, по определению, перестает быть закрытым и может быть использован не по назначению. Теоретически, PKG может расшифровать все несанкционированные сообщения. Это можно сделать, сгенерировав пару ключей с помощью программного обеспечения с открытым исходным кодом на собственном компьютере.

Самый популярный метод, основанный на идентификации, можно отнести к Дэну Боне и Мэтью К. Франклину.

Гибридные методы

Гибридное шифрование — это объединение симметричных и асимметричных криптосистем в контексте передачи данных в Интернете. Цель такой комбинации — компенсировать слабые стороны одной системы с помощью сильных сторон другой.

Симметричные криптосистемы, такие как AES (Advanced Encryption Standard), считаются безопасными по сегодняшним техническим стандартам и позволяют быстро и эффективно обрабатывать большие объемы данных. В основе алгоритма лежит общий закрытый ключ, которым должны обмениваться получатель и отправитель шифруемого сообщения. Однако пользователи симметричных методов сталкиваются с проблемой распределения ключей. Эту проблему можно решить с помощью асимметричных криптосистем. Такие методы, как RSA, зависят от строгого разделения открытого и закрытого ключей, что позволяет передавать закрытый ключ.

Но RSA обеспечивает надежную защиту от криптоанализа только при достаточно большой длине ключа, которая должна быть не менее 1 976 бит. Это приводит к длительным вычислительным операциям, что дисквалифицирует алгоритм для шифрования и дешифрования больших объемов данных. Кроме того, передаваемый секретный текст значительно больше, чем исходный открытый текст после прохождения через шифр RSA.

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

Процесс гибридного шифрования можно описать в три этапа:

1. Управление ключами: В гибридных методах симметричное шифрование сообщения обрамляется асимметричным методом шифрования, поэтому необходимо генерировать как асимметричный (a), так и симметричный (b) ключ.

  • Перед передачей зашифрованных данных оба партнера по коммуникации сначала должны сгенерировать пару асимметричных ключей: открытый ключ и закрытый ключ. Затем происходит обмен открытыми ключами — в лучшем случае, защищенный механизмом аутентификации. Пара асимметричных ключей служит для шифрования и расшифровки симметричного сеансового ключа и поэтому обычно используется многократно.
  • Шифрование и дешифрование открытого текста выполняется с использованием симметричного сеансового ключа. Он генерируется заново отправителем сообщения для каждого процесса шифрования.

2. Шифрование: Если необходимо безопасно передать обширное сообщение через Интернет, отправитель должен сначала сгенерировать симметричный сеансовый ключ, с помощью которого можно зашифровать данные пользователя. После этого открытый ключ получателя используется для асимметричного шифрования сеансового ключа. После этого и данные пользователя, и симметричный ключ доступны в зашифрованном виде и могут быть безопасно отправлены.

3. Расшифровка: Зашифрованный текст отправляется получателю вместе с зашифрованным сеансовым ключом, которому необходим его закрытый ключ для асимметричной расшифровки сеансового ключа. Этот расшифрованный ключ затем используется для расшифровки симметрично зашифрованных пользовательских данных.

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

Гибридные методы шифрования используются в виде IPSec, при этом защищенная связь осуществляется через незащищенные IP-сети. Протокол Hypertext Transfer Protocol Secure (HTTPS) также использует TLS/SSL для создания гибридного протокола шифрования, сочетающего симметричные и асимметричные криптосистемы. Реализация гибридных методов лежит в основе таких стандартов шифрования, как Pretty Good Privacy (PGP), GnuPG и S/MIME, которые используются в контексте шифрования электронной почты.

Популярной комбинацией для гибридных методов шифрования является симметричное шифрование пользовательских данных с помощью AES и последующее асимметричное шифрование сеансового ключа с помощью RSA. В качестве альтернативы сеансовый ключ организуется в соответствии с методом Диффи-Хеллмана. Это может служить в качестве Ephemeral Diffie-Hellman Forward Secrecy, но подвержено атакам типа «человек посередине». Заменой алгоритма RSA является криптосистема Эльгамаля. В 1985 году Тахер Эльгамал разработал метод открытого ключа, который также основан на идее обмена ключами Диффи-Хеллмана и используется в текущей версии программы шифрования PGP.

Оцените статью
cdelat.ru
Добавить комментарий