Skip to content

Инструмент создания и проверки электронной подписи документов

Notifications You must be signed in to change notification settings

BCanary/CryptoKony

Repository files navigation

CryptoKony

image

Инструмент создания и проверки электронной подписи документов

Проектная работа

Требования:

  • Windows 10
  • Установленный .NET 6.0

Что такое CryptoKony?

Это абсолютно бесплатный инструмент для работы с ЭП и сертификатами основанный на RSA-2048bit и стандарте X.510.

Какими ещё сертификатами?

Абсолютно новый революционный русский стандарт X.510 (Читается как "Хэ точка 510", не путать с "Икс") содержит в себе информацию о том:

  • Кто выдал сертификат;
  • Кому выдан сертифкат;
  • Когда был создан сертификат;
  • Когда истекает сертификат;
  • Открытый ключ сертификата.
-----НАЧАЛО СЕРТИФИКАТА-----
[СЕРТИФИКАТ]
КОМУ ВЫДАН=CryptoKony CA
КЕМ ВЫДАН=CryptoKony CA
СОЗДАН=22.06.2023 10:46:41
ИСТЕКАЕТ=24.10.2030 00:00:00
ID=42104ceb-2b74-456e-aae7-61886af25711
[ОТКРЫТЫЙ КЛЮЧ]
-----BEGIN PUBLIC KEY-----
PFJTQUtleVZhbHVlPjxNb2R1bHVzPnBNY2lOY09STktSQlJjOUgrMnJ2c0tUL09sTVprTndNcjZzS3lIY2FMOWlTRVdGVmlNdDZadmlrQ2FJWmJMamwyS0t2SnVLZUg3N21QRHRTMTBwamFPNHlSUWl4b01OdFZkdjhyTXo3OUpESXJ5VjQ3bHMzcExuSnBYY0p0L2hRdS9iN3E5K2cxK09WWVlialpZbzhuR0xKek92U0YzM0tjbDIwbmtFMTdCMFJubXp1VjBILzA1VjJSYjBHTElLVnRyNURHVGhYcFdKTWZkOVo3VDRTc1J3VCt0VXlWd3NKY0pXMDJSK1l5NXNmYWtQckEwNURFVnNGVFF2aURxcmhPcStGZjdjU0lMbmlxQ21ZdWIwOXlBSDlOa1RQY0xtU25jTW52aUxrR0RSeTVOV2FJeGxzdnhYVnQveVMvN0pMZm9GMGtXMjllQSt2T0xCYis3WWI4UT09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPg==
-----END PUBLIC KEY-----

[ПОДПИСЬ]
T3zpyWwl5cpf0YafEn9q27Rc0qWrlypOlAdxCaFXJrJNMC46RLMz7adA4u+o0KYHHt3Eix//VrogWUQ7NWIQOI1/XNc3ZPxPNDZCyHCKylLH4TbVSqLobnODUWVzSv+D68QIBiIVdgT+cE07jgSWQsgAAiBjEVAxax3Sr9RqqroT2hIByot4Vam7zNqgSA8uImA2EcG/KcB+p3UNcFp66Bgi2kXDTkhQU9QJKM3ypr0IEfwn84lcBDzwfFxgBtw5aupwlb3q+71os00AYK4zCJNhQ5rnG+/UEMwvxch0TyqRmnYOKk5U9xZJO9HE2wHEE5UCuffH3R1Mwlz59pYogw==
-----КОНЕЦ СЕРТИФИКАТА-----

Корневой сертификат CryptoKony, установленный по умолчанию в программу

Как это работает?

Перейдите на вики-страничку CryptoKony и прочитайте подробности: https://github.com/BCanary/CryptoKony/wiki/%D0%9A%D0%B0%D0%BA-%D1%8D%D1%82%D0%BE-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%3F

А кому доверять?

А я поддерживаю я. Доверяйте мне. Я подписал сам себе корневой сертификат - подпишу сертификат и вам. Потом каждый у кого установлен корневой сертификат CryptoKony сможет подтвердить владение вашей подписи. Пишите письма.

Как получить сертификат?

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

  1. Сгенерируйте себе закрытый и открытый ключ во вкладке генерации ключей;
  2. Пришлите свой открытый ключ и название сертификата (например ваше имя+почта) на почту hackaton2132@gmail.com;
  3. Докажите что вы это вы: что угодно;
  4. Ответ в течение 365 рабочих дней, присылаю вам обратно ваш сертификат доступный два года.

Не хочу тебе доверять.

Ну тогда доверяй сам себе! Просто создай свой личный корневой сертификат.

А как его создать?

  1. Создаёшь открытый и закрытый ключ, экспортируешь куда-нибудь (закрытый никому не давать!);
  2. Во вкладке генерация сертификата указываешь эти два ключа, срок какой хочется, имя кому и от кого пишешь одинаковое (самоподпись);

image

Пример создания

  1. Переходишь в папку документы-CryptoKony-Trusted, добавляешь туда свой корневой сертификат

А как подписать моим корневым сертификатом сертификат друга?

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

image

Сертификат друга

А как проверить что сертификат действителен?

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

image

Цепь сертификата

image

Валидность сертификата

Ну и что с этим делать?

Подписывать документы. Во вкладке подписи нужно выбрать:

  1. Закрытый ключ сертификата;
  2. Сам сертификат который "прилипнет" к docx;
  3. Сам docx файл;

image

Пример генерации подписи

  1. Сохраняешь .signed.docx куда угодно и кидаешь кому угодно, у кого есть твой корневой сертификат, которым он может проверить валидность подписи.

А как проверить?

Вкладка "Проверить подпись". Нужно просто указать файл и тыкнуть "Проверить":

  1. Если сертификат не истёк;
  2. Если родительский сертификат существует в доверенных (лежит в Trusted);
  3. Если подпись сертификата проверена родителем и совпадает с подписью сертификата (он не был изменён);
  4. Если файл не был изменён (подпись расшифрована открытой подписью сертификата);
  5. То файл не изменялся! Поздравляю, документ проверен. Можно посмотреть кем был подписан документ и когда;

image

Пример проверки

  1. Если файл был изменён хоть на один бит - проверка выдаст ошибку.

Потом при желании можно проверить цепочку сертификатов для полученного из документа сертификата.

Проверка после установки

В директории находится файл test.signed.docx, его можно проверить

image

Содержание документа

image

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

А оно... Безопасно?..

Кто знает, друг! Одному Богу известно! Используй на свой страх и риск!

Что дальше?

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

About

Инструмент создания и проверки электронной подписи документов

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages