Задать вопрос
kAIST
@kAIST

Шифрование данных в программе

Понадобилось прикрутить шифрование к программе. Почитал немного по этой теме.
Насколько я понял, подходит шифрование с закрытым ключом. Пароль пользователя будет являться закрытым ключом, на основе которого будут расшифровываться данные. Это понравилось мне тем, что при таком подходе не понадобится хранить пароль.
Но появилась проблема: пользователей несколько, соответственно пароли разные, а доступ нужен к общим данным.
Что можно сделать в этом случае?
  • Вопрос задан
  • 3074 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
olololog
@olololog
Шифровать данные с помощью единого ключа, а ключ шифровать для каждого пользователя его паролем. Таким образом, каждый пароль открывает доступ к зашифрованным данным и компроментация одного пароля не затрагивает остальные _пароли_. Впрочем, зашифрованные данные можно скомпроментировать, имея любой из паролей.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Disasm
Разделить данные на общие и приватные. Ключ от общих данных хранить в приватных данных каждого юзара, а ключ от приватных данных генерировать на основе пароля юзера.
Ответ написан
Комментировать
@codecity
>>Пароль пользователя будет являться закрытым ключом, на основе которого будут расшифровываться данные.

Уточнение.

Закрытый ключ — это термин асимметричной криптографии. Пароль не может быть закрытым ключом. Есть 2 основных алгоритма асимметричной криптографии: RSA и DSA (DSA есть для эллиптических кривых, ECDSA). Ни в одном из них нельзя использовать пароль в качестве закрытого ключа.

Хотя… меня сейчас осенила грандиозная идея — генерировать p и q (все время одинаковые) по паролю — тогда не нужно хранить закрытый ключ. Пошел думать эту мысль…
Ответ написан
Комментировать
@agul
А хранить все пароли в одном месте (базы данных, например) можно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы