Криптография в цифровых технологиях

Что такое электронная подпись

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

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

Введение

Внедрение электронной подписи (без разделения на используемые криптоалгоритмы и критерий «квалифицированности», см. закон

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

Под катом описаны интерфейсы для работы с электронной подписью, а также распространенные форматы электронной подписи.

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

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

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

Для выдачи, проверки действительности, отзыва и управления сертификатами необходима инфраструктура открытых ключей (Public Key Infrastructure). Вопрос сопоставления открытого ключа и его владельца – один из самых важных и сложных при работе с асимметричной криптографией, так как открытый ключ – это никак не идентифицируемый набор публичной информации, которая служит для проверки электронной подписи.

2020: ученые научились шифровать данные с помощью кристаллов

13 февраля 2020 года стало известно, что ученые из Университета Глазго (Великобритания) научились использовать кристаллы как генератор случайных чисел для шифрования.

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

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

Как сообщил профессор химии Ли Кронин (Lee Cronin), они разработали простого робота, который следил через web-камеру за процессами кристаллизации и преобразовывал разные обнаруженные реакции в последовательность единиц и нулей. Исследователи рассмотрели три различные химические реакции и сравнили их закодированные строки с одной, созданной с помощью генератора псевдослучайных чисел общего назначения Mersenne Twister.

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

2021: квантовый компьютер выявил уязвимости в aes шифровании

8 февраля 2021 года стало известно о том что обнаружение проблем потенциально может привести к опасным последствиям для таких компаний, как Google, Microsoft и IBM.

Специалисты швейцарскойИТ-компании Terra Quantum AG с помощью квантового компьютера выявили уязвимости в криптографическомалгоритме AES. Используя метод, известный как квантовый отжиг, компания доказала, что даже самые сильные версии AES могут быть расшифрованы квантовыми компьютерами в течение нескольких лет.

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

По словам экспертов, проблемы были обнаружены в симметричном алгоритме блочного шифрования Advanced Encryption Standard (AES). Как отметил директор Terra Quantum AG Маркус Пфлич (Markus Pflitsch), им удалось с помощью квантового компьютера не только зафиксировать, но также доказать небезопасность алгоритма шифрования.

AES был принят в качестве стандарта шифрования правительством США. В июне 2003 года Агентство национальной безопасности США постановило, что шифр AES является достаточно надежным, чтобы использовать его для защиты сведений, составляющих государственную тайну[1].

Microsoft crypto api 2.0

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

С целью унификации доступа к криптографическим функциям компания Microsoft разработала проприетарный API: Microsoft Crypto API. Широкое распространение приобрела версия Crypto API 2.0. Парадигма Microsoft Crypto API базируется на использовании так называемых криптопровайдеров, или, по-русски, поставщиков криптографии.

Спецификация Crypto API описывает набор функций, которые должна предоставлять библиотека криптопровайдера операционной системе, способы интеграции с ней и спецификации вызовов. Таким образом, производитель СКЗИ, выполняющий правила Crypto API, имеет возможность интеграции своего решения в операционную систему Microsoft Windows, а прикладное программное обеспечение получает доступ криптографическим функциям посредством унифицированного интерфейса.

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

Но расплатой за удобство становится платформозависимость и необходимость тесной интеграции решения в операционную систему.

В Windows Vista Microsoft представила новую версию криптографического программного интерфейса – Microsoft CNG (Cryptography API: Next Generation). Данный интерфейс базируется уже не на поставщиках криптографии, а на поставщиках алгоритмов и поставщиках хранилищ ключевой информации.

Pkcs#11

PKCS#11 (Public-Key Cryptography Standard #11) – платформонезависимый программный интерфейс для работы с аппаратно реализованными СКЗИ: смарт-карты, HSM’ы, криптографические токены. Иногда PKCS#11 используется для доступа к программно реализованным криптографическим библиотекам.

PKCS#11 представляет собой довольно обширный документ, опубликованный RSA Laboratories, который описывает набор функций, механизмов, алгоритмов и их параметров для работы с криптографическими устройствами или библиотеками. В данном документе четко прописаны правила, в соответствии с которым будет работать прикладное программное обеспечение при вызове криптографических функций.

Данный стандарт поддерживается во многих open source-проектах, использующих криптографию. Для примера, Mozilla Firefox позволяет хранить сертификаты и закрытые ключи для аутентификации через SSL/TLS на токенах, работая с ними по PKCS#11.

Если прикладное программное обеспечение «умеет» работать с PKCS#11, то производителю СКЗИ необходимо реализовать программную библиотеку, которая наружу будет выставлять интерфейсы, описанные в стандарте, а внутри реализовывать необходимую СКЗИ логику: работа непосредственно с криптографическим устройством или реализация необходимых криптоалгоритмов программно.

В этом случае прикладное программное обеспечение должно «подцепить» необходимую библиотеку и выполнять необходимые действия в соответствии с рекомендациями стандарта. Это обеспечивает заменяемость различных устройств и их библиотек для прикладного программного обеспечения и прозрачное использование СКЗИ в различных системах.

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

Pkcs#7

PKCS#7 (Public-Key Cryptography Standard #7), или CMS (Cryptographic Message Syntax) – стандарт, публикуемый и поддерживаемый все той же RSA Laboratories, описываемый синтаксис криптографических сообщений.

PKCS#7 также публикуется в качестве RFC с номером 2315.

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

С этой целью в PKCS#7 размещается информация об исходном сообщении (опционально), алгоритмах хеширования и подписи, параметрах криптоалгоритмов, времени подписи, сертификат ключа электронной подписи, цепочка сертификации и т. д.

Большинство атрибутов PKCS#7 являются опциональными, но их обязательность может определяться прикладной системой.

Читайте также:  Доверенность на использование ЭЦП руководителя

Отдельно следует отметить, что PKCS#7 позволяет ставить несколько подписей под одним документом, сохраняя всю необходимую информацию в сообщении.

Формирование и проверка PKCS#7 реализованы в криптографических «надстройках» в Microsoft Crypto API, речь о которых шла выше. Но сам формат довольно хорошо специализирован и его поддержка может быть реализована нативно.

Xml-dsig

W3C разработала и опубликовала рекомендации по составлению подписанных сообщений в формате XML.

Фактически XML-DSig решает те же вопросы, что и PKCS#7. Основное отличие в том, что в PKCS#7 данные хранятся в структурах, сформированных в соответствии с разметкой ANS.1 (фактически, бинарные данные), а в XML-DSig данные хранятся в текстовом формате в соответствии с правилами документа «XML Signature Syntax and Processing».

Область применения XML-DSig – веб-приложения и веб-сервисы.

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

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

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

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

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

Виды электронно-цифровой подписи

Существует три вида электронной цифровой подписи:

  • простая электронно-цифровая подпись;

  • усиленная неквалифицированная электронно-цифровая подпись;

  • усиленная квалифицированная электронно-цифровая подпись.

Встраивание электронной подписи в прикладные системы


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

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

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

В «западном» мире широко используется сертификация решений на соответствие Common Criteria, в России процесс сертификации средств криптографической защиты проводит ФСБ России.

Дополнительно, средства криптографической защиты информации (СКЗИ, этот термин широко используется в РФ) могут иметь самое разное представление: от программных библиотек до высокопроизводительных специализированных железок (Hardware Security Module, HSM).

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

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

Где купить эцп

Сегодня сделать покупку ЭЦП
можно быстро и легко. Для этого нужно отправить онлайн заявку в один из аккредитованных удостоверяющих центров и предоставить необходимые документы. В России действует более трех сотен таких организаций, полный список представлен на сайте Министерства цифрового развития, связи и массовых коммуникаций РФ.

Генерирование открытого и секретного ключей

Итак, вы решили самостоятельно изготовить усиленную неквалифицированную электронную подпись и научиться подписывать ею свои документы. Начать необходимо, конечно, с генерирования пары ключей, открытого (public key) и секретного (private key).

Существует множество стандартов и алгоритмов асимметричного шифрования. Одной из библиотек, реализующих эти алгоритмы, является PGP (Pretty Good Privacy). Она была выпущена в 1991 году под проприетарной лицензией, поэтому имеются полностью совместимые с ней свободные библиотеки (например, OpenPGP).

Одной из таких свободных библиотек является выпущенная в 1999 году GNU Privacy Guard (GnuPG, или GPG). Утилита GPG традиционно входит в состав почти всех дистрибутивов Линукса; для работы из-под Windows необходимо установить, например, gpg4win. Ниже будет описана работа из-под Линукса.

Сначала сгенерируем собственно ключи, подав (из-под обычного юзера, не из-под root’а) команду

gpg --full-generate-key

В процессе генерирования вам будет предложено ответить на ряд вопросов:

  • тип ключей можно оставить «RSA и RSA (по умолчанию)»;
  • длину ключа можно оставить по умолчанию, но вполне достаточно и 2048 бит;
  • в качестве срока действия ключа для личного использования можно выбрать «не ограничен»;
  • в качестве идентификатора пользователя можно указать свои фамилию, имя и отчество, например, Иван Иванович Иванов; адрес электронной почты можно не указывать;
  • в качестве примечания можно указать город, либо иную дополнительную информацию.

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

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

gpg --export -a "Иван Иванович Иванов" > public.key
gpg --export-secret-key -a "Иван Иванович Иванов" > private.key

Понятно, что private.key вы должны хранить в секрете, а вот public.key вы можете открыто публиковать и рассылать всем желающим.

Интерфейсы для доступа к скзи

На сегодняшний день широкое распространение получили один промышленный стандарт работы с СКЗИ и один (фактически два) проприетарный интерфейс всеми известной компании Microsoft.

Источники

  1. Handbook of Applied Cryptography by A. Menezes, P. van Oorschot and S. Vanstone

  2. Криптографические методы защиты информации: учеб. пособие / С. М. Владимиров, Э. М. Габидулин, А. И. Колыбельников, А. С. Кшевецкий; под ред. А. В. Уривского. – М.: МФТИ, 2021

  3. Маховенко Е. Б. Теоретико-числовые методы в криптографии — М.: Гелиос АРВ, 2006.

  4. NIST Special Publication 800-57 Part 3 Revision 1

  5. Молдовян Н.А. Теоретический минимум и алгоритмы цифровой подписи. – СПб.: БХВ-Петербург, 2021. – Учебное пособие

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

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

Как устроена электронная подпись

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

  1. Открытый ключ, он же сертификат.
  2. Закрытый ключ — криптографическая часть.

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

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

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

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

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

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

Литература

  • А. Ю. Винокуров. ГОСТ не прост..,а очень прост, М., Монитор.-1995.-N1.
  • А. Ю. Винокуров. Еще раз про ГОСТ., М., Монитор.-1995.-N5.
  • А. Ю. Винокуров. Алгоритм шифрования ГОСТ 28147-89, его использование и реализация для компьютеров платформы Intel x86., Рукопись, 1997.
  • А. Ю. Винокуров. Как устроен блочный шифр?, Рукопись, 1995.
  • М. Э. Смид, Д. К. Бранстед. Стандарт шифрования данных: прошлое и будущее.

/пер. с англ./ М., Мир, ТИИЭР.-1988.-т.76.-N5.

  • Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования ГОСТ 28147-89, М., Госстандарт, 1989.
  • Б. В. Березин, П. В. Дорошкевич. Цифровая подпись на основе традиционной криптографии//Защита информации, вып.2.,М.: МП «Ирбис-II»,1992.
  • W.Diffie,M.E.Hellman. New Directions in cryptography// IEEE Trans.
Читайте также:  Как получить и установить ЭЦП для Сбербанк АСТ? — АСТ Сбербанк

Inform. Theory, IT-22, vol 6 (Nov. 1976), pp. 644—654.

  • У.Диффи. Первые десять лет криптографии с открытым ключом. /пер. с англ./ М., Мир, ТИИЭР.-1988.-т.76.-N5.
  • Водолазкий В., «Стандарт шифрования ДЕС», Монитор 03-04 1992 г. С.
  • Воробьев, «Защита информации в персональных ЗВМ», изд. Мир, 1993 г.
  • Ковалевский В., «Криптографические методы», Компьютер Пресс 05.93 г.
  • Мафтик С., «Механизмы защиты в сетях ЭВМ», изд. Мир, 1993 г.

Подписание документа

Нет ничего проще, чем создать отсоединенную ЭЦП в текстовом (ASCII) формате:

gpg -ba имя_подписываемого_файла

Файл с подписью будет создан в той же папке, где находится подписываемый файл и будет иметь расширение asc. Если, например, вы подписали файл privet.doc, то файл подписи будет иметь имя privet.doc.asc. Можно, следуя традиции, переименовать его в privet.sig, хотя это непринципиально.

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

#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import *
from tkFileDialog import *
import os, sys, tkMessageBox

def die(event):
    sys.exit(0)

root = Tk()
w = root.winfo_screenwidth()//2 - 400
h = root.winfo_screenheight()//2 - 300
root.geometry("800x600 {} {}".format(w, h))
root.title("Подписать документ")

flName = askopenfilename(title="Что подписываем?")

if flName:
    os.system("gpg -ba "   flName)
    button = Button(text="ЭЦП создана")
    button.bind("<Button-1>", die)
    button.pack(expand=YES, anchor=CENTER)
else:
    die()

root.mainloop()

Подпись документов

Рассмотренный алгоритм получения подписи изящен и прост в осознании, однако операция возведения в степень несколько “мешается”. Наша текущая задача – подписать объёмный документ. Чтобы сэкономить время, мы не будем подписывать содержимое документа, а прибегнем к помощи хэш-функций (если вы не знаете, что такое хэш-функция, рекомендую почитать википедию).

На картинках наглядно показано, в какой момент мы используем хэширование. Создание подписи:

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

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

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

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

c ≡ m^e mod n, \ m ≡ c^d mod n.

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

s ≡ m^d mod n.

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

m′ ≡ s^e mod n.

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

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

Предпосылки секретности квантового канала связи

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

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

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

Преимущества использования электронно-цифровой подписи

Использование электронно-цифровой подписи позволяет:

  • значительно сократить время, затрачиваемое на оформление сделки и обмен документацией;

  • усовершенствовать и удешевить процедуру подготовки, доставки, учета и хранения документов;

  • гарантировать достоверность документации;

  • минимизировать риск финансовых потерь за счет повышения конфиденциальности информационного обмена;

  • построить корпоративную систему обмена документами.

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

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

Подписание документа производится в несколько этапов:

  1. Хеш документа шифруется с помощью закрытого ключа.
  2. Полученная подпись добавляется к документу.
  3. К документу прикрепляется сертификат проверки.

Принципы применения

Есть несколько основополагающих принципов применения криптографических алгоритмов

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

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

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

Вряд ли, конечно, вам самому придется проверять достоверность собственной электронной подписи, но если вдруг (на всякий случай) вам захочется это сделать, то нет ничего проще:

gpg --verify имя_файла_подписи имя_файла_документа

В реальности гораздо полезнее опубликовать где-нибудь в открытом доступе (например, на вашем персональном сайте или на сайте вашей организации):

  • открытый ключ public.key для того, чтобы все желающие могли проверить (верифицировать) вашу подпись с использованием, например, той же GPG;
  • веб-интерфейс для проверки вашей подписи всеми желающими, не являющимися специалистами.

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

К счастью для нас, имеется свободная библиотека OpenPGP.js; скачиваем самый маленький по размеру (на момент написания данного туториала — 506 КБ) файл dist/lightweight/openpgp.min.js и пишем несложную html-страничку (для упрощения восприятия я удалил все описания стилей и очевидные meta-тэги):

Программы для работы и алгоритмы шифрования

Чтобы шифровать и подписывать документы, недостаточно только иметь сертификат и закрытый ключ, для работы нужно устанавливать специальные программы. С помощью этих программ, которые работают по определённому стандарту шифрования (в России — ГОСТ Р 34.10-2021), обеспечивается связь закрытого и открытого ключа с документами.

Самой популярной программой-криптопровайдером в России является «КриптоПро CSP». С её помощью можно подписывать и шифровать документы, проверять сертификаты на подлинность, контролировать целостность соответствующего программного обеспечения.

Проприетарные интерфейсы

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

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

Простая электронно-цифровая подпись


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

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

Реализация эцп

Электронно-цифровая подпись (ЭЦП) используется физическими и юридическими лицами в качестве аналога собственноручной подписи для придания электронному документу юридической силы, равной юридической силе документа на бумажном носителе, подписанного собственноручной подписью правомочного лица и скрепленного печатью. Последовательность действий по созданию ЭЦП:

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

Сертификаты

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

Читайте также:  Как подать декларацию 3-ндфл через личный кабинет налогоплательщика | НДФЛ Сервис

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

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

См. также

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

Сырая подпись


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

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

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

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

Теорминимум

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

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

  • Открытый текст – данные, подлежащие шифрованию или полученные в результате расшифрования

  • Шифртекст – данные, полученные в результате применения шифра к открытому тексту

  • Шифр – совокупность обратимых преобразований, зависящая от некоторого параметра (ключа)

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

  • Факторизация – процесс разложения числа на простые множители.

  • НОД – наибольший общий делитель.

  • Числа a и b называются взаимно простыми, если НОД этих чисел равен 1.

  • Функция Эйлера φ(n) – функция, равная количеству натуральных чисел, меньших n и взаимно простых с ним.

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

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

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

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

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

cequiv f(m)equiv m^e mod n, \ m equiv f^{—1}(c) equiv c^d mod n, \ d equiv e^{-1} mod varphi (n).

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

Давайте посмотрим на первое выражение. Здесь число c получено в результате возведения в степень по модулю числа m. Назовём это действие шифрованием. Тогда становится очевидно, что m выступает в роли открытого текста, а c – шифртекста.

Результат c зависит от степени e, в которую мы возводим m, и от модуля n, по которому мы получаем результат шифрования. Эту пару чисел (e, n) мы будем называть открытым ключом. Им Алиса будет шифровать сообщение.

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

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

n = pq,

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

varphi(n) = (p — 1)(q — 1).

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

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

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

e ∈ [3, varphi(n)—1], \ НОД(e,varphi(n)) = 1.

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

d ≡ e^{−1} mod varphi(n).

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

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

Усиленная неквалифицированная электронно-цифровая подпись

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

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

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

Форматы электронной подписи

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

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

Цели криптографии

Криптография рассматривается как средство защиты конфиденциальных данных от:

  • Несанкционированного прочтения
  • Преднамеренного нарушения целостности либо ничтожения
  • Нежелательного копирования
  • Фальсификации

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

Шифруем, дешифруем…

Возьмём в качестве сообщения число m (m ∈ [1, n − 1]). Чтобы Алисе зашифровать его, необходимо возвести его в степень e по модулю n. Эти числа идут вместе с открытым ключом Боба:

c ≡ m^e mod n.

Здесь за с обозначен шифртекст, который Алиса будет должна передать Бобу. Отметим также, что c ∈ [1, n − 1], как и m. Расшифруем шифртекст, возведя его в степень закрытого ключа Боба d:

m′ ≡ c^d mod n.

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

Доказательство

Электронная цифровая подпись (эцп)

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

Заключение

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector