Шлюб порогової криптографії з ключами шифрування: чому?

Порогова криптографія існує в невідомості щодо ширших концепцій безпеки: шифрування, цифрових підписів та сертифікатів, наприклад. Незважаючи на те, що академічні експерти з криптографії, як правило, добре знайомі із Схемою таємного обміну Шаміром та Схемою Блеклі, дуже багато практиків галузі не знають про ці алгоритми та про те, як їх реалізація може принести величезні переваги в рамках існуючого стеку технологій кібербезпеки.

У цій публікації ми розглядаємо три теми:

Причини, чому порогова криптографія не відома,

Як працює порогова криптографія та

Причини, чому має сенс пов’язати порогову криптографію з ключами шифрування.

По-перше, дві основні причини, чому порогова криптографія не відома.

Порогова криптографія здається корисною лише за обставин.

Порогова криптографія – її часто називають «секретним обміном» – це механізм обміну інформацією між групою учасників. Це легко зрозуміти на прикладі: Аліса, Боб і Чарлі – брати і сестри. Їхній батько Девід має алмази у сейфі, який можна відкрити за допомогою пароля. Девід любить своїх дітей, але не цілком їм довіряє. Він хоче переконатись, що сейф доступний після його смерті, але лише за згодою принаймні двох його дітей. Для досягнення своєї мети Девід може застосувати схему секретного обміну Шаміром (SSSS), щоб надати кожному з своїх дітей частину пароля, але недостатньо, щоб діяти самостійно.

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

Криптографію threshold важко реалізувати з розумним користувацьким досвідом.

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

Отже, ось вам. Корисність порогової криптографії не очевидна, і її непросто реалізувати за розумного користувацького досвіду. Ось чому AES-256 настільки широко відомий, в той час як порогова криптографія томиться в невідомості.

То це все до історії?

Перш ніж кинути рушник і дійти висновку, що SSSS не особливо корисний, давайте подивимось, як насправді працює SSSS. Це напрочуд легко зрозуміти.

Порогова криптографія: під капотом.

Схема секретного обміну шаміром та ваші кошмари про геометрію середньої школи.

Кілька концепцій геометрії середньої школи:

На декартовій площині для визначення прямої потрібні дві точки. Маючи лише ці два моменти, ви знаєте все, що можна знати про лінію.

Однієї точки недостатньо для визначення лінії – нескінченна кількість ліній може проходити через цю одну точку.

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

Поняття 1: На декартовій площині для визначення прямої потрібні дві точки. Маючи лише ці два моменти, ви знаєте все, що можна знати про лінію. Наприклад, ми точно знаємо перехоплення Y.

Розуміючи SSSS, скажімо, перехоплення Y – це наш секрет. Аліса і Боб знають по одному з пунктів на прямій. Разом вони можуть провести лінію точно так, як слід, і знають перехоплення Y – пароль Девіда.

Рисунок 1: Тільки дві точки потрібні для того, щоб визначити лінію та точно знати її перехід Y.

Концепція 2: Однієї точки недостатньо для визначення лінії – через цю одну точку може проходити нескінченна кількість ліній. Іншими словами, Аліса, діючи самостійно, не має достатньої інформації, щоб провести межу, і тому не може знати Y-перехоплення.

Рисунок 2: Нескінченна кількість прямих проходить через точку (5,5).

Поняття 3: Використовуючи дві точки для визначення прямої, ми можемо обчислити будь-яку кількість додаткових точок на цій прямій і використовувати будь-який набір з двох точок для визначення тієї самої прямої. Ми можемо додати Чарлі до суміші, просто надавши йому ще одну точку на прямій. Тепер Чарлі може скоординуватися з Алісою або Бобом, щоб провести лінію та визначити Y-перехват.

Малюнок 3: Ми можемо додати третю точку до прямої, точку С, а потім використати або А і В, щоб визначити пряму, або А і С, або В і С.

Отже, ось вам! SSSS у шкаралупі горіха. За допомогою простої геометрії ми можемо поділитися секретом між групою учасників, не надаючи жодному з окремих учасників достатньої інформації для доступу до секрету, але дозволяючи підмножині координуватися для визначення секрету.

(Чесно кажучи, ми трохи спростили своє пояснення. У реальній реалізації SSSS математика була б проведена в кінцевому полі, але вищезазначене дає основу).

Деякі досить цікаві особливості ssss.

Вони заслуговують на згадування:

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

Наш приклад SSSS забезпечує приємну надмірність: у нас може бути десяток учасників, і навіть якщо десять зникнуть, ми все ще в прекрасній формі.

Подібно до того, як дві точки визначають пряму, три точки визначають параболу (рівняння в X2). Ми можемо вимагати, щоб троє учасників координувались, щоб зібрати таємницю, використовуючи замість лінії параболу. І ми можемо піти далі: чотири точки визначають рівняння в X3, п’ять пунктів для X4 тощо і так далі.

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

Розуміння того, як працює SSSS, ще більше підкреслює, наскільки незручним може бути використання. Кожному з учасників потрібно надійно зберігати свій фрагмент головоломки, а тоді, коли настає час зібрати секрет, для цього має зібратися достатня кількість учасників.

Тепер, коли ми розглянули принцип роботи порогової криптографії, поговоримо про шифрування.

Використання порогової криптографії для ключів шифрування

Симетричні шифри, такі як AES (і потрійний DES), існують десятки років. Вони часто використовуються в різних програмах. Насправді AES настільки важливий і популярний, що більшість сучасних центральних процесорів мають вбудовані інструкції для апаратних реалізацій для нього. Коли ви зараз читаєте цю публікацію в блозі, ваше підключення до сервера використовує HTTPS, який, у свою чергу, (як правило) використовує AES для базового шифрування трафіку. У певному сенсі AES є повсюдним.

Звичайно, ключ потрібен кожного разу, коли використовується AES. Генерування та зберігання цього ключа варіюється від складності від відносно тривіальної до королівської болі в шиї, залежно від обставин.

Шифрування даних під час передачі під час сеансу HTTPS потрапляє у відносно тривіальний табір. Обмін ключами Діффі-Хеллмана (або, можливо, еліптична крива DHKE) відбувається на льоту, на початку сеансу. Цей ключ або похідне від цього ключа можна використовувати для AES. Ключ має ефемерний характер: його не потрібно зберігати після закінчення сеансу. Що стосується зберігання ключів, шифрування даних під час передачі представляє менше проблем, ніж шифрування даних у стані спокою.

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

Користувачі ненавидять паролі,

Паролі для ключів шифрування неможливо відновити, якщо вони втрачені, та

Централізація ключів створює медонос для зловмисників.

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

На щастя, є набагато кращий спосіб. Ми можемо взяти ключі, розділити їх на частини та зберігати на власних комп’ютерах, смартфонах, планшетах тощо. Саме цим ми займаємося в Atakama. Процес шифрування такий:

Створіть файл,

Створіть новий ключ на хост-машині, на якій був створений файл, і зашифруйте файл цим ключем, використовуючи AES,

Розділіть ключ на частини, і

Тримайте одну частину на хост-машині, надішліть іншу на смартфон користувача, іншу – на планшет користувача тощо.

Потім, коли настає час для користувача отримати доступ до файлу:

Нехай файлова система запитує відповідні частини ключа,

Зберіть ключ,

Розшифруйте файл і

Розкрийте файл у будь-якій програмі, яку він зазвичай робить.

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

Основним нововведенням Atakama є створення повністю розподіленої системи, що поєднує традиційне шифрування з пороговою криптографією, все з простим для розуміння інтерфейсом користувача.

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

Шифруючи кожен файл окремо, ми робимо порушення майже абсолютно марним для зловмисника. Найбільше, до чого зловмисник може отримати доступ, – це файл, який використовується точно в момент атаки, що є значним покращенням щодо існуючого стану.

Спочатку ця публікація була опублікована за адресою https://www.linkedin.com/pulse/marrying-threshold-cryptography-encryption-keys-why-gallancy/.

Daniel H. Gallancy люб’язно дозволив нам перекласти і опублікувати цю статтю.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: