Асимметричное шифрование
Содержание:
- Введение
- Что такое прямые продажи?
- Гибридное шифрование: симметричное + асимметричное шифрование
- Преимущества AES
- Стойкость схем ЭЦП
- Предисловие
- Тестируйте автоматические стратегии
- Асимметричная криптография или криптография с открытым ключом
- Шифры
- Другая проблема: если злоумышленник захочет выдать себя за вашего собеседника? Anchor link
- Как все начиналось
- Свойства
- Сегментируйте кампании правильно
- Внутри раунда. Операция 3: MixColumns
- Параметры алгоритма
- Ищите новые ключевые фразы
- Подпись документов
- 2 основных типа алгоритмов асимметричного шифрования
Введение
Наверняка вы сталкивались с таким понятием, как «электронная подпись». Если обратиться к федеральному закону, то можно найти следующее её определение:
Для меня, как для человека, редко работающего с подобного рода документами, определение несколько абстрактное, хоть и отражает суть ЭП — определение лица, подписавшего некоторый документ. Помимо этого, ЭП может быть использована для определения искажений переданного сообщения, в чём мы сможем убедиться позднее.
Задача ЭП ясна, теперь хотелось бы увидеть и прочувствовать, что именно скрывается за этими двумя словами. Копаясь дальше в гугле, можно найти довольно много различных алгоритмов создания цифровой подписи (DSA, ГОСТ Р 34.10-2012, RSA-PSS и т.д.), разбираться в которых неподготовленному пользователю сложно.
Спасти эту ситуацию и помочь разобраться в том, что есть ЭП, может криптосистема RSA, разработанная Ривестом, Шамиром и Адлеманом в 1978 году. Она не загромождена безумным количеством алгоритмов и основывается на относительно простой математике. В связи с этим можно шаг за шагом прийти от модульной арифметики к алгоритму создания электронной подписи, чему я и хочу посвятить данную статью.
Что такое прямые продажи?
Прямые продажи представляют собой вариант розничной торговли в не оборудованных специально местах, в случае с банковским продуктом – за пределами кредитно-финансового учреждения. Продажа оформляется в торговых центрах и на улицах городов, менеджер лично контактирует с потенциальными клиентами, демонстрирует преимущества товара одному человеку или группе лиц.

В период постсоветского подъема бизнес-сферы продажи прямого типа имели наибольшую популярность. Они становились толчком к началу собственного дела. До сих пор начинающие предприниматели демонстрируют преимущества своих товаров в торговых точках или на ярмарках.
Презентация продукции происходит:
- при личной встрече – запланированной заранее или совершенной случайно;
- в рамках групповой демонстрации с приглашением обширного круга посетителей.
По методу прямых продаж реализуются различные виды товаров – украшения, одежда, продукты, игрушки.
Гибридное шифрование: симметричное + асимметричное шифрование
Следует сразу же оговориться, что гибридное шифрование не является «отдельным методом», как симметричное или асимметричное, в нем используются все преимущества обоих методов и создается синергия надежных систем шифрования.
Каждый из алгоритмов шифрования имеет свои недостатки. Например, метод симметричного шифрования отлично подходит для быстрого шифрования больших объемов данных. Но он не обеспечивает проверку личности, что является необходимым, когда речь заходит о безопасности в Интернете. С другой стороны, асимметричное шифрование предоставляет доступ к данным предполагаемого получателя. Однако эта проверка делает процесс шифрования мучительно медленным.
Идея гибридного шифрования родилась, когда стало критично важно шифровать данные с высокой скоростью предоставляя при этом проверку личности. Метод гибридного шифрования используется в SSL/TLS сертификатах во время последовательной связи между серверами и клиентами (веб-браузерами) в процессе, известном как “TLS handshake”
Сначала проверяется личность обеих сторон с использованием закрытого и открытого ключа. После того, как обе стороны подтвердят свою личность, шифрование данных происходит посредством симметричного шифрования с использованием эфемерного (сеансового) ключа. Это обеспечивает быструю передачу большого объема данных, которые мы отправляем и получаем в Интернете каждую минуту
Метод гибридного шифрования используется в SSL/TLS сертификатах во время последовательной связи между серверами и клиентами (веб-браузерами) в процессе, известном как “TLS handshake”. Сначала проверяется личность обеих сторон с использованием закрытого и открытого ключа. После того, как обе стороны подтвердят свою личность, шифрование данных происходит посредством симметричного шифрования с использованием эфемерного (сеансового) ключа. Это обеспечивает быструю передачу большого объема данных, которые мы отправляем и получаем в Интернете каждую минуту.

Преимущества AES
К основным преимуществам данного алгоритма относят:
-
Рассеивание — изменение любого знака ключа или открытого текста влияет на большое количество знаков шифротекста.
-
Перемешивание — используемые преобразования затрудняют получение статистических зависимостей между открытым и закрытым текстом.
-
Не подвержен многим видам криптоаналитических атак, таких как: дифференциальный криптоанализ, линейный криптоанализ, square — атака.
-
Байт-ориентированная структура, что дает хорошие перспективы для реализации алгоритма в будущих процессорах.
-
Высокое быстродействие на различных платформах.
Стойкость схем ЭЦП
Стойкость широко распространенных в настоящее время схем ЭЦП основана на сложности решения частной задачи дискретного логарифмирования в простом поле GF(p).
Задача эта формулируется следующим образом:
-
заданы простые числа p, q и натуральное число g < p порядка q, то есть
gq≡ 1 (mod p); - зная значение y = gx (mod p), необходимо найти x ∈ Z.
Национальные стандарты
—Digital Signature Standard (принят NIST в 1991 г. с последующими изменениями в 1993, 1996 г.),
-российский стандарт цифровой подписи ГОСТ Р 34.10-94,
-стандарт Республики Беларусь СТБ 1176.2, введенный в 1999 г.
реализовывают ЭЦП в простом поле.
Предисловие
— … ты слышал название Rijndael?
— Рэйндал? Нет.
— Нет? Возможно, такая подача материала может кого-то раздражать, но мне удалось в предыдущем видео про историю AES ни слова не сказать о том, как этот алгоритм работает.
Что ж… Давай начнем с некоторых чисел, которые мы вскользь упомянули в последнем видео. AES – это симметричный алгоритм блочного шифрования, который оперирует блоками по 128 бит.
Это значит, что AES берет 128 бит исходного сообщения и превращает их с помощью некоего ключа в 128-битный шифротекст. Размер ключа может быть 128, 192 или 256 бит.
Поэтому уровень безопасности разнится от надежного до, как мне кажется, чрезмерно надежного.
Если вы обнаружите, что ваш браузер использует 128 бит, это нормально. Ключ такого размера был указан как часть AES, поэтому алгоритму Rjjndael этого должно быть достаточно. Просто представьте: у нас есть 16 байтов, или 128 бит, мы что-то с ними делаем и получаем шифротекст. И поскольку все происходит в SP-сети, то есть подстановочно-перестановочной, мы что-нибудь подставим, или применим метод конфузии, и что-нибудь переставим, переместим элементы, чтобы также использовать метод диффузии. Вы же не хотите, чтобы у вас было как в Энигме — один байт на входе и один на выходе, ибо это очень легко поддается криптоанализу, и история это подтверждала неоднократно.
Тестируйте автоматические стратегии
В кампаниях с динамическими объявлениями можно подключить любые автоматические стратегии, доступные для поисковой рекламы. Зачастую это увеличивает эффективность кампании.
DSA отлично работают у крупных e-commerce проектов.
В нашем сплите инструментов DSA-кампании занимают одно из главных мест. Они приносят до 35% конверсий и имеют неплохие показатели по сравнению с торговыми кампаниями — наиболее эффективным инструментом для e-commerce.
Так, CR у динамических объявлений в среднем ниже всего на 25%, стоимость конверсии — выше на 18%. Подключение автоматической стратегии «Целевая CPA» в DSA-кампаниях у одного из рекламодателей увеличило количество конверсий на 25%, CR вырос на 70%, стоимость конверсии снизилась на 25%.
Автоматические стратегии позволяют добиваться таких результатов, так как Google опирается на большое количество факторов и сигналов. Используя эти данные, алгоритмы подбирают ставки для каждого аукциона и для каждого пользователя.
DSA — отличный инструмент, который может выполнять сразу несколько функций: дополняет семантическое ядро, помогает не пропустить повышение сезонного спроса и улучшить performance-показатели, сокращая при этом трудозатраты.
Асимметричная криптография или криптография с открытым ключом
Криптография с асимметричным ключом также известна как открытый ключ. использует два разных ключа на каждом конце связи для его шифрования и дешифрования . У каждого пользователя связи будет открытый и закрытый ключ. Закрытый ключ должен быть защищен и храниться самим пользователем, он будет засекречено и не должно быть известно никому и никому не должно быть отправлено. Открытый ключ будет доступен всем пользователям системы, желающим общаться.
Сильной стороной системы, обеспечивающей безопасность этого типа асимметричного алгоритма, является то, что он основан на математических функциях, которые легко решить в одном смысле , но чей разрешение в обратном направлении чрезвычайно сложно , если ключ не известен. . Открытый и закрытый ключи генерируются одновременно и привязаны друг к другу. Отношения между ними должны быть очень сложными, поэтому нам очень сложно получить ключ от другого, в данном случае получить закрытый ключ, поскольку открытый ключ известен всем, кто подключен к системе.
Пары клавиш выполняют несколько очень важных функций, среди которых мы выделяем:
- Зашифруйте информацию.
- Обеспечьте целостность передаваемых данных.
- Гарантия подлинности эмитента.
Шифрование с асимметричным ключом
Если человек с парой ключей шифрует сообщение с помощью открытого ключа получателя, это сообщение может быть расшифровано только с помощью соответствующего закрытого ключа. Если мы зашифруем сообщение с помощью закрытого ключа, мы не сможем расшифровать его с помощью самого закрытого ключа, мы должны использовать открытый (в этом случае это не считается шифрованием, но проверяется подлинность отправителя с помощью это мы проверим, что отправитель действительно говорит быть).
Математическая структура того, как работает асимметричное шифрование, такова:
- Сообщение + открытый ключ = зашифрованное сообщение
- Зашифрованное сообщение + закрытый ключ = расшифрованное сообщение
- Сообщение + закрытый ключ = Подписанное сообщение
- Подписанное сообщение + открытый ключ = аутентификация
Как мы уже отмечали ранее, говоря о криптографии с симметричным ключом, симметричное шифрование обеспечивает конфиденциальность (только получатель может прочитать сообщение). Асимметричная криптография обеспечивает другие свойства: аутентичность, целостность и невозможность отказа от авторства. Чтобы алгоритм считался безопасным, он должен соответствовать следующему:
- Если зашифрованный текст известен, он должно быть очень сложно или почти невозможно извлечь открытый текст и закрытый ключ любым способом.
- Если открытый текст и шифрование известны, он получение закрытого ключа должно быть дороже, чем получение открытого текста .
- Если данные были зашифрованы открытым ключом, должен быть только закрытый ключ, способный его расшифровать , и наоборот.
Преимущество асимметричного шифрования перед симметричным в том, что открытый ключ может быть известен всем пользователям системы, однако этого не происходит с закрытым ключом, и в результате симметричного шифрования оба пользователя должны знать один и тот же ключ. (и пароль должен быть отправлен каждому из разных пользователей через установленный канал связи).
Шифры
ГОСТ 34.12-2018 охватывает блочные шифры. Именно в этом ГОСТе описаны алгоритмы шифрования Кузнечик и Магма — алгоритмы блочного шифрования с длинами шифруемых блоков 128 бит и 64 бита соответсвенно и длиной ключа шифрования 256 бит у обоих.
Шифрование блока открытого теста Кузнечиком происходит в 10 раундов, для каждого раунда из исходного ключа шифрования генерируется пара раундовых ключей, в каждом раунде проходят стадии подстановки и перестановки (перестановка вызывает особый интерес для криптоанализа алгоритма).
Приведем упрощенную схему работы Кузнечика при зашифровании.
Расшифрование Кузнечиком реализуется путем использования обратных операций подстановки и перестановки в инвертированном порядке, также, в обратном порядке следуют и раундовые ключи.
@sevastyan01 в своей статье подробно описал алгоритм Кузнечик.
Зашифрование блока Магмой проходит в 32 раунда, для каждого раунда из исходного ключа шифрования генерируется раундовый ключ, причем алгоритм генерации ключей отличается от генерации ключей в Кузнечике.
Расшифрование производится аналогичной зашифрованную последовательностью раундов, но с инвертированным порядком следования раундовых ключей.
Другая проблема: если злоумышленник захочет выдать себя за вашего собеседника? Anchor link
В нашем примере с Юлией и Сезаром посредники постоянно способны получать метаданные.
Допустим, что один из посредников оказался злоумышленником. Под злоумышленником мы будем подразумевать любого, кто намеревается нанести вам урон, пытаясь украсть либо подменить ваши данные. И по какой-либо причине наш злоумышленник желает узнать о содержимом сообщения Юлии для Сезара.
Допустим, этот злоумышленник смог обмануть Юлию, и она получила подложный файл открытого ключа «Сезара». Юлия не заметила, что это на самом деле не открытый ключ Сезара. Злоумышленник получает сообщение Юлии, просматривает его и передает дальше Сезару.
Злоумышленник может даже изменить содержимое сообщения (файла) перед тем, как передать его Сезару.
В большинстве случаев злоумышленник не изменяет содержимое сообщения. Он пересылает сообщение Юлии Сезару как будто бы ничего и не произошло. Сезар узнаёт, что они с Юлией должны встретиться в саду, но к их удивлению там оказывается и злоумышленник.
Это называется «атакой посредника», где посредником может оказаться человек либо компьютер.
К счастью, использование шифрования с открытым ключом способно предотвратить атаку посредника.
Шифрование с открытым ключом позволяет осуществить двойную проверку соответствия цифрового ключа и личности собеседника посредством так называемой «проверки отпечатков». Лучше всего такую проверку осуществлять при личной встрече. Ваш собеседник сравнит каждый символ отпечатка открытого ключа, предоставленного вами, с отпечатком вашего открытого ключа, находящегося у собеседника. Немного утомительно, но это действительно стоит сделать.
Приложения, использующие сквозное шифрование, также могут проверять отпечатки ключей, хотя и существуют некоторые вариации в названиях и способах реализации. В некоторых случаях необходимо очень внимательно прочитать каждый символ отпечатка, убедившись в том, что отпечаток на вашем экране совпадает с тем, что собеседник видит на своём. Другим способом проверки отпечатка является сканирование QR-кода с экрана телефона собеседника для подтверждения ключа его устройства. В приведённом ниже примере Юлия и Сезар могут встретиться лично, чтобы проверить отпечатки ключей своих телефонов, отсканировав QR-коды друг друга.
Если же роскошь личной встречи вам недоступна, вы можете отправить свой отпечаток по другому безопасному каналу связи, например с помощью другого мессенджера, чата или HTTPS-сайта, использующего сквозное шифрование.
В данном примере Сезар отправляет отпечаток своего открытого ключа Юлии с помощью смартфона, используя при этом другое приложение со сквозным шифрованием.
Напомним:
- Атака посредника – перехват злоумышленником сообщения, предназначенного вашему собеседнику. Атакующий может внести изменения в это сообщение, а может переслать его дальше, просто ознакомившись с содержимым.
- Криптография (шифрование) с открытым ключом позволяет противостоять атаке посредника с помощью проверки личностей отправителя и получателя. Это делается с помощью проверки отпечатков ключей.
- Открытый ключ вашего собеседника используется для шифрования сообщений, отправляемых ему. У каждого открытого ключа есть сокращенная версия — так называемый «отпечаток открытого ключа». Вы можете использовать его для проверки личности вашего собеседника.
- Закрытый ключ используется для шифрования сообщений в качестве цифровой подписи, подтверждающей ваше авторство.
Как все начиналось
Начнем с того, что прохождение модерации в Google Ads для медицины — процесс всегда долгий и далеко не всегда успешный.
Модерация Google Ads
Дело в том, что реклама медицинских услуг по-прежнему запрещена, и это настоящая боль для рекламодателей. Номинально можно рекламировать только медицинские учреждения без упоминания конкретных процедур. Существует ряд слов маркеров, которые запрещено включать в объявления, например:
- прием,
- консультация,
- выезд,
- диагностика,
- лечение,
- реабилитация.
Но даже соблюдение всех правил не дает гарантий стабильной работы рекламных кампаний.
Так, при подготовке кампаний для одного рекламодателей — сети клиник — мы учли все нюансы и сформировали максимально «безобидные» тексты. Параллельно нам надо было решить непростую задачу — увеличить релевантность объявлений: медицинский центр предоставляет много разных услуг, а сайт имеет разветвленную структуру с соответствующим количеством посадочных страниц. Это значит, что необходимо было найти баланс между строгими правилами и релевантностью заголовка объявления запросу пользователя.
Примеры:


Тем не менее часть рекламы сразу же получила статусы «отклонено» и «одобрено (с ограничениями)»:

Что касается второго случая, не стоит обольщаться, так как оговорка «с ограничениями», по сути, сообщает, что реклама показываться не будет.
Но даже те тексты, что полностью прошли модерацию, периодически отклонялись — на почту регулярно приходила пачка уведомлений об отклонении объявлений из различных кампаний.
Очевидно, что ситуация неприемлема по двум основным причинам:
- Требуется практически ежедневная коррекция текстов. Это отнимает много времени, которое должно отводиться на оптимизацию.
- Над аккаунтом висит дамоклов меч — нет гарантии, что в один прекрасный момент не будет забанено вообще всё.
По итогам поисков решения наш выбор пал на непривычный для этой тематики формат — динамические поисковые объявления или DSA.
Почему DSA?
- У сайта четкая структура с распределением услуг по разным страницам и достаточным количеством контента на них.
- Есть множество написанных руками объявлений со сходным описанием и различными заголовками, из-за содержания которых, как правило, реклама и отклонялась. И логичный вывод:

Свойства
|
При переопределении в производном классе возвращает имя алгоритма обмена ключами. В противном случае создается исключение NotImplementedException. (Унаследовано от AsymmetricAlgorithm) |
|
|
Получает или задает размер модуля ключа (в битах), используемого алгоритмом асимметричного шифрования. (Унаследовано от AsymmetricAlgorithm) |
|
|
Возвращает размеры ключа, которые поддерживаются алгоритмом асимметричного шифрования. (Унаследовано от AsymmetricAlgorithm) |
|
|
При реализации в производном классе возвращает имя алгоритма подписи. В противном случае всегда создается исключение NotImplementedException. (Унаследовано от AsymmetricAlgorithm) |
Сегментируйте кампании правильно
Для увеличения CTR объявлений необходимо сегментировать кампании.
Можно повторить структуру обычных поисковых кампаний, но важно не дробить таргетинги на слишком узкие. Например, не стоит создавать таргетинг отдельной модели телефона с памятью 64gb черного цвета
Эффективнее объединять их по верхнему уровню — в данном случае по марке телефона.
В случае узкого таргетинга трафика будет слишком мало либо вовсе не будет. Помните также, что в аккаунте есть ограничение на количество целей автоматической рекламы — 25 000.
Если сайт поддерживает несколько языков, то для каждого языка нужно создать отдельную рекламную кампанию.
Сейчас настройка DSA доступна на уровне группы объявлений. Это значит, что одна кампания может содержать как ключевые фразы, так и цели динамической рекламы для динамических объявлений.
Внутри раунда. Операция 3: MixColumns
Когда мы переставили байты из одних столбцов в другие, мы собираемся взять каждый из столбцов и смешать все их элементы.
Мы возьмем первый столбец и смешаем байты в нем, а потом отдельно второй, третий и так далее. Так что это операция производится в пределах столбца. Этот байт переместился сюда, а затем перемешался с другими элементами в этом столбце. Этот передвинулся сюда и перемешался с другими элементами в этом столбце. Таким образом, эти две операции в тандеме хорошенько всё перемешивают, если представить это с технической точки зрения. Здесь используется матричное умножение.
Давай просто оторвем еще один листочек. Нам сегодня нужно много бумаги. Возьмем один столбец с элементами, например, С0, С1, С2, С3 и умножим его как вектор на матрицу.
Только что мы столкнулись с тем, как происходят серьезные изменения в компьютерном файле, но мы не будем углубляться. Так вот в этой специальной матрице у нас
| 2 | 3 | 1 | 1 |
| 1 | 2 | 3 | 1 |
| 1 | 1 | 2 | 3 |
| 3 | 1 | 1 | 2 |
Эти числа достаточно велики и настолько перемешаны, что здесь происходят довольно интересные процессы, но одновременно эти числа и достаточно малы, чтобы процессы происходили быстро, как в более сложных реализациях и тому подобное. Если бы в матрице вместо 2 было бы 50, все происходило бы медленнее.
Так вот, если вы помните линейную алгебру, в результате матричного умножения получается новый вектор, который заменит наш столбец другим, так что получится некая комбинация всех этих элементов. Итак, получаем:
(2 x С0)
(3 x С1)
(1 x С2)
(1 x C3)
Мы повторяем этот процесс, чтобы получить все остальные значения.
В конце концов после всех перемешиваний, перемещений и переставлений мы получаем новый столбец с битами и байтами.
Есть также матрица для обратного преобразования InvMixColumns, и она служит для расшифрования. Хотя все элементы как следует перемешиваются, на самом деле, мы также можем пройти обратный путь. Единственное, что следует упомянуть, что речь, конечно, идет не об обычном умножении, потому что мы находимся внутри конечного поля.
Наша операция сложения – это XOR, а умножение – это умножение внутри конечного поля по модулю многочлена. Остальные подробности мы обсудим как-нибудь в другой раз.
Параметры алгоритма
Теперь, когда мы разобрались с основными понятиями, попробуем копнуть немного глубже.
RC6 параметризированный алгоритм. Это значит, что его работа зависит от некоторых начальных параметров, которые устанавливаются перед началом его работы. Попробуем понять на примере параметра :
Все основные вычисления, которыми оперирует алгоритм, имеют битные машинные слова в качестве входа и выхода. Как мы уже выяснили, RC6 блочный шифр. Причем входной и выходной блоки имеют 4 регистра A, B, C, D каждый размером по бит. Обычно . Тогда размер блока будет бит.
Таким образом является одним из параметров алгоритма, который мы можем задавать. Выпишем их все:
-
размер слова в битах. Каждое слово содержит слов в байтах. Блоки открытого текста и шифротекста имеют длину побит (т.к. 4 регистра).
-
количество раундов. Так же размер расширенного массива ключейбудет иметьслово (об этом далее). Допустимые значения .
-
количество бит в секретном ключе .
-
секретный ключ размеров байт: .
Чтобы было ясно, о каком алгоритме идем речь принято писать .
Ищите новые ключевые фразы
Одно из применений DSA — это подбор новых ключевых фраз для поисковых кампаний. Это касается сезонных историй, которых временами сложно отследить. Например, в каком-то регионе происходит нашествие комаров, это необычная ситуация для этой местности. Там люди редко ищут средства от комаров, но в начале лета 2019-го количество таких запросов экспоненциально увеличивается. DSA кампании реагируют на эти колебания, и рекламодатель получает трафик, который без использования динамических поисковых объявлений мог быть потерян.
Если в DSA кампаниях вы используете ручное управление ставок, мы рекомендуем добавлять новые ключевые фразы в отдельные кампании или группы объявлений (в зависимости от выбранной структуры аккаунта), чтобы назначить для них уникальные ставки.
Если работают автоматические стратегии Google Ads, выделяйте ключевые фразы
Но обратите внимание на метрики Imp. share и Click share по поисковым запросам
Когда эти показатели и так высоки, добавление ключевых фраз может не принести желаемого результата. Напротив, CTR может снизиться, поскольку в DSA работают собственные алгоритмы, а сгенерированный заголовок будет точно отвечать запросу пользователя и может быть большей длины, чем в обычных объявлениях.
С ключевыми фразами связан еще один важный нюанс. Если ключ выделен в отдельную группу и/или кампанию, то ей будет отдан приоритет показа только тогда, когда поисковый запрос точно совпадет с ключевой фразой. В остальных случаях основную роль играет рейтинг объявления. Поэтому лучше добавлять все словоформы ключевой фразы и использовать разные типы соответствий, если нужно показывать по этой фразе текстовое объявление или адаптивное поисковое объявление.
Подпись документов
Рассмотренный алгоритм получения подписи изящен и прост в осознании, однако операция возведения в степень несколько «мешается». Наша текущая задача – подписать объёмный документ. Чтобы сэкономить время, мы не будем подписывать содержимое документа, а прибегнем к помощи хэш-функций (если вы не знаете, что такое хэш-функция, рекомендую почитать википедию). Скажу лишь то, что выходная последовательность хэш-функции имеет небольшую (по сравнению с размером ключей) длину, а также по имеющемуся хэшу нельзя однозначно восстановить исходные данные.
На картинках наглядно показано, в какой момент мы используем хэширование. Создание подписи:

Проверка подписи:

В качестве хэш-функции можно использовать SHA-256, как это сделано, например, в PGP. По теме практического создания электронной подписи с использованием PGP на хабре уже написана статья, поэтому на этом месте имеет смысл поставить точку и перейти к заключению.
2 основных типа алгоритмов асимметричного шифрования
1. Алгоритм асимметричного шифрования RSA
В 1977 году алгоритм изобрели трое ученых из Массачусетского технологического института Рон Ривест, Ади Шамир и Леонард Адлеман (Ron Rivest, Adi Shamir, and Leonard Adleman отсюда «RSA»). На сегодняшний день является наиболее используемым алгоритмом асимметричного шифрования. Его эффективность заключается в методе «первичной факторизации». По сути, выбираются два различных случайных простых числа заданного размера (например, 1024 бита каждое) и умножаются, чтобы создать еще одно гигантское число. Задача состоит в том, чтобы определить исходные простые числа из умноженного гигантского. Оказывается, эта головоломка практически невозможна для современных суперкомпьютеров, не говоря уже о людях.
В 2010 году группа добровольцев провела исследование, и им потребовалось более 1500 лет вычислительного времени (распределенного по сотням компьютеров), чтобы взломать 768-битный ключ RSA, что намного ниже стандартного 2048-битного, который используется сегодня.
Преимущество использования алгоритма шифрования RSA
Большим преимуществом RSA является его масштабируемость, ключи могут быть разной длины шифрования: 768-битный, 1024-битный, 2048-битный, 4096-битный и т. д.
RSA основан на простом математическом подходе, поэтому его реализация в инфраструктуре открытых ключей (PKI) становится легкой. Адаптивность и безопасность сделали RSA наиболее используемым алгоритмом асимметричного шифрования для различных приложений, включая сертификаты SSL / TLS, криптовалюты и шифрование электронной почты.
2. Алгоритм асимметричного шифрования ECC
В 1985 году два математика по имени Нил Коблиц и Виктор Миллер предложили использовать эллиптические кривые в криптографии. Спустя почти два десятилетия их идея воплотилась в реальность, алгоритм ECC (Elliptic Curve Cryptography) начали использовать в 2004-2005 годах.
В процессе шифрования ECC эллиптическая кривая представляет набор точек, которые удовлетворяют математическое уравнение (y 2 = x 3 + ax + b).
Как и RSA, ECC также работает по принципу необратимости. Проще говоря, в ECC число, символизирующее точку на кривой, умножается на другое число и дает другую точку на кривой. Теперь, чтобы взломать эту головоломку, вы должны выяснить новую точку на кривой. Математика ECC построена таким образом, что найти новую точку практически невозможно, даже если вы знаете исходную точку.
Преимущество использования алгоритма шифрования ECC
Не смотря на то, что по сравнению с RSA, в ECC используется более короткая длина ключа обеспечивает он большую безопасность (от современных методов взлома).
Еще одним преимуществом использования более коротких ключей в ECC является более высокая производительность. Короткие ключи требуют меньшей сетевой нагрузки и вычислительной мощности, и это отлично подходит для устройств с ограниченными возможностями хранения и обработки. Использование алгоритма ECC в сертификатах SSL/TLS значительно сокращает время, необходимое для шифрования и дешифрования, что помогает быстрее загружать веб-сайт. Алгоритм ECC используется для приложений шифрования, цифровых подписей, в псевдослучайных генераторах и т. д.
Однако проблема массового использования ECC заключается в том, что многие серверные программы и панели управления еще не добавили поддержку сертификатов ECC SSL/TLS. Мы надеемся, что это изменится в скором будущем, а пока что RSA будет продолжать оставаться наиболее используемым алгоритмом асимметричного шифрования.