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