информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыПортрет посетителяАтака на Internet
BugTraq.Ru
Русский BugTraq
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Модель надежности отказоустойчивой... 
 Некоторые пароли от G Suite хранились... 
 Microsoft выпустила Windows Sandbox 
 Microsoft выпустила исправление... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / theory
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Нужен совет по ассиметрии, плиз! 09.01.02 15:23  Число просмотров: 1203
Автор: 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.
<theory> Поиск 








Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2019 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach