Мой вопрос: есть ли эффективный способ «пометить» исходные ключи данными «этот ключ для mycoolsite.com», чтобы удаление тега сделало ключи недействительными?
Да, это в основном то, что делают сертификаты, где вы можете иметь доменное имя в RDN (Relative Distinguished Name) в стиле X500 (Relative Distinguished Name). Также возможно иметь (критические) расширения, которые содержат дополнительные данные, такие как альтернативное имя субъекта или использование ключа. «Критическое» означает, что расширение нельзя игнорировать, даже если оно неизвестно. Все эти данные подписаны ЦС, выдавшим сертификат, и ДОЛЖНЫ быть проверены верификатором.
Конечно, даже MUST в рамках процедуры проверки сертификата можно игнорировать. Невозможно сделать недействительным ключ сам, и вы не можете заставить систему игнорировать данные, отправленные ей извне (если только вы не изолированы от системы, я полагаю).
Также невозможно запретить пользователю копировать открытый ключ или запрашивать сертификат где-либо еще. Иногда определенные центры сертификации сохраняют идентификатор ключей в сертификатах, которые они подписали. В этом случае ЦС мог выберите игнорировать запрос сертификата со «старым» ключом — хотя, по моему опыту, это больше связано с тем, чтобы избежать ошибок в системе.
И, наконец, невозможно ограничить использование закрытого ключа. Владелец закрытого ключа RSA может использовать этот ключ для подписания или для создания ключа, даже если в информации о сертификате указано иное. Сертификат просто указывает, для чего может использоваться пара ключей, но сторона, которая получает, проверяет и доверяет сертификату, должна обеспечить это.