Криптографията в Биткойн

Публичен криптографски ключ

Публичният криптографски ключ представлява ново развитие над симетричния ключ, когато става въпрос за комуникации. Вместо да се използва един ключ за криптиране и за декриптиране, се използват отделни ключове. Потребителят генерира двойка ключове, които са математически свързани един към друг. Единият (публичен) ключ се използва за криптиране, а другият (частен) ключ се използва за декриптиране. Алгоритъмът е проектиран по такъв начин, че при атака, атакуващият не може лесно да получи частния ключ от даден публичен ключ .

публичен ключ

При използването на този метод, едно лице може да сподели своя публичен ключ, обикновено чрез публикуване на сървър или уеб сайт, и всеки може да го изтегли и да го използва, за да криптира файлове и съобщения, които да му изпрати. Така криптираните съобщения могат да се декриптират само със съответния частен ключ.

Най-популярната реализация на публичен ключ за криптиране е Pretty Good Privacy (PGP) с отворен код на неговия съответстващ Privacy Guard на GNU (GPG).

Публичният ключ PGP изглежда така
––BEGIN PGP PUBLIC KEY BLOCK––

Version: GnuPG v2.0.17 (MingW32)

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 uRkFDPE1NWJAngLobMUo93s=

Има и PGP плъгин за имейл клиент. Thunderbird на Mozilla чудесно съчетава ползите от публичния ключ за криптиране с обикновена поща. Разбира се, метаданните (вашият имейл адрес и получателят на имейла) не се криптират. Само съобщението на имейла ще бъде криптирано. (В момента системата BitMessage позволява размяна на мейл съобщения, при които дори адресите на изпращача и получателя са криптирани и невидими за никой друг, освен тях – бел. ред.).

След като прочетохте всичко това, сигурно вече се питате какво общо има всичко това с Биткойн. Само след няколко реда ще ви стане ясно.

Цифрови подписи

Криптографията с публичен ключ има и друга употреба, отвъд простото криптиране и декриптиране на данни. Тя може да се използва за създаване на цифров подпис. Той се използва, за да се осигури едновременно проверка на автентичността, целостта на данните, както и недопускане на отхвърляне – всичко това е критично за функционирането на Биткойн. (Сигурно ще искате да си припомните статията Биткойн като електронен подпис.)

Цифровият подпис се генерира чрез комбиниране на частен ключ на даден потребител с данните, които той желае да подпише в математически алгоритъм. След подписване на данните, съответният публичен ключ може да се използва, за да се провери дали подписът е валиден.

Цифрови подписи

Тук е показано подписано съобщение с PGP. Обърнете внимание на цифровия подпис, прикрепен към дъното.

––BEGIN PGP SIGNED MESSAGE–– Hash: SHA256 This is an example of a PGP signed message. ––BEGIN PGP SIGNATURE–– Version: GnuPG v2.0.17 (MingW32)iF4EAREIAAYFAlIqmD0ACgkQuJVtv+58EFzNTgD/b9tS8CCqnmnKpvR+ZNwr2lGP bb5Ld3ZLPG/91VJ1udgA/1PI30He1e3F6Dj88wssnrMq0jpSOC+kFuxLnpPZxF83 =p9Ov ––END PGP SIGNATURE––

Една от особеностите на цифровия подпис е, че подписаните данни всъщност са неразделна част от подписа. Ако данните (съобщението в този случай) се променят дори и най-малко, подписът ще се окаже невалиден при проверка. Това дава възможност за сигурен трансфер на данни, като същевременно се гарантира, че никой не може просто да вземе подписа и да го прикрепи към друг файл в опит за фалшификация.

Нека се върнем към Едуард Сноудън. Да предположим, че той е трябвало да изпрати топ-секретни документи на Глен Грийнуолд, но NSA ги прихваща. Те може да искат да премахнат класифицирана информация от файловете и да я заменят с дезинформация преди да ги препратят към Грийнуолд. Обаче ако го направят, цифровият подпис ще стане невалиден. При проверка на подписа, Грийнуолд ще види, че той не съвпада с публичния ключ, който Сноудън му е предоставил.

Това е начинът, по който цифровите подписи се използват в Биткойн. Когато вашият портфейл създаде нов биткойн адрес, всъщност се създава нова двойка публичен-частен ключ, като се използва Elliptic Curve Digital Signature Algorithm (ECDSA). Публичният ключ се сегментира на няколко пъти, докато придобие вида на познат биткойн адрес от типа:

16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

Ако не сте прочели механиката на биткойн копаенето, това което трябва да знаете е, че публичният ключ минава чрез редица алгоритми, докато биткойн адресът се „изплюе” от другата страна на процеса. Частният ключ се съхранява в портфейла и трябва да бъде защитен поради причини, които ще видите след секунда.

Преди да продължим, трябва да се спомене, че мнозина имат представа за биткойн като някакъв вид цифров файл, който се получава и прехвърля от един човек на друг. Това не е така. Биткойните не са нищо повече от салда в публична книга (блок веригата). Ако искате да разберете колко биткойни имате в портфейла си, може просто да сканирате блок веригата, свързана със записи на всички входящи и изходящи потоци от вашия адрес, а след това просто да извадите изходящите потоци от входящите потоци. Това е всичко. Наистина всичко. Биткойн е просто баланс в счетоводна книга.

Когато правите превод, всичко, което извършвате, е да кажете на системата да съобщи на останалата част от потребителите в мрежата да добавят транзакция по прехвърляне на определен брой биткойни от един адрес  към друг. На практика само се намалява салдото ви в книгата, докато се повишава това на другия човек. Наистина не се различава от начина, по който работи вашата банка. Когато напишете платежно нареждане на някого, вашата банка просто отива в своите записи и намалява салдото по сметката ви, докато повишава сметката на получателя. Единствената разлика е, че книгата на биткойн операциите е публична и електронната транзакция изпълнява функции като при банков превод.

Когато създадете транзакция, тя се подписва с вашия личен ключ, преди да бъде изпратена към останалата част от мрежата. След това участниците в мрежата, които получават списъка с транзакциите, ще проверят цифровия подпис – дали съответства на публичния ключ на адреса, от който са изпратени биткойните. Ако това се потвърди, транзакцията се счита за валидна и се препраща към другите участници. В крайна сметка се включва в блок веригата.

Ако някой се опита да създаде фалшива транзакция чрез изпращане на средства от адрес, който не притежава, подписът ще е невалиден и сделката ще бъде отхвърлена от участниците в биткойн мрежата. Ако злонамерени участници се опитат да променят вашата транзакция, да речем чрез подмяна на изходния адрес или чрез промяна на количеството изпратени биткойни, това също ще направи подписа невалиден.

Цифровите подписи правят биткойн транзакциите (или всякакви други данни, подписани с цифров подпис) невъзвратими. След като подпишете транзакция, по-късно не можете да твърдите, че не сте я извършили, тъй като вие сте единственият, който притежава ключа. Разбира се, ако вашият ключ бъде изгубен или откраднат, ще загубите вашите биткойни.

Нека обобщим. Цифровите подписи са ключова съставка в Биткойн, която позволява само на собственика на определен биткойн адрес, и на никой друг, да публикува транзакции в блок веригата, като прехвърли биткойни от един адрес към друг.

Optimization WordPress Plugins & Solutions by W3 EDGE