Denis Gladkikh
Russian   |  English

Выбранный тег: Сертификаты

Silverlight 5 и сертификаты

Я достаточно часто слышал вопрос о том, можно ли в Silverlight работать с сертификатами. Основную задачу, которую хотели решить при помощи этого – это подпись данных или документов на стороне клиента. Я обычно с такими задачами сталкивался в проектах, которые отчасти или полностью были государственными. Требуется это в них потому, что не хотят в России доверять людям, а так же не верят, что любую защиту можно взломать (хотя бы методом паяльника или утюга). Я когда-то давно писал статью о "Использование сертификатов: Подпись данных на стороне клиента." (это была, кстати, первая моя статья, вообще), тогда это все делалось в виде CAPICOM + Javascript. Собственно, вопрос: с выходом Silverlight 5 что-нибудь изменится?



Решаем задачу «Если оплачен один аккаунт, как не дать работать двум юзерам»

Пару дней назад Петя Диденко у себя в твиттере задал вопрос, как решить достаточно распространенную задачу «Если оплачен один аккаунт, как не дать работать двум юзерам», ну и получил он огромную пачку ответов, среди которых был и мой самый простой вариант решения проблемы. Распишу сначала свое решение поподробнее, прежде чем двигаться дальше: в соглашении данной услуги пишем, что пользоваться услугой может только человек, на которого зарегистрирован аккаунт, если будут замечены случаи передачи аккаунта третьим лицам, то аккаунт будет заблокирован без возможности возврата денежных средств (особо юридические текста я писать не умею, но смысл должен быть понятен). То есть пункт в договоре есть, читать, правда, его все равно никто не будет, но мы предупредили. Дальше ведем список активных сессий и просто следим, что при попытке зайти под определенным аккаунтом, если активна другая сессия с этим же аккаунтов, то просто предыдущую сессию затирать, в результате чего человека с предыдущей сессией просто выкинет на страницу авторизации. Ну и соответственно все такие вещи стоит записывать в лог, из которого иногда выдирать те аккаунты, у которых часто происходит этот такой обрыв сессий – и их уже анализируем. Сессии пускай имеют timeout по 30 минут, если меняешь компьютер, с которого используешь этот аккаунт с домашнего на рабочий, скорее всего, столько времени и нужно, чтобы добраться до работы, и сессия просто оборвется, потому наше правило на этот случай не будет распространяться. Решение предельно простое, и никак не напрягает правомерных пользователей.

Давайте теперь рассмотрим другие варианты, которые были предложены Пете, и, со всем уважением к Пете, подумаем, почему им выбранный вариант не так уж и хорош.

Кстати, хочется заметить, что это опять разговор на тему Мнимая безопасность VS юзабилити, которую я недавно поднимал уже.



Криптография. Сертификаты. Знакомство с SSL.

Этой статьей я бы хотел начать небольшую серию топиков о том, как работать с сертификатами, а так же в каких задачах и как их можно применить. К сожалению, в свое время, когда мне пришлось знакомиться с этой темой – мне удалось найти очень мало литературы, которая бы в полной мере описывала точно мне нужную информацию о том, как использовать сертификаты в моем ASP.NET приложении. На данном этапе я не могу назвать себя экспертом, но все же хочу этой серией топиков поделиться тем, что я узнал, а так же, надеюсь, избавить в будущем кого-то от поиска информации.

В университетах на профильных специальностях (математика и информатика), обычно, присутствуют курсы по криптографии. У кого мало знакомства с данной темой, а так же для освежения, приведу пару примеров, где можно и нужно использовать криптографию. Потому, если вы хорошо знакомы с терминами криптографии и SSL, то вы можете пропустить эту часть. Так же с удовольствием приму конструктивные комментариев и предложений на эту тему. В следующих топиках, я постараюсь рассказать, о том как можно создавать сертификаты для тестирования и разработки, а так же как можно настроить аутентификацию при помощи сертификатов, ну и что еще придет в голову. На данный момент за мной уже числится одна статья про использование сертификатов под названием “Использование сертификатов: Подпись данных на стороне клиента.”



Использование сертификатов: Подпись данных на стороне клиента.

Одно из назначений для сертификата – это подписывание данных. Цель подписи может быть различной – валидация клиента или просто проверка достоверности данных.
Одна из задач, которая у вас может возникнуть – это подписать некоторые данные на стороне клиента в браузере пользователя. Такая задача может возникнуть тогда, когда пользователь подает некоторые важные данные, и для того, чтобы он в будущем не отказывался со словами «Это делал не я!» от этих данных. Для этого могут служить сертификаты. Подробнее о сертификатах и о SSL можно узнать где угодно, достаточно в поисковике набрать «SSL сертификаты» и информации об их назначении и о необходимости будет предостаточно.

Для реальных задач вам, скорее всего, понадобятся сертификаты удовлетворяющие алгоритмам ГОСТа, одна из программ реализующая их это КриптоПро, хотя даже вроде как и единственная. Но для того чтобы разрабатывать или тестировать сама программа вам не понадобится. Идея сертификатов так же в том, что пользователь и разработчик не должны вникать в то, какие алгоритмы они реализуют, какие типы ключей в них содержаться, и программа, работающая с сертификатами одного типа так же работала бы на сертификатах другого типа (это в теории, в практике может быть будут проблемы с некоторыми настройками контейнеров и вообще администрированием). Главное – для нашей задачи - это чтобы сертификат сервера и клиента соответствовали одному алгоритму.