Можно ли подтвердить личность кого-либо в сценарии, где любая часть общедоступного словаря может быть изменена? - PullRequest
0 голосов
/ 04 февраля 2020

Итак, представьте, что существует сервер, который действует как устройство хранения JSON. Вы можете читать данные с ключей, и вы можете записывать данные на ключи. Единственное ограничение - вы не можете видеть все ключи.

Возможно ли, только используя это JSON хранилище в качестве средства связи, подтвердить личность кого-либо? Я говорю RSA пары ключей, хэши, пароли. Что-нибудь. У меня были идеи, например, хранить личный ключ каждого пользователя, хэшируя его пароль, и использовать его как sh в качестве ключа для личного ключа (возможно, также шифруя закрытый ключ). Очевидно, что ключи publi c должны быть доступны для чтения любому, но как я могу помешать кому-либо заменить этот ключ publi c и выдать себя за него?

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

1 Ответ

1 голос
/ 04 февраля 2020

«Идентичность» здесь немного расплывчата. Например, если вы хотите быть уверены, что это Алиса, которая живет по адресу Главная улица, 123, в вашей системе слишком мало информации. Но закрытые ключи, пароли и т. Д. 1010 * тоже этого не делают. Идентификация может означать много вещей.

То, что вы, вероятно, имеете в виду здесь, это просто аутентификация; что человек - это то, кем, как они говорят, он является для довольно свободного определения «кто» (тот, который, возможно, является анонимным, и может даже не быть уникальным). Если вы хотите знать, что тот, кто обращается к ключу, - это тот, кто написал ключ, то ваша система делает это автоматически, если они не передают ключ кому-либо еще. Ключ - это секрет, и человек с секретом аутентифицируется, просто зная его.

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

Я немного обеспокоен вашим комментарием "очевидно, ключи publi c должен быть читаемым кем-либо ". Это совсем не очевидно. Только потому, что ключи publi c обычно не являются секретами, это не требуется. Вполне возможно, что секретный и закрытый ключи c могут быть секретными. Например, я могу дать свой ключ c только для определенных лиц. Если я затем получаю сообщение, которое я могу расшифровать с помощью своего закрытого ключа, это подтверждает, что отправитель является владельцем этого открытого ключа c.

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

...