Вы можете опубликовать подходящий набор криптографических хэшей открытого текста. Например, если опубликовать набор хешей открытого текста [ 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 . Однако любой, кто имеет доступ к зашифрованному тексту и знает об алгоритме и имеет некоторые знания о криптографии, знает или может легко узнать об этом свойстве алгоритма шифрования и может установить неиспользуемые биты / биты четности на любые значения, которые им нравятся. прежде чем публиковать ключ дешифрования, отмените любые возможные меры ответственности и, возможно, указывайте пальцем на кого-то другого.
Обратите внимание, что ничего из этого не предполагает использования симметричного (или, в этом отношении, асимметричного) шифрования. Это может быть сделано полностью с любым из них, хотя подход только с симметричным алгоритмом, вероятно, намного более практичен, чем подход только с асимметричным алгоритмом. Проще (в смысле решения проблемы распределения ключей) и практичнее (например, с точки зрения размера зашифрованного текста) использовать симметричное шифрование для данных, а затем асимметричное шифрование ключей дешифрования - так обычно выполняется асимметричное шифрование - но ничто не говорит о том, что вам абсолютно необходимо делать это таким образом, и вам все же нужно каким-то образом доверять открытому ключу, для которого вы шифруете ключ дешифрования.