Инструмент создания и проверки электронной подписи документов
Проектная работа
Требования:
- Windows 10
- Установленный .NET 6.0
Это абсолютно бесплатный инструмент для работы с ЭП и сертификатами основанный на 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 (сертификат по умолчанию):
- Сгенерируйте себе закрытый и открытый ключ во вкладке генерации ключей;
- Пришлите свой открытый ключ и название сертификата (например ваше имя+почта) на почту hackaton2132@gmail.com;
- Докажите что вы это вы: что угодно;
- Ответ в течение 365 рабочих дней, присылаю вам обратно ваш сертификат доступный два года.
Ну тогда доверяй сам себе! Просто создай свой личный корневой сертификат.
- Создаёшь открытый и закрытый ключ, экспортируешь куда-нибудь (закрытый никому не давать!);
- Во вкладке генерация сертификата указываешь эти два ключа, срок какой хочется, имя кому и от кого пишешь одинаковое (самоподпись);
Пример создания
- Переходишь в папку документы-CryptoKony-Trusted, добавляешь туда свой корневой сертификат
- Просишь создать его открытый и закрытый ключ, открытый ключ он должен прислать тебе;
- При генерации указываешь имя родительского сертификата (в данном случае корневого), в имени кому выдан - что попросит друг, срок какой хочется (не старше корневого);
Сертификат друга
В первой вкладке можно подробно увидеть цепочку наследования сертификатов для указанного сертификата и удостовериться что сертификат валидный.
Цепь сертификата
Валидность сертификата
Подписывать документы. Во вкладке подписи нужно выбрать:
- Закрытый ключ сертификата;
- Сам сертификат который "прилипнет" к docx;
- Сам docx файл;
Пример генерации подписи
- Сохраняешь .signed.docx куда угодно и кидаешь кому угодно, у кого есть твой корневой сертификат, которым он может проверить валидность подписи.
Вкладка "Проверить подпись". Нужно просто указать файл и тыкнуть "Проверить":
- Если сертификат не истёк;
- Если родительский сертификат существует в доверенных (лежит в Trusted);
- Если подпись сертификата проверена родителем и совпадает с подписью сертификата (он не был изменён);
- Если файл не был изменён (подпись расшифрована открытой подписью сертификата);
- То файл не изменялся! Поздравляю, документ проверен. Можно посмотреть кем был подписан документ и когда;
Пример проверки
- Если файл был изменён хоть на один бит - проверка выдаст ошибку.
Потом при желании можно проверить цепочку сертификатов для полученного из документа сертификата.
В директории находится файл test.signed.docx, его можно проверить
Содержание документа
Проверка подписи
Кто знает, друг! Одному Богу известно! Используй на свой страх и риск!
Можно добавить другие форматы документов, улучшить интерфейс и т.п. Делать я этого конечно же не буду. Основная цель моей работы достигнута: подпись и проверка документов, создание и проверка цепочки сертификатов.