У складній галузі криптографії докази з нульовим знанням пропонують унікальне рішення, здавалося б, суперечливого завдання: довести знання частини інформації без розкриття самої інформації. У цьому методі шифрування беруть участь дві сторони: підтверджувач і перевіряльник. Мета перевірки полягає в тому, щоб довести, що вони володіють певною інформацією (назвемо її x), не розкриваючи жодних даних про сам x. Про те, що верифікатор дізнається з обміну, це простий факт, що перевіряльник має ці знання. Найголовніше, що верифікатор не має додаткової інформації про x.
Наприклад, коли Сяолін і Сяоші грають у квест, Сяолінг каже Сяолінгу, що зламав пароль певної «скриньки зі скарбами». Але Сяо Лін не бажає прямо ділитися готовою «відповіддю» і не бажає відкривати скриню зі скарбами перед Сяо Теном. Тож як довести Сяо Ши, що він справді розгадав головоломку та знає пароль скрині зі скарбами?
Тож він попросив Сяо Тена написати на аркуші паперу рядок рядків, які знав лише він, одночасно підписати своє ім’я та просунув папір у щілину в скрині зі скарбами.
Потім Сяо Лін відкрив скриньку зі скарбами, вийняв папір, який поклав Сяо Тень, і показав його Сяо Тену. Сяо Тен перевірив, чи правильний рядок і підпис. Це доводить, що Сяо Лін знає пароль скриньки зі скарбами, і цей папірець справді витягли зі скриньки.
Процес дешифрування не був відомий Сяо Тену, і в той же час Сяо Лінг довів, що він зламав пароль скриньки зі скарбами.
Доказ нульового знання
У криптографії Доказ нульового знання (Zero Knowledge Proof, також відомий як ZKP) або протокол нульового знання — це метод, який дозволяє перевіряючому перевіряти без розкриття самої інформації чи будь-якої іншої інформації. Верифікатор вірить або доводить, засіб перевірки істинності певного твердження чи твердження.
Доведення з нульовим знанням було вперше запропоновано в статті «Складність знань інтерактивних доказів» професорами MIT Шафі Голдвассером, Сільвіо Мікалі та майстром криптографії Чарльзом Рокоффом. Ця концепція алгоритму заклала певну основу для сучасної криптографії.
Докази з нульовим знанням мають дві додаткові властивості: короткість і нульовий рівень знань**. Стислість дозволяє верифікатору прийняти правильність великого обчислення без обчислення самого твердження чи представлення. А нульове знання гарантує відсутність витоку даних про введення.
Докази з нульовим знанням мають вирішальне значення для забезпечення конфіденційності та безпеки багатьох криптографічних протоколів. Вони є запобіжником від потенційного витоку інформації, невидимим бронежилетом криптосвіту. Застосування цих знань можна поширити на різні сфери, включаючи технологію блокчейн і безпечні системи автентифікації, де захист конфіденційних даних має першочергове значення.
Широкий спектр застосування
**Блокчейн і технологія шифрування: **Технологія блокчейну, як-от Zcash, використовує докази нульового знання для захисту конфіденційності транзакцій. Людина може довести, що у неї достатньо кіптовалюти для здійснення транзакції, не розкриваючи точну суму своїх коштів. Це забезпечує конфіденційність, одночасно забезпечуючи цілісність транзакцій.
Автентифікація та **Автентифікація: **підтвердження нульової інформації також можна використовувати для підтвердження особи без розкриття непотрібної інформації. Наприклад, особа може підтвердити, що їй вже виповнилося 18 років, не вказуючи точної дати народження, або підтвердити свою особу, не повідомляючи конфіденційних даних, як-от паролів. Це мінімізує ризик викрадення особистих даних або несанкціонованого доступу.
Безпечні багатосторонні обчислення (SMPC): Докази з нульовим знанням можуть полегшити складну взаємодію між декількома сторонами, де кожна сторона може довести, що вона дотримується узгодженого протоколу, не розкриваючи специфіку свого введення. Це дуже ефективно в багатьох аспектах, таких як інтелектуальний аналіз даних із збереженням конфіденційності, безпечні системи голосування тощо.
Мережева безпека: Докази з нульовим знанням можуть забезпечувати покращені протоколи безпеки, такі як безпечні політики паролів. Він може перевірити, чи запропонований користувачем пароль відповідає певним стандартам безпеки, не повідомляючи серверу та не записуючи фактичний пароль. Оскільки паролі ніде не зберігаються, потенційні порушення запобігають.
**Обмін даними з одночасним захистом конфіденційності: **Доказ нульової інформації можна використовувати, щоб підтвердити, що певні дані відповідають певним вимогам, не розкриваючи самих даних, що особливо важливо в таких сферах, як медичне обслуговування чи фінанси. Положення щодо конфіденційності даних у цих сферах є суворими, але обмін інформацією безпечним способом із збереженням конфіденційності може принести величезні переваги, наприклад, сприяти розвитку медичної кар’єри тощо.
Докази з нульовим знанням відкрили нові технічні можливості в блокчейні. Це можна побачити в різних рівнях 2, таких як ZKSync і zkEVM Polygon. Однак це лише підмножина блокчейнів, створених доказами з нульовим знанням.
Як висловити доказ
У цьому розділі та в решті статті ми зосередимося на доказах, створених для систем перевірки на основі PLONK.
PLONK — це система доказів нульового знання, її повна назва
«Перестановки над базами Лагранжа для всесвітніх неінтерактивних аргументів знання», тобто «Глобальна система доказів неінтерактивного знання на основі баз Лагранжа».
По суті, **PLONK — це універсальна, оновлювана система криптографічного підтвердження, інновація, яка забезпечує ефективну перевірку та масштабування в системах блокчейн та інших розподілених мережах. **
Ідея PLONK полягає в тому, щоб побудувати загальну й оновлювану систему доказів. У контексті систем підтвердження з нульовим знанням «універсальний» означає, що його можна використовувати для будь-якого типу обчислень; «оновлюваний» означає, що криптографічний довідковий рядок (частина даних, яка використовується для створення та перевірки підтвердження) безпечно оновлюється через час.
PLONK виділяється своєю ефективністю та простотою, що робить його популярним вибором для проектів і компаній, яким потрібна безпечна приватна система транзакцій. Порівняно з іншими системами, вона використовує менше обмежень на шлюз (основну одиницю обчислення, яку ми разом називаємо «шлюзами»), що робить обчислення швидшими та більш масштабованими.
Віталік Бутерін опублікував більш повний опис PLONK. [Скопіюйте посилання в браузер, щоб переглянути оригінальний текст
довести
Перш ніж доводити твердження, ми спочатку представляємо твердження в термінах схеми. Схема кодує значення в обчисленні разом із двома іншими типами даних:
Операції: такі як обчислення множення та додавання вхідних даних
Порядок виконання операцій
Для кодування цих даних схеми PLONKish представлені як набір векторів і обмежень. Обмеження – це зв’язки, яким повинні підкорятися одиниці у векторі. Типи обмежень: обмеження воріт і обмеження копіювання, які відповідно представляють операції та порядок операцій у схемі.
Існує багато способів вираження схеми за допомогою різних архітектур воріт і схем.
Уявіть оператор як схему
Припустимо, що у нас є два вентилі: вентиль множення та вентиль додавання. Вентиль множення представлено у вигляді вектора |a|b|c| довжини 3.
Якщо цей гейт вибрано, він обмежує значення c рівним a*b. Аналогічно, вентиль додавання представляється як вектор довжини 3, і якщо вибрано вентиль додавання, c дорівнює a+b. Використовуючи ці вентилі, представимо скалярний добуток між двома векторами (a,b) і (c,d). Для цього нам потрібно виконати наступні розрахунки:
Використовуйте вентиль множення, щоб обчислити a*b
Використовуйте вентиль множення, щоб обчислити c*d
Обчислити ab+cd з додатком
Це можна представити вектором.
Зауважте, що вихід першого та другого вентилів множення є вхідним значенням вентиля додавання. Ці дані кодуються окремо від обмежень вентиля в нашій схемі. Це називається обмеженням копіювання.
Отже, чому обмеження схеми важливі? Якби не було обмежень, тоді зловмисний валідатор міг би ввести в схему будь-яке значення, яке йому подобається. Наприклад, верифікатор може замінити ab+cd на aba*b. Подібно до смарт-контрактів, обмеження повинні бути перевірені за допомогою системи доказів, перш ніж їх можна буде використовувати.
Заява про сертифікат
Тепер, коли ми можемо представити твердження в термінах схем, як перевіряльник переконає верифікатор, що доказ дійсний? Для системи PLONK прувер повинен переконати верифікатор у тому, що обмеження воріт і обмеження копіювання виконуються. Для обмежень копіювання це робиться шляхом перевірки перестановки.
Перевірку заміни вперше запропонував Баєр-Грот, а потім розвинув у статті PLONK Габізон, Вільямсон і Чоботару. Щоб довести обмеження воріт, потрібно обчислити певний частковий поліном (поліном частки).
Інтуїтивно зрозуміло, перевірки перестановки показують, що якщо записи обмежень копіювання переставлені, схема залишається незмінною.
Перевірка на заміну
Ми говоримо, що вектор a пов’язаний з вектором b перестановкою σ, якщо для всіх i-х позицій b існує позиція σ(i), яка дорівнює a. Ми позначимо це як σ(a)=b. Дано два вектори a=(a,b,...,c), b=(a',b',...,c')$ і перестановку σ, ми хочемо визначити, що σ(a)= b . Це можна зробити наступним чином:
Представте вектори як a'=((a,1),(b,2),...,(c,n)) і b'=((a',σ(1),(b',σ( 2) )),...,(c',σ(n))).Це кодує вектор відносно перестановки σ.
Перепишіть вектор як поліноміальний вектор: a''=((a+1X),(b+2X),...,(c+nX)) і b''=((a'+σ(1)X ), (b'+σ(2)X),..., (c'+σ(n)X))
Перевірити, чи є a'' і b'' еквівалентними як мультимножини, можна здійснити випадковим вибором гами так, що $(a+1X+γ)(b+2X+γ)....(c+nX+γ ) = ( a'+σ(1)X)+γ)(b'+σ(2)X+γ)....(c'+σ(n)X+γ)$.
Вибираючи β навмання, ми можемо перевірити, чи ці поліноми еквівалентні за допомогою леми Шварца-Ціпеля. Множини a'' і b'' еквівалентні як мультимножини, якщо вони еквівалентні як поліноми. Якщо вони не є еквівалентними поліномами, то a'' і b'' не є еквівалентними мультимножинами.
Переглянути оригінал
Контент має виключно довідковий характер і не є запрошенням до участі або пропозицією. Інвестиційні, податкові чи юридичні консультації не надаються. Перегляньте Відмову від відповідальності , щоб дізнатися більше про ризики.
Вступ до основ доказу з нульовим знанням і його застосування в області блокчейну
У складній галузі криптографії докази з нульовим знанням пропонують унікальне рішення, здавалося б, суперечливого завдання: довести знання частини інформації без розкриття самої інформації. У цьому методі шифрування беруть участь дві сторони: підтверджувач і перевіряльник. Мета перевірки полягає в тому, щоб довести, що вони володіють певною інформацією (назвемо її x), не розкриваючи жодних даних про сам x. Про те, що верифікатор дізнається з обміну, це простий факт, що перевіряльник має ці знання. Найголовніше, що верифікатор не має додаткової інформації про x.
Наприклад, коли Сяолін і Сяоші грають у квест, Сяолінг каже Сяолінгу, що зламав пароль певної «скриньки зі скарбами». Але Сяо Лін не бажає прямо ділитися готовою «відповіддю» і не бажає відкривати скриню зі скарбами перед Сяо Теном. Тож як довести Сяо Ши, що він справді розгадав головоломку та знає пароль скрині зі скарбами?
Тож він попросив Сяо Тена написати на аркуші паперу рядок рядків, які знав лише він, одночасно підписати своє ім’я та просунув папір у щілину в скрині зі скарбами.
Потім Сяо Лін відкрив скриньку зі скарбами, вийняв папір, який поклав Сяо Тень, і показав його Сяо Тену. Сяо Тен перевірив, чи правильний рядок і підпис. Це доводить, що Сяо Лін знає пароль скриньки зі скарбами, і цей папірець справді витягли зі скриньки.
Процес дешифрування не був відомий Сяо Тену, і в той же час Сяо Лінг довів, що він зламав пароль скриньки зі скарбами.
Доказ нульового знання
У криптографії Доказ нульового знання (Zero Knowledge Proof, також відомий як ZKP) або протокол нульового знання — це метод, який дозволяє перевіряючому перевіряти без розкриття самої інформації чи будь-якої іншої інформації. Верифікатор вірить або доводить, засіб перевірки істинності певного твердження чи твердження.
Доведення з нульовим знанням було вперше запропоновано в статті «Складність знань інтерактивних доказів» професорами MIT Шафі Голдвассером, Сільвіо Мікалі та майстром криптографії Чарльзом Рокоффом. Ця концепція алгоритму заклала певну основу для сучасної криптографії.
Докази з нульовим знанням мають дві додаткові властивості: короткість і нульовий рівень знань**. Стислість дозволяє верифікатору прийняти правильність великого обчислення без обчислення самого твердження чи представлення. А нульове знання гарантує відсутність витоку даних про введення.
Докази з нульовим знанням мають вирішальне значення для забезпечення конфіденційності та безпеки багатьох криптографічних протоколів. Вони є запобіжником від потенційного витоку інформації, невидимим бронежилетом криптосвіту. Застосування цих знань можна поширити на різні сфери, включаючи технологію блокчейн і безпечні системи автентифікації, де захист конфіденційних даних має першочергове значення.
Широкий спектр застосування
**Блокчейн і технологія шифрування: **Технологія блокчейну, як-от Zcash, використовує докази нульового знання для захисту конфіденційності транзакцій. Людина може довести, що у неї достатньо кіптовалюти для здійснення транзакції, не розкриваючи точну суму своїх коштів. Це забезпечує конфіденційність, одночасно забезпечуючи цілісність транзакцій.
Автентифікація та **Автентифікація: **підтвердження нульової інформації також можна використовувати для підтвердження особи без розкриття непотрібної інформації. Наприклад, особа може підтвердити, що їй вже виповнилося 18 років, не вказуючи точної дати народження, або підтвердити свою особу, не повідомляючи конфіденційних даних, як-от паролів. Це мінімізує ризик викрадення особистих даних або несанкціонованого доступу.
Безпечні багатосторонні обчислення (SMPC): Докази з нульовим знанням можуть полегшити складну взаємодію між декількома сторонами, де кожна сторона може довести, що вона дотримується узгодженого протоколу, не розкриваючи специфіку свого введення. Це дуже ефективно в багатьох аспектах, таких як інтелектуальний аналіз даних із збереженням конфіденційності, безпечні системи голосування тощо. Мережева безпека: Докази з нульовим знанням можуть забезпечувати покращені протоколи безпеки, такі як безпечні політики паролів. Він може перевірити, чи запропонований користувачем пароль відповідає певним стандартам безпеки, не повідомляючи серверу та не записуючи фактичний пароль. Оскільки паролі ніде не зберігаються, потенційні порушення запобігають. **Обмін даними з одночасним захистом конфіденційності: **Доказ нульової інформації можна використовувати, щоб підтвердити, що певні дані відповідають певним вимогам, не розкриваючи самих даних, що особливо важливо в таких сферах, як медичне обслуговування чи фінанси. Положення щодо конфіденційності даних у цих сферах є суворими, але обмін інформацією безпечним способом із збереженням конфіденційності може принести величезні переваги, наприклад, сприяти розвитку медичної кар’єри тощо. Докази з нульовим знанням відкрили нові технічні можливості в блокчейні. Це можна побачити в різних рівнях 2, таких як ZKSync і zkEVM Polygon. Однак це лише підмножина блокчейнів, створених доказами з нульовим знанням.
Як висловити доказ
У цьому розділі та в решті статті ми зосередимося на доказах, створених для систем перевірки на основі PLONK.
PLONK — це система доказів нульового знання, її повна назва
«Перестановки над базами Лагранжа для всесвітніх неінтерактивних аргументів знання», тобто «Глобальна система доказів неінтерактивного знання на основі баз Лагранжа».
По суті, **PLONK — це універсальна, оновлювана система криптографічного підтвердження, інновація, яка забезпечує ефективну перевірку та масштабування в системах блокчейн та інших розподілених мережах. ** Ідея PLONK полягає в тому, щоб побудувати загальну й оновлювану систему доказів. У контексті систем підтвердження з нульовим знанням «універсальний» означає, що його можна використовувати для будь-якого типу обчислень; «оновлюваний» означає, що криптографічний довідковий рядок (частина даних, яка використовується для створення та перевірки підтвердження) безпечно оновлюється через час.
PLONK виділяється своєю ефективністю та простотою, що робить його популярним вибором для проектів і компаній, яким потрібна безпечна приватна система транзакцій. Порівняно з іншими системами, вона використовує менше обмежень на шлюз (основну одиницю обчислення, яку ми разом називаємо «шлюзами»), що робить обчислення швидшими та більш масштабованими. Віталік Бутерін опублікував більш повний опис PLONK. [Скопіюйте посилання в браузер, щоб переглянути оригінальний текст довести
Перш ніж доводити твердження, ми спочатку представляємо твердження в термінах схеми. Схема кодує значення в обчисленні разом із двома іншими типами даних:
Для кодування цих даних схеми PLONKish представлені як набір векторів і обмежень. Обмеження – це зв’язки, яким повинні підкорятися одиниці у векторі. Типи обмежень: обмеження воріт і обмеження копіювання, які відповідно представляють операції та порядок операцій у схемі.
Існує багато способів вираження схеми за допомогою різних архітектур воріт і схем.
Уявіть оператор як схему
Припустимо, що у нас є два вентилі: вентиль множення та вентиль додавання. Вентиль множення представлено у вигляді вектора |a|b|c| довжини 3. Якщо цей гейт вибрано, він обмежує значення c рівним a*b. Аналогічно, вентиль додавання представляється як вектор довжини 3, і якщо вибрано вентиль додавання, c дорівнює a+b. Використовуючи ці вентилі, представимо скалярний добуток між двома векторами (a,b) і (c,d). Для цього нам потрібно виконати наступні розрахунки:
Зауважте, що вихід першого та другого вентилів множення є вхідним значенням вентиля додавання. Ці дані кодуються окремо від обмежень вентиля в нашій схемі. Це називається обмеженням копіювання. Отже, чому обмеження схеми важливі? Якби не було обмежень, тоді зловмисний валідатор міг би ввести в схему будь-яке значення, яке йому подобається. Наприклад, верифікатор може замінити ab+cd на aba*b. Подібно до смарт-контрактів, обмеження повинні бути перевірені за допомогою системи доказів, перш ніж їх можна буде використовувати. Заява про сертифікат
Тепер, коли ми можемо представити твердження в термінах схем, як перевіряльник переконає верифікатор, що доказ дійсний? Для системи PLONK прувер повинен переконати верифікатор у тому, що обмеження воріт і обмеження копіювання виконуються. Для обмежень копіювання це робиться шляхом перевірки перестановки.
Перевірку заміни вперше запропонував Баєр-Грот, а потім розвинув у статті PLONK Габізон, Вільямсон і Чоботару. Щоб довести обмеження воріт, потрібно обчислити певний частковий поліном (поліном частки).
Інтуїтивно зрозуміло, перевірки перестановки показують, що якщо записи обмежень копіювання переставлені, схема залишається незмінною. Перевірка на заміну
Ми говоримо, що вектор a пов’язаний з вектором b перестановкою σ, якщо для всіх i-х позицій b існує позиція σ(i), яка дорівнює a. Ми позначимо це як σ(a)=b. Дано два вектори a=(a,b,...,c), b=(a',b',...,c')$ і перестановку σ, ми хочемо визначити, що σ(a)= b . Це можна зробити наступним чином:
Представте вектори як a'=((a,1),(b,2),...,(c,n)) і b'=((a',σ(1),(b',σ( 2) )),...,(c',σ(n))).Це кодує вектор відносно перестановки σ.
Перепишіть вектор як поліноміальний вектор: a''=((a+1X),(b+2X),...,(c+nX)) і b''=((a'+σ(1)X ), (b'+σ(2)X),..., (c'+σ(n)X))
Перевірити, чи є a'' і b'' еквівалентними як мультимножини, можна здійснити випадковим вибором гами так, що $(a+1X+γ)(b+2X+γ)....(c+nX+γ ) = ( a'+σ(1)X)+γ)(b'+σ(2)X+γ)....(c'+σ(n)X+γ)$.
Вибираючи β навмання, ми можемо перевірити, чи ці поліноми еквівалентні за допомогою леми Шварца-Ціпеля. Множини a'' і b'' еквівалентні як мультимножини, якщо вони еквівалентні як поліноми. Якщо вони не є еквівалентними поліномами, то a'' і b'' не є еквівалентними мультимножинами.