Rc6. от простого к сложному

Преимущества AES

К основным преимуществам данного алгоритма относят:

  • Рассеивание — изменение любого знака ключа или открытого текста влияет на большое количество знаков шифротекста.

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

  • Не подвержен многим видам криптоаналитических атак, таких как: дифференциальный криптоанализ, линейный криптоанализ, square — атака.

  • Байт-ориентированная структура, что дает хорошие перспективы для реализации алгоритма в будущих процессорах.

  • Высокое быстродействие на различных платформах.

От чего сквозное шифрование не защищает

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

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

В некоторых случаях сам факт общения с определенными адресатами может привлечь к вам нежелательное внимание

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

По этой же причине устройства надо защищать антивирусами — зловред на смартфоне может точно так же прочитать вашу переписку, как и живой человек, заполучивший доступ к смартфону

И тут уже неважно, какое шифрование было использовано при передаче сообщений

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

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

Основные принципы построения криптосистем с открытым ключом

  1. Начинаем с трудной задачи P{\displaystyle P}. Она должна решаться сложно в смысле теории: не должно быть алгоритма, с помощью которого можно было бы перебрать все варианты решения задачи P{\displaystyle P} за полиномиальное время относительно размера задачи. Более правильно сказать: не должно быть известного полиномиального алгоритма, решающего данную задачу — так как ни для одной задачи ещё пока не доказано, что для неё подходящего алгоритма нет в принципе.
  2. Можно выделить легкую подзадачу P′{\displaystyle P’} из P{\displaystyle P}. Она должна решаться за полиномиальное время и лучше, если за линейное.
  3. «Перетасовываем и взбалтываем» P′{\displaystyle P’}, чтобы получить задачу P″{\displaystyle P»}, совершенно не похожую на первоначальную. Задача P″{\displaystyle P»} должна по крайней мере выглядеть как оригинальная труднорешаемая задача P{\displaystyle P}.
  4. P″{\displaystyle P»} открывается с описанием, как она может быть использована в роли ключа зашифрования. Как из P″{\displaystyle P»} получить P′{\displaystyle P’}, держится в секрете как секретная лазейка.
  5. Криптосистема организована так, что алгоритмы расшифрования для легального пользователя и криптоаналитика существенно различны. В то время как второй решает P″{\displaystyle P»}-задачу, первый использует секретную лазейку и решает P′{\displaystyle P’}-задачу.

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

В зависимости от принципа работы алгоритмы симметричного шифрования делятся на два типа:

  • блочные;
  • потоковые.

Блочные алгоритмы шифруют данные блоками фиксированной длины (64, 128 или другое количество бит в зависимости от алгоритма). Если все сообщение или его финальная часть меньше размера блока, система дополняет его предусмотренными алгоритмом символами, которые так и называются дополнением.

К актуальным блочным алгоритмам относятся:

  • AES
  • ГОСТ 28147-89
  • RC5
  • Blowfish
  • Twofish

Потоковое шифрование данных предполагает обработку каждого бита информации с использованием гаммирования, то есть изменения этого бита с помощью соответствующего ему бита псевдослучайной секретной последовательности чисел, которая формируется на основе ключа и имеет ту же длину, что и шифруемое сообщение. Как правило, биты исходных данных сравниваются с битами секретной последовательности с помощью логической операции XOR (исключающее ИЛИ, на выходе дающее 0, если значения битов совпадают, и 1, если они различаются).

Потоковое шифрование в настоящее время используют следующие алгоритмы:

  • RC4
  • Salsa20
  • HC-256
  • WAKE

Особенности асимметричного шифрования

Применение пары открытый-закрытый ключ можно использовать как:

  • самостоятельное средство защиты информации;
  • средство распределения ключей;
  • средства аутентификации пользователей.

Имеет такие преимущества:

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

В таких алгоритмах сложно внести какие-либо изменения. Подобная система имеет длинные ключи. Если симметричный ключ имеет размер 128 Бит, то ключ RSA — 2304 Бит. Из-за этого страдает скорость расшифровывания — она в 2-3 раза медленнее. Для расшифровки требуются большие вычислительные ресурсы.

Существует очень много примеров симметричной и асимметричной систем шифрования.

Основные принципы построения криптосистем с открытым ключом

  1. Начинаем с трудной задачи P{\displaystyle P}. Она должна решаться сложно в смысле теории: не должно быть алгоритма, с помощью которого можно было бы перебрать все варианты решения задачи P{\displaystyle P} за полиномиальное время относительно размера задачи. Более правильно сказать: не должно быть известного полиномиального алгоритма, решающего данную задачу — так как ни для одной задачи ещё пока не доказано, что для неё подходящего алгоритма нет в принципе.
  2. Можно выделить легкую подзадачу P′{\displaystyle P’} из P{\displaystyle P}. Она должна решаться за полиномиальное время и лучше, если за линейное.
  3. «Перетасовываем и взбалтываем» P′{\displaystyle P’}, чтобы получить задачу P″{\displaystyle P»}, совершенно не похожую на первоначальную. Задача P″{\displaystyle P»} должна по крайней мере выглядеть как оригинальная труднорешаемая задача P{\displaystyle P}.
  4. P″{\displaystyle P»} открывается с описанием, как она может быть использована в роли ключа зашифрования. Как из P″{\displaystyle P»} получить P′{\displaystyle P’}, держится в секрете как секретная лазейка.
  5. Криптосистема организована так, что алгоритмы расшифрования для легального пользователя и криптоаналитика существенно различны. В то время как второй решает P″{\displaystyle P»}-задачу, первый использует секретную лазейку и решает P′{\displaystyle P’}-задачу.

Примеры атак на AES

Существует несколько моделей атак на данный алгоритм. Я бы хотел остановиться на классе атак по сторонним каналам и кратко рассмотреть 2 соответствующих примера из данного класса.

  1. Атака по времени.

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

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

    Возможные методы противодействия такому виду атаки:

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

    · Добавлять ко времени выполнения операции задержки случайной длительности, это значительно затруднит проведение атаки таким способом.

  2. Атака по энергопотреблению.

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

    Возможными методами противодействия такому виду атаки являются:

    · Балансировка энергопотребления — при проведении операции задействовать все аппаратные части устройства.

    · Обеспечение независимости флуктуаций энергопотребления и происходящих в системе процессов.

Сравнение с асимметричными криптосистемами

Достоинства

  • скорость
  • простота реализации (за счёт более простых операций)
  • меньшая требуемая длина ключа для сопоставимой стойкости
  • изученность (за счёт большего возраста)

Недостатки

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

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

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

Схема Эль-Гамаля

Шифрование по схеме Эль-Гамаля используется для цифровых подписей. Является продолжением алгоритма Диффи-Хеллмана.

При работе по этой схеме важно учитывать следующую особенность. Шифрование Эль-Гамаля не является алгоритмом цифровой подписи по схеме с одноименным названием

При шифровке текст преобразовывается в шифр, который длиннее исходного сообщения в 2 раза.

Генерация ключей происходит следующим образом.

  1. Выбирается случайное простое число p.
  2. Число g должно быть первообразным корнем p.
  3. Число x должно быть больше 1 и меньше p-1. Это будет закрытый ключ.
  4. Затем вычисляется открытый ключ y по формуле .

При шифровании текста M выбирается системный ключ K. Он больше единицы и меньше p-1. Затем вычисляются числа a и b, которые являются шифротекстом, и .

Длины ключей для симметричных и асимметричных криптосистем при

одинаковой их криптостойкости

Длина ключа симметричной

криптосистемы, бит

Длина ключа асимметричной

 криптосистемы, бит

  56

  384

  64

  512

  80

  768

112

1792

128

2304

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

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

Анализ эффективности алгоритмов

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

Для этого выполняется следующий порядок действий:

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

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

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

Определения и вспомогательные процедуры

Определения
Block последовательность бит, из которых состоит input, output, State и Round Key. Также под Block можно понимать последовательность байт
Cipher Key секретный, криптографический ключ, который используется Key Expansion процедурой, чтобы произвести набор ключей для раундов(Round Keys); может быть представлен как прямоугольный массив байтов, имеющий четыре строки и Nk колонок.
Ciphertext выходные данные алгоритма шифрования
Key Expansion процедура используемая для генерации Round Keys из Cipher Key
Round Key Round Keys получаются из Cipher Key используя процедуру Key Expansion. Они применяются к State при шифровании и расшифровании
State промежуточный результат шифрования, который может быть представлен как прямоугольный массив байтов имеющий 4 строки и Nb колонок
S-box нелинейная таблица замен, использующаяся в нескольких трансформациях замены байт и в процедуре Key Expansion для взаимнооднозначной замены значения байта
Nb число столбцов(32-ух битных слов), составляющих State. Для, AES Nb = 4
Nk число 32-ух битных слов, составляющих шифроключ. Для AES, Nk = 4,6, или 8
Nr число раундов, которое является функцией Nk и Nb. Для AES, Nr = 10, 12, 14
Rcon[] массив, который состоит из битов 32-х разрядного слова и является постоянным для данного раунда
Вспомогательные процедуры
AddRoundKey()  трансформация при шифровании и обратном шифровании, при которой Round Key XOR’ится c State. Длина RoundKey равна размеру State(те, если Nb = 4, то длина RoundKey равна 128 бит или 16 байт)
InvMixColumns() трансформация при расшифровании которая является обратной по отношению к MixColumns()
InvShiftRows() трансформация при расшифровании которая является обратной по отношению к ShiftRows()
InvSubBytes() трансформация при расшифровании которая является обратной по отношению к SubBytes()
MixColumns() трансформация при шифровании которая берет все столбцы State и смешивает их данные (независимо друг от друга), чтобы получить новые столбцы
RotWord() функция, использующаяся в процедуре Key Expansion, которая берет 4-х байтное слово и производит над ним циклическую перестановку
ShiftRows() трансформации при шифровании, которые обрабатывают State, циклически смещая последние три строки State на разные величины
SubBytes() трансформации при шифровании которые обрабатывают State используя нелинейную таблицу замещения байтов(S-box), применяя её независимо к каждому байту State
SubWord() функция, используемая в процедуре Key Expansion, которая берет на входе четырёх-байтное слово и применяя S-box к каждому из четырёх байтов выдаёт выходное слово

Распространённые алгоритмы

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

В 1949 году Клод Шеннон из Bell Laboratories опубликовал фундаментальную теорию, положившую начало симметричному шифрованию, а десятилетия эволюции принесли примеры высокого качества. Однако только в 1975 году мощный алгоритм с закрытым ключом DES стал доступен для общего пользования.

Шифрование с помощью открытого ключа или асимметричное шифрование также возникло в середине 1970-х. Асимметричные шифры используют пару ключей — открытый, им делятся с другими людьми, и соответствующий ему закрытый, пользователь должен хранить его в секрете от других.

Стойкость шифровального алгоритма зависит от трёх важных факторов:

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

Схема шифрования с открытым ключом

Пусть K{\displaystyle K} — пространство ключей, а e{\displaystyle e} и d{\displaystyle d} — ключи шифрования и расшифрования соответственно. Ee{\displaystyle E_{e}} — функция шифрования для произвольного ключа e∈K{\displaystyle e\in K} такая, что Ee(m)=c{\displaystyle E_{e}(m)=c}. Здесь c∈C{\displaystyle c\in C}, где C{\displaystyle C} — пространство шифротекстов, а m∈M{\displaystyle m\in M}, где M{\displaystyle M} — пространство сообщений.

Dd{\displaystyle D_{d}} — функция расшифрования, с помощью которой можно найти исходное сообщение m{\displaystyle m}, зная шифротекст c{\displaystyle c}: Dd(c)=m{\displaystyle D_{d}(c)=m},
{Eee∈K}{\displaystyle \{E_{e}:e\in K\}} — набор шифрования, а {Ddd∈K}{\displaystyle \{D_{d}:d\in K\}} — соответствующий набор для расшифрования. Каждая пара (E,D){\displaystyle (E,D)} имеет свойство: зная Ee{\displaystyle E_{e}}, невозможно решить уравнение Ee(m)=c{\displaystyle E_{e}(m)=c}, то есть для данного произвольного шифротекста c∈C{\displaystyle c\in C} невозможно найти сообщение m∈M{\displaystyle m\in M}. Это значит, что по данному e{\displaystyle e} невозможно определить соответствующий ключ расшифрования d{\displaystyle d}. Ee{\displaystyle E_{e}} является односторонней функцией, а d{\displaystyle d} — лазейкой.

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

  1. Боб выбирает пару (e,d){\displaystyle (e,d)} и шлёт ключ шифрования e{\displaystyle e} (открытый ключ) Алисе по открытому каналу, а ключ расшифрования d{\displaystyle d} (закрытый ключ) защищён и секретен (он не должен передаваться по открытому каналу).
  2. Чтобы послать сообщение m{\displaystyle m} Бобу, Алиса применяет функцию шифрования, определённую открытым ключом e{\displaystyle e}: Ee(m)=c{\displaystyle E_{e}(m)=c}, c{\displaystyle c} — полученный шифротекст.
  3. Боб расшифровывает шифротекст c{\displaystyle c}, применяя обратное преобразование Dd{\displaystyle D_{d}}, однозначно определённое значением d{\displaystyle d}.

Хеш-функции

Хешированием (от англ. hash) называется преобразование исходного информационного массива произвольной длины в битовую строку фиксированной длины.

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

Нас интересуют криптографически стойкие хеш-функции. К таким обычно предъявляют два требования:

  • Для заданного сообщения С практически невозможно подобрать другое сообщение С’ с таким же хешем
  • Практически невозможно подобрать пар сообщений (СС’), имеющих одинаковый хеш.

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

Примеры хеш-алгоритмов

  • Adler-32
  • CRC
  • SHA-1
  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • HAVAL
  • MD2
  • MD4
  • MD5
  • N-Hash

  • RIPEMD-256
  • RIPEMD-320
  • Skein
  • Snefru
  • Tiger (TTH)
  • Whirlpool
  • ГОСТ Р34.11-94 (ГОСТ 34.311-95)
  • IP Internet Checksum (RFC 1071)

Криптография

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

Обновление за январь 2021 года:

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

  • Шаг 1: (Windows 10, 8, 7, XP, Vista — Microsoft Gold Certified).
  • Шаг 2: Нажмите «Начать сканирование”, Чтобы найти проблемы реестра Windows, которые могут вызывать проблемы с ПК.
  • Шаг 3: Нажмите «Починить все», Чтобы исправить все проблемы.

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

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

Этот метод довольно прост и поэтому не требует много времени. При передаче больших объемов данных предпочтительны симметричные ключи. Шифр Цезаря оказался хорошим примером симметричного шифрования. Современные подходы к симметричному шифрованию используют такие алгоритмы, как RC4, AES, DES, 3DES, QUAD, Blowfish и др.

Наиболее распространенная форма симметричного шифрования возникает после согласования зашифрованного соединения между клиентом и сервером с установленным сертификатом SSL. Как только соединение установлено, два 256-битных ключа сеанса создаются и обмениваются, чтобы иметь место зашифрованное соединение.

Асимметричное шифрование

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

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

Вовлечение двух ключей делает асимметричное шифрование сложной техникой. Поэтому это чрезвычайно выгодно с точки зрения безопасности данных. Алгоритмы Диффи-Хеллмана и RSA являются наиболее широко используемыми алгоритмами асимметричного шифрования.

Заключение

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

Квантовая криптография

Это уже не совсем основы криптографии, а более продвинутый уровень.

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

Новое поколение криптографии будет основываться не на математике, а на физике. Учёные в области физики атомов и частиц уже вошли в мир основ криптографии и хотят использовать законы квантовой механики для отправки сообщений, которые невозможно взломать. Они основоположники новой науки — квантовой криптографии.

Адаптированный перевод «Understanding Cryptography From Math to Physics»

Варвара Николаева

Расширение ключа

AES использует ключи шифрования трех фиксированных размеров: 128, 192, и 256 бит. В зависимости от размера ключа, конкретный вариант алгоритма AES может обозначаться как AES-128, AES-192 и AES-256 соответственно .
Задача процедуры расширения ключа состоит в формировании нужного количество слов расширенного ключа для их использования в операции AddRoundKey. Как было сказано выше, под «словом» здесь понимается 4-байтный фрагмент расширенного ключа, один из которых используется в первичном наложении материала ключа и по одному – в каждом раунде алгоритма. Таким образом, в процессе расширения ключа формируется 4∗(R+1){\displaystyle 4*(R+1) \,\!} слов.
Расширение ключа выполняется в два этапа, на первом из которых производится инициализация слов расширенного ключа (обозначаемых как Wi{\displaystyle W_i \,\!}): первые Nk{\displaystyle N_k \,\!} (Nk{\displaystyle N_k \,\!} – размер исходного ключа шифрования K{\displaystyle K\,\!} в словах, т.е. 4, 6 или 8) слов Wi{\displaystyle W_i \,\!} (т.е. i=…Nk−1{\displaystyle i = 0 … N_{k-1} \,\!}) формируются их последовательным заполнением байтами ключа (см. рис. 7).

Рис. 7 Инициализация расширенного ключа

Последующие слова Wi{\displaystyle W_i \,\!} формируются следующей последовательностью операций для каждого i=Nk…4∗(R+1)−1{\displaystyle i = N_k … 4*(R+1)-1 \,\!}:Шаг 1. Инициализируется временная переменная T{\displaystyle T\,\!} :
T=Wi−1{\displaystyle T=W_{i-1} \,\!}.
Шаг 2. Данная переменная модифицируется следующим образом:a. если i{\displaystyle i\,\!} кратно Nk{\displaystyle N_k \,\!}, то:T=SubWord(RotWord(T))ÅRCëiNkû{\displaystyle T = SubWord(RotWord(T)) Å RCëi/Nkû \,\!};
константы RCn{\displaystyle RC_n \,\!} представляют собой слова, в которых все байты, кроме первого являются нулевыми, а первый байт имеет значение 2n−1mod256{\displaystyle 2^{n-1} mod 256 \,\!};
b. если Nk=8{\displaystyle N_k = 8 \,\!} и imodNk=4{\displaystyle i mod N_k = 4 \,\!}, то:
T=SubWord(T){\displaystyle T = SubWord(T) \,\!};
c. в остальных случаях модификация переменной T{\displaystyle T\,\!} не выполняется.
Шаг 3. Формируется i{\displaystyle i\,\!}-е слово расширенного ключа:
Wi=Wi−NkÅT{\displaystyle W_i = W_{i-N_k} Å T \,\!}.
Операция SubWord выполняет над каждым байтом входного значения табличную замену, которая была описана выше – см. операцию SubBytes.
Операция RotWord побайтно вращает входное слово на 1 байт влево.
Как видно, процедура расширения ключа является достаточно простой по сравнению со многими другими современными алгоритмами шифрования. Процедура расширения ключа имеет также несомненное достоинство в том, что расширение ключа может быть выполнено «на лету» (on-the-fly), т.е. параллельно с зашифрованием данных.

Передача конфиденциального письма

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

  1. Алиса шифрует сообщение своим приватным ключом;
  2. шифрует еще раз публичным ключом Боба;
  3. передает сообщение по открытому каналу;
  4. Боб расшифровывает шифротекст своим приватным ключом;
  5. расшифровывает еще раз публичным ключом Алисы.

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

Isogeny will save us!

Начнем с понятия: изогения – это рациональное отображение, переводящее точки одной эллиптической кривой в точки изогенной кривой, оставляя неподвижной бесконечно удаленную точку. Пусть имеем две изогенные эллиптические кривые и . Изогенными они называются, если они заданы над одним полем и имеют одинаковое число точек.
Так вот, изогения — это, по сути, небольшой ВЖУХ, который берет точку кривой на вход, а на выходе выдает точку кривой . Ядром изогении называется множество точек на кривой , которые переходят в бесконечно удаленную точку кривой .

Для каждой изогении существует единственная дуальная изогения, выполняющая обратное преобразование. То есть, если изогения имеет следующий вид:, то дуальная к ней: .

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

Возможность применения изогений для построения криптосистем была предложена сравнительно недавно. В 2003 году автором E. Teske была опубликована работа, где изогении использовались в схеме с возможностью депонирования ключей. В 2006 году А. Г. Ростовцевым и А. Столбуновым схема шифрования Эль-Гамаля была адаптирована под изогении эллиптических кривых. В том же 2006 году для построения хэш-функций было предложено использовать графы изогенных суперсингулярных кривых. Важным и, можно сказать, переломным моментом в исследовании изогений является работа, опубликованная в 2010 году, где предлагается квантовый алгоритм, решающий задачу нахождения изогений несуперсингулярных кривых за субэкспоненциальное время. С этого момента исследования стали больше ориентированы на суперсингулярные кривые. Так, в сети уже можно найти схемы шифрования с открытым ключом, доказательства с нулевым разглашением, схему неоспоримой подписи и подписи вслепую.

Заключение

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

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

Спасибо за внимание!

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий