Това, което 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 за създаване на публични адреси. Полученият резултат служи като уникален идентификатор за публичния ключ и помага да се гарантира целостта и сигурността на транзакциите, съхранявани в счетоводната книга. Криптирайки информацията по този начин, става по-трудно за неоторизирани лица да имат достъп и да манипулират данните.
Свойства на хеш функцията
- Детерминирана: Същите съставки винаги създават едно и също смути. По същия начин, едни и същи данни винаги ще дават един и същ хеш.
- Устойчивост на предварителен образ: Ако имате само смутито, не можете да разберете точно какви плодове са използвани. По същия начин, ако имате само хеша, не можете да определите оригиналните данни.
- Ефект на лавина: Дори и малка промяна в съставките създава напълно различно смути. При хеширането, много малка промяна в данните води до напълно различен хеш.
- Устойчивост на колизии: Изключително трудно е да се намерят два различни набора от съставки, които да създадат едно и също смути. По същия начин е изключително малко вероятно два различни набора от данни да дадат един и същ хеш.
- Бърза проверка: Приготвянето на смутито е бързо и лесно се проверява, че резултатът е смути. Хеш функциите се изчисляват бързо и всеки може лесно да ги провери.
Дейност: Генерирай SHA 256 хеш
Любопитно ли ти е как работи хеширането? Сканирай QR кода, за да генерираш моментално SHA256 хеш от всяка дума, изречение или вход, който избереш. Хеш функциите са като дигитални пръстови отпечатъци: те са еднопосочни, което означава, че веднъж хеширано, не може да се върне обратно. Пробвай и се увери сам!