Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Выдача сертификатов пользователей, шифрование данных

52K
28 февраля 2011 года
ildar323
19 / / 04.02.2010
Добрый день!

Имеется приложение, с которым уже работают определенные пользователи, необходимо осуществить механизм идентификации пользователей приложения:
- для ведения статистики
- некоторые параметры работы программы зависят от некоторых параметров пользователя


Предполагается, что пользователь подключен только к интернет, работает локально, например дома (раньше программа работала без интернет).

- программа должна полно функционально работать и при отсутствии интернета, а при появлении связи с интернет, отправить данные для статистики.
- связь с интернет необходима только для ведения статистики или для сообщения пользовательской программе об изменениях некоторых данных этого клиента
- весь процесс идентификации пользователя программой должен происходить без участия пользователя и не заметно для него (за исключением быть может идентификации в первый раз)
- в локальном компьютере хранится некоторая информация о пользователе (ФИО, должность, контакты, категория пользователя, ...), доступ к информации имеет только программа.

-------------------------------------------------------------------------------
Опыт по данной области отсутствует, есть такие соображения:
1. пользователь запрашивает некий сертификат, сообщая при этом свои данные
2. сертификат пользователю выдается в виде зашифрованного файла со всеми нужными нужными для программы данными и хранится в папке запуска программы например
3. программа дешифрует файл и извлекает оттуда данные

Вопрос:
- какой метод шифрования можно использовать для шифрования небольших файлов с высокой криптоустойчивостю, где тогда ключи хранить, внутри программы что-ли?
- этот способ кажется каким-то древним, какие еще есть другие стандартные способы?
- или лучше все таки, что бы данные на локальном компьютере не хранились, а пользователю выдается какой-нибудь стандартный сертификат, все остальные данные программа получает из интернета по защищенному каналу например?
-------------------------------------------------------------------------------
Если подобный вопрос уже обсуждался, прошу направить на них, а сразу не материть, по форумам искал, ничего нужного не нашел. Заранее спасибо.
277
28 февраля 2011 года
arrjj
1.7K / / 26.01.2011
Соображения верны, для шифрования я бы выбрал rsa или другой ассиметричный алгоритм шифрования.
52K
28 февраля 2011 года
ildar323
19 / / 04.02.2010
Цитата: arrjj
Соображения верны, для шифрования я бы выбрал rsa или другой ассиметричный алгоритм шифрования.


спасибо за ответ

- этот способ не претендует на "это для чайников, лишь бы работало"? у программы все время выходят новые версии и похоже она еще достаточно долго будет поддерживаться, хотелось бы, что бы "сертификация" была изначально "правильной"
- для шифрования небольших файлов (~1кБайт) какой лучше алгоритм использовать? Если rsa для этого хорош, то какие советы по составлению ключа дадите?
- где можно безопасно хранить ключ? Получается один ключ на всех?

277
28 февраля 2011 года
arrjj
1.7K / / 26.01.2011
rsa
при ассиметричном шифровании один ключ открытый, используется для расшифровки, второй ключ "секретный" используется для шифровки открытый ключ можно хранить в программе, закрытый хранится непосредственно у вас и конечным пользователям неизвестен. опасность только одна - подмена ключа в программе на свой собственный, тогда проге можно будет подсунуть свои собственные сертификаты, поэтому ключ в проге хранить не в открытом виде а по какомунибудь простому алгоритму зашифрованый, или использовать программы для защиты(пакеры, крипторы exe).
52K
28 февраля 2011 года
ildar323
19 / / 04.02.2010
спасибо за советы, буду реализовывать
52K
28 февраля 2011 года
ildar323
19 / / 04.02.2010
еще вопрос:
предполагается, что программа будет работать в онлайн режиме в интернет, т.е. у пользователей не будет *.exe программы, они будут заходить на сайт и там работать,
какой способ сертификации в этом случаи можно применить? Для Windows и желательно для *nux систем
11
28 февраля 2011 года
oxotnik333
2.9K / / 03.08.2007
В сторону SLL не смотрели?
52K
28 февраля 2011 года
ildar323
19 / / 04.02.2010
Цитата: oxotnik333
В сторону SLL не смотрели?



пока нет, на данный момент развития приложения, думаю больше подходит предложенный arrjj способ, это я для дальнейшего развития приложения спрашиваю, возможно уже скоро придется переходить в онлайн версию, тогда уже придется новый способ внедрять, что-бы одно и то же два раза не переделывать может лучше сразу TSL внедрять

А TSL?
Такие сертификаты можно самому выписывать?
Разница есть для Windows и *nix ?

277
28 февраля 2011 года
arrjj
1.7K / / 26.01.2011
сертификаты можно выписывать самоподписанные, подписаные центрами сертификации стоят денег.
52K
28 февраля 2011 года
ildar323
19 / / 04.02.2010
Цитата: arrjj
сертификаты можно выписывать самоподписанные, подписаные центрами сертификации стоят денег.



я правильно понимаю: с самоподписанными сертификатами могут быть проблемы, раз она бесплатная?

277
28 февраля 2011 года
arrjj
1.7K / / 26.01.2011
[quote="С хабра:"]
Мне по долгу работы пришлось предостаточно навозиться с самоподписанными SSL-сертификатами: это и разные панели управления, и почта, и серверы приложений. Вообще всего и не вспомнить, в большинстве случаев можно легко обойтись самоподписанными сертификатами, но даже в этих случаях напрягает постоянно импортировать их в браузер(иногда это нетривиально, как например в гугл хром) или почтовый клиент(как Mail App), а если говорить о почте например так там вообще полная засада, если у Вас много пользователей то некоторый процент обязательно позвонит к вам что бы сообщить что у них ошибка «что-то про сертификат». Конечно можно научить юзеров импортировать их, но на много приятней когда вообще ничего выше описанного не происходит.
[/quote]
А вот про SSL-авторизацию сертификатами пользователей статья. Также можно и организовать авторизацию программы через ssl-сертификаты.
52K
28 февраля 2011 года
ildar323
19 / / 04.02.2010
Цитата: arrjj
А вот про SSL-авторизацию сертификатами пользователей статья. Также можно и организовать авторизацию программы через ssl-сертификаты.



спасибо, очень хорошая ссылка

52K
01 марта 2011 года
ildar323
19 / / 04.02.2010
Не возникнет ли ситуация с OpenSSL как с .Net платформой - FrameWork на Windows работает как надо хорошо, моха на Linux уже не так?
11
01 марта 2011 года
oxotnik333
2.9K / / 03.08.2007
Цитата: ildar323
Не возникнет ли ситуация с OpenSSL как с .Net платформой - FrameWork на Windows работает как надо хорошо, моха на Linux уже не так?


не возникнет OpenSSL одинаково хорошо работает на обоих платформах

52K
01 марта 2011 года
ildar323
19 / / 04.02.2010
Цитата: oxotnik333
не возникнет OpenSSL одинаково хорошо работает на обоих платформах



скачал openssl-1.0.0d.tar с официального сайта http://openssl.org/source/openssl-1.0.0d.tar.gz, не совсем понятно как работать, там одни исходники:
- при компиляции они компонуются с программой и все, необходимости установки библиотеки в систему пользователя отпадает?
- как можно осуществить работу с библиотекой в VBA, в Java, в Eclipse?
- каковы преимущества openssl перед CryptoAPI для Windows например?

можно только ссылки

11
01 марта 2011 года
oxotnik333
2.9K / / 03.08.2007
Цитата: ildar323
скачал openssl-1.0.0d.tar с официального сайта http://openssl.org/source/openssl-1.0.0d.tar.gz, не совсем понятно как работать, там одни исходники:
- при компиляции они компонуются с программой и все, необходимости установки библиотеки в систему пользователя отпадает?
- как можно осуществить работу с библиотекой в VBA, в Java, в Eclipse?


Там есть уже и бинарники - инсталяшка, это для пользователей которым лень компилять
Работать как с любой другой сторонней библиотекой - подключил и вызывай нужные ф-ции
Для формирования ключей я пользовался такой командой:

 
Код:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout primary.key -out localSertificate.pem
52K
01 марта 2011 года
ildar323
19 / / 04.02.2010
Цитата: oxotnik333
Там есть уже и бинарники - инсталяшка, это для пользователей которым лень компилять
Работать как с любой другой сторонней библиотекой - подключил и вызывай нужные ф-ции
Для формирования ключей я пользовался такой командой:
 
Код:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout primary.key -out localSertificate.pem



ну спасибо, будем разбираться

52K
01 марта 2011 года
ildar323
19 / / 04.02.2010
Все же хотелось бы получить ответы на вопросы:
- каковы особенности работы с библиотекой в VBA, в Java, в Eclipse?
- каковы преимущества openssl перед CryptoAPI для Windows например?
277
01 марта 2011 года
arrjj
1.7K / / 26.01.2011
Eclipse что именно в эклипс? В эклипс можно писать на java/c++/php/создавать темы для телефонов даже и прочее, эклипс - среда разработки а не язык программирования. В java есть свои готовые методы для создания сертификатов/криптографии и т.д. А вот про VBA ничего сказать не могу.
CryptoAPI только для Windows и может менятся от версии к версии.
52K
01 марта 2011 года
ildar323
19 / / 04.02.2010
Цитата: arrjj
Eclipse что именно в эклипс? В эклипс можно писать на java/c++/php/создавать темы для телефонов даже и прочее, эклипс - среда разработки а не язык программирования. В java есть свои готовые методы для создания сертификатов/криптографии и т.д. А вот про VBA ничего сказать не могу.
CryptoAPI для Windows только и может менятся от версии к версии.



Eclipse я имел ввиду, может быть сама среда разработки Eclipse содержит в себе какие-то дополнительные библиотеки для java/c++/php

52K
01 марта 2011 года
ildar323
19 / / 04.02.2010
Цитата: arrjj
Eclipse что именно в эклипс? В эклипс можно писать на java/c++/php/создавать темы для телефонов даже и прочее, эклипс - среда разработки а не язык программирования. В java есть свои готовые методы для создания сертификатов/криптографии и т.д. А вот про VBA ничего сказать не могу.
CryptoAPI только для Windows и может менятся от версии к версии.



с CryptoAPI все понятно, не стоит пользоваться

277
01 марта 2011 года
arrjj
1.7K / / 26.01.2011
Цитата:
может быть сама среда разработки Eclipse содержит в себе какие-то дополнительные библиотеки


Нет, не содержит.

52K
02 марта 2011 года
ildar323
19 / / 04.02.2010
хорошо, тогда будем разбираться с OpenSSL, спасибо за ответы
52K
02 марта 2011 года
ildar323
19 / / 04.02.2010
пришла идея осуществить посредством полгин-пароля:
- на сервере хранится БД с данными о пользователях
- при первом запуске программы вводится логин-пароль и сервер отсылает программе часть БД идентифицированного пользователя
- при последующих запусках программы наличие интернет соединения не обязательно, программа работает с локальной зашифрованной БД
- в программе имеется возможность в любой момент времени обновить локальную БД введя логин-пароль (можно добавить опцию сохранениея пары логин-пароль для автообновления БД)
- при работе с онлайн версией программы отпадает хранение локальной БД, программа работает напрямую с БД на сервере
(локальную БД можно представить в виде одного небольшого файла ~1кБайт)

что скажете, какие существуют способы реализации данной идеи?
91K
02 июля 2013 года
Ting
1 / / 02.07.2013
Нинада самоподписные сертификаты использовать. Возьмите просто программу для шифрования, поддерживающую работу в качестве Центра Сертификации, и штампуйте серты для всех сотрудников через нее. Самоподписные - это вечная головная боль с интеграцией.
Я в свое время пользовался программой cybersafe. она поддерживает как и все основные алгоритмы шифрования, так и может являться ЦС.
ссылка
Не надо цветов и благодарностей ))
51K
07 июля 2013 года
BagiLR
110 / / 29.06.2013
НЕТ, ПОТОМУ ЧТО IP АДРЕСА ВЫДАЮТСЯ ВСЕГДА ВРЕМЕННЫЕ И ПОТОМ ОБНОВЛЯЮТСЯ КАЖДЫЙ ЧАС!!! МИЛЛИАРДЫ АДРЕСОВ ОТСЛЕДИТЬ ЗА ЧАС НЕРЕАЛЬНО ПОТОМУ ЧТО У СЕРВЕРОВ СВОИХ РАБОТ И ЗАДАЧ ПРИДОСТАТОЧНО!!! Я ПРИВОДИЛ ПРИМЕР С 1024 МБАЙТ СО СКОРОСТЬЮ 1024 МБИТ!!! ТАМ ТЕРЯЕТСЯ 284,5 БАЙТОВ!!! И ОТСЛЕДИТЬ НИКАК НЕВОЗМОЖНО!!!
7
07 июля 2013 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: BagiLR
НЕТ, ПОТОМУ ЧТО IP АДРЕСА ВЫДАЮТСЯ ВСЕГДА ВРЕМЕННЫЕ И ПОТОМ ОБНОВЛЯЮТСЯ КАЖДЫЙ ЧАС!!! МИЛЛИАРДЫ АДРЕСОВ ОТСЛЕДИТЬ ЗА ЧАС НЕРЕАЛЬНО ПОТОМУ ЧТО У СЕРВЕРОВ СВОИХ РАБОТ И ЗАДАЧ ПРИДОСТАТОЧНО!!! Я ПРИВОДИЛ ПРИМЕР С 1024 МБАЙТ СО СКОРОСТЬЮ 1024 МБИТ!!! ТАМ ТЕРЯЕТСЯ 284,5 БАЙТОВ!!! И ОТСЛЕДИТЬ НИКАК НЕВОЗМОЖНО!!!

Товарищ, ты о чём вообще? Это ничего, что твои сообщения ни в какую не вяжутся с логикой темы?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог