Сообщение
  • Пожалуйста, прежде пройдите авторизацию

Авторизация и подпись файла с помощью сертификатов
(1 чел.) (1) гость
  • Страница:
  • 1
  • 2
  • 3

ТЕМА: Авторизация и подпись файла с помощью сертификатов

Авторизация и подпись файла с помощью сертификатов 1 год, 4 мес. назад #3951

  • maxshinkarev
  • Новый участник
  • Постов: 9
  • Репутация: 0
Здравствуйте,

Есть проект, на ASP.NET MVC (c#), в который нужно добавить регистрацию и авторизацию с помощью ЭЦП. Использую NCLayer.

Я почитал про PKI, посмотрел примеры в SDK, но у меня остался ряд вопросов:

1) В SDK, в папке "Keys And Serts", у большинства пользователей, имеются сертификаты двух типов, например:
1. AUTH_RSA256_ac13ae13f678ce59fb8cea3ddd0b974c8e597b24
2. GOSTKNCA_ea1ec86324cee37e9548e4ea6a834b5ce5fd15ab
Это один и тот же сертификат, только зашифрованный двумя разными типами? Если да, то почему у физ. и юр. лиц сертификат только один?


2) Насколько я понял, ключ с приставкой AUTH служит только для авторизации, но не способен подписывать документы. А ключ RSA должен использоваться для подписи/отправки запроса. Почему тогда в ключе, который под номером 1, в наименовании есть и AUTH и RSA? Он универсальный (подходит и для авторизации, и для подписи)?

3) Вопрос о реализации регистрации и входе на портал.
Я видел как это реализовано на сайте egov.kz: при регистрации пользователь вставляет сертификат ключа, затем появляются данные, которые в нём хранятся (ИИН, Email, Дата окончания действия сертификата, ФИО), вводится пароль и email для аккаунта.
При авторизации нужно лишь выбрать сертификат ключа.
Вопрос в следующем: как правильно реализовывать авторизацию? При регистрации сохранять данные из сертификата (например ИИН), а затем при входе на портал считывать данные из сертификата и сравнивать с тем, что было сохранено при регистрации?
Соответственно возникает вопрос, могу ли я сохранять ИИН, который получаю из сертификата при регистрации? безопасно ли при авторизации просто сравнивать ИИНы?

4) При получении данных из сертификата (даты окончания, ИИН, email, ФИО) нужен ли доступ к интернету? Обращается ли NCLayer к серверам НУЦ для получения данных из сертификата или самостоятельно расшифровывает сертификат?

5) Есть ли кардинальная разница в работе (безопасность, скорость) между NCLayer и KalkanCryptCOM? Имеют ли оба возможность реализовать регистрацию + вход на портал, а также подпись + расшифровку подписанных документов?

Заранее спасибо

Re: Авторизация и подпись файла с помощью сертификатов 1 год, 3 мес. назад #3959

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Добрый день!

1) Это разные ключи и соответственно сертификаты. Один - для авторизации, второй - для подписи.

2) Вы путаете, это разные вещи: AUTH в наименовании ключа указан для удобства. Означает - применение ключа для авторизации. А RSA256 означает, что ключ сформирован по алгоритму RSA (т.е. подписывает и шифрует по указанному алгоритму) с использованием алгоритма хэширования sha256. Но это лишь для удобства пользователя при выборе ключа. Указанные данные (алгоритм и использование ключа/key usage) Вы должны получать из расширений сертификата. Как это сделать есть в примерах в SDK НУЦ РК.

3) Просто сохранять ИИН/БИН и сравнивать его при входе небезопасно. Т.к. сертификат относится к открытым данным и любое лицо сможет залогиниться у Вас под чужим сертификатом. Необходимо каждый раз генерировать уникальную строку данных и отправлять (саму строку или упаковывая ее в XML) пользователю на подпись. Пользователь подписывает своим закрытым ключом* и отправляет Вам на сервер. Вы проверяете подпись, данные сертификата подписи, совпадают ли подписанные данные с отправленными сервером, на основе чего и принимаете решение логин прошел успешно или нет.
Есть также способ авторизации с использованием SSL сертификатов. Информацию можете найти в интернете.
*Каждый файл с ключами *.p12 содержит открытый ключ, закрытый ключ и сертификат.

4) Не обращается.

5) Таких сравнений не производилось да и некорректны будут они. NCALayer разработан для использования на клиенте, для обращения к функциям криптопровайдера из браузера. А библиотека KalkanCryptCOM позиционируется для использования на серверной стороне или в самостоятельно реализуемых клиентских приложениях.
Модератор
Изменено: 1 год, 3 мес. назад от Murat Seisenov.

Re: Авторизация и подпись файла с помощью сертификатов 1 год, 3 мес. назад #3961

  • maxshinkarev
  • Новый участник
  • Постов: 9
  • Репутация: 0
Спасибо большое Вам за ответ!

Возник ещё один вопрос:

Murat Seisenov написал:

Необходимо каждый раз генерировать уникальную строку данных и отправлять (саму строку или упаковывая ее в XML) пользователю на подпись. Пользователь подписывает своим закрытым ключом* и отправляет Вам на сервер. Вы проверяете подпись, данные сертификата подписи, совпадают ли подписанные данные с отправленными сервером, на основе чего и принимаете решение логин прошел успешно или нет.


Допустим я каждый раз буду генерировать случайную строку, а пользователь будет её подписывать.
Насколько я понял, чтобы считать данные в подписанной строке мне нужен открытый ключ.
Мне нужно вычленять открытый ключ из *.p12 файла пользователя при регистрации, а потом пользоваться им при авторизации? Получается сохранение всего сертификата, закрытого ключа лежит на моей совести?
Если да, то как открытый ключ хранить на сервере, по соображениям безопасности можно ли хранить их в БД, либо их нужно упаковывать в какой-то специальный контейнер?

Re: Авторизация и подпись файла с помощью сертификатов 1 год, 3 мес. назад #3962

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Если подпись в формате CMS или XML, то сертификат включается в подпись. Т.е. Вам будет необходимо передать подпись в формате CMS или XML в соответствующий метод криптопровайдера. Открытый ключ содержится внутри сертификата. Что и как сохранять - это уже относится к архитектуре Вашей ИС. На усмотрение Вашего архитектора.
Закрытый ключ Вы никак не можете сохранить у себя. Это секретный ключ, который должен быть только у владельца ключа. Пользователь не должен никому передавать свой закрытый ключ.
Модератор

Re: Авторизация и подпись файла с помощью сертификатов 1 год, 3 мес. назад #3965

  • maxshinkarev
  • Новый участник
  • Постов: 9
  • Репутация: 0
Возникла проблема - после публикации приложения на сервер возникает следующая ошибка при попытке выполнить следующую строку:

KalkanCryptCOMLib.KalkanCryptCOM KalkanCOM = new KalkanCryptCOMLib.KalkanCryptCOM();


Сама ошибка:

An exception of type 'System.BadImageFormatException' occurred in mscorlib.dll but was not handled in user code
Additional information: Не удалось получить фабрику класса COM для компонента с CLSID {0F1065E7-5D87-4693-BE33-E42A299D685A} из-за следующей ошибки: 800700c1  is not a valid Win32 application. 

Re: Авторизация и подпись файла с помощью сертификатов 1 год, 3 мес. назад #3966

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Какой битности (32, 64) приложение и используемая библиотека?
Какая ОС?
Модератор
Изменено: 1 год, 3 мес. назад от Murat Seisenov.
  • Страница:
  • 1
  • 2
  • 3
FaLang translation system by Faboba