Мне неясно, что вы пытаетесь спросить, поэтому я собираюсь придумать пару вещей и ответить на них. Дайте мне знать, если я согреюсь
Во-первых, «идентификация на основе шифрования» на самом деле не схема шифрования, а схема управления ключами. В любом публичном / частном - или, технически, "асимметричном" - шифровании, есть два ключа. Один из них используется для шифрования, другой для дешифрования, и у них есть специальное свойство, что если вы знаете один из них, все еще экспоненциально сложно (или считается экспоненциально сложным) построить другой. Так, например, я могу зашифровать вам письмо, используя мой личный ключ; Я публикую свой открытый ключ. Если вы можете расшифровать письмо, используя открытый ключ, у вас есть уверенность, что именно я его отправил. Это основная идея схем цифровой подписи.
Проблема в том, что у вас должен быть способ генерации и управления этими ключами, и это оказывается сложным, потому что схема эффективна только в том случае, если вы защищаете свой закрытый ключ. Есть несколько способов сделать это.
Шифрование на основе идентификатора пытается упростить эту проблему управление ключами , предлагая специальные алгоритмы, которые создают закрытые ключи из известной общедоступной части информации: например, адреса электронной почты. Чтобы сделать это способом, который все еще затрудняет определение частной стороны, вам нужно иметь доверенную сущность, которая создает закрытый ключ на основе некоторого другого секрета, который они знают. Итак, чтобы установить ваше общение с кем-то, кто знает ваш адрес электронной почты. Вы идете к доверенному поставщику и запрашиваете закрытый ключ, который будет сгенерирован. Человек, с которым вы хотите общаться, знает, каким провайдером вы пользуетесь, и получает главный открытый ключ от этого провайдера.
Теперь человек, которому вы хотите отправить сообщение, может затем создать открытую сторону из вашего идентификатора, ничего не зная, кроме информации о главном ключе от поставщика; ключ никогда не передается в направлении.
Другими словами, это выглядит так: Алиса хочет отправить Бобу письмо в зашифрованном виде. Они оба доверяют провайдеру, Том.
- Алиса отправляет запрос Тому со своим адресом электронной почты "alice@example.com" и возвращает закрытый ключ P . Существует соответствующий открытый ключ p , но Том не отправляет его никому.
- Боб отправляет запрос Тому и получает главный открытый ключ Тома m .
- Алиса шифрует свое сообщение "x" своим закрытым ключом, давая {"x"} P . (Это обозначение просто "message" x "" упаковано "или шифрование ключом P .) Алиса затем отправляет это сообщение Бобу.
- Бон использует свои знания адреса электронной почты Алисы и главного ключа Тома m и вычисляет. p = f ("alice@example.com", m ). Теперь он применяет расшифровку, расшифровывает ({"x") P, p) и poof, выходит сообщение Алисы.
Суть этих схем в том, что они упрощают некоторые ключевые вопросы управления, но лишь в некоторой степени. Вам все еще нужно сгенерировать ключи, и, что еще хуже, вы должны действительно доверять Тому, потому что он знает все: он может сгенерировать ваш закрытый ключ и зашифровать его, чтобы любое сообщение выглядело как полученное вы. Это означает, что он создает внутреннюю схему условного депонирования ключей; Ваш личный ключ можно узнать.
В некоторых отношениях это хорошо; это решает проблему потерянных ключей. Но по большинству причин люди хотят использовать шифрование, это плохо. Теперь кто-то может вызвать в суд Тома или просто избить его и получить ваши личные данные.
Результатом является то, что само по себе шифрование на основе идентификатора является изящной идеей, но не имеет большого рынка.