Выдача сертификатов пользователей, шифрование данных
Имеется приложение, с которым уже работают определенные пользователи, необходимо осуществить механизм идентификации пользователей приложения:
- для ведения статистики
- некоторые параметры работы программы зависят от некоторых параметров пользователя
Предполагается, что пользователь подключен только к интернет, работает локально, например дома (раньше программа работала без интернет).
- программа должна полно функционально работать и при отсутствии интернета, а при появлении связи с интернет, отправить данные для статистики.
- связь с интернет необходима только для ведения статистики или для сообщения пользовательской программе об изменениях некоторых данных этого клиента
- весь процесс идентификации пользователя программой должен происходить без участия пользователя и не заметно для него (за исключением быть может идентификации в первый раз)
- в локальном компьютере хранится некоторая информация о пользователе (ФИО, должность, контакты, категория пользователя, ...), доступ к информации имеет только программа.
-------------------------------------------------------------------------------
Опыт по данной области отсутствует, есть такие соображения:
1. пользователь запрашивает некий сертификат, сообщая при этом свои данные
2. сертификат пользователю выдается в виде зашифрованного файла со всеми нужными нужными для программы данными и хранится в папке запуска программы например
3. программа дешифрует файл и извлекает оттуда данные
Вопрос:
- какой метод шифрования можно использовать для шифрования небольших файлов с высокой криптоустойчивостю, где тогда ключи хранить, внутри программы что-ли?
- этот способ кажется каким-то древним, какие еще есть другие стандартные способы?
- или лучше все таки, что бы данные на локальном компьютере не хранились, а пользователю выдается какой-нибудь стандартный сертификат, все остальные данные программа получает из интернета по защищенному каналу например?
-------------------------------------------------------------------------------
Если подобный вопрос уже обсуждался, прошу направить на них, а сразу не материть, по форумам искал, ничего нужного не нашел. Заранее спасибо.
спасибо за ответ
- этот способ не претендует на "это для чайников, лишь бы работало"? у программы все время выходят новые версии и похоже она еще достаточно долго будет поддерживаться, хотелось бы, что бы "сертификация" была изначально "правильной"
- для шифрования небольших файлов (~1кБайт) какой лучше алгоритм использовать? Если rsa для этого хорош, то какие советы по составлению ключа дадите?
- где можно безопасно хранить ключ? Получается один ключ на всех?
при ассиметричном шифровании один ключ открытый, используется для расшифровки, второй ключ "секретный" используется для шифровки открытый ключ можно хранить в программе, закрытый хранится непосредственно у вас и конечным пользователям неизвестен. опасность только одна - подмена ключа в программе на свой собственный, тогда проге можно будет подсунуть свои собственные сертификаты, поэтому ключ в проге хранить не в открытом виде а по какомунибудь простому алгоритму зашифрованый, или использовать программы для защиты(пакеры, крипторы exe).
предполагается, что программа будет работать в онлайн режиме в интернет, т.е. у пользователей не будет *.exe программы, они будут заходить на сайт и там работать,
какой способ сертификации в этом случаи можно применить? Для Windows и желательно для *nux систем
пока нет, на данный момент развития приложения, думаю больше подходит предложенный arrjj способ, это я для дальнейшего развития приложения спрашиваю, возможно уже скоро придется переходить в онлайн версию, тогда уже придется новый способ внедрять, что-бы одно и то же два раза не переделывать может лучше сразу TSL внедрять
А TSL?
Такие сертификаты можно самому выписывать?
Разница есть для Windows и *nix ?
я правильно понимаю: с самоподписанными сертификатами могут быть проблемы, раз она бесплатная?
Мне по долгу работы пришлось предостаточно навозиться с самоподписанными SSL-сертификатами: это и разные панели управления, и почта, и серверы приложений. Вообще всего и не вспомнить, в большинстве случаев можно легко обойтись самоподписанными сертификатами, но даже в этих случаях напрягает постоянно импортировать их в браузер(иногда это нетривиально, как например в гугл хром) или почтовый клиент(как Mail App), а если говорить о почте например так там вообще полная засада, если у Вас много пользователей то некоторый процент обязательно позвонит к вам что бы сообщить что у них ошибка «что-то про сертификат». Конечно можно научить юзеров импортировать их, но на много приятней когда вообще ничего выше описанного не происходит.
[/quote]
А вот про SSL-авторизацию сертификатами пользователей статья. Также можно и организовать авторизацию программы через ssl-сертификаты.
не возникнет OpenSSL одинаково хорошо работает на обоих платформах
скачал openssl-1.0.0d.tar с официального сайта http://openssl.org/source/openssl-1.0.0d.tar.gz, не совсем понятно как работать, там одни исходники:
- при компиляции они компонуются с программой и все, необходимости установки библиотеки в систему пользователя отпадает?
- как можно осуществить работу с библиотекой в VBA, в Java, в Eclipse?
- каковы преимущества openssl перед CryptoAPI для Windows например?
можно только ссылки
- при компиляции они компонуются с программой и все, необходимости установки библиотеки в систему пользователя отпадает?
- как можно осуществить работу с библиотекой в VBA, в Java, в Eclipse?
Там есть уже и бинарники - инсталяшка, это для пользователей которым лень компилять
Работать как с любой другой сторонней библиотекой - подключил и вызывай нужные ф-ции
Для формирования ключей я пользовался такой командой:
Работать как с любой другой сторонней библиотекой - подключил и вызывай нужные ф-ции
Для формирования ключей я пользовался такой командой:
ну спасибо, будем разбираться
- каковы особенности работы с библиотекой в VBA, в Java, в Eclipse?
- каковы преимущества openssl перед CryptoAPI для Windows например?
CryptoAPI только для Windows и может менятся от версии к версии.
CryptoAPI для Windows только и может менятся от версии к версии.
Eclipse я имел ввиду, может быть сама среда разработки Eclipse содержит в себе какие-то дополнительные библиотеки для java/c++/php
CryptoAPI только для Windows и может менятся от версии к версии.
с CryptoAPI все понятно, не стоит пользоваться
Нет, не содержит.
- на сервере хранится БД с данными о пользователях
- при первом запуске программы вводится логин-пароль и сервер отсылает программе часть БД идентифицированного пользователя
- при последующих запусках программы наличие интернет соединения не обязательно, программа работает с локальной зашифрованной БД
- в программе имеется возможность в любой момент времени обновить локальную БД введя логин-пароль (можно добавить опцию сохранениея пары логин-пароль для автообновления БД)
- при работе с онлайн версией программы отпадает хранение локальной БД, программа работает напрямую с БД на сервере
(локальную БД можно представить в виде одного небольшого файла ~1кБайт)
что скажете, какие существуют способы реализации данной идеи?
Я в свое время пользовался программой cybersafe. она поддерживает как и все основные алгоритмы шифрования, так и может являться ЦС.
ссылка
Не надо цветов и благодарностей ))
Товарищ, ты о чём вообще? Это ничего, что твои сообщения ни в какую не вяжутся с логикой темы?