Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

4 Страницы<1234>
Опции
К последнему сообщению К первому непрочитанному
Offline cross  
#11 Оставлено : 3 ноября 2015 г. 14:19:32(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Цитата:
Нет. Локальное приложение может узнать с какого сайта пришел запрос. Браузер передает эту информацию в заголовоке Origin, который из JS изменить нельзя.

А кто мешает локальному приложению сделать такой же заголовок?
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline dizel3d  
#12 Оставлено : 3 ноября 2015 г. 14:25:31(UTC)
dizel3d

Статус: Участник

Группы: Участники
Зарегистрирован: 27.10.2015(UTC)
Сообщений: 17
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 8 раз
Автор: cross Перейти к цитате
Цитата:
Нет. Локальное приложение может узнать с какого сайта пришел запрос. Браузер передает эту информацию в заголовоке Origin, который из JS изменить нельзя.

А кто мешает локальному приложению сделать такой же заголовок?


Вы говорите о сценарии, где злоумышленник не сайт в бразере, а программа на компьютере, так? Тогда, что мешает ей использовать непосредственно КриптоПРО SDK или ваш плагин к браузеру, передав ему ложную информацию о домене?

Отредактировано пользователем 3 ноября 2015 г. 14:26:48(UTC)  | Причина: Не указана

Offline dizel3d  
#13 Оставлено : 3 ноября 2015 г. 14:50:07(UTC)
dizel3d

Статус: Участник

Группы: Участники
Зарегистрирован: 27.10.2015(UTC)
Сообщений: 17
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 8 раз
Автор: Смирнов Перейти к цитате
Глубоко в данную тему мы не вдумывались. Однако, на поверхности лежит одна глобальная проблема с юзабилити. Если эту штуку сделать как системный сервис, то она не сможет ни понять ключами какого пользователя нужно подписывать, ни получить к ним доступ. Остаётся вариант простого приложения, работающего в фоне в сессии пользователя. Но тогда, если работает одновременно несколько пользователей, то их процессы не смогут слушать на одном порте, а значит JS-код в браузере должен как-то найти нужный процесс нужного пользователя. Как вы собираетесь решать эту задачу?


Решить эту проблему можно, разбив приложение на части: "слушатель" и "логика". Каждая часть представляет собой процесс. Процессы взаимодействуют друг с другом через пайп. Процесс "слушатель" один на всех пользователей ОС, а процесс "логика" создается для каждого пользователя свой.
Но ваш вопрос открыл глаза на более важную проблему: как узнать, какой пользователь стучится к нам на сокет. Этот момент мы упустили из виду, а ведь это дыра в безопасности, если за одним компьютером работает несколько человек, каждый под своим аккаунтом. Есть догадки, как решить ее. Берем время на подумать. Think
А пока придется принять это как ограничение, т.е. один компьютер - один пользователь. Angel А если все же несколько пользователей, то "поработал - заверши сеанс".

Отредактировано пользователем 3 ноября 2015 г. 15:04:22(UTC)  | Причина: Не указана

Offline Павел Смирнов  
#14 Оставлено : 3 ноября 2015 г. 16:20:40(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Автор: dizel3d Перейти к цитате
Автор: cross Перейти к цитате
Цитата:
Нет. Локальное приложение может узнать с какого сайта пришел запрос. Браузер передает эту информацию в заголовоке Origin, который из JS изменить нельзя.

А кто мешает локальному приложению сделать такой же заголовок?

Вы говорите о сценарии, где злоумышленник не сайт в бразере, а программа на компьютере, так? Тогда, что мешает ей использовать непосредственно КриптоПРО SDK или ваш плагин к браузеру, передав ему ложную информацию о домене?

В вашем сценарии программа на компьютере, запущенная другим пользователем, сможет подписать моими ключами. С плагином такого вектора атаки нет.

Автор: dizel3d Перейти к цитате
Решить эту проблему можно, разбив приложение на части: "слушатель" и "логика". Каждая часть представляет собой процесс. Процессы взаимодействуют друг с другом через пайп. Процесс "слушатель" один на всех пользователей ОС, а процесс "логика" создается для каждого пользователя свой.

Таким образом вы уберёте логику выбора адреса из клиентского JavaScript, но точно такую же задачу придётся решить в процессе-"слушателе".

Автор: dizel3d Перейти к цитате
Но ваш вопрос открыл глаза на более важную проблему: как узнать, какой пользователь стучится к нам на сокет. Этот момент мы упустили из виду, а ведь это дыра в безопасности, если за одним компьютером работает несколько человек, каждый под своим аккаунтом. Есть догадки, как решить ее. Берем время на подумать. Think

Ага, см. также мой первый комментарий в этом посте.

Автор: dizel3d Перейти к цитате
А пока придется принять это как ограничение, т.е. один компьютер - один пользователь. Angel А если все же несколько пользователей, то "поработал - заверши сеанс".

Возможно, подойдёт в качестве кастомного решения для конкретной системы. Как универсальное средство - уже нет.

Техническую поддержку оказываем тут.
Наша база знаний.
Offline cross  
#15 Оставлено : 3 ноября 2015 г. 16:44:42(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Еще один минус такого подхода:
сервис в 15 человекочасов на .NET будет крайне плохо переносится на платформы отличные от MS.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline dizel3d  
#16 Оставлено : 3 ноября 2015 г. 16:46:56(UTC)
dizel3d

Статус: Участник

Группы: Участники
Зарегистрирован: 27.10.2015(UTC)
Сообщений: 17
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 8 раз
Автор: Смирнов Перейти к цитате

Таким образом вы уберёте логику выбора адреса из клиентского JavaScript, но точно такую же задачу придётся решить в процессе-"слушателе".


Поясню. Предположим, что мы уже умеем узнавать, кто к нам стучится на сокет. Тогда мы можем именовать пайпы как-то так: PIPE_USER_1, PIPE_USER_2. И слушатель будет просто форвардить запросы по соответствующему пайпу.

Т.е. в итоге все упирается в то, что мы не знаем кто к нам стучится на сокет. И решив эту проблему без применения явной авторизации, получится вроде бы безопасное решение с юзабилити сравнимым с плагином. Или вы видите еще загвоздки?
Offline dizel3d  
#17 Оставлено : 3 ноября 2015 г. 17:01:39(UTC)
dizel3d

Статус: Участник

Группы: Участники
Зарегистрирован: 27.10.2015(UTC)
Сообщений: 17
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 8 раз
Автор: cross Перейти к цитате
Еще один минус такого подхода:
сервис в 15 человекочасов на .NET будет крайне плохо переносится на платформы отличные от MS.


Написать на Go или NodeJS для нас не проблема. Но есть сомнения в другом: если мы все же решим проблему с многосеансовостью в Windows, сможем ли мы решить ее в UNIX.
Но этот вопрос стоит для КриптоПро, а Валидата только в Windows работает, если не ошибаюсь.
Offline basid  
#18 Оставлено : 5 ноября 2015 г. 7:34:40(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,168

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 164 раз в 149 постах
Автор: dizel3d Перейти к цитате
Но ваш вопрос открыл глаза на более важную проблему: как узнать, какой пользователь стучится к нам на сокет
Для локального приложения - вообще не проблема. И вообще - давным-давно решено всевозможными файерволами и антивирусами с проверкой интернет-трафика.
Другой вопрос, что архитектура такого сервиса начинает усложняться, т.к. придётся делать и службу и какой-то механизм имперсонификации.
Offline Павел Смирнов  
#19 Оставлено : 5 ноября 2015 г. 9:21:03(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Автор: basid Перейти к цитате
Для локального приложения - вообще не проблема.

Поделитесь секретом. Приложение получает входящий HTTP-запрос без аутентификации. Оно знает, что соединение открыто с того же компьютера. Как понять какой пользователь открыл соединение?

Техническую поддержку оказываем тут.
Наша база знаний.
Offline dizel3d  
#20 Оставлено : 5 ноября 2015 г. 10:09:41(UTC)
dizel3d

Статус: Участник

Группы: Участники
Зарегистрирован: 27.10.2015(UTC)
Сообщений: 17
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 8 раз
Автор: Смирнов Перейти к цитате
Автор: basid Перейти к цитате
Для локального приложения - вообще не проблема.

Поделитесь секретом. Приложение получает входящий HTTP-запрос без аутентификации. Оно знает, что соединение открыто с того же компьютера. Как понять какой пользователь открыл соединение?



Получаем список соответствия Connection-PID (его, кстати, можно вывести консольной командой netstat). Ищем в нем наш Connection, получаем PID. По PID получаем ID сеанса. По ID сеанса получаем ID пользователя ОС. Такая схема не требует прав администратора, и скорей всего работает во всех ОС. В Windows работает точно, проверили.

У нас уже готов черновой вариант, описывающий архитектуру, где решена проблема сеансовой безопасности крипто-сервиса, на которую вы указали. Намерены с вами поделиться.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
4 Страницы<1234>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.