Чому праймери важливі в криптографії?


191

Одне, що завжди вражає мене як некриптографа: Чому так важливо користуватися номерами Prime? Що робить їх настільки особливими в криптографії?

Хтось має просте коротке пояснення? (Я знаю, що є багато праймерів і що Прикладна криптографія - це Біблія, але як сказано: я не хочу реалізувати свій власний криптографічний алгоритм, а речі, які я знайшов, просто змусили мій мозок вибухнути - немає 10 сторінок математичних формул будь ласка :))

Дякую за всі відповіді. Я прийняв той, який зробив найбільш зрозумілу для мене фактичну концепцію.


Пара зауважень: 1. Люди нижче згадують, що "просте факторизація великої кількості займає тривалий час". Насправді те саме стосується будь-якої факторизації. Важливо те, що будь-яке ціле число! = 0 має унікальну факторизацію як добуток простих чисел (включаючи 1, який має розкладання довжиною 0).
TT_

1
2. Будь ласка, перевірте моє пояснення, чому прайми важливі для хеш-функцій: stackoverflow.com/questions/1145217/… Це пов'язано з властивістю поліномів з коефіцієнтами, що належать до поля (що, мабуть, не є коротким поясненням).
TT_

2
Надмірно просте коротке пояснення → Вирішіть: a * b = 91. Тепер вирішити: 13 * 7 = x. Друге рівняння вирішується набагато швидше (для людини чи комп'ютера).
Dem Pilafian

Відповіді:


204

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

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


7
Коли ми вступаємо в епоху квантових обчислень, видається доречним зазначити, що факторизація прайменів за допомогою квантового комп’ютера може бути досягнута в поліноміальний час usiong Алгоритм Шора en.wikipedia.org/wiki/Shor%27s_algorithm Ймовірно, що вже існують комп'ютери, які можуть розшифрувати шифрування відкритого ключа на зразок RSA
stujo

16
@stujo: ти масово завищуєш стан квантових обчислень. Насправді певно, що такого комп’ютера не існує. Найбільша кількість, яку враховують алгоритм Шора та найсучасніші дослідницькі зусилля в квантовій техніці, становить 21. Це не 21 біт, а число 21, основні фактори 3 та 7.
Майкл Боргвардт

1
Я не впевнений, які дані є поточними, складно отримувати інформацію про останні роботи, я вважаю, що це було ще в 2012 році, ця стаття є з 2014 року ( m.phys.org/news/2014-11-largest-factored- quantum-device.html ) Чи бачили ми будь-які публічні дані за 2016 рік? Не виключати те, що може бути класифіковане. Хоча він не може запускати алгоритм Shors, у D-Wave зараз понад 1000 кубітів
stujo

1
@stujo: ті самі принципи будуть діяти, коли всі ми використовуємо квантові процесори, оскільки прайси можуть продовжувати зростати, все про те, щоб знайти більші, непрактичні для квантових процесорів, проблема існує, якщо деякі використовують звичайний CPUS для створення ключів, а деякі використовують квантові процесори для зламати ці. Потужність квантових процесорів, як я розумію, полягає в тому, що він використовує qbits, кожен qbit може мати 3 значення, таким чином нова технологія - це база 3, а не база 2. Процесор на 64 кбіт матиме 3 ^ 64 комбінації в слові. Не знаю, як це впливає на продуктивність.
juanmf

5
@juanmf: ваше розуміння квантових обчислень абсолютно неправильно. Це абсолютно не має нічого спільного з тим, щоб мати 3 значення, що було б зовсім нецікаво. Деталі дуже складні, але ефект полягає в тому, що деякі квантові алгоритми можуть вирішувати проблеми з меншою складністю Big-O, ніж "звичайні" алгоритми на неквантовому апаратному забезпеченні.
Майкл Боргвардт

137

Простий? Так.

Якщо ви помножите два великих простих числа, ви отримаєте величезне непросте число з лише двома (великими) простими множниками.

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

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


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

4
Пов’язати це пояснення з терміном "одностороння функція" було б корисно: en.wikipedia.org/wiki/One-way_function
Кріс Конвей

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

45

Ось дуже простий і поширений приклад.

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


30
Просто FYI, число, яке ви отримуєте від множення двох простих, називається напівпросте.
Меттью Брубакер

15

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

Як відомо, будь-яке число має щонайменше два фактори. Прості числа мають унікальну властивість у тому, що вони мають рівно два чинники: 1 і вони самі.

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

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


10
Вам потрібно лише протестувати прості числа до квадратного кореня числа, яке ви намагаєтесь розставити.
Метью Брубакер

3
Я знаю. Це була деталь, яку я «не помітив» в ім’я простоти.
Баррі Браун

@MatthewBrubaker Ви б не хотіли пояснити, чому це? Я не дуже розумію.
Kartik Chugh

4
@KartikChugh - скажімо, nце не просто & n = a * b. Якщо a > sqrt(n), bмає бути меншим і навпаки, інакше a * b > nсаме це може заперечити нашу первинну претензію. Отже, щоб перевірити прайм, ми перевіряємо лише до sqrt.
Абхінав Ганіял

13

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


1
Цікаво, що вже в швидкий час можна дізнатись, ЯКЩО число є простим.
nes1983

Тут відсутнє "якщо основні фактори великі" тут.
Ben Voigt

@Ben: Це не пропускається. Проблема взагалі важка. Зауважте, що проблеми, важкі в цілому, можуть мати легкі випадки. У цьому випадку невеликі праймери - це аж ніяк не єдині легкі випадки.
nes1983

2
Ніхто не знає "на публіці". Можливо, у спецслужб різних урядів світу існують методи, якими вони не діляться. Вони наймають величезну кількість математик. Наприклад, NSA таємно сприяла генерації випадкових простих генерацій "Dual EC_DRBG", яка, на їхню думку, була слабкою, як частина стандартної криптовалюти для публічного використання. bits.blogs.nytimes.com/2013/09/10/…
яскравий

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

12

Є кілька хороших ресурсів для нарощування криптовалюти. Ось один:

З цієї сторінки:

У криптографічній системі з відкритим ключем, що найчастіше використовується у винаході Рона Рівеста, Аді Шаміра та Лен Адлемана у 1977 році, і відкритий, і приватний ключі виводяться з пари великих простих чисел згідно відносно простої математичної формули. Теоретично можна отримати приватний ключ із відкритого ключа, працюючи формулою назад. Але лише продукт великих простих чисел є загальнодоступним, а факторинг чисел такого розміру на праймери настільки важкий, що навіть наймогутніші суперкомп'ютери у світі не можуть зламати звичайний відкритий ключ.

Книга Брюса Шнейера « Прикладна криптографія» - це ще одна. Я дуже рекомендую цю книгу; це веселе читання.


9

Щоб бути більш конкретним щодо того, як RSA використовує властивості простих чисел, алгоритм RSA критично залежить від теореми Ейлера , яка стверджує, що для відносно простих чисел "a" і "N", a ^ e відповідає 1 модулю N, де e - тотіентна функція Ейлера Н.

Звідки беруться праймери? Для ефективного обчислення тотентної функції Ейлера N потрібно знати просте множення фактору N. У випадку алгоритму RSA, де N = pq для деяких прайменів "p" і "q", тоді e = (p - 1) (q - 1) = N - p - q + 1. Але, не знаючи p і q, обчислити е дуже важко.

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


7

Я б запропонував книгу "Математична подорож у коді" . У книзі приємне відчуття землі, що дивно, адже мова йде про криптографії. У книзі підсумовано шлях Сари Фланнери від навчання загадок у дитинстві до створення алгоритму Кейлі-Персера (CP) у віці 16 років. Це дає надзвичайно детальне пояснення способів функціонування, теорії чисел та простих чисел та того, як вони стосуються криптографія.

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



6

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

Весь цей потік заповнений роз'ясненнями про те, як праймери використовуються в криптографії, важко знайти когось у цій темі, що пояснює простий спосіб ЧОМУ використовуються прайми ... швидше за все, тому що всі сприймають це знання як належне.

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

На цьому сайті є список з 455 042 521 праймес , де найвищий прайм - 9 987 500 000 ( 10 цифр).

Найбільший відомий прайм (станом на лютого 2015 року) - 2 з потужністю 257,885,161-1, що становить 17,425,170 цифр.

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

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


3
Тільки ваш останній абзац дійсно дійсний. Аргумент сум можна сказати і для будь-якого складеного числа (існує великий діапазон [технічно нескінченно великий], зберігання всіх сум є нездійсненним / нерозумним). Крім того, сума простих коштів не має такої актуальності в криптографії, більш важливою (як правило, як у випадку RSA) є їхній продукт. Також під зворотним обчисленням ви, мабуть, маєте на увазі факторинг . Мабуть, це допоможе у тому, що ви маєте на увазі.
initramfs

4

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


4

Я думаю, що у криптографії важливо не самі праймери, але це складність проблеми простої факторизації

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

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


3

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


Цей погляд мені трохи зайвий. Частина зі слабшої ключової частини, яку можна прокоментувати до верхньої відповіді :)
Ulysse BN

-1

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


7
З'ясувати, чи є число простим - це дешево, і нам потрібно, щоб воно було дешевим. Як ще ми могли б знати, що ми обрали прайми в якості головних факторів в RSA або прості як модуль у криптовалюті з кінцевим полем? Дороге - це введення великого складного числа у його основні коефіцієнти.
CodesInChaos
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.