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


21

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

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

Якщо так, чи можете ви навести кілька прикладів використання цього випадку?

Спасибі.


3
crypto.stackexchange.com/q/29030/351 , crypto.stackexchange.com/q/2123/351 , crypto.stackexchange.com/q/15997/351 , crypto.stackexchange.com/q/679/351 . Будь ласка, ретельно шукайте, перш ніж запитувати.
DW

Навіщо ви взагалі шифрували його, якщо ключ розшифровки був загальнодоступним?
Бергі

5
@Bergi Цифровий підпис?
користувач11153

6
@Bergi: довга відповідь: Зашифрувавши повідомлення за допомогою приватного ключа таким чином, який можна розшифрувати за допомогою вашого відкритого ключа, ви можете надіслати повідомлення, яке може прочитати будь-хто, але може бути написане лише вами. Спершу шифруючи приватним ключем, а потім приватним ключем одержувача, ви створюєте повідомлення, яке може бути розшифроване лише призначеним приймачем, а може бути написане лише вами.
gnasher729

2
@ gnasher729 Я думаю, ви мали на увазі спершу зашифрувати приватний ключ, а потім відкритим ключем одержувача . Ви не повинні мати приватного ключа когось іншого
kiamlaluno

Відповіді:


49

Питання: Якщо ви обертаєте педаль на рибі, вона рухається назад?
A: ???

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

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

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

Як сказано, криптосистеми з відкритим ключем базуються на концепції функцій, що функціонують на вулиці . Одностороння функція є функцією , яка легко обчислити, але чий зворотний важко обчислити. Функція трепборду - подібна до односторонньої функції, але є "магічне" значення, завдяки якому обернено легко обчислити.

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

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

Функції Trapdoor, як правило, сімейні; дані, необхідні для визначення одного конкретного елемента сім'ї, є відкритим ключем.

Хоча шифрування відкритого ключа та цифрові підписи базуються на одних і тих же концепціях, вони не є суто однаковими. Наприклад, функція RSA trapdoor заснована на складності скасування множення, якщо ви вже не знаєте одного з факторів. Існує дві загальні сім'ї схем шифрування відкритим ключем на основі RSA , відомих як PKCS №1 v1.5 та OAEP. Існують також дві загальні сім'ї схем цифрового підпису на основі RSA, відомих як PKCS №1 v1.5 та PSS. Два “PKCS №1 v1.5” мають подібні конструкції, але вони не є однаковими. Ця відповідь Томаса Порніна та ця відповідь Маартена Бодвеса містять деякі деталі різниці між підписом / верифікацією та розшифровкою / шифруванням у випадку RSA.

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

Дивіться також Зменшення від підписів до шифрування? , що пояснює, що ви можете побудувати схему шифрування із схеми підпису, але лише за певних умов.


2
+1 за чітке пояснення помилки, я навіть не знав, що мав, коли натиснув на це питання.
Іксрек

1
Спасибі. "відкритий ключ не є правильним типом математичного об'єкта, який використовується для алгоритму розшифровки, а приватний ключ не є правильним типом математичного об'єкта, який використовується для алгоритму шифрування." Ви маєте на увазі, що вони все ще можуть бути використані для цих цілей, але це не гарні варіанти, або вони не можуть бути? Які математичні властивості, які вирішують, що вони не є правильним типом, окрім властивостей безпеки (наприклад, асиметрія за твердістю відгадати одну клавішу від іншої)?
Тим

2
Вирізали б перші два абзаци, але в іншому випадку це дуже глибока відповідь. Я прийшов сюди з пояснення мирян про шифрування / розшифрування та підпис / перевірку, і як приватний ключ можна використовувати для "шифрування", і ваша відповідь уточнила, що саме мені цікаво.
Kyle Chadha

Тож ця стаття є невірною: globalsign.com/en/blog/how-do-digital-signatures-work ? У ньому зазначається, що відкритий ключ використовується для розшифровки, а приватний ключ - для шифрування
Кеннет Worden

@KennethWorden Це здебільшого правильно, але неправильно розуміє деякі деталі. У розділі "Застосування підпису" "хеш зашифрований" має бути "хеш підписаний ", і тільки він робить цифровий підпис. І в розділі "Перевірка підпису" не існує такого поняття, як "розшифрований хеш": для більшості схем підпису ви не можете повернути хеш з підпису. Натомість відбувається інша математична операція (називається перевірка) який приймає хеш і підпис як входи та виходи "добре" чи "погано".
Жил "ТАК - перестань бути злим"

6

Коли схема PKE використовує перестановку для трампліну як чорну скриньку , "шифрування" приватним ключем з подальшим "розшифруванням" відкритим ключем дасть вихідне повідомлення. Для інших схем PKE не можна навіть мати сенс цього. (Наприклад, спроба "шифрувати" приватним ключем може бути помилкою типу .)

[Шифрування повідомлення "приватним ключем" з подальшим розшифруванням "відповідним відкритим ключем"] використовується, коли люди думають, що справа стосується цифрових підписів і не виправляються вчасно. Дивіться цю відповідь і це питання .


4
Ні. Ви увічнюєте міфи про те, що підручник RSA є єдиною криптосистемою з відкритим ключем і що підпис - це те саме, що і дешифрування.
Жил "ТАК - перестань бути злим"

Перший - відмінний момент, який я виправлю. Чи остання частина вашого коментаря через моє довге речення недостатньо чітка?

4
Я не розумію, що ви розумієте під "коли люди думають, що це цифровий підпис". Схоже, ви говорите, що люди помилково вважають, що цифрові підписи відрізняються від шифрування відкритим ключем. Що йде від вас, я впевнений, що це не те, що ви мали на увазі, але ваша відповідь дуже заплутана навіть після додавання першого пункту.
Жил "ТАК - перестань бути злим"

2

Так, повідомлення, яке зашифроване за допомогою приватного ключа, можна розшифрувати за допомогою відкритого ключа.

Фактично це реалізується для перевірки достовірності даних. У цифровому підписі людина зашифровує хеш даних своїм приватним ключем. Будь-хто може розшифрувати те саме за наявним відкритим ключем особи та перевірити достовірність даних.


2
Це можна зробити з криптосистемою RSA, але не з усіма криптосистемами відкритого ключа. Криптосистема El-Gamal відрізняється, наприклад, від схеми підпису El-Gamal. Дивіться також відповідь Жиля
Дискретна ящірка

Правда, що. Я намагався дати пряму відповідь незалежно від конкретних алгоритмів @Discretelizard
Кевін Аміпара

Дякую, що ви дали пряму відповідь.
jrahhali

0

Подумайте про відкритий ключ в асиметричному шифруванні як на замок, а не на ключ. Чи хокер, у якого є замок і замикається ящик із цим замком, розблокує заблоковану скриньку? Звичайно ні, і щоб розблокувати цю скриньку, вам потрібен ключ блокування. Який ніколи не надсилався публічно, і його має лише відправник.

Однак відповідь так : D Насправді хакер може розшифрувати повідомлення, використовуючи лише відкритий ключ (замок та заблоковану скриньку). Але це надзвичайно важко для будь-якого комп’ютера сьогодні. Оскільки повернення цього зашифрованого повідомлення за допомогою цього відкритого ключа є дуже важкою математичною операцією, особливо коли цей ключ дорівнює 2048-бітовому номеру. Сила математичної операції спирається на твердість основного множення великої кількості.

Ось хороше відео, що пояснює, як працює алгоритм RSA https://www.youtube.com/watch?v=wXB-V_Keiu8


0

Питання справедливе з точки зору eMRTD, коли відкритий ключ AA використовується для декриптування відповіді внутрішнього аутентифікату, зашифрованої приватним ключем eMRTD. Він є частиною стандарту ICAO 9303.

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