Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Web API как альтернатива плагинам
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,211   Сказал «Спасибо»: 622 раз Поблагодарили: 2399 раз в 1888 постах
|
Автор: dizel3d  Автор: Смирнов  Автор: basid  Для локального приложения - вообще не проблема. Поделитесь секретом. Приложение получает входящий HTTP-запрос без аутентификации. Оно знает, что соединение открыто с того же компьютера. Как понять какой пользователь открыл соединение? Получаем список соответствия Connection-PID ( его, кстати, можно вывести консольной командой netstat). Ищем в нем наш Connection, получаем PID. По PID получаем ID сеанса. По ID сеанса получаем ID пользователя ОС. Такая схема не требует прав администратора, и скорей всего работает во всех ОС. В Windows работает точно, проверили. У нас уже готов черновой вариант, описывающий архитектуру, где решена проблема сеансовой безопасности крипто-сервиса, на которую вы указали. Намерены с вами поделиться. Можно пример? netstat мне показывает имя пк и локальный порт. Не заметил PID. |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,211   Сказал «Спасибо»: 622 раз Поблагодарили: 2399 раз в 1888 постах
|
Автор: Андрей *  Автор: dizel3d  Автор: Смирнов  Автор: basid  Для локального приложения - вообще не проблема. Поделитесь секретом. Приложение получает входящий HTTP-запрос без аутентификации. Оно знает, что соединение открыто с того же компьютера. Как понять какой пользователь открыл соединение? Получаем список соответствия Connection-PID ( его, кстати, можно вывести консольной командой netstat). Ищем в нем наш Connection, получаем PID. По PID получаем ID сеанса. По ID сеанса получаем ID пользователя ОС. Такая схема не требует прав администратора, и скорей всего работает во всех ОС. В Windows работает точно, проверили. У нас уже готов черновой вариант, описывающий архитектуру, где решена проблема сеансовой безопасности крипто-сервиса, на которую вы указали. Намерены с вами поделиться. Можно пример? netstat мне показывает имя пк и локальный порт. Не заметил PID. Вопрос снят, параметр -o отображает PID. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.10.2015(UTC) Сообщений: 17  Откуда: Москва Сказал(а) «Спасибо»: 8 раз
|
Автор: Андрей *  Автор: dizel3d  Автор: Смирнов  Автор: basid  Для локального приложения - вообще не проблема. Поделитесь секретом. Приложение получает входящий HTTP-запрос без аутентификации. Оно знает, что соединение открыто с того же компьютера. Как понять какой пользователь открыл соединение? Получаем список соответствия Connection-PID ( его, кстати, можно вывести консольной командой netstat). Ищем в нем наш Connection, получаем PID. По PID получаем ID сеанса. По ID сеанса получаем ID пользователя ОС. Такая схема не требует прав администратора, и скорей всего работает во всех ОС. В Windows работает точно, проверили. У нас уже готов черновой вариант, описывающий архитектуру, где решена проблема сеансовой безопасности крипто-сервиса, на которую вы указали. Намерены с вами поделиться. Можно пример? netstat мне показывает имя пк и локальный порт. Не заметил PID. netstat -o для Windows netstat -p для Linux Но из приложения все на системных вызовах будет, конечно.
|
|
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Автор: dizel3d  Получаем список соответствия Connection-PID (его, кстати, можно вывести консольной командой netstat). Ищем в нем наш Connection, получаем PID. По PID получаем ID сеанса. По ID сеанса получаем ID пользователя ОС. Такая схема не требует прав администратора, и скорей всего работает во всех ОС. В Windows работает точно, проверили. А что если процесс в сеансе запущен от имени другого пользователя? А что если в момент обращения к сервису подписания поток имперсонирован под другого пользователя? |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.10.2015(UTC) Сообщений: 17  Откуда: Москва Сказал(а) «Спасибо»: 8 раз
|
Автор: Смирнов  Автор: dizel3d  Получаем список соответствия Connection-PID (его, кстати, можно вывести консольной командой netstat). Ищем в нем наш Connection, получаем PID. По PID получаем ID сеанса. По ID сеанса получаем ID пользователя ОС. Такая схема не требует прав администратора, и скорей всего работает во всех ОС. В Windows работает точно, проверили. А что если процесс в сеансе запущен от имени другого пользователя? А что если в момент обращения к сервису подписания поток имперсонирован под другого пользователя? Мы рассматриваем вопрос "крипто-сервис как альтернатива плагинам". Если бразуер запущен от USER_1, плагин тоже не сможет получить доступ к сертификатам USER_2. Но в общем можно включить в крипто-сервис такую настройку: "пользователи, которым также можно доверять".
|
|
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Автор: dizel3d  Мы рассматриваем вопрос "крипто-сервис как альтернатива плагинам". Если бразуер запущен от USER_1, плагин тоже не сможет получить доступ к сертификатам USER_2. Но в общем можно включить в крипто-сервис такую настройку: "пользователи, которым также можно доверять". И всё-таки. А что если браузер в сессии USER_1 запущен от имени USER_2? |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.10.2015(UTC) Сообщений: 17  Откуда: Москва Сказал(а) «Спасибо»: 8 раз
|
Автор: Смирнов  Автор: dizel3d  Мы рассматриваем вопрос "крипто-сервис как альтернатива плагинам". Если бразуер запущен от USER_1, плагин тоже не сможет получить доступ к сертификатам USER_2. Но в общем можно включить в крипто-сервис такую настройку: "пользователи, которым также можно доверять". И всё-таки. А что если браузер в сессии USER_1 запущен от имени USER_2? На мой взгляд это очень редкий use-case. Пользователю придется запустить еще один крипто-сервис от имени USER_2. И, опережая ваш вопрос: да, обратиться к обоим экземплярам крипто-сервиса можно будет через один и тот же порт. Об этой схеме мы раскажем чуть позже, хотим сами еще раз пристально взглянуть на нее. =) Отредактировано пользователем 5 ноября 2015 г. 11:25:08(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Автор: dizel3d  Автор: Смирнов  И всё-таки. А что если браузер в сессии USER_1 запущен от имени USER_2?
На мой взгляд это очень редкий use-case. Пользователю придется запустить еще один крипто-сервис от имени USER_2. Конечно, use case редкий, но ответ на этот вопрос напрямую влияет на безопасность решения. Т.е. по-хорошему вам придётся помимо сессии вызывающего процесса определять ещё и id пользователя, от которого этот процесс запущен. Затем закономерно возникает следующий вопрос. Вы будете пытаться определить браузер к вам обращается или нет? А если не браузер, то как быть с тем, что заголовок Origin может быть подделан? |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.10.2015(UTC) Сообщений: 17  Откуда: Москва Сказал(а) «Спасибо»: 8 раз
|
Автор: Смирнов  Конечно, use case редкий, но ответ на этот вопрос напрямую влияет на безопасность решения. Т.е. по-хорошему вам придётся помимо сессии вызывающего процесса определять ещё и id пользователя, от которого этот процесс запущен.
Уточнил у коллеги, который нашел решение. "сессия" в данном случае не "сессия ОС", а SID (Security ID). По нему получаем User ID конкретного процесса. Проверили. Автор: Смирнов  Затем закономерно возникает следующий вопрос. Вы будете пытаться определить браузер к вам обращается или нет? А если не браузер, то как быть с тем, что заголовок Origin может быть подделан?
Нет, неважно какой процесс запрашивает доступ (браузер или нет), главное, что он запущен от доверенного пользователя. Если это не браузер, а софт злоумышленника, запущенный из под доверенного пользователя, то зачем ему крипто-сервис, он ведь может обратиться к КриптоПРО непосредственно, используя КриптоПро SDK, или воспользоваться плагином к браузеру.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.10.2015(UTC) Сообщений: 17  Откуда: Москва Сказал(а) «Спасибо»: 8 раз
|
Попытаюсь подвести итоги дискуссии. Вот, что мы имеем https://drive.google.com...f-H7VXdCeFd5cFQ3ckE/view (гиперссылки по PDF из браузера могут не работать). В документе приведены 2 похожих решения. (Если у кого-то остались вопросы, постараемся ответить/решить, дополнив FAQ.) Любое из них, на наш (IT Global) взгляд, может стать лучшей альтернативой браузерным плагинам. Согласны?
|
|
|
|
|
|
Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Web API как альтернатива плагинам
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close