Шифрування документа за допомогою декількох ключів та притягнення людей до відповідальності за ці ключі


4

Тут гіпотетично. У вас дуже чутливий файл, який ви не хочете ставати загальнодоступним ніколи, інші люди також не хочуть, щоб він був відкритим. Щоб зменшити ймовірність вбивства, ви публікуєте зашифровану версію файлу в bittorrent і надаєте ключі шифрування довіреним сторонам ("ключникам") з інструкціями опублікувати, якщо вас вбивають. Тоді ви робите публічно відомо, що опубліковані файли є автентичними. (Так, ми говоримо про ситуацію в Меннінгу.)

Ви хочете уникнути можливості компромісу одного власника ключів і виконувати наступний набір з трьох речей:

  1. Опублікуйте простий документ
  2. Використовуйте заяву про автентифікацію, яку ви опублікували, щоб повідомити громадськості про те, що відкритий текст є справжнім (тобто видаліть правдоподібну спростування)
  3. Залишайтеся анонімними

Наприклад, ось один із способів зробити це.

  1. Створіть N симетричних ключів, по одному для кожного власника ключа
  2. Для кожного власника ключа зробіть копію простого тексту та додайте його до "Цей документ було випущено:" та особою цього власника ключа
  3. Зашифруйте кожну копію відповідним симетричним ключем
  4. Розподіліть ключі відповідно
  5. Опублікуйте повний файл

Однак для цього потрібен N * size_of_plaintextпростір. Це питання задається, чи існує більш ефективний спосіб .

Для початку я дослідив шифрування gpg з декількома ключами. Дивіться https://stackoverflow.com/questions/597188/encryption-with-multiple-different-keys (спасибі @terdon). GPG працює наступним чином:

gpg --encrypt --recipient alice@example.com --recipient bob@example.com doc.txt
  1. GPG вибирає симетричний ключ ( X)
  2. GPG шифрує простий текст за допомогою X
  3. GPG шифрування Xз ключами партії P_alice, P_bob... і Аліса, Боб і т.д. кожен може розшифрувати один з них

Це вразлива атака, якої ми хочемо уникнути:

  1. Боб використовує P_bobдля розшифруванняX
  2. Боб публікує Xанонімно
  3. Громадська розшифровує ваш опублікований відкритий текст X

-1. Будь ласка, знайдіть час для пошуку, перш ніж розміщувати питання. Скопіюючи вставлення заголовка запитання в google, це виявилося першим зверненням.
тердон

Можливо, я мав би доповнити це питання. Але особливістю, яку я шукаю, є підзвітність, а не (просто) шифрування.
Вільям Ентрікен

Downvote відкликався, але чи можете ви редагувати назву (а також питання), щоб зрозуміти, що ви просите?
тердон

Відповіді:


3

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

Зауважте, що жодне з цього не передбачає використання симетричного (або з цього приводу асиметричного) шифрування. Це може бути виконано повністю з будь-яким, хоча підхід лише для симетричного алгоритму, ймовірно, набагато практичніший, ніж підхід, що стосується лише асиметричного алгоритму. Це легше (в сенсі вирішення ключової проблеми розподілу) і більш практичним (з точки зору, наприклад розмір зашифрованого) використовувати симетричне шифрування даних , а потім асиметричного шифрування ключів дешифрування - це шлях асиметричних шифрування зазвичай робиться - але нічого не говорить про те, що ви абсолютно повинні робити це так, і вам все одно потрібно мати змогу якось довіряти відкритому ключу, до якого ви шифруєте ключ розшифровки.


Гаразд, я погоджуюсь, що в даний час криптографія справді просто симетрична проти простого тексту та асиметрична проти клавіш. Але ваше рішення, безумовно, креативне і отримує кредит. Ура!
Вільям Ентрікен

@FullDecent Вам не потрібно використовувати асиметричне шифрування взагалі, якщо ви цього не хочете; дивись мою редакцію. Це полегшує розподіл ключів, але розподіл ключів є вирішуваною проблемою навіть при симетричному підході.
CVn

0

Якщо Аліса зробить таку заяву, ви хочете, щоб інші підтвердили цю заяву. У мене завжди було враження, що шифрування відкритим ключем не дає великого способу автентифікації, але якщо ви якось запровадите щось на зразок цифрового підпису, ви зможете перевірити справжність документа, що вирішило б питання підзвітності.

Щось таке, що описано тут, я думаю, оскільки ви використовуєте gpg: http://www.tutonics.com/2012/11/gpg-encryption-guide-part-3-digital.html

Коли відправник використовує відкритий ключ для шифрування даних для одержувача, як одержувач повинен знати, чи справді відправник є тим, про кого вони кажуть?

Відкритий ключ доступний для будь-кого, хто може використовувати його, тому для цього відправника потрібно мати засоби, щоб однозначно довести, що дані надходили від них. GPG надає спосіб зробити вищезазначене в поєднанні з генеруванням підпису (як-от відбитка пальців) даних, які підтверджують, що дані не були підроблені.


Зауважте, що "відправник" - це той, хто готує та поширює зашифрований файл, а "одержувач" - це той, хто отримує зашифрований файл від відправника. У цьому випадку одержувач, у свою чергу, розшифровує файл і поширює простий текст, або роздає ключ кому-небудь іншому для розшифрування шифротексту, і ОП бажає способу з'ясувати, хто з набору одержувачів поширив відкритий текст або розшифровку. ключ. У цій ситуації підписання не приносить користі, оскільки підпис може бути знятий під час розшифрування зашифрованого файлу.
CVn

0

Замість публікації самого зашифрованого файлу опублікуйте копію відкритого ключа. Потім надайте кожному з ваших довірених власників ключів копію документа в простому тексті разом із криптографічно підписаним (із відповідним приватним ключем для відкритого ключа, який ви опублікували) від себе, яке підтверджує законність документа (наприклад, включає хеш-код документ) та згадує ім'я власника ключа, якому ви даєте це твердження.

Таким чином, будь-який із ваших власників ключів може випустити документ у прямому тексті; але щоб довести свою правомірність, вони повинні розкрити від вас свою версію підписаної заяви, яка, в свою чергу, розкриває їхню особу.

Для ще більшого захисту ви можете зашифрувати документ простий текст, наданий кожному власнику ключів, розбиттям ключів між власниками ключів, використовуючи алгоритм секретного обміну Shamir . Таким чином, жоден власник ключів не може прочитати або розкрити вміст чутливого файлу, не співпрацюючи з одним або кількома іншими власниками ключів. За допомогою цієї схеми вам може знадобитися будь-яка кількість співпрацюючих власників ключів, щоб оприлюднити документ громадськості, але лише одному з власників ключів доведеться розкрити свою особу, щоб перевірити законність документа.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.