Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Нужен совет по ассиметрии, плиз! 09.01.02 15:23 Число просмотров: 1702
Автор: Artik Статус: Незарегистрированный пользователь
|
> > Дело в том, что если шифровать с помощью RSA ключ AES, > > то не получиться разграничить доступ по чтению и изменению > > данных, в чем собственно и задача. Так, получив один раз > > открытый ключ AES можно им тут же и читать и писать.
> ключ AES - это сеансовый ключ и нигде не хранится.
Если я правильно понял, ты предлагал сделать так:
Зашифрование:
1) AESKey=RND
2) block=AESencrypt(block,AESKey)
3) AESKey=RSAencrypt(AESKey,WriteKey)
Результат зашифрования есть совокупность зашифрованного блока данных и зашифрованного сеансового ключа {block,AESKey}
Расшифрование:
1) AESKey=RSAdecrypt(AESKey,ReadKey)
2) block=AESdecrypt(block,AESKey)
Так вот, проблема в следующем:
Злобный Юзер, желая изменить данные, и не имея при этом ключа WriteKey прочитает зашифрованные данные, изменит их произвольным образом и запишет, используя старый ключ AESKey, вместо того, что бы генерить новый. Все будет выглядеть так, как будто так все и было.
Может я что не так понял, но тогда что ты предлагал?
> Заполучить его можно только внедрив в систему свой > исполняемый код. Кто может внедрить в систему свой код, > может перехватывать все твои ключи на раз плюнуть и > соответственно к криптографии этот вопрос уже не имеет > никакого отношения. Сервер должен быть защищен.
Ну это-то понятно. Речь идет исключительно о криптографической стороне дела.
<----- новая схема skipped----->
> да, приведенная схема вроде корректна. > > А теперь самый интересный момент - как ты будешь вручать > ключ ReadKey юзерам.
Я хочу сделать так:
1) Каждый участник процесса - Админ, Юзер, ... имеют логин и пароль. (Гость может их и не иметь ;) Пароли пользователей - это не AccessKey, ReadKey и WriteKey из моей схемы, а отдельные Личные пароли, выбираемые самими пользователями
2) У каждого пользователя (в зависимости от его логина) есть таблица системных паролей AccessKey, ReadKey и WriteKey на каждый объект в системе (например, на каждую таблицу БД). Таблица эта зашифрована AES'ом c помощью Личного пароля пользователя. Содержание таблицы зависит от прав пользователя. Так в нашем случае в таблице Админа есть все пароли, в таблице Юзера есть только AccessKey и ReadKey.
Процесс управления пользователями и правами выглядит так:
1) По умолчанию есть один Админ с логином "Вася" и паролем "Пупкин", у него есть все права.
2) В начале работы с системой Вася меняет свой пароль на любой, какой хочет, скажем "Пупкин1", этим паролем шифруется его таблица системных паролей, сам же пароль "Пупкин1" нигде не хранится, даже зашифрованным, и знает его только Вася.
3) Дальше Вася может при желании добавить нового пользователя - Юзера, присвоить ему логин "Петя" и пароль "Маша", создать его таблицу системных паролей, закинуть туда только AccessKey и ReadKey, зашифровать ее паролем "Маша" и забыть этот пароль навсегда (не забыв сказать Пете ;)
4) И т.д...
Всего доброго,
С уважением, Artik.
|
|
|