Немного теории.
В 2011 году принят федеральный закон
"Об электронной подписи", ознаменовавший собою приход "высокой криптографии" в бытовую жизнь россиян и шаг к безбумажному документообороту.
Одним из этапов стал федеральный проект "Универсальная Электронная Карта", на котором причастные лица срубили нехилые бюджетные средства, до ума его так и не довели, и успешно похерили.
Но это чиновные игры, здесь же я хочу поделиться своими знаниями и навыками работы с УКЭП* (ЭЦП, КЭП, УЭП, как только ни называют), с которой я дружу с 2013 года, и которая иногда экономит мне немало времени, помогает удалённо общаться с госорганами, бывает полезна в юридических моментах.
Здесь постараюсь разъяснить всё простым человеческим языком, поскольку инструмент достаточно полезный, но малопонятный для людей, далёких от высшей математики и криптографии, а также, часто, трудноосвояемый.
Итак, что же такое электронная подпись вообще? Как это работает?
Всем нам хорошо понятно, что такое простая подпись человека под документом. Это его удостоверение некоего факта - то ли ознакомления с этим документом, то ли его авторства, то ли согласия.
Однако обычная подпись наряду с преимуществами в виде "они всегда со мной", имеет и существенные недостатки:
1) Её легко подделать;
2) В цифровой век ею сложно удостоверять электронные документы (word, pdf, не говоря уже про аудио или видео).
Для разрешения этого вопроса в оборот введена так называемая "электронная подпись" - а именно, некоторая последовательность знаков, которая удостоверяет, что данный электронный документ подписан вами (и может исполнять ряд других функций).
Для того, чтобы понять, как это работает, необходимо разъяснить понятие "асимметричной криптографии", или "шифрования с открытым ключом".
В детстве многие из нас играли в "шпионов" и зашифровывали свои сообщения при помощи некоего "ключа-пароля".
Простой пример.
Нам необходимо зашифровать секретный номер банковской ячейки: "
567123" для передачи резиденту. С резидентом мы заранее условились, что ключом-паролем у нас является - "32", а алгоритмом шифрования - прибавить первую цифру ключа и умножить на вторую. Для расшифрования, соответственно, необходимо провести обратную операцию, если мы знаем ключ-пароль и алгоритм.
Итак, шифруем:
5+3*2=16
6+3*2=18
7+3*2=20
1+3*2=8
2+3*2=10
3+3*2=12
Резиденту по любому открытому каналу мы передаём последовательность
16 18 20 8 10 12
Резидент, получив эту последовательность, проводит расшифровку, разделив каждую цифру на 2 и отняв 3, получает исходную информацию.
Цифрами могут быть закодированы буквы, речь, видео и вообще всё, что угодно.
Тот, кому не известен ключ и алгоритм, даже получив эту последовательность, не сможет восстановить из неё исходную информацию.
Такое шифрование называется "симметричным", поскольку для шифрования и расшифровки используется один и тот же секретный ключ-пароль.
То есть, алгоритм такой: как зашифровали, так и расшифровываем.
symmetric_encryption_graphic_ru-20219-f67d82.png
Однако у такого способа шифрования есть существенные недостатки. Так, в случае утраты секретности ключа-пароля и алгоритма (компроментации ключа), посторонние лица легко могут расшифровать такое сообщение.
А для того, чтобы вновь обменяться секретными ключами-паролями, нам с резидентам нужно иметь защищённый канал связи, который не всегда доступен, и также может быть скомпроментирован (подслушан, подсмотрен, перехвачен в пути).
Кроме того, при наличии достаточного количества материалов для анализа (шифровок) математическими способами такие алгоитмы и ключи достаточно легко взламываются.
В нашем примере математик сразу обратит внимание на то, что все цифы исключительно чётные, поэтому можно предположить, что в ключе и алгоритме присутствует умножение на чётную цифру.
В практике спецслужб, разумеется, применялись гораздо более сложные пароли и алгоритмы с "плавающими кодами", но родовые болячки симметричного шифрования продолжают оставаться. К примеру, известный факт: англичанам удалось захватить шифровальную машину немцев "Энигма" и, зная алгоритм, расшифровать их коды и прослушивать в дальнейшем все переговоры Кригсмарине.

На фото немцы работают с шифровальной машиной "Энигма".
Для ухода от этих проблем криптографы придумали
асимметричное шифрование - это когда для зашифровывания информации используется один,
"открытый ключ", а для расшифровки другой,
"закрытый ключ".
Открытый ключ может быть известен всем - с его помощью можно зашифровать любую информацию, но расшифровать её невозможно!
Закрытый ключ известен только адресату этой информации и должен храниться им в тайне.
Примеры асимметричных шифров - RSA, DSA, ГОСТ-Р34.11-2012 и другие.
Как осуществляются преобразования на практике, я показывать не буду, ибо это чистая высшая математика.
Для тех, кому интересно, алгоритм RSA под спойлером:
asymmetric_encryption_graphic_ru-20219-67c3d6.png
Для нас важно просто понимать принцип работы пары ключей в асимметричных криптографических алгоритмах.
А именно.
Имеем, к примеру, документ word, который необходимо подписать.
"Натравливаем" на этот документ программу (так называемый
криптопровайдер, которая с использованием открытого ключа нашей электронной подписи производит математические преобразования каждого бита (минимальной единицы информации) обрабатываемого документа, а итоговый результат по определённому математическому алгоритму приводит к определённой стандартами подписи длине - ну, к примеру, в 1 килобайт, что является так называемой "контрольной суммой" всех вычислений.
В результате мы получаем файл, обычно с расширением *.sig, который являет собою некоторую последовательность символов определённого размера (контрольную сумму), и сопутствующую служебную информацию.
Подпись бывает "отсоединённая", то есть, отдельный файл подписи и отдельно сам подписанный файл, и "присоединённая", когда в файле *.sig упакован как сам первоначальный файл, так и его подпись, либо же напротив, к примеру, внутри файла *.pdf содержится его же электронная подпись.
Проверка достоверности (валидности) электронной подписи документа (или любой другой информации) осуществляется при помощи программ, использующих открытые ключи центра сертификации, который выдал вам электронную подпись и удостоверил её действительную принадлежность именно вам, и никому другому.
В том случае, если после подписания файла в нём будет изменён хотя бы один байт, то при проверке электронной подписи этого файла контрольные суммы не совпадут с суммой, записанной в электронную подпись, и станет понятно, что это не тот файл, который был подписан владельцем электронной подписи.
Если же контрольные суммы совпадают, то файл (документ, любая другая информация) считается достоверным и неизменным с момента подписания.
На принципах асимметричного шифрования работает сегодня огромное количество сервисов, которыми все мы пользуемся, даже не задумываясь об этом. Это и электронная подпись, о которой мы здесь ведём речь, и протокол интернет http
s (s указывает на защищённость, secure), и банковские карты, платежи пэйпасс, и многое другое.
Система электронной сертификации.
Вооружившись пониманием принципа работы асимметричной криптографии, давайте разберёмся, что такое электронная сертификация.
Так называемый "Корневой удостоверяющий центр" объявляет себя владельцем и гарантом
корневого сертификата, который представляет из себя, по сути, пару ключей - открытый, который свободно распространяется в составе этого сертификата, и закрытый - который удостоверяющий центр бережёт как зеницу ока.
Далее, если я хочу удостоверить какие-либо данные (скажем, документ word), я беру этот сертификат и открытым ключом зашифровываю свой документ и формирую из него контрольную сумму - электронную подпись документа.
Человек, который захочет убедиться в том, что документ не изменялся после подписания, при помощи того же сертификата и программы-криптопровайдера сравнивает предоставленную ему электронную подпись документа и заново вычесленную контрольную сумму, и при их совпадении убеждается в целостности данных.
Однако же таким же образом можно подписывать не только документы, но и любые другие данные. В частности, корневые сертификаты удостоверяющих центров используются для подписания сертификатов нижестоящих по рангу удостоверяющих центров - так называемых промежуточных. А эти промежуточные центры своими сертификатами (по сути - парой ключей) могут подписывать как сертификаты ещё более нижестоящих удостоверяющих центров, так и сертификаты конечных пользователей, то есть, те самые "электронные подписи".
Таким образом создаются цепочки сертификации от корневого удостоверяющего центра до конечного пользователя.
Например:
Итак, в целях удостоверения правильности, надёжности, достоверности каких-либо цифровых данных, документов, информации, некая организация (или любое частное лицо, неважно), объявляет себя корневым удостоверяющим центром и выпускает корневой сертификат, который является самоподписанным, то есть, эта организация сама выпустила его для себя и гарантирует его достоверность и надёжность своим авторитетом.
Далее промежуточные центры получая подписанные им сертификаты как бы транслируют гарантии этого корневого центра далее - вплоть до коечного пользователя. Цепочка сертификации обязательно проверяется в сертификате конечного пользователя, а надёжность его электронной подписи, подтверждаемой этим сертификатом, по существу гарантируется корневым удостоверяющим центром. В случае, если цепочку к доверенному центру выстроить или проверить по какой-либо причине не представляется возможным, то сертификат конечного пользователя не может быть признан доверенным, а документ, подписанный с использованием такого сертификата - надёжно удостоверенным.
В мире существует большое количество корневых удостоверяющих центров (VeriSign, DigiCert и т.п...), которые представляют из себя как коммерческие организации, так и государственные органы, которые под свой авторитет выпустили самоподписанные корневые сертификаты и далее создали разветвлённые сети доверенных удостоверяющих центров, которые выдают сертификаты на электронные подписи конечным пользователям.
В России государство обязало Минкомсвязь выдавать полномочия и вести реестр уполномоченных государством удостоверяющих центров, таких, как "Головной удостоверяющий центр", "Минкомсвязь" и т.п.
И хотя любой человек может выпустить самоподписанный сертификат и создать цепочку доверенных сертификатов, здесь мы говорим об электронной подписи в соответствии с федеральным законом, которая первоисточником, т.е. корневым УЦ должна иметь организацию, уполномоченную на то Минкомсвязью.
Реестр Минкомсвязи источник 1
Реестр Минкомсвязи источник 2
Этот же механизм используется не только для цифровых подписей, но и, скажем, для протоколов секретной передачи данных в интернет - https.
Работает это таким образом - на сторон клиента, в браузере, скажем, Chrome, при передаче данных по защищённому протоколу, происходит шифрование данных открытым ключом предоставленного сервером сертификата. А на стороне сервера происходит его расшифровка закрытым ключом. Таким образом перехват информации по пути злоумышленниками безсмысленен - не имея закрытого ключа, они не смогут расшифровать эту информацию.
Сертификаты представляют из себя обычно файл, имеющий расширение *.crt, или *.cer и некоторые другие (зависит от стандарта).
Устанавливая такой сертификат на свой компьютер, вы можете либо вручную указать, куда его устанавливать, либо доверить системе самой определить его "ранг".
Что будет, если вы, или злоумышленник, или вирус, установит к вам на компьютер "левый" сертификат?
Компьютер будет считать все защищённые соединения, создаваемые с использованием такого сертификата, все данные, подписанные им, - доверенными. А злоумышленник, соответственно, может получить возможность шарится по вашей конфиденциальной информации, воровать ваши коммерческие и прочие тайны.
Если "левый" сертификат будет установлен в раздел "корневых доверенных сертификатов", то не только он сам, но и все другие сертификаты, подписанные им, будут считаться доверенными.
Поэтому необходимо соблюдать осторожность при установке в систему сертификатов, получать их только из проверенных надёжных источников.
Далi буде...
____________________
*Усиленная Квалифицированная Электронная Подпись.