Рейтинг:3

Есть ли способ «пометить» ключ таким образом, чтобы предотвратить его повторное использование?

флаг br

Скажем, у меня есть пара открытых и закрытых ключей, связанных с каким-то ресурсом (например, сертификат TLS для веб-сайта mycoolsite.com). Я могу взять эти ключи и повторно использовать их для другого ресурса (например, для Anotherneatsite.net). Мой вопрос: есть ли эффективный способ «пометить» исходные ключи данными «этот ключ для mycoolsite.com», чтобы удаление тега сделало ключи недействительными?

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

kelalaka avatar
флаг in
https://sectigostore.com/page/one-ssl-certificate-for-multiple-domains/
Рейтинг:4
флаг in

Мой вопрос: есть ли эффективный способ «пометить» исходные ключи данными «этот ключ для mycoolsite.com», чтобы удаление тега сделало ключи недействительными?

Да, это в основном то, что делают сертификаты, где вы можете иметь доменное имя в RDN (Relative Distinguished Name) в стиле X500 (Relative Distinguished Name). Также возможно иметь (критические) расширения, которые содержат дополнительные данные, такие как альтернативное имя субъекта или использование ключа. «Критическое» означает, что расширение нельзя игнорировать, даже если оно неизвестно. Все эти данные подписаны ЦС, выдавшим сертификат, и ДОЛЖНЫ быть проверены верификатором.

Конечно, даже MUST в рамках процедуры проверки сертификата можно игнорировать. Невозможно сделать недействительным ключ сам, и вы не можете заставить систему игнорировать данные, отправленные ей извне (если только вы не изолированы от системы, я полагаю).

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

И, наконец, невозможно ограничить использование закрытого ключа. Владелец закрытого ключа RSA может использовать этот ключ для подписания или для создания ключа, даже если в информации о сертификате указано иное. Сертификат просто указывает, для чего может использоваться пара ключей, но сторона, которая получает, проверяет и доверяет сертификату, должна обеспечить это.

флаг br
Итак, если оставить в стороне социальную систему центров сертификации, не существует известного криптографического способа связать ключ с частью информации?
Maarten Bodewes avatar
флаг in
Часть информации в этом случае является ресурсом в вопросе, который я себе представляю? Потому что иначе это был бы другой вопрос.
флаг br
Да, здесь используется система, в которой клиент сам генерирует ключ, не консультируясь с централизованным органом. Поэтому я не могу полагаться на социальную инфраструктуру, которой пользуются сертификаты TLS (и неясно, может ли даже эта инфраструктура обеспечить это, см., например, эту ситуацию https://koen.engineer/a-tale-of-private-key- повторное использование-8ff0cb766fa5).
knaccc avatar
флаг es
@IanH То, что вам нужен ЦС, не означает, что вам нужен сторонний ЦС. У вас будет самозаверяющий сертификат CA, которым вы будете управлять для своей собственной инфраструктуры. И если вы вообще не хотите использовать ЦС, вы можете просто иметь самозаверяющий сертификат, который ограничивает использование вашего открытого ключа. По сути, ответ на ваш вопрос заключается в том, что вам нужно связать некоторые метаданные с вашим открытым ключом, чтобы ограничить его использование, что и делает сертификат.
Рейтинг:1
флаг ph
jpa

Один из способов таков:

  1. Клиент генерирует закрытый и открытый ключ.
  2. Клиент отправляет открытый ключ на сервер.
  3. Сервер генерирует производный ключ из открытого ключа клиента и случайного одноразового номера.
  4. Сервер отправляет одноразовый номер обратно клиенту, который может использовать его для создания производного закрытого ключа.

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

Способ выполнения шага 3 зависит от используемого алгоритма. Есть несколько примеров в ответы на этот вопрос.

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

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