Рейтинг:1

Генерировать пары асимметричных ключей на основе ключевых слов таким образом, чтобы любой открытый ключ, основанный на наборе, содержащем генерирующее подмножество, был действительным.

флаг tk
Fly

Предположим, у нас много пользователей, и у каждого пользователя есть список фруктов, которые ему нравятся — это будут ключевые слова. Я хочу, чтобы мои пользователи могли кодировать любые данные, которые они хранят (скажем, местоположение их любимых фруктовых деревьев), а также декодировать их: конкретный список ключевых слов.

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

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

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

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

Спасибо!

knaccc avatar
флаг es
Должен ли сервер иметь нулевую видимость того, какие фрукты кому-то нравятся? Или серверу разрешено знать фрукты, которые нравятся каждому человеку, но только не зашифрованные данные для этого списка? И что мешает кому-то просто добавить все возможные фрукты, чтобы иметь доступ ко всему? Является ли список всех возможных фруктов секретом? Может ли кому-нибудь нравиться любой фрукт, или ему должен быть предоставлен «доступ» к тому, чтобы любить фрукт? А что, если сервер просто создаст учетную запись пользователя, которая любит все возможные фрукты, чтобы увидеть все данные?
флаг tk
Fly
@knaccc Сервер точно знает (и даже хранит его в незакодированном виде), кто какие фрукты любит. Остальные ваши вопросы определенно имеют отношение к реальным вариантам использования такой системы, но я думаю, что они не должны влиять на сам алгоритм генерации ключей; но в моем случае только тот, кому нравится конкретный фрукт, может сообщить кому-то еще, что этот фрукт существует, и в этом случае ему разрешается любить его. Учетная запись пользователя, которая любит все фрукты, по сути, является мастер-учетной записью, которая действительно имеет доступ ко всем данным.
knaccc avatar
флаг es
Похоже, сервер будет иметь доступ к списку всех возможных фруктов, и поэтому сможет легко расшифровать и просмотреть любую информацию, которую сохранил любой пользователь. Так какой смысл кому-либо иметь пару ключей и выполнять какое-либо шифрование, если сервер все равно все видит?
флаг tk
Fly
@knaccc Ну, утечки базы данных не дадут никаких данных из-за шифрования.
knaccc avatar
флаг es
Если сервер может видеть все данные, то компрометация сервера приведет к утечке всех данных. Вы можете зашифровать всю базу данных в состоянии покоя с помощью обычного симметричного шифрования, и это будет эквивалентно тому, что вы предлагаете. Единственный способ, которым сложная схема шифрования, подобная той, которую вы предлагаете, имела бы смысл, - это если бы она была сделана таким образом, чтобы администратор сервера не мог видеть какие-либо данные, потому что только пользователи будут иметь закрытые ключи для расшифровки. данные.
флаг cn
По сути, то, что вы описываете, называется [шифрование на основе атрибутов] (https://en.wikipedia.org/wiki/Attribute-based_encryption).
Рейтинг:1
флаг es

Плод будет создан пользователем и назначит ему секретный ключ $х$. Пользователь будет информировать сервер о существовании этого фрукта, идентифицируя его только по метке, и сохраняя $х$ секрет.

У всех пользователей есть свои личные пары ключей EC, где их личный секретный ключ не раскрывается серверу. Когда кого-то приглашают полюбить фрукт, приглашение зашифрует секретный ключ этого фрукта. $х$ с личным открытым ключом приглашенного, чтобы сообщить его им.

Когда пользователь хочет зашифровать информацию, видимую только тем пользователям, которые знают секретные ключи для набора фруктов, чьи секретные ключи $\{х_1, х_2, х_3\}$, пользователь просто шифрует его, используя симметричное шифрование AEAD с секретным ключом. $H(x_1 | x_2 | x_3)$, куда $Ч$ является криптографически безопасной хеш-конструкцией, невосприимчивой к атакам с расширением длины. Списки секретных ключей фруктов всегда должны быть объединены в их лексикографическом порядке.Пользователь будет маркировать зашифрованные данные, чтобы другие знали, какое подмножество ключей им потребуется для их расшифровки. Пользователь может захотеть подписать зашифрованные данные своим личным открытым ключом.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.