от простых чисел до электронной подписи как зашифровать данные

ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ ЭЦП

Вскоре после RSA были разработаны другие ЭЦП, такие, как алгоритмы цифровой подписи Рабина, Меркле и другие.

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

Также она используется в открытой системе шифрования PGP и иных системах шифрования (к примеру, DarkCryptTC и формат xdc) в сочетании с симметричными алгоритмами.

Из-за низкой скорости шифрования сообщения обычно шифруют с помощью более производительных симметричных алгоритмов со случайным сеансовым ключом (например, AES, IDEA, Serpent, Twofish), а с помощью RSA шифруют лишь этот ключ, таким образом реализуется гибридная криптосистема. Такой механизм имеет потенциальные уязвимости ввиду необходимости использовать криптографически стойкий генератор псевдослучайных чисел для формирования случайного сеансового ключа симметричного шифрования.

Как работает

Электронная подпись состоит из двух принципиальных частей:

Грубо говоря, ЭП должна гарантировать, что документ подписали именно вы и что вы подписали именно этот документ.

В сертификате хранятся данные о владельце подписи:

Но смысл сертификата не в том, что там хранятся эти данные, а в том, кто эти данные туда положил. В России сертификаты и ЭП выдают специальные удостоверяющие центры — это компании, которые гарантируют, что сертификат выдаётся именно тому, кто в этом сертификате указан.

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


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

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

Рон Ривест, Ади Шамир и Леонард Адлеман из Массачусетского технологического института в течение года предприняли несколько попыток создать одностороннюю функцию, которую было бы трудно инвертировать. Ривест и Шамир, будучи компьютерными учеными, предложили множество потенциальных функций, а Адлеман, будучи математиком, отвечал за поиск их слабых мест. Они опробовали множество подходов, включая «ранцевый» и «перестановочные полиномы». Какое-то время они думали, что то, чего они хотели достичь, невозможно из-за противоречивых требований. В апреле 1977 года они провели Песах в доме одного из студентов и выпили много манишевицкого вина, а затем вернулись к себе домой около полуночи. Ривест, не в силах заснуть, лег на диван с учебником математики и начал думать о своей односторонней функции. Остаток ночи он провел, формализуя свою идею, и к рассвету большая часть статьи была готова. Алгоритм теперь известен как RSA — инициалы их фамилий в том же порядке, что и в их статье.

Клиффорд Кокс, английский математик, работавший в британской разведывательной службе Government Communications Headquarters (GCHQ), описал эквивалентную систему во внутреннем документе в 1973 г. Однако, учитывая относительно дорогие компьютеры, необходимые для ее реализации в то время, она считалась в основном курьезом и, насколько известно, так и не была применена. Однако его открытие было раскрыто только в 1997 году из-за его сверхсильного засекречивания.

Преимущества асимметричных шифров перед симметричными:

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

Атаки на алгоритм RSA

По вещественному числу   определим последовательности:

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

Если несократимая дробь   удовлетворяет неравенству:

то   одна из подходящих дробей в разложении   в непрерывную дробь.

Пусть у нас есть модуль   причём    Допустим нападающему известна шифрующая экспонента E, обладающая свойством

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

Отсюда видно, что   довольно хорошее приближение для    Действительно,

Так как   очевидно  Кроме того, так как предполагалось, что   Значит,

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

для некоторого случайного числа   Получив равенство, найдём   Общее число подходящих дробей, которое придётся проверить оценивается как

Обобщённая атака Винера

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

Цифровая подпись

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

Электронная подпись применяется не только в спецслужбах и органах, но и в бизнесе. Например, для перевода пенсионных накоплений в НПФ: мы генерируем запрос на сертификат, отправляем его в удостоверяющий центр (УЦ). У Ц выпускает сертификат, мы подписываем сертификатом заявление на перевод пенсионных накоплений, отправляем — и вуаля. Подпись также позволяет осуществлять контроль целостности подписываемых данных. Если данные будут изменены, подпись не пройдет проверку.

Для программирования подписи необходимо ознакомиться с несколькими классами . NET Framework:

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

Мы проверили сертификат и убедились, что он в порядке. Переходим непосредственно к подписыванию данных. Подпись бывает двух видов: прикрепленная и открепленная.


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

Прикрепленная и открепленная подписи

Результатом прикрепленной подписи будет CMS (Cryptography Message Syntax) — сообщение, содержащее как подписываемые данные, так и саму подпись. Открепленная подпись содержит только саму подпись. Рекомендую использовать именно открепленную подпись, потому что с ней намного меньше мороки. В нее проще поставить метку времени, она меньше весит, так как не содержит подписываемые данные. Подписываемые данные легко открыть, посмотреть. В случае прикрепленной подписи для того, чтобы просмотреть подписанные данные, CMS-сообщение необходимо сначала декодировать. В общем, прикрепленной подписи я рекомендую избегать всеми силами. Если потребуется передавать подпись и контент вместе, рассмотри вариант архивирования (вместо использования прикрепленной подписи используй открепленную, просто заархивируй подписываемый файл и открепленную подпись). Посмотрим на код подписи (С#):

Но, как обычно это бывает у Microsoft, стоит сделать маленький шаг в сторону, и розовый волшебный мир рушится

Глядя на примеры кода, можно подумать, что работа с подписью в . NET реализована достаточно хорошо. Но рассмотрим, например, случай, в котором необходимо осуществить подпись большого файла, размером 600 MiB. Внимательные читатели обратили внимание на сигнатуру метода подписи — он принимает на вход массив байтов. При попытке загрузить в массив байтов 600 MiB мы получим OutOfMemoryException.

Что же делать, спросишь ты? Обращаться к основам — отвечу я! Очевидно, раз нельзя загрузить в память 600 MiB, то необходимо файл грузить и обрабатывать по кусочкам. . NET-обертки над CMS так не умеют. На помощь нам приходит MS Crypto API. M S Crypto API содержит два набора функций для работы с CMS: Simplified Message Fuctions и Low Level Message Functions. Для работы с большими файлами нам нужны Low Level. Полную реализацию на C# можно посмотреть тут. Я же предпочитаю работать с криптографией на языке C++. Кода в результате писать приходится меньше, а работает он быстрее. Рассмотрим порядок действий для реализации подписи в поточном режиме:

На C++ будет что-то вроде:

Вызов кода на C++ из C# будет выглядеть примерно так:

Внимательный читатель удивится — что это за IStreamReader* inputStream, IStreamWriter* outputStream, ICertificate* signCertificate? Ответ следует из названия переменных, но есть одна тонкость, которая для многих окажется сюрпризом. I StreamReader, IStreamWriter, ICertificate — это интерфейсы, реализованные на C#, и это не COM-объекты. При этом мы спокойно можем вызывать их методы в нативном C++. Как сделать такую красоту — тема отдельной статьи. В результате успешного выполнения операции мы получим криптографическое сообщение. Для кодирования сертификатов X.509 и криптографических сообщений используется Abstract Syntax Notation One, или, по-простому, ASN 1. Для просмотра файлов, закодированных в ASN 1, можно воспользоваться бесплатным ASN.1 Editor.


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

Факторизация больших чисел

Рассмотрим на практике электронную подпись на основе знаменитого алгоритма RSA. Шифрование RSA мы рассматривать не стали — это мейнстрим, и в той же «Википедии» есть его подробное описание.

Генерация ключей

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


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

Когда ключи сгенерированы, можно приступить к вычислению электронной подписи.

Вычисление электронной подписи


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

Проверка электронной подписи


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

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

В общем, не стоит полагаться на стойкость этой схемы подписи RSA, особенно с такими «криптостойкими» ключами, как в нашем примере.

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

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

Если пользователь прислал тебе отчет в виде прикрепленной подписи, тебе для чтения придется его декодировать:

Нетрудно догадаться, что и тут разработчики . NET Framework подложили нам свинью. Не можем мы проверить подпись большого файла! По той же самой причине — OutOfMemoryException. Но и эту проблему несложно решить, обратившись к магии MS Crypto API. Так как код поточной проверки подписи достаточно длинный, остановлюсь на основных моментах:

А так будет выглядеть код проверки подписи при вызове из C#:

Как оно устроено

Прежде, чем окунуться в необъятный мир математики рассмотреть, как именно устроена RSA, обратимся к тому, как работают

Асимметричные криптосистемы

Рассмотрим задачу сохранности содержимого посылки при передаче от отправителя к адресату. Вот картинка с многим полюбившимся Алисой и Бобом:

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

В схеме передачи посылки все объекты вполне материальны. Однако сообщения, которые мы хотим шифровать, являются ничем иным, как последовательностью бит, которую нельзя «закрыть» на физический замок. Таким образом возникают вопросы: что такое ключ и замок? Как Бобу создать ключи? Каким образом ключи связаны и как с их помощью зашифровать сообщение? Здесь нам поможет математика.

Теперь к математике


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

Асимметричные криптографические системы основаны на так называемых односторонних функциях с секретом. Под односторонней понимается такая функция я y=f(x), которая легко вычисляется при имеющемся x, но аргумент x при заданном значении функции вычислить сложно. Аналогично, односторонней функцией с секретом называется функция y=f(x, k), которая легко вычисляется при заданном x, причём при заданном секрете k аргумент x по заданному y восстановить просто, а при неизвестном k – сложно.

Подобным свойством обладает операция возведения числа в степень по модулю:

Здесь φ(n) – функция Эйлера числа n. Пока условимся, что это работает, далее это будет доказано более строго. Теперь нужно понять, что из это является ключами Боба, а что сообщением. В нашем распоряжении имеются числа c, m, n, e, d.

Давайте посмотрим на первое выражение. Здесь число c получено в результате возведения в степень по модулю числа m. Назовём это действие шифрованием. Тогда становится очевидно, что m выступает в роли открытого текста, а c – шифртекста. Результат c зависит от степени e, в которую мы возводим m, и от модуля n, по которому мы получаем результат шифрования. Эту пару чисел (e, n) мы будем называть открытым ключом. Им Алиса будет шифровать сообщение.

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

Что есть что разобрались, теперь перейдём к конкретике, а именно – генерации ключей Боба. Давайте выберем число n такое, что:

где p и q – некоторые разные простые числа. Для такого n функция Эйлера имеет вид:

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

Возвращаемся к генерации ключей. Выберем целое число e:

Для него вычислим число d:

Для отыскания числа, обратного по модулю, можно воспользоваться алгоритмом Евклида.

Мы завершили с этапом генерации ключей. Теперь Боб публикует свой открытый ключ (e, n), прячет закрытый d, а мы переходим к Алисе.

А теперь ответим на вопрос, почему m ≡ m′ . Ниже я приведу доказательство данного утверждения, но если оно (доказательство) вам не сильно интересно, то можете его пропустить и просто поверить, что это так.

ДоказательствоЗдесь нам понадобится теорема Эйлера:Также полезной будет китайская теорема об остатках:Теперь докажем, что m ≡ m′ :

Получаем подпись сообщения

Ещё раз напишем две ключевые формулы шифрования и расшифрования соответственно:

Теперь давайте предположим, что Боб хочет отправить Алисе открытку m от своего имени. У Боба в распоряжении уже имеются два ключа (e, n) и d, которые он сгенерировал по алгоритму, описанному ранее. Поскольку d является закрытым ключом, то можно им воспользоваться как уникальным идентификатором Боба. Давайте «зашифруем» m с помощью d:

Результат данной операции и есть подпись сообщения Боба. Заметим, что подпись напрямую зависит от подписываемого сообщения, а не только от того, что его подписывает Боб. Далее, Алиса получает сообщение m, подпись s и открытый ключ (e, n). По аналогии с расшифрованием, проверка подписи осуществляется возведением подписи s в степень открытой экспоненты e:

Если Алиса получила, что m ≡ m′, то подпись считается правильной.

Дочитавших до этого места хочу поздравить с получением первой цифровой подписи «на бумаге»!

Теорминимум


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

(На картинке изображён Лев Ландау, автор «теорминимума», серии экзаменов по теоретической физике)

Сформируем небольшой словарик терминов, которые нам пригодятся далее:

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

Криптоанализ алгоритмов с открытым ключом

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

Ещё одна форма атаки — вычисление закрытого ключа, зная открытый (рисунок ниже). Криптоаналитик знает алгоритм шифрования  , анализируя его, пытается найти  . Этот процесс упрощается, если криптоаналитик перехватил несколько криптотекстов с, посланных лицом A лицу B.

Большинство криптосистем с открытым ключом основано на проблеме факторизации больших чисел. К примеру, RSA использует в качестве открытого ключа n произведение двух больших простых чисел. Сложность взлома такого алгоритма состоит в трудности разложения числа n на простые множители. Но эту задачу решить реально. И с каждым годом процесс разложения становится все быстрее. Ниже приведены данные разложения на множители с помощью алгоритма «Квадратичное решето».

Также задачу разложения потенциально можно решить с помощью алгоритма Шора при использовании достаточно мощного квантового компьютера.

Использование ЭП предполагается для осуществления следующих важных направлений в электронной экономике:

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

Согласно Федеральному закону №63-ФЗ, квалифицированной цифровой подписью можно подписывать любые документы, для которых существует электронная форма, то есть почти все. На практике бизнес использует ее для нескольких сфер:

Еще есть КЭП (квалифицированная электронная подпись) — электронная подпись, которая соответствует всем признакам неквалифицированной электронной подписи и следующим дополнительным признакам:

1) ключ проверки электронной подписи указан в квалифицированном сертификате;

2) для создания и проверки электронной подписи используются средства электронной подписи, имеющие подтверждение соответствия требованиям, установленным в соответствии с настоящим Федеральным законом.

(в ред. Федерального закона от 30.12.2015 N 445-ФЗ)

Благодаря ней можно заполнять документы в ФНС онлайн.

В России юридически значимый сертификат электронной подписи выдаёт удостоверяющий центр. Правовые условия использования электронной цифровой подписи в электронных документах регламентирует Федеральный закон Российской Федерации от 6 апреля 2011 года № 63-ФЗ «Об электронной подписи».

После становления ЭП при использовании в электронном документообороте между кредитными организациями и кредитными бюро в 2005 году активно стала развиваться инфраструктура электронного документооборота между налоговыми органами и налогоплательщиками. Начал работать приказ Министерства по налогам и сборам РФ от 2 апреля 2002 года № БГ-3-32/169 «Порядок представления налоговой декларации в электронном виде по телекоммуникационным каналам связи». Он определяет общие принципы информационного обмена при представлении налоговой декларации в электронном виде по телекоммуникационным каналам связи.

В законе РФ от 10 января 2002 года № 1-ФЗ «Об электронной цифровой подписи» описаны условия использования ЭП, особенности её использования в сферах государственного управления и в корпоративной информационной системе.

Однако Федеральным законом от 02.07.2013 № 171-ФЗ внесены изменения в статью 19 Федерального закона от 06.04.11 № 63-ФЗ «Об электронной подписи». В соответствии с этим электронный документ, подписанный электронной подписью, сертификат ключа проверки которой выдан в период действия федерального закона № 1-ФЗ, признаётся подписанным квалифицированной электронной подписью. При этом использовать старый сертификат можно до 31 декабря 2013 года включительно. Это значит, что в указанный период документы могут подписываться электронной цифровой подписью, сертификат ключа проверки которой выдан до 1 июля 2013 года.

С 1 июля 2013 года Федеральный закон от 10 января 2002 года № 1-ФЗ утратил силу, на смену ему пришёл Федеральный закон от 6 апреля 2011 года № 63-ФЗ «Об электронной подписи». В результате было введено определение трех видов электронных подписей:

ЭП применяется в системе контроля над объёмом производства и оборота этилового спирта, алкогольной продукции и пива ЕГАИС.

С 01 июля 2021 года электронную подпись на первое лицо организации можно бесплатно получить в ФНС.

Манипуляции с электронными подписями в России

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

19 апреля 2007 года было принято Постановление «Об утверждении порядка представления отчетов в Пенсионный фонд Украины в электронной форме». А 10 апреля 2008 года — приказ № 233 ГНА Украины «О подаче электронной цифровой отчётности». В результате активной разъяснительной деятельности налоговых служб, в 2008 г. количество субъектов, подающих отчётность по НДС в электронном виде, возросло с 43 % до 71 %.

С 16 июля 2015 года начал действовать закон № 643-VIII «О внесении изменений в Налоговый кодекс Украины касательно усовершенствования администрирования налога на добавленную стоимость». 31 августа 2015 года зарегистрирован проект закона № 2544а «Об электронных доверительных услугах».

16 июня 2015 года заработал украинский сайт электронных государственных услуг iGov.org.ua. Здесь можно заказать справку о несудимости для предъявления в МРЭО, оформить заявку на получение субсидии, справки о доходах, а также заполнить документы на загранпаспорт.

Эстонская ID-карта старого образца (2007 год).

Эстонская ID-карта современного образца (2021 год).

Система электронных подписей широко используется в Эстонии, где введена программа ID-карт, которыми снабжены более 3/4 населения страны. При помощи электронной подписи в марте 2007 года были проведены выборы в местный парламент — Рийгикогу. При голосовании электронную подпись использовали 400 000 человек. Кроме того, при помощи электронной подписи можно отправить налоговую декларацию, таможенную декларацию, различные анкеты как в местные органы самоуправления, так и в государственные органы. В крупных городах при помощи ID-карты возможна покупка месячных автобусных билетов. Всё это осуществляется через центральный гражданский портал Eesti.ee. Эстонская ID-карта является обязательной для всех жителей с 15 лет, проживающих временно или постоянно на территории Эстонии. Это, в свою очередь, нарушает анонимность покупки проездных билетов.

Первый электронный резидент Эстонии, британский журналист Эдвард Лукас

Электронное резидентство (e-Residency) — программа, запущенная правительством Эстонии 1 декабря 2014 года, которая позволяет людям, не являющимся гражданами Эстонии, иметь доступ к таким услугам со стороны Эстонии, как формирование компании, банковские услуги, обработка платежей и оплата налогов. Программа даёт всем её участникам (так называемым e-resident) смарт-карты, которые они могут использовать в дальнейшем для подписания документов. Программа направлена на людей из не зависящих от местоположения сфер предпринимательства, например, разработчиков программного обеспечения и писателей.

Принцип работы электронной подписи

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

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

Разберём по шагам:


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

Криптография с несколькими открытыми ключами

Пусть есть 3 ключа  ,  ,  , распределенные так, как показано в таблице.

Тогда Алиса может зашифровать сообщение ключом  , а Эллен расшифровать ключами  ,  , Кэрол — зашифровать ключом  , а Дэйв расшифровать ключами  ,   Если Дэйв зашифрует сообщение ключом  , то сообщение сможет прочитать Эллен, если ключом  , то его сможет прочитать Франк, если же обоими ключами   и  , то сообщение прочитает Кэрол. По аналогии действуют и другие участники.
Таким образом, если используется одно подмножество ключей для шифрования, то для расшифрования требуются оставшиеся ключи множества. Такую схему можно использовать для n ключей.

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

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

Дискретное логарифмирование

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

Предположим, дано уравнение 4x = 13 (mod 15). Задача нахождения x и есть задача дискретного логарифмирования. Почему же она так сложна для вычисления? Попробуй решить это уравнение перебором! Компьютер, ясное дело, будет более успешен, но и задачи дискретного логарифмирования обычно далеко не так просты. Возьмем для примера схему Эль-Гамаля.

Генерация подписи


ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

ОТ ПРОСТЫХ ЧИСЕЛ ДО ЭЛЕКТРОННОЙ ПОДПИСИ КАК ЗАШИФРОВАТЬ ДАННЫЕ

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

Начало асимметричным шифрам было положено в работе «Новые направления в современной криптографии» Уитфилда Диффи и Мартина Хеллмана, опубликованной в 1976 году. Находясь под влиянием работы Ральфа Меркла о распространении открытого ключа, они предложили метод получения секретных ключей, используя открытый канал. Этот метод экспоненциального обмена ключей, который стал известен как обмен ключами Диффи — Хеллмана, был первым опубликованным практичным методом для установления разделения секретного ключа между заверенными пользователями канала. В 2002 году Хеллман предложил называть данный алгоритм «Диффи — Хеллмана — Меркле», признавая вклад Меркле в изобретение криптографии с открытым ключом. Эта же схема была разработана (англ. Malcolm J. Williamson) в 1970-х, но держалась в секрете до 1997 года. Метод Меркле по распространению открытого ключа был изобретён в 1974 и опубликован в 1978 году, его также называют загадкой Меркле.

В 1977 году учёными Рональдом Ривестом, Ади Шамиром и Леонардом Адлеманом из Массачусетского технологического института был разработан алгоритм шифрования, основанный на проблеме разложения на множители. Система была названа по первым буквам их фамилий (RSA — Rivest, Shamir, Adleman). Эта же система была изобретена в 1973 году (англ. ), работавшим в центре правительственной связи (GCHQ), но эта работа хранилась лишь во внутренних документах центра, поэтому о её существовании не было известно до 1977 года. R SA стал первым алгоритмом, пригодным и для шифрования, и для цифровой подписи.

Вообще, в основу известных асимметричных криптосистем кладётся одна из сложных математических проблем, которая позволяет строить односторонние функции и функции-лазейки. Например, криптосистемы Меркля — Хеллмана и Хора — Ривеста опираются на так называемую задачу об укладке рюкзака.

Шифрование

Зачем нужно шифрование, все уже знают. P KI нам дает полезную плюшку: мы можем зашифровать один документ так, что расшифровать его смогут несколько получателей. Это очень удобно. Для этого нам нужно иметь сертификаты получателей.

Алгоритмы шифрования

Проблема в том, что ЭП основана на алгоритмах асимметричного шифрования, а их много: разложение на простые множители, дискретное логарифмирование, эллиптические кривые и множество других. Ключ из одного алгоритма не подойдёт для использования в другом, поэтому в России договорились использовать стандарт шифрования ГОСТ Р 34.10-2012, основанный на эллиптических кривых. Все государственные органы работают только с таким алгоритмом и не принимают другие ЭП.

Это значит, что нам нужен специальный софт, в котором уже есть этот алгоритм. Чаще всего используют КриптоПРО, реже — ViPNet CSP. С помощью этих программ можно подписать документы и проверить сертификаты на подлинность.

ЭЦП:  СКЗИ КриптоПро CSP 4 купить в Челябинске — самая выгодная цена на официальном сайте
Оцените статью
ЭЦП64
Добавить комментарий