Вы можете опубликовать подходящий набор криптографических хэшей открытого текста. Например, если опубликовать набор хешей открытого текста [ MD5 , SHA-1-160 , SHA-3-512 , RIPEMD-320 ], то найти любой открытый текст, который одновременно будет соответствовать всем этим хэшам , будет чрезвычайно сложно. Обратите внимание, что такая атака будет значительно сложнее, чем первая или вторая атака с прообразом против любого из задействованных алгоритмов хеширования, поскольку одни и те же данные должны хешировать правильное значение для всех задействованных алгоритмов, иимеет смысл, когда читаешь. Кроме того, из них, согласно Википедии, по крайней мере, SHA-3-512 и RIPEMD-320 в настоящее время, как известно, не имеют каких-либо атак лучше, чем грубая сила, по всему выходному пространству, и в то время как MD5 имеет столкновительную атаку сложности 2 ^ 21, Атаки с прообразом по-прежнему составляют 2 ^ 123, что лишь незначительно менее сложно, чем тотальная атака на полном выходном пространстве 2 ^ 128. (В основном, при столкновительной атаке вы выбираете оба входа и ищете пару разных входов, которые генерируют идентичные хэши, так что хеш для одного также действителен для другого; атака с прообразом - это когда у вас есть хеш и ищем некоторый ввод, предпочтительно тот, который отличается от исходного ввода, который производит данный хеш.)Эти хэш-значения сами по себе ничего не скажут о незашифрованных данных.
Чтобы еще больше усложнить атаку, вы можете использовать по крайней мере один криптографический алгоритм хеширования, который не основан на конструкции Меркле-Дамгарда с традиционной функцией сжатия (которую перечисленные выше алгоритмы хеширования, возможно, за исключением SHA-3, представляют собой: ) если такой зверь существует; Я не знаю ничего о моей голове, но это не исключает возможности. По-видимому, Keccak / SHA-3 использует дизайн, который, по крайней мере, отличается в некоторых частях, что, по-видимому, делает его хорошим кандидатом для включения в такой набор алгоритмов хеширования.
Это дает кому-то, кто в более поздний момент времени получает копию открытого текста, способ убедиться, что он соответствует тому, что вы намеревались сделать публичным в случае, если с вами что-то случится. Для того, чтобы этот человек имел очень высокую степень уверенности в том, что открытый текст является подлинным, этому человеку нужно будет только доверять источнику этих хешей, чтобы они были подлинными (и чтобы его собственная копия значений хеш-функции не была подделана (что может быть выполнено явно низкотехнологичным способом с использованием защищенных от несанкционированного доступа уплотнений) и что программное обеспечение, используемое для вычисления хэшей на их компьютере, делает то, что должно (что в некоторой степени может быть независимо проверено с помощью нескольких отдельных реализаций) и тестирование этих реализаций на основе опубликованных тестовых векторов.
Тем не менее, я не думаю, что вы сможете получить реальную ответственность за то, кто слил ключ дешифрования, не распространяя несколько копий открытого текста с различным шифрованием. Любой множественным ключ схема шифрования , которая не требует отдельного зашифрованного блока данных для каждого блока открытого текста и получателя ключа потребует открытого текста шифруется с помощью данного ключа , K_0
который затем , в свою очередь шифруется с каждым из множества ключей реципиентов K_1
через K_n
, для n
получатели, и это полный набор зашифрованных мастер-ключейE(using K_n)(K_0)
включен в зашифрованный текст. (В любое время, когда вы этого не хотите, вам нужно несколько шифротекстов для каждого открытого текста, что представляет собой увеличенную поверхность атаки для злоумышленника, что вызывает беспокойство, если вас зовут Мэннинг или Сноуден.) Следовательно, каждый получатель по необходимости имеет доступ к «мастер» ключ дешифрования K_0
, представляющий именно тот сценарий, от которого вы ищете защиту.
О единственном способе, которым я могу придумать, было бы использование алгоритма, подобного DES (читайте дальше, прежде чем понизить этот ответ, потому что я упомянул старого динозавра), который учитывает неиспользуемые биты четности в ключевом материале, устанавливая эти биты уникальными для каждого получателя, и вести записи о том, какие биты четности были для каждого ключевого получателя. (Поскольку вы устанавливаете эти «биты четности» независимо от оставшегося ключевого материала, а не в качестве фактической четности, и эти биты в любом случае не влияют на безопасность, это не приводит к ухудшению безопасности.) Для разумной безопасности используется схема, подобная EDE 3DES.может быть использован. Однако любой, кто имеет доступ к зашифрованному тексту и знает об алгоритме и имеет некоторые знания о криптографии, либо знает, либо может легко узнать об этом свойстве алгоритма шифрования, и может установить биты неиспользуемой / четности на любые значения, которые им нравятся. прежде чем публиковать ключ дешифрования, отмените любые возможные меры ответственности и, возможно, указывайте пальцем на кого-то еще.
Обратите внимание, что ничего из этого не предполагает использования симметричного (или, в этом отношении, асимметричного) шифрования. Это может быть сделано полностью с любым из них, хотя подход только с симметричным алгоритмом, вероятно, намного более практичен, чем подход только с асимметричным алгоритмом. Это легче (в смысле решения ключевой проблемы распределения) и более практичным (с точки зрения, например размер зашифрованного) использовать симметричное шифрование данных , а затем асимметричного шифрования ключей дешифрования - это путь АСИММЕТРИЧЕСКИЙ шифрования обычно делается - но ничто не говорит о том, что вам абсолютно необходимо делать это таким образом, и вам все же нужно каким-то образом доверять открытому ключу, для которого вы шифруете ключ дешифрования.