Що дає нам Bitcoin — це тверда обіцянка: програма виконається точно так, як зазначено.
Андрій М. Антонопулос
Криптографія з відкритим/закритим ключем
Криптографія — це практика перетворення інформації на секрет, який можуть прочитати лише потрібні люди.
- Шифрування — це процес перетворення інформації у закодовану форму, щоб лише той, хто має правильний ключ, міг її прочитати.
- Дешифрування — це процес перетворення цієї закодованої інформації назад у читабельну форму.
У традиційній криптографії двоє людей, які хочуть спілкуватися приватно, спочатку повинні поділитися одним і тим самим секретним ключем, подібно до спільного пароля. Одна людина використовує цей ключ для шифрування повідомлення перед відправкою, а інша — той самий ключ для дешифрування та читання.
Проблема цієї системи в тому, що обидві сторони вже повинні мати спільний секретний ключ. Якщо хтось інший отримає доступ до цього ключа, він зможе прочитати будь-які перехоплені повідомлення.
Bitcoin вирішує цю проблему іншим підходом, який називається криптографія з відкритим ключем, де користувачам не потрібно заздалегідь обмінюватися секретними ключами.
Криптографія з відкритим/закритим ключем вирішує проблему обміну секретами. Замість спільного пароля кожна людина має два ключі: відкритий і закритий.
- відкритий ключ можна ділитися з будь-ким.
- закритий ключ завжди потрібно тримати в секреті.
Якщо Іван хоче надіслати щось Артему, він може використати відкритий ключ Артема. Лише Артем зможе розблокувати це за допомогою свого закритого ключа. Навіть якщо хтось перехопить повідомлення, він не зможе його прочитати чи використати без закритого ключа.
У Bitcoin ця система використовується для створення цифрових підписів. Цифровий підпис доводить, що власник закритого ключа схвалив транзакцію, подібно до підпису імені на документі. Саме це дозволяє транзакціям у Bitcoin бути захищеними та перевіреними без довіри до третьої сторони.
Транзакції в Bitcoin передбачають передачу права власності на біткоїни з однієї адреси на іншу.
Шифрування використовується для того, щоб лише справжній власник біткоїнів мав право надсилати свої гроші іншій людині. Це гарантує захист їхньої власності від зловмисників.
Як додатковий захід захисту, кожна транзакція в Bitcoin автоматично отримує УНІКАЛЬНИЙ цифровий підпис. Цей унікальний цифровий підпис забезпечується технологією, яку неможливо підробити, і допомагає мережі переконатися, що саме справжній власник біткоїнів, а не хтось інший, їх надіслав.
Кожен користувач має два ключі: закритий ключ, який тримають у секреті, і відкритий ключ, яким можна ділитися з іншими. Закритий ключ служить формою ідентифікації та підтвердженням права власності, підтверджуючи: «Ця адреса належить мені, і я маю над нею контроль».
Як працює транзакція в Bitcoin
- Створення транзакції: Користувач ініціює транзакцію в Bitcoin, вказуючи такі деталі, як адреса отримувача та сума біткоїнів для відправлення.
- Генерація цифрового підпису: Відправник створює унікальний цифровий підпис за допомогою свого закритого ключа. Цей підпис — це унікальний код, який підтверджує справжність транзакції.
- Трансляція транзакції: Підписана транзакція транслюється в мережу Bitcoin, що означає намір передати право власності на біткоїни від відправника до отримувача.
- Перевірка в мережі: Вузли мережі Bitcoin отримують транзакцію та використовують відкритий ключ щоб перевірити справжність підпису транзакції. Одночасно вони використовують публічний ключ щоб перевірити цифровий підпис.
- Підтвердження у мережі Bitcoin: Якщо перевірка проходить успішно, транзакція буде додана до реєстру, який слугує надійним і прозорим записом усіх транзакцій. Після підтвердження право власності на біткоїн офіційно переходить від відправника до одержувача.
цифровий підпис, створений за допомогою приватного ключа відправника, доводить, що транзакцію було авторизовано власником біткоїна. Мережа Bitcoin може потім перевірити цей доказ і записати транзакцію.
Пояснення хешування
Будь ласка, не лякайтесь технічних термінів і математичних понять далі. Ми розуміємо, що не всі захоплюються математикою, але ви можете здивувати себе й побачити, що навіть найскладніші ідеї можна зрозуміти, доклавши трохи зусиль.
функція — це як машина, яка приймає певну інформацію і перетворює її на щось нове. Інформація, яку ви даєте функції, називається вхідними даними. Нова інформація, яку створює функція, — це вихідні дані. Функції допомагають комп’ютерам виконувати завдання та вирішувати проблеми.
Що таке функція?
Функція — це набір інструкцій, який приймає вхідні дані та створює вихідні. Можна уявити це як рецепт: ви дотримуєтесь кроків із певними інгредієнтами й завжди отримуєте передбачуваний результат.
У Bitcoin функції використовуються для обробки та перевірки транзакцій. Коли хтось надсилає біткоїн, криптографічні функції допомагають перевірити, що транзакція дійсна, підтвердити, що у відправника достатньо коштів, і оновити баланси у реєстрі Bitcoin. Після перевірки й додавання до блоку транзакція стає частиною постійного запису у блокчейні.
Що таке одностороння функція?
Одностороння функція — це особливий тип функції, яку легко обчислити в одному напрямку, але надзвичайно складно обернути. Наприклад, змішати інгредієнти у смузі легко, але ви не зможете розділити смузі назад на початкові інгредієнти.
Безпека Bitcoin ґрунтується на односторонніх функціях. Вони використовуються у криптографії з публічним і приватним ключем, дозволяючи людям ділитися публічним ключем, зберігаючи приватний ключ у таємниці. Навіть якщо публічний ключ видно, неможливо отримати з нього приватний ключ. Саме це робить транзакції Bitcoin безпечними.
Що таке хеш-функція?
хеш-функція — це як машина для створення секретного коду. Вона приймає повідомлення і перетворює його на код.
Як працює хешування у транзакціях Bitcoin
У Bitcoin кожна транзакція перетворюється на хеш перед тим, як її додадуть до блокчейну. Хеш — це унікальний цифровий відбиток транзакції. Якщо хтось спробує змінити навіть найменшу частину транзакції, хеш повністю зміниться. Це дозволяє мережі легко виявляти підробки.
Роль хешування у безпеці Bitcoin
Хешування допомагає захищати мережу Bitcoin, роблячи транзакції легкими для перевірки й неможливими для непомітного редагування. Оскільки кожна транзакція має свій унікальний хеш, мережа може швидко виявити, якщо щось було змінено.
Хеш-функція приймає дані й перетворює їх на фіксований рядок цифр і літер, який називається хешем. Однакові вхідні дані завжди дають однаковий хеш, але навіть найменша зміна у вхідних даних створить зовсім інший результат. Ця властивість дозволяє комп’ютерам перевіряти, що дані не були змінені.
Хешування — це як створення відбитка пальця для цифрових даних. Це процес перетворення цифрового повідомлення у код фіксованої довжини, який слугує унікальним ідентифікатором. Як відбиток пальця ідентифікує людину, так і хеш ідентифікує цифрове повідомлення.
вихідні дані, або хеш, завжди мають однакову довжину, незалежно від того, якою довгою була початкова інформація. Bitcoin використовує кілька конкретних типів хеш-функцій, зокрема SHA-256 і RIPEMD160.
Кілька прикладів наведено нижче:
- SHA256-хеш рядка привіт, світ
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
- SHA256-хеш рядка привіт, світ.
7ddb227315f423250fc67f3be69c544628dffe41752af91c50ae0a9c49faeb87- Зверніть увагу, що навіть невелика зміна у вхідних даних повністю змінює результат у порівнянні з першим прикладом
- SHA256-хеш завантажуваного iso-файлу Ubuntu 18.10
7b9f670c749f797a0f7481d619ce8807edac052c97e1a0df3b130c95efae4765- Це вхідний файл великого розміру, але результат все одно має фіксовану довжину
Можна також уявити хешування як нотний запис, що передає суть музичного твору. Так само як нотний запис є унікальним представленням мелодії, хеш-значення є унікальним представленням даних.
Порівнюючи нотний запис твору з фактичним виконанням, музикант може визначити, чи виконання є точним. Аналогічно, порівнюючи хеш-значення отриманих даних з оригінальним хеш-значенням, можна визначити, чи були дані змінені під час передачі.
Як і незначне відхилення у виконанні музики може змінити її звучання, навіть найменша зміна у вихідних даних призведе до іншого хеш-значення. Це робить хешування потужним інструментом для забезпечення цілісності та автентичності транзакції Bitcoin.
Процес кодування публічного ключа через хешування використовується для підвищення безпеки інформації шляхом перетворення її у фіксований, нечитаємий формат. Bitcoin використовує алгоритми SHA-256 та RIPEMD160 для створення публічних адрес. Отриманий результат слугує унікальним ідентифікатором для публічного ключа і допомагає забезпечити цілісність та безпеку транзакцій, що зберігаються у реєстрі. Шифруючи інформацію таким чином, стає складніше неавторизованим особам отримати доступ до даних або змінити їх.
Властивості хеш-функції
- Детермінованість: Ті самі інгредієнти завжди дають той самий смузі. Так само одні й ті самі дані завжди дають однаковий хеш.
- Стійкість до відновлення (pre-image resistance): Якщо у вас є лише смузі, ви не зможете визначити, які саме фрукти були використані. Аналогічно, якщо у вас є лише хеш, ви не зможете визначити оригінальні дані.
- Ефект лавини: Навіть незначна зміна інгредієнтів створює зовсім інший смузі. У хешуванні дуже мала зміна даних дає зовсім інший хеш.
- Стійкість до колізій: Надзвичайно складно знайти дві різні комбінації інгредієнтів, які дадуть точно такий самий смузі. Так само надзвичайно малоймовірно, що два різних набори даних дадуть однаковий хеш.
- Швидкість перевірки: Приготувати смузі швидко, і легко перевірити, що це саме смузі. Хеш-функції швидко обчислюються і легко перевіряються будь-ким.
Завдання: Згенеруй SHA 256 хеш
Цікаво, як працює хешування? Скануй QR-код, щоб миттєво згенерувати SHA256-хеш з будь-якого слова, речення чи введених даних. Хеш-функції — це як цифрові відбитки пальців: вони односторонні, тобто після хешування щось повернути назад неможливо. Спробуй сам і переконайся!