Реализация проверок подлинности JS, C# .Net
(1 чел.) (1) гость
  • Страница:
  • 1

ТЕМА: Реализация проверок подлинности JS, C# .Net

Реализация проверок подлинности JS, C# .Net 3 года назад #2459

  • dmbook
  • Новый участник
  • Постов: 2
  • Репутация: 0
Добрый день!

Была задача реализовать подпись xml на сайте. Получил пакет разработчика SDK-2.0. Для подписания, реализовал вызов API функций NCALayer для выбора сертификата пользователя и, непосредственно, самого подписания. ( browseKeyStore, signXml).

Как следует из документа "Правила проверки ЭЦП (draft).pdf" приложенного к SDK, необходимо еще реализовать следующие проверки:
1. проверка цифровой подписи (digital signature)
2. проверка действительности сертификационного пути (trust)
3. проверка срока действия регистрационного свидетельства (time)
4. проверка статуса регистрационного свидетельства (revocation)
5. проверка штампа времени (TSP)
6. проверка параметров формата (formatting)
7. проверка DN имени регистрационного свидетельства

Если я правильно пониманию, то пункты:
1. выполняется проверкой подписанного XML методом verifyXml доступного в API NCALayer'а
3. также можно выполнить с помощью API методов getNotAfter и getNotBefore
5. не требуется
6. можно ли считать что проверка является выполненной, если ключи получаемые через getKeys только с типом для подписания - SIGN. Соответственно если есть, то все хорошо, если нет - нет?
7. тут как я понял проверяем только то что нужно нашей ИС, к примеру чтобы было наличие ИИН и другой необходимой информации, в принципе можно обойтись опять же API NCALayer'a?

по пунктам 2 и 4, судя по всему, придется использовать проверку на стороне сервера.
В самой SDK я не нашел примера использования библиотеки для .net. и примеров того как эти проверки выполнять.

Немного не понятно как проверить статуса регистрационного свидетельства, если выбор сертификата пользователя для подписания возлагается на NCALayer.

Есть ли какое либо тестовое приложение, чтобы понять как и каким образом выполнить эти проверки используя .net, или хотя бы документация по использованию методов библиотеки связанных с этими проверками?

Может есть какие нибудь ссылки где можно прочитать про то или иное, например тестовый проект на github?


P.S. Извиняюсь, за возможно глупые вопросы. Я в этом новичок. Заранее спасибо за ответы

Re: Реализация проверок подлинности JS, C# .Net 3 года назад #2464

  • ugotbug
  • Завсегдатай
  • Постов: 225
  • Репутация: 14
Добрый день.

Получается, что вы хотите делать все проверки в момент подписи?
Если так, то к сожалению в NCALayer реализованы не все перечисленные вами проверки, так
как в первую очередь это приложение было создано для схемы клиент{подпись} ­-> сервер{проверка}. То есть NCALayer только клиента, а для сервера криптопровайдер, для осуществления всех проверок.
Так было реализовано, поскольку большинство информационных систем работает по такой схеме. Возможно, в будущем эти проверки будут включены в новых версиях NCALayer. Как вариант, вы можете реализовать аналог NCALayer, со своим блэк-джеком.

В целом по пунктам все верно, только необходимо отметить следующее.

По 6 пункту. В текущей версии NCALaeyr проверка формата реализована только определения назначения ключа, а именно проверка расширения KeyUsage. Информация, которую содержит расширение является основанием для определения типа сертификата. Но, по большому счету этого мало, необходимо также проверять и другие расширения, например «Extended Key Usage», «Certificate Policy» и т. д. Вновь отмечу, что мы планируем работы по доработке API NCALayer, в которую могут войти такие проверки.

По пунктам 2 и 4. На самом деле, выполнять эту проверку на клиенте, в момент подписания — хорошая практика, так как уже на этом этапе можно частично отбросить некоторые «непавильные» сертификаты, но повторная проверка на сервер все же рекомендуется, так как канал передачи данных (результата проверки на сервер) может быть ненадежным и возможна подмена данных. К сожалению, в NCALayer пока нет API для проверки статуса сертификата (см. выше).

Если у вас северная часть на .Net, то вам придется писать обертку над СИ-шными библиотеками, которые идут в составе SDK. Мы также рекомендуем вам попробовать воспользоваться библиотекой KalkanCrypt-COM, которая по сути является высокоуровневой библиотекой с упрощенным API. Мы ее передаем по запросу (пишите на knca{собака}pki.gov.kz). К KalkanCrypt-COM есть примеры.
Могущественный обладатель кольца Знаний
  • Страница:
  • 1
FaLang translation system by Faboba