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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Василий Пряниковъ  
#1 Оставлено : 1 июля 2008 г. 16:36:26(UTC)
Василий Пряниковъ

Статус: Новичок

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

В силу скромного опыта в вопросах защиты, хочу попросить совета у профессионалов в этой области в следующей ситуации.

Имеется некий программный продукт, а точнее определенная функция в программном продукте, которая активируется при определенных условиях. Какие это условия - не столь важно. Важно то, что нужно предусмотреть "черный ход" для использования данной функции даже при несоблюдении этих "определенных условий". И, желательно, чтобы рядовой пользователь ПО даже не догадывался о наличии этого "черного хода".
Возникла идея реализовать эту возможность по следующей схеме: где-то в программе "прошить" нечто зашифрованное определенным открытым ключом. Вместе с этим "нечто зашифрованным" в программе будет храниться соответствующий открытый ключ. Для того чтобы активировать защищенную функцию, программа должна расшифровать то самое "нечто зашифрованное" используя, естественно, соответствующий закрытый ключ. И если это удастся сделать, то "разблокировывать" защищенную функцию. Перед тем как пытаться использовать "черных ход" программа будет анализировать сертификаты, зарегистрированные в системном хранилище личных сертификатов, и искать сертификат с открытым ключом, который "прошит" в программе. Если такой сертификат будет найден и с ним будет связан закрытый ключ, то программа будет пытаться расшифровать зашифрованное содержимое, и, если это удалось, то активизирует защищенную функцию.
Соответственно, те пользователи, в хранилище личных сертификатов которых не зарегистрирован сертификат с открытым ключом, которым зашифровано содержимое, «ничего не почувствуют», а те, у которых такой сертификат зарегистрирован - получат возможность воспользоваться защищенной функцией, если владеют соответствующим закрытым ключом.

И, кажется, есть программная возможность не проверять подлинность сертификата УЦ, выдавшего сертификат, на который все завязано в этой схеме. Даже не регистрировать его на том компьютере, на котором предполагается использовать "черный ход".

Собственно, просьба оценить приведенную схему, прокомментировать, посоветовать как ее можно улучшить.
Offline Kirill Sobolev  
#2 Оставлено : 1 июля 2008 г. 17:52:39(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Т.е. условие активации - просто наличие сертификата с секретным ключем, который соответствует данному ОК? А когда сертификат истечет, что будет?
Техническую поддержку оказываем тут
Наша база знаний
Offline Василий Пряниковъ  
#3 Оставлено : 1 июля 2008 г. 18:34:21(UTC)
Василий Пряниковъ

Статус: Новичок

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

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

Отредактировано пользователем 1 июля 2008 г. 18:41:23(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#4 Оставлено : 1 июля 2008 г. 18:57:07(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Ну хорошо, спрошу по другому - если человек, который в теории имеет возможность воспользоваться черным ходом, свой секретный ключ потерял - что делать с прошитыми в программу данными?
Техническую поддержку оказываем тут
Наша база знаний
Offline Василий Пряниковъ  
#5 Оставлено : 1 июля 2008 г. 19:08:08(UTC)
Василий Пряниковъ

Статус: Новичок

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

В первом посте не упомянул, но "черный ход" нужен для нас (разработчиков): с помощью него мы будем тестировать ПО, иначе тестирование значительно усложнится и удлинится. А зашифрованные данные, "прошитые" в программу, - несущетсвенная информация, "мусор". Я сомневаюсь, что мы можем потерять свой закрытый ключ, но если даже это произойдет, то мы просто выпустим ПО с "мусором" под новые ключи.
Offline Kirill Sobolev  
#6 Оставлено : 1 июля 2008 г. 20:49:51(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Понятно. Я думаю, можно не возиться с шифрованием/расшифрованием - достаточно просто проверить наличие сертификата с соответствующим секретным ключем.
Техническую поддержку оказываем тут
Наша база знаний
Offline Василий Пряниковъ  
#7 Оставлено : 1 июля 2008 г. 21:15:11(UTC)
Василий Пряниковъ

Статус: Новичок

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

А можно определить по имеющимся открытому и закрытому ключам, соответствует ли открытый закрытому или нет? Такая возможность есть в CryptoAPI? Если да, то логичнее сделать так. Спасибо за идею!
Offline Kirill Sobolev  
#8 Оставлено : 1 июля 2008 г. 21:25:54(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
По контейнеру секретного ключа можно получить открытый с помощью функции CryptExportPublicKeyInfoEx, затем сравнить с имеющимся CertComparePublicKeyInfo. А можно подписать какие-нибудь случайные данные секретным ключем, потом проверить открытым.
Техническую поддержку оказываем тут
Наша база знаний
Offline Василий Пряниковъ  
#9 Оставлено : 1 июля 2008 г. 21:47:32(UTC)
Василий Пряниковъ

Статус: Новичок

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

Спасибо за пояснения.
А правильно ли будет в такой схеме защиты использовать ключи, полученные здесь: http://www.cryptopro.ru/certsrv/ ?
Ведь от этого защита, по идее, не должна пострадать.
И при этом нет необходимости проверять валидность сертификата, верно? Кажется, что достаточно убедиться, что закрытый ключ соответствует прошитому в программе открытому, а то что сертификат валиден - мы не сомневаемся, ведь он наш.

Дописка: хотя, по пункту 1 наверное погорячился: на главной странице "Тестового центра сертификации" сказано, что "...Центр предназначен только для целей тестирования криптопровайдера КриптоПро CSP и не должен использоваться для других целей".

Отредактировано пользователем 1 июля 2008 г. 21:52:37(UTC)  | Причина: Не указана

Offline Pavluxa  
#10 Оставлено : 4 июля 2008 г. 2:17:43(UTC)
Pavluxa

Статус: Новичок

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

Помогите пожалуйста!
Что делать если при вызове функции
CryptAcquireContext(@hProv, cont, nil, 75, CRYPT_NEWKEYSET);

крипто про 3.0 КС1 выдает окно с надписью вставьте чистый ключевой носитель (окно содержит только кнопку Отмена)
В системе установлен считыватель - реестр

контейнер при этом не создается, хотя функция возвращает true
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.