Данный репозиторий содержит две утилиты для тестирования ИС, использующих ЭЦП для аутентификации и подписи данных. Поддерживается только алгоритмы RSA/SHA256.
Fake Certification Authority Layer
Утилита для тестирования аутентификации по ЭЦП в уязвимых системах, не проверяющих подписи данных или подлинность сертификата НУЦ РК. Для использования необходимо закрыть NCALayer.
Не является полноценной заменой NCALayer, и реализует только методы использовавшиеся в тестируемых системах.
Модули и методы
- kz.gov.pki.knca.basics:
- sign (xml/cms)
- kz.gov.pki.knca.commonUtils:
- createCMSSignatureFromBase64 (без TSA)
- createCAdESFromBase64 (без TSA)
- getKeyInfo
- signXml
- signXmls
- getActiveTokens (PKCS12)
- kz.gov.pki.knca.applet.Applet:
- signXml
- signPlainData
- getSubjectDN
- getNotAfter
- getNotBefore
- browseKeyStore (заглушка)
- loadSlotList (заглушка)
- verifyXml (заглушка)
- getKeys
- kz.gov.pki.ncalayerservices.accessory:
- getBundles (заглушка)
Функциональные возможности
- Имитация работы NCALayer через Websocket;
- Подпись данных в различных форматах - XMLDsig/CMS/CAdES
- Создание не валидного сертификата для физ и юр. лиц с нужными свойствами при запуске по шаблону:
- Сертификат физического лица для аутентификации (AUTH_RSA256_*.p12)
- Сертификат физического лица для подписи (RSA256_*.p12)
- Сертификат юридического лица для аутентификации (AUTH_RSA256_*.p12)
- Использование валидного сертификата и ключа из файла PKCS#12 (.p12)
- Установка задержки отправки подписи для проверки истечения токена аутентификации в ИС
- Намеренная поломка цифровой подписи данных для проверки ее валидации на ИС
Использование
- Установка зависимостей Python 3.10+:
pip install -r requirements.txt
- Корневой сертификат
FCALayer-CA.crt
должен быть установлен как доверенный в браузер.
Параметры запуска:
FCALayer.py:
★ --type ind|ent|file (Физическое/Юридическое лицо/PKCS#12 file)
--iin ИИН [111111111110]
--commonname [ИВАНОВ ИВАН]
--surname [ИВАНОВ]
--country [KZ]
--locality [АСТАНА]
--state [АСТАНА]
--org [ТОО Рога и копыта]
--bin БИН [222222222220]
--givenname [ИВАНОВИЧ]
--email [test@example.com]
--dontsend (Don\'t send signature)
--keytype [auth] | sign
--delay [0] Delay for signature send in seconds
--file (path to file)
--password (PKCS#12 container password)
--break-signature (Send broken signature)
Утилита для создания не валидных сертификатов НУЦ РК по различным шаблонам:
- Сертификат физического лица для аутентификации (AUTH_RSA256_*.p12)
- Сертификат физического лица для подписи (RSA256_*.p12)
- Сертификат юридического лица для аутентификации (AUTH_RSA256_*.p12)
Использование
- Установка зависимостей Python 3.10+:
pip install -r requirements.txt
Параметры запуска:
make-p12.py:
★ --type ind|ent (Физическое/Юридическое лицо)
--iin ИИН [111111111110]
--commonname [ИВАНОВ ИВАН]
--surname [ИВАНОВ]
--country [KZ]
--locality [АСТАНА]
--state [АСТАНА]
--org [ТОО Рога и копыта]
--bin БИН [222222222220]
--givenname [ИВАНОВИЧ]
--email [test@example.com]
--keytype [auth] | sign
--file (Path to PKCS#12 container)
--password
P.S.
Программное обеспечение написано только для образовательных целей, используйте только с разрешения владельца.
The software is written for educational purposes only, use only if you have permission of the owner.