- Электронная подпись: надёжность и риски
- Немного теории
- Применение хэш-функций
- Что же может пойти не так?
- Подключаем человеческий фактор, бюрократию и частные организации
- Заключение
- Электронная цифровая подпись для чайников: с чем ее есть, и как не подавиться. Часть 1
- Применение хеш-функции в создании электронной цифровой подписи
- Библиографическое описание:
- Похожие статьи
- Исследование криптосистем с открытым ключом на основе.
- Создание ключей, шифрование и дешифрование сообщений.
- Пост-квантовый алгоритм электронно—цифровой подписи на.
- Алгоритмы шифрования данных | Статья в журнале.
- Реализация алгоритма шифрования RSA на языке.
- Анализ алгоритма RSA. Некоторые распространённые.
- Способ хранения закрытого ключа криптосистемы цифровой.
- Шифрование и криптоанализ | Статья в журнале «Молодой. »
- Теория чисел в криптографии | Статья в журнале.
Электронная подпись: надёжность и риски
Сначала вкратце опишу то, как работает электронная подпись (ЭП) и в чём заключается её надёжность. Электронная подпись – подтверждение того, что какой-либо электронный документ был создан и подписан определённым физическим или юридическим лицом. При этом она должна обладать следующими свойствами:
Неотказуемость – подписавшее документ лицо не может утверждать, что это сделал кто-то другой;
Целостность – внесение исправлений в уже подписанный документ должно нарушать подпись;
Авторство – электронная подпись должна быть жёстко закреплена за определённым физическим или юридическим лицом.
Эти базовые принципы и делают ЭП эффективной и безопасной в использовании.
Немного теории
В качестве алгоритмической базы для электронной подписи обычно применяют методы шифрования с открытым ключом. Подробнее о самих алгоритмах можно почитать на википедии или на хабре. Их суть сводится к тому, что для желающего обзавестись собственной электронной подписью специальным образом выбирается пара ключей – открытый и закрытый. Первый, как следует из названия, доступен всем, а второй владельцу подписи лучше держать в секрете. Естественно, ключи выбираются так, чтобы закрытый ключ нельзя было легко угадать по открытому. После чего закрытый ключ используется для шифрования документа (иными словами, его подписания), а открытый – для расшифровки (то есть для проверки подписи). При этом алгоритмы выбора ключей гарантируют, что открытым ключом можно расшифровать только те документы, которые шифровались соответсвующим ему закрытым ключом. Таким образом, если мы знаем открытый ключ владельца ЭП и смогли расшифровать им полученный от него документ, то он был точно подписан тем самым владельцем. Так работают асимметричные схемы ЭП.
Применение хэш-функций
В связи с тем, что шифрование закрытым ключом документа большого размера – довольно сложный и долгий процесс, обычно к тексту документа сначала применяют более быстрое и простое хэш-шифрование. Полученный сравнительно короткий результат шифруют закрытым ключом, получая саму цифровую подпись. Вместе с ней открытый текст документа передаётся получателю.
Подробная схема с применением хэш-функции
Тот должен всего лишь хэшировать текст документа той же хэш-функцией, после чего расшифровать открытым ключом подпись и сравнить оба результата. Если они совпадают – то документ мог быть подписан только отправителем (вот она и неотказуемость) и не был испорчен, дополнен или подменён в процессе пересылки (а это целостность). А дляпоследнего свойства – авторства – необходимо, чтобы пара ключей подписавшего была закреплена за ним. На практике для этого используются так называемые удостоверяющие центры, которые по запросу выдают сертификат на пару ключей, а также гарантируют единственность обладания ими.
Что же может пойти не так?
Наверное, внимательные читатели уже увидели, что описанная выше схема представляет собой сферическую ЭП в вакууме.
И действительно, в теории взломать или подделать такую подпись можно несколькими способами. Самый лакомый способ для взломщика-криптоаналитика – это по открытому ключу угадать закрытый. Тогда злоумышленнику сразу открываются сказочные перспективы – ведь он сможет действовать от лица истинного владельца подписи и даже управлять его имуществом. Однако обычно такой взлом не возможен ввиду того, что подбор закрытого ключа по открытому – вычислительно нерешаемая задача. При генерации пары ключей широко применяются факторизация или дискретное логарифмирование, что оставляет взломщику мало надежды. Конечно можно попробовать подобрать закрытый ключ полным перебором, но при достаточно большом размере ключей такая возможность отпадает.
Ещё одно уязвимое место – это хэш-функция. Здесь возможны сразу несколько направлений атак. Если алгоритм хэширования не достаточно надёжный, то взломщик может подобрать какой-нибудь свой документ, применение хэш-функции к которому даст тот же результат, что и её применение к исходному документу. Или же злоумышленник может сгенерировать два документа, дающие одинаковый хэш, после чего при необходимости сможет подменить один документ другим. Названные ситуации считаются коллизиями хэш-функций. Однако жизнь взломщика хэш-функции всё же не так легка: мало того, что подставной документ должен представлять из себя читаемый текст, а не быть бессмысленным набором бит, так еще и придумано достаточно криптостойких алгоритмов хэширования. Для примера, надёжными на момент написания статьи являются SHA-3, BLAKE2, семейство JH или отечественный «Стрибог» (он же ГОСТ 34.11-2018).
Подключаем человеческий фактор, бюрократию и частные организации
В самом начале мы говорили о свойствах, которыми должна обладать качественная электронная подпись. Из них под действием уже упомянутых выше атак пока страдали только её целостность и неотказуемость. Однако в реалиях нашего мира наибольшее количество нарушений происходит из-за подмены авторства.
В России получение ЭП регулируется законом № 63-ФЗ «Об электронной подписи». Для её оформления нужно получить сертификат от удостоверяющего центра (УЦ) на выбор. В УЦ нужно предоставить необходимые документы и заплатить некоторую сумму, после чего забрать свой сертификат и заветный eToken с закрытым ключом.
Заключение
Электронная цифровая подпись для чайников: с чем ее есть, и как не подавиться. Часть 1
Итак, все чаще в кругах, работающих с документами все чаще звучат слова «электронный документ» и, связанное с ним почти неразрывно «электронная цифровая подпись», иначе — ЭЦП.
Данный цикл статей предназначен для того, чтобы раскрыть «тайное знание» о том, что это такое, когда и как это можно и нужно использовать, какие есть плюсы и минусы.
Естественно, статьи пишутся не для специалистов по криптографии, а для тех, кто эту самую криптографию будет использовать, или же только начинает ее изучение, желая стать специалистом, поэтому я старался максимально упростить понимание всего процесса, приводя аналогии и рассматривая примеры.
Зачем нам вообще что-то подписывать? Естественно, чтобы удостоверить, что мы ознакомились с содержимым, согласны (а иногда наоборот, не согласны) с ним. А электронная подпись еще и защищает наше содержимое от подмены.
Итак, начать, естественно, стоит с того, что такое электронная цифровая подпись.
В самом примитивном случае это — результат хэш-функции. Что это такое лучше меня разъяснит википедиа, в нашем же случае главное, что с высокой степенью вероятности ее результат не повторяется для разных исходных данных, а также что результат этой функции мало того, что короче исходных данных, так еще по нему исходную информацию восстановить нельзя. Результат функции называют хэшем, а применение этой функции к данным называют хешированием. Грубо, можно назвать хэш функцию архивированием, в результате чего мы получаем очень маленькую последовательность байт, но восстановить исходные данные из такого «архива» нельзя.
Итак, мы читаем файлик в память, хэшируем прочитанное. И что, уже получаем ЭЦП? Почти. Наш результат с большой натяжкой можно назвать подписью, но, все же, полноценной подписью он не является, потому что:
1. Мы не знаем, кто сделал данную подпись
2. Мы не знаем, когда была сделана подпись
3. Сама подпись не защищена от подмены никак.
4. Ну и да, хэш функций много, какая из них использовалась для создания этого конкретного хэша?
Поэтому применять к хэшу слово «подпись» еще нехорошо, будем называть его дальше просто хэш.
Вы посылаете ваш файл другому человеку, допустим, по почте, будучи уверенными, что он точно получит и прочитает именно то, что вы послали. Он же, в свою очередь, тоже должен хэшировать ваши данные и сравнить свой результат с вашим. Если они совпали — все хорошо. Это значит что данные защищены? Нет.
Ведь хэшировать может кто угодно и когда угодно, и вы никогда не докажете, что он хэшировал не то, что вы послали. То есть, если данные будут перехвачены по дороге злоумышленником, или же тот, кому вы посылаете данные — не очень хороший человек, то данные могут быть спокойно подменены и прохэшированы. А ваш получатель (ну или вы, если получатель — тот самый нехороший человек) никогда не узнает, что он получил не то, что вы отправляли, или сам подменил информацию от вас для дальнейшего использования в своих нехороших целях.
Посему, место для использование чистой хэш функции — транспорт данных в пределах программы или программ, если они умеют общаться между собой. Собственно, с помощью хэш функций вычисляются контрольные суммы. И эти механизмы защищают от случайной подмены данных, но не защищают от специальной.
Но, пойдем дальше. Нам хочется защитить наш результат хеширования от подмены, чтобы каждый встречный не мог утверждать, что это у него правильный результат. Для этого самое очевидное что (помимо мер административного характера)? Правильно, зашифровать. А ведь с помощью шифрования же можно и удостоверить личность того, кто хэшировал данные! И сделать это сравнительно просто, ведь есть ассиметричное шифрование. Да, оно медленное и тяжелое, но ведь нам всего-то и надо — зашифровать маленькую последовательность байт. Плюсы такого действия очевидны — для того, чтобы проверить нашу подпись, надо будет иметь наш открытый ключ, по которому личность зашифровавшего (а значит, и создавшего хэш) можно легко установить.
Суть этого шифрования в следующем: у вас есть закрытый ключ, который вы храните у себя. И есть открытый ключ. Открытый ключ вы можете всем показывать и раздавать, а закрытый — нет. Шифрование происходит с помощью закрытого ключа, а расшифровывание — с помощью открытого.
Приводя аналогию, у вас есть отличный замок и два ключа к нему. Один ключ замок открывает (открытый), второй — закрывает (закрытый). Вы берете коробочку, кладете в нее какую-то вещь и закрываете ее своим замком. Так, как вы хотите, чтобы закрытую вашим замком коробочку открыл ее получатель, то вы открытый, открывающий замок, ключик спокойно отдаете ему. Но вы не хотите, чтобы вашим замком кто-то закрывал коробочку заново, ведь это ваш личный замок, и все знают, что он именно ваш. Поэтому закрывающий ключик вы всегда держите при себе, чтобы кто-нибудь не положил в вашу коробочку мерзкую гадость и не говорил потом, что это вы ее положили и закрыли своим замком.
И все бы хорошо, но тут сразу же возникает проблема, а, на самом деле, даже не одна.
1. Надо как-то передать наш открытый ключ, при этом его должна понять принимающая сторона.
2. Надо как-то связать этот открытый ключ с нами, чтобы нельзя было его присвоить.
3. Мало того, что ключ надо связать с нами, надо еще и понять, какой зашифрованный хэш каким ключом расшифровывать. А если хэш не один, а их, скажем, сто? Хранить отдельный реестр — очень тяжелая задача.
Все это приводит нас к тому, что и закрытый ключ, и наш хэш надо хранить в каких-то форматах, которые нужно стандартизировать, распространить как можно шире и уже тогда использовать, чтобы у отправителя и получателя не возникало «трудностей перевода».
Как водится у людей, к чему-то единому прийти так и не смогли, и образовалось два больших лагеря — формат OpenPGP и формат S/MIME + X.509. Но об этом уже в следующей статье.
Применение хеш-функции в создании электронной цифровой подписи
Рубрика: Математика: алгебра и начала анализа, геометрия
Дата публикации: 17.06.2020 2020-06-17
Статья просмотрена: 410 раз
Библиографическое описание:
Трубникова, Е. А. Применение хеш-функции в создании электронной цифровой подписи / Е. А. Трубникова, В. П. Батунина. — Текст : непосредственный // Юный ученый. — 2020. — № 7 (37). — С. 19-22. — URL: https://moluch.ru/young/archive/37/2117/ (дата обращения: 12.09.2021).
При обмене электронными документами по каналам связи возникает проблема аутентификации как автора документа, так и самого документа. Это означает, что получатель должен быть уверен, во-первых, в истинности автора, а во-вторых, в отсутствии изменений в самом документе. В обычных бумажных документах эти проблемы решаются за счет того, что содержание документа и рукописная подпись автора жестко связаны физическим носителем данных (бумагой). В электронных документах на машинных носителях такой связи нет.
Целью аутентификации электронных документов является их защита от возможных видов вредоносных действий:
– активный перехват — злоумышленник, подключившись к каналу связи, перехватывает файлы документов и меняет их на другие,
направляет документ абоненту
утверждает, что не направлял документ абоненту
, хотя в действительности посылал;
меняет полученный или формирует новый документ, после чего утверждает, что получил его от абонента
повторяет от своего имени ранее переданный документ, который абонент
Один из самых простых способов аутентификации (подписи) электронных документов — использование шифрования. При этом отправитель
шифрует документ своим секретным ключом и отправляет получателю
дешифрует документ с помощью открытого ключа отправителя
. Если это ему удается, то документ считается истинным. Если получатель
не сможет дешифровать документ, то документ подлинным не считается. Такой способ имеет чрезвычайно серьезный недостаток, связанный с тем, что он неэффективен для подписания документов значительного объема.
Именно поэтому для аутентификации электронных документов, передаваемых по телекоммуникационным каналам связи, используется специально создаваемая электронная цифровая подпись (ЭЦП). Функционально ЭЦП аналогична обычной рукописной подписи и обладает следующими свойствами:
– показывает, что подписанный документ получен от лица, поставившего свою подпись;
– не дает возможности лицу, поставившему свою подпись, отказаться от подписанного документа;
– является неотъемлемой частью данного документа и не может быть использована для подписания другого документа;
– гарантирует целостность подписанного документа.
Электронная цифровая подпись представляет собой относительно небольшое количество дополнительных цифровых данных, которые передаются вместе с подписанным текстом. Применение ЭЦП имеет вид следующего криптографического протокола:
, который должен быть подписан, отправитель
вычисляет значение односторонней хэш-функции
шифрует своим личным секретным ключом и получает число, которое считается подписью документа;
3) зашифрованное хэш-значение вместе с документом
сначала сам вычисляет хэш-значение
полученного документа, далее дешифрует полученное хеш-значения с использованием открытого ключа отправителя
, после чего сравнивает оба значения.
Если два полученных хэш-значения совпадают, то подпись отправителя
считается верной, а сам документ
Участники криптографического протокола ЭЦП должны предварительно договориться об использовании определенной криптографической системы, а также хэш-функции.
Среди большого количества различных асимметричных криптосистем самой популярной является криптосистема RSA, разработанная в 1977 г. и получившая свое название в честь Рона Ривеста (Rivest), Ади Шамира (Shamir) и Леонарда Эйдельмана (Adleman). Алгоритм RSA используется в банковских компьютерных сетях, особенно для работы с удаленными клиентами (Обслуживание кредитных карточек). Надежность алгоритма основывается на трудности факторизации (разложения на множители) больших чисел и трудности вычисления дискретных алгоритмов (нахождения
Алгоритм RSA состоит из трех частей: генерации ключей, шифрования и дешифрования. Генерируют
— секретный ключ. Открытый ключ публикуется и доступен каждому желающему прислать владельцу ключа сообщение, которое зашифровано указанным алгоритмом. Зашифрованное сообщение невозможно прочитать с помощью открытого ключа, и только владелец закрытого ключа имеет возможность расшифровать принятое сообщение.
, которая используется в протоколе ЭЦП, предназначена для того, чтобы сжать подписываемый документ
произвольной длины к двоичному хэш-значению
фиксированной длины (несколько десятков бит). Благодаря этому подписывается не один длинный документ, а его краткое хэш-значение, при этом длина подписи становится фиксированной.
Основные свойства хэш-функции:
зависит от всего документа
чрезвычайно сложным способом, благодаря чему по значению
невозможно восстановить документ
чувствительно к любым, даже незначительным, изменениям в документе
(вставки, удаления, перестановки и т. п.);
является необратимой, то есть подбор некоторого фиктивного документа
‘ с тем же самым хеш-значением
является задачей практически нерешаемой;
4) вероятность того, что хеш-значения двух разных документов совпадут, чрезвычайно мала.
Подавляющее большинство используемых хэш-функций имеют вид
и работают по следующему принципу: они образуют одно хэш-значение длиной
бит из двух входных значений, каждое из которых тоже имеет длину n бит. Для применения такой хэш-функции документ
должен быть предварительно представлен в двоичной форме и разбит на отдельные блоки
Содержание указанных входных значений хэш-функции следующее:
1) первое входное значение представляет собой очередной блок документа
2) второе входное значение представляет собой хэш-значение
всех предыдущих блоков документа.
При исчислении хэш-значение для первого блока
документа используется некоторое начальное хэш-значение
, которое можно выбрать случайным или фиксированным (например,
— в простейшем случае). При этом хэш-значение, вычисленное при использовании последнего блока документа, считается хеш-значением всего документа
Правило образования одного хэш-значения из двух входных зависит от типа хэш-функции. В простейшем случае здесь может использоваться сложение по модулю 2, т. е.
Покажем реализацию алгоритма создания и передачи ЭЦП на примере. Для создания иллюстративного примера мы будем использовать небольшие числа в десятичной форме записи. Найдем хеш-образ фамилии Трубникова, используя хеш-функцию
— произведение двух простых чисел, и алгоритм шифрования RSA.
Возьмем два простых числа
выбираем случайным образом, пусть оно равно 12. Слово «ТРУБНИКОВА» представим в виде последовательности чисел (20, 18, 21, 2, 15, 10, 12, 16, 3, 1) по номерам букв в русском алфавите. Тогда имеем
, получим хеш-образ сообщения «ТРУБНИКОВА»:
В итоге получаем хеш-образ сообщения «ТРУБНИКОВА», равный 9, который будем использовать для вычисления электронной цифровой подписи по схеме RSA.
Сгенерируем открытый и секретный ключи для алгоритма шифрования RSA. Оставим ранее выбранные простые двузначные числа
, тогда функция Эйлера
выбираем из условий
не имеют общих делителей.
выбираем из условий
Последнее условие означает, что число
должно делиться на 352 без остатка.
Таким образом, для определения
нужно подобрать такое число
Таким образом мы сгенерировали
Электронная цифровая подпись сообщения, состоящего из Фамилии, вычисляется по правилу
Для проверки ЭЦП используем открытый ключ
Как видим, хеш-образ сообщения совпадает с найденным значением H, следовательно, подпись признается подлинной.
Таким образом мы построили демонстрационный пример создания электронной цифровой подписи с использованием хеш-функции
и алгоритма шифрования RSA. Все вычисления были выполнены в электронных таблицах Excel, в частности, с использованием формулы =ОСТАТ(
Похожие статьи
Исследование криптосистем с открытым ключом на основе.
В криптосистеме с открытым ключом для шифрования и расшифрования используются различные ключи.
RSA — криптографический алгоритм с открытым ключом
Это позволит нападающему читать все сообщения, зашифрованные открытым ключом и подделывать.
Создание ключей, шифрование и дешифрование сообщений.
Статья посвящена реализации алгоритма шифрования на открытом ключе RSA. LabVIEW (англ. RSA (аббревиатура от фамилий Rivest.
Пост-квантовый алгоритм электронно—цифровой подписи на.
Алгоритмы электронно—цифровой подписи являются одним из важнейших инструментов криптографии и обеспечивают целостность электронного документа, аутентификацию и неотказуемость автора документа. Электронно—цифровая подпись в настоящее время.
Алгоритмы шифрования данных | Статья в журнале.
Алгоритмы асимметричного шифрования используют два ключа шифрования: открытый для зашифровывания информация и секретный для ее дешифрования, причем открытый ключ достаточно просто вычисляется из секретного, а вычислить секретный ключ из открытого.
Реализация алгоритма шифрования RSA на языке.
Статья посвящена реализации алгоритма шифрования на открытом ключе RSA. LabVIEW (англ. Laboratory Virtual Instrumentation Engineering Workbench) — это среда разработки и платформа для выполнения программ.
Анализ алгоритма RSA. Некоторые распространённые.
Сторона шифрует сообщения с применением очередного открытого ключа каждого пользователя.
Основные термины (генерируются автоматически): открытым ключом, шифрования rsa.
Способ хранения закрытого ключа криптосистемы цифровой.
Электронная цифровая подпись (ЭЦП) — реквизит электронного документа, полученный в результате криптографического преобразования информации с использованием закрытого ключа подписи и позволяющий установить отсутствие искажения информации в электронном.
Шифрование и криптоанализ | Статья в журнале «Молодой. »
Основные термины (генерируются автоматически): открытым ключом, шифрования rsa, секретной экспоненты, секретную экспоненту, открытый ключ
Алгоритмы шифрования данных | Статья в журнале. Алгоритмы асимметричного шифрования используют два ключа.
Теория чисел в криптографии | Статья в журнале.
RSA, число, простое число, тест, выбор показателей, случайный сеансовый ключ, случайный образ, секретный показатель, простой перебор
Статья посвящена реализации алгоритма шифрования на открытом ключе RSA. Некоторые аспекты криптографического взлома и.