20.11.2006 21:59:19CryptoPro 3.0 и терминальный доступ Ответов: 34
Виталий
Пытаюсь использовать КриптоПро на терминальном сервере (Windows 2000+ Citrix 1.8) - результат сильно удивил.
Во-первых идет обращение к дисководу сервера, а не к локальному дисководу клиента, который автоматически подключает Citrix.
Во-вторых все диалоги отображаются на консоль, а не в терминальную сессию - генератор случайных чисел, сохранению сертификатов. Выглядит забавно - жмем "сохранить сертификат", потом идем к серверу и делаем остальное.

Можно ли с этим что-то сделать?
 
Ответы:
21.11.2006 10:09:38Kirill Sobolev
http://www.cryptopro.ru/cryptopro/forum/view.asp?q=2390
21.11.2006 11:01:05Виталий
2 Kirill Sobolev:
Почитал тему по Вашей ссылке и ответов на свои вопросы не нашел.
Во-первых программа не просто отказывается читать локальный дисковод, а лезет на дисковод сервера т.е. дело не в том, что он сетевой, а идет обращение минуя терминальную подсистему. Кстати, разработчики вполне могли бы игнорировать признак Removeble при работе в терминале, когда диск называется А и имеет характерный для дискеты обьем.
Во-вторых нет ответа на вопрос о локально выводимых диалогах - даже при отсутсвии аппартных считывающих устройств (биологический ДСЧ и реестр) работать невозможно.
21.11.2006 12:27:30Василий
По поводу дисководов.
Флешка, например, может не называться А и иметь большой объём (например, 8 ГБ).
Тем не менее, она может использоваться как считыватель. Признаком является именно то, что носитель съёмный, а не сетевой.

Далее. CSP работает на сервере. Умеет или не умеет сервер прокидывать локальные окошки в терминальную сессию - зависит от вида терминального сервера. Например, radmin умеет.

Для более нового софта - Win2003 и Citrix Access Suite 4 - для хранения ключей можно использовать смарткарты и етокены, которые подключаются к компьютеру клиента и пробрасываются на сервер.

23.11.2006 13:13:31Виталий
>По поводу дисководов.
>Флешка, например, может не называться А и
>иметь большой объём (например, 8 ГБ).
>Тем не менее, она может использоваться как
>считыватель. Признаком является именно то,
>что носитель съёмный, а не сетевой.

Флешка - это уже роскошь, хотелось бы заставить работать хотябы банальный дисковод в терминальном режиме.
Мое предложение на тот случай, когда прочитать признак "съемное" невозможно.

>Далее. CSP работает на сервере. Умеет или >не умеет сервер прокидывать локальные окошки
>в терминальную сессию - зависит от вида терминального сервера.

Терминальный сервер W2000 умеет прокидывать окошки абсолютно всех приложений которыя я до сих пор встречал, в т.ч. и криптографические (Dipost производства Фактор-ТС).
Если все приложения работают нормально, а одно единственное глючит, то Вы не находите, что дело именно в этом приложении.
Кстати, если не ошибаюсь, нормальная работа в терминальном режиме является обязательным требованием при сертификации приложений на совместимость с W2K и старше, КриптоПро имеет сертификат Microsoft?
> Например, radmin умеет.

Для справки - radmin не служба терминального доступа, а утилита для доступа к удаленному работчему столу. Она не открывает отдельных пользовательских сеансов.

>Для более нового софта - Win2003 и Citrix
>Access Suite 4 - для хранения ключей можно
>использовать смарткарты и етокены, которые
>подключаются к компьютеру клиента и
>пробрасываются на сервер.

Вы уверены, что дело именно в старости Win2000? Т.е. смарткарты под Win2003 работают, а под Win2000 нет? Интересно, они пользовательские диалоги используют? И эти диалоги корректно передаются в пользовательских сеанс?
Если так, то почему разработчки не считают нужным корректно передать диалоги модулей работы с реестром и биологического ДСЧ?
23.11.2006 22:10:37Виталий
Разработчики, дайте пожалуйста четкий ответ - признаете ли вы ошибками некорректное поведение модулей биологического ДСЧ и хранения ключей в реестре (вывод сообщений на консоль,а не в терминальную сессию?
Если да, то как скоро эти ошибки планируется устранить?
Если нет, то правомерно ли, по вашему мнению, декларировать совместимость с Windows 2000?
24.11.2006 12:15:06Василий
Нет.
А ещё скажите, в каком документе на КриптоПро CSP написано, что он работает в рамках терминальной сессии?

А по поводу окошек. Видел сам на машине без КриптоПро CSP. Установлен MS CA с ключами на eToken (провайдер родной, алгоритм RSA). Подключаемся по RDP, рестартуем MS CA - ни фига нет окошка ввода ПИНа. Более того, его нет и локально. Служба находится в состоянии "запускается". Лечится только перезагрузкой.
24.11.2006 12:39:37Виталий
Это можно считать официальным ответом? Я в этом форуме недавно, Вы Василий сотрудник КриптоПро?
Про совместимость - в книге Т.Мазерса "Аритектура "тонкого" клиента" сказано, что поддержка работы в терминальном режиме является обязательным требованием Microsoft для получения сертификата о совместимости начиная с W2K. Я понимаю, что цитата из книги не очень веский аргумент, если он Вас не убедил, то постараюсь найти первоисточник - материалы Microsoft.
Если посмотреть на вопрос не с формальной стороны (не обязаны - вот и не делаем), то почему КриптоПро не хочет пойти на встречу пользователям? Кто проиграет от того, что работа с программой станет более удобной?
24.11.2006 14:03:30Kirill Sobolev
Хороший вопрос :)))))
"Почему надо покупать 100 лицензий для каждого рабочего места вместо того, чтобы купить 1 такую же лицензию для сервера и дать туда доступ 100 пользователям?"
Кстати - как обеспечивается секретность данных, передаваемых в терминальной сессии?
24.11.2006 14:47:35Виталий
Вопрос с лицензиями можно решить цивилизовно - одна лицензия на один пользовательский сеанс.
Добавьте в КриптоПро возможность устанавливать несколько лицензий одновременно.
Почитайте, например, лицензионное соглашение 1С 8.0 или техническую реализацию в ключах HASP - терминальная сессия считается за пользователя.
Если я правильно понял - вопрос лицензирования единственная проблема? Т.е. с технической т.з. реализовать корректную передачу диалогов Вы можете?
24.11.2006 14:59:40Kirill Sobolev
Нет, вопрос в том что я написал - в секретности данных.
24.11.2006 15:36:53Виталий
Не понял, причем тут секретность.
Допустим, с тем что ключевой носитель стоит локально - дело ТОЛЬКО в корректой отрисовке диалогов, их нужно передать в терминальную сессию а не консоль сервера.
24.11.2006 15:49:20Kirill Sobolev
Я видимо не до конца понимаю что такое "терминальная сессия". Поясните пожалуйста - означает ли это, что секретный ключ считывается локально (с дискеты, флешки и т.д.), а вся криптография - ЭЦП и расшифрование - происходит удаленно, на сервере, затем пользователю в той же сессии возвращается результат.
24.11.2006 16:04:45Виталий
Чтобы не было путаницы давайте определимся с терминами.
Локально - это у клиента (диски и экран).
В терминальной сессии - выполнение происходит на сервере, но все диалоги видны у клиента.
На консоли - выполнение и диалоги видны на сервере.

Сейчас происходит так - криптография корректно работает в терминальной сессии, но при обращении к модулям, где есть диалоги их отображение идет на консоль сервера.
Если модули криптографии работают со съемными носителями, то читается носитель, физически подключенный к серверу. С этим можно смириться (воткнуть дискету или флешку на сервер), но хочется чтобы можно было работать с автоматически подключаемыми дисками клиента, которые подключаются к серверу.
24.11.2006 16:09:03Kirill Sobolev
Значит вопрос в следующем - как в терминальной сессии секретный ключ, считанный с носителя на локальной машине попадает к КриптоПро CSP на сервере?
24.11.2006 16:53:57Виталий
Средствами Citrix дисковод сервера (если обращаться к нему не на низком уровне) заменяется на локальный дисковод пользователя автоматически. Т.е. при работе в терминальной сессии видим а как "A$ on Client" т.е. как сетевой диск.
Только прошу не валить все в одну кучу. Сейчас есть 2 проблемы - а) невозможность работы с сетевым диском, как с ключевым носителем б) некорректная отрисовка диалогов.
Если Вы не готовы решить проблему а), то решите, пожалуйста, хотябы б) - так уже можно будет хоть как-то работать.
24.11.2006 17:35:55Kirill Sobolev
А проблему передачи в открытом виде секретного ключа от клиента к серверу и обратно Вы не рассматриваете?
24.11.2006 17:58:50Виталий
Citrix (протокол ICA) умеет кодировать весь передаваемый поток, про RDP точно не знаю.
И п. б) ведь это никак не касается?
25.11.2006 21:33:57Василий
На сервере какая установлена сборка КриптоПро CSP 3.0 - КС1 или КС2?
26.11.2006 13:07:45Виталий
КС2 - та, которую дал Такском.
Но насколько я понял, в моей ситуации (без аппаратных ключей) можно обойтись КС1.
Кстати, в ссыке которую Вы дали идет речь о ключах, которые корректно работают в терминале. Интересно, они не используют экранных диалогов и не передают по сети ключи в открытом виде?
26.11.2006 18:45:11Василий
Посмотрите как будет (отосительно окошек), если поставить КС1 на сервере.
В КС1 и 2 функции доступа к контейнерам вызываются по-разному.
27.11.2006 6:14:05Vadim_K
Очень интересный у вас тут диалог нарисовался! Позвольте подключиться. Тоже стоит задача скрестить 2003 терминальный сервер и CP CSP.

C одной стороны Kirill Sobolev пишет:

> А проблему передачи в открытом виде секретного ключа от клиента к серверу и обратно Вы не рассматриваете?

С другой стороны во ссылку выше Василий пишет:

> Существующее сейчас решение позволяет использовать смарткарты и етокены.

А что, считанные со смарткарт и токенов секретные ключи передаются к серверу как-то иначе?

А по поводу того, что диалог, начавшейся в терминальной сессии клиента, продолжается на консоли терминального сервера - это IMHO большой косяк. Даже не зняю, как к клиенту с такой новостью идти... Виталий, вы ещё не пробовали КС1?
27.11.2006 12:21:58Kirill Sobolev
А у нас на форуме все диалоги интересные :)
Кодирование ICA - SecureICA я так понимаю - использует наверняка буржуйские алгортимы, что-нибудь типа RC4, да возможно еще и ключ получается из пароля. Вот только как там происходит аутентификация не знаю.
Возможно, токены и смарткарты работают по другому, это все-таки более защищенная вещь чем дискета.
27.11.2006 12:40:51Василий
Вадим, смарткарты и етокены пробрасываются с клиентского компьютера в терминальную сессию при использовании специальной технологии (с участием стойкого, как говорят, шифрования, но, конечно, не на ГОСТ-овом алгоритме). Подробности лучше спросить у производителя данного оборудования - www.aladdin.ru

По поводу окошек. Ещё раз повторю, поведение зависит от:
- версии ОС (в т.ч. сервиспак) на сервере
- версии ПО для терминального доступа
- версии CSP 3.0 на сервере - КС1 или КС2
- какие ключевые носители
- какая прикладная программа использует ключи

Пример.
Сервер - Win 2003 SP1, CSP 3.0 KC1
Клиент - Win XP с RDP-клиентом для терминального доступа (msrdpcli.msi от Win 2003 SP1)
Подключаемся.
Есть два режима
1) с проверкой подлинности сервера и шифрованием всего трафика терминальной сессии по алгоритму ГОСТ
2) без этого
Далее запускаем приложение, выполняющее подпись (например, КриптоАРМ). Окошки для доступа к контейнеру на клиенте.

Примечание. Для обеспечения режима 1 на сервере дополнительно нужно:
- ПО "КриптоПро WinLogon"
- сертификат проверки подлинности сервера с алгоритмом ГОСТ, выбранный в "Настройках служб терминалов"


27.11.2006 13:13:18Василий
Уточнение.
Для режима 1, конечно же, и на клиенте нужно установить КриптоПро CSP 3.0 или КриптоПро CSP+КриптоПро TLS 2.0.
28.11.2006 1:31:41Виталий
Попробовал КС1 3.0 и 3.6beta - работает!
Диалоги отрисовываются на клиенте.
W2K+Citrix 1.8 на сервере, WinXP+ICA клиент.
Еще бы решить вопрос с хранением ключей на несъемных дисках и я оставлю саппорт в покое :)
28.11.2006 10:53:08Василий
> Еще бы решить вопрос с хранением ключей на несъемных дисках
Обращайтесь к руководству КриптоПро, заключайте договор на доработку CSP, оплачивайте его - тогда и сделаем.
28.11.2006 13:19:23Виталий
>Обращайтесь к руководству КриптоПро, заключайте договор на доработку CSP, оплачивайте его - тогда и сделаем

Вы же писали, что модуль доступа к несъемному носителю УЖЕ существует. Дорабатывать ничего не нужно, нужно лишь дать готовую DLL.
28.11.2006 17:38:48Виталий
Рано я обрадовался - с КС1 вылезла неприятность, он не видит локального дисковода на сервере. Точнее видит, но только если отключить сетевой диск А:
Получается что драйвер ключа обращается к дисководу не напрямую как КС2, а из терминальной сессии, а в терминальной сессии дисковод заменен на пользовательский, который не имеет признака "съемный".
Результат - индейская изба, ключи нельзя держать ни на локальном дисководе ни на серверном.
29.11.2006 8:06:53Vadim_K
Виталий, у вас же w2k сервер, а не w2k3. Может вам перейти на CSP 2.0? Правда при этом ключи, сделанные на 3.0 имеют права не работать, их надо будет переделывать...
29.11.2006 10:32:17Василий
> он не видит локального дисковода на сервере
Имя локального дисковода на сервере (Цитрикс, кстати, предлагает его заменить на другую букву, не А) должно совпадать с именем дисковода, настроенного в панели КриптоПро CSP - Оборудование - Настроить считыватели.
29.11.2006 12:44:26Виталий
Нет, цитрикс, по крайней мере 1.8 меняет А именно на А, в этом и вся проблема.
Можно отключить подключение локальных дисков, но только сразу всех, что совсем не удобно.
20.12.2006 14:55:33Дмитрий
У меня аналогичная проблема с Windows 2003 / MS Terminal. Диалог создания и выбора ключа появляется на консоли вместо сеанса клиента. К тому же нет возможности использовать дисководы клиентов для хранения ключей.
20.12.2006 15:47:23Василий
Аналогичная проблема - аналогичное решение.
Если на сервере КриптоПро CSP 3.0, то надо использовать КС1.
Дисководы клиентов использовать не получится, т.к. в терминальной сессии они подключаются как сетевые диски.
20.12.2006 16:23:52Дмитрий
Спасибо за совет! В комплекте с софтом, для которого нужна КриптоПро, была только сборка КС2. Я скачал с сайта полный дистрибутив и это помогло.