Доказ виконаної роботи Див. також | Примітки | Навігаційне менюрвиправивши або дописавши її

КриптографіяКриптовалюти


англ.DoS-атакспамукапчіHashcash«біткоїнів»хеш-сумимайнінгу«Біткоїн»DoS-атакспамутеорії алгоритмівгіпотезаМатематичний інститут Клеядоларів США




Доказ виконання роботи (англ. Proof-of-work, POW) — принцип захисту систем від зловживання послугами (наприклад, DoS-атак або розсилок спаму), заснований на необхідності виконання стороною, яка робить запит (клієнтом) деякої досить складної тривалої роботи (POW-завдання, одностороння функція), результат якої легко і швидко перевіряється стороною, що обробляє запит (сервером) . Головна особливість цих схем полягає в асиметрії витрат часу — тривалість для ініціатора запиту і висока швидкість для відповіді. Подібні схеми також відомі як client puzzle (функція клієнтської головоломки), computational puzzle (обчислювальна головоломка), або CPU pricing function.


Не слід плутати цей спосіб захисту з капчі, які пропонують завдання, легкі для людини, але складні або зовсім нерозв'язні для комп'ютера. POW-завдання не призначені для людини, їх рішення комп'ютером завжди досяжне, але вимагає виконання великої кількості операцій. При цьому для перевірки отриманого рішення потрібна відносно мала кількість операцій.


Прикладом POW-захисту може служити система Hashcash[1] , яка використовує хешування часткової інверсії при відправці по електронній пошті. Для розрахунку відповідного заголовка потрібно близько 252 хеш-обчислень, які треба перераховувати для кожної відправки. Необхідність постійного перерахунку робить відправку спаму дуже ресурсномісткою, але не створює перешкод для відправки звичайної пошти. При цьому для перевірки коректності обчисленого коду використовується одноразове обчислення SHA-1 із заздалегідь підготовленою міткою.


Інші варіанти доказів виконання роботи використовують як базові елементи складної криптографічної системи. Наприклад, у системі «біткоїнів» використовується багаторівневе хешування — хеш попереднього блоку стає елементом подальшого. Таким чином немає можливості змінити блок без зміни хешів у всіх наступних блоках. Але не всякий хеш визнається істинним — шістнадцяткове значення хеш-суми повинно бути менше значення спеціального параметра, що визначає складність майнінгу. Для пошуку такої хеш-суми потрібен її багаторазовий перерахунок з перебором довільних значень параметра nonce. Складність підбирається таким чином, щоб при використанні всієї обчислювальної потужності мережі середній час знаходження хешу було близьким до деякого заданого значення. Наприклад, час формування блоку в мережі «Біткоїн» становить близько 10 хвилин. Відповідно, будь-яка зміна інформації в сформованому блоці потребує аналогічної витрати обчислювальних ресурсів для перерахунку хешу зміненого блоку і кожного наступного. При цьому перевірка цілісності ланцюжка обмежена одноразовим обчисленням хешів поточного блоку і попереднього, що не призводить до істотних затримок.



Потенційна уразливість |


Експерти продовжують обговорювати, чи є POW-захист досить ефективною проти DoS-атак і спаму[2][3]. У теорії алгоритмів існує гіпотеза про приблизну кількість часу на пошук рішення і на перевірку істинності запропонованого рішення. Це одне з семи завдань тисячоліття, за вирішення якої Математичний інститут Клея призначив премію в мільйон доларів США.



Див. також |


  • Капча

  • Біткоїн

  • Асиметричні алгоритми шифрування

  • Одностороння функція


Примітки |




  1. ftp://sunsite.icm.edu.pl/site/replay.old/programs/hashcash/hashcash.pdf


  2. http://www.cl.cam.ac.uk/~rnc1/proofwork.pdf


  3. http://www.econinfosec.org/archive/weis2006/docs/50.pdf








П:  Портал «Програмування» П:  Портал «Інформаційні технології»




Popular posts from this blog

Magento 2 duplicate PHPSESSID cookie when using session_start() in custom php scriptMagento 2: User cant logged in into to account page, no error showing!Magento duplicate on subdomainGrabbing storeview from cookie (after using language selector)How do I run php custom script on magento2Magento 2: Include PHP script in headerSession lock after using Cm_RedisSessionscript php to update stockMagento set cookie popupMagento 2 session id cookie - where to find it?How to import Configurable product from csv with custom attributes using php scriptMagento 2 run custom PHP script

Can not update quote_id field of “quote_item” table magento 2Magento 2.1 - We can't remove the item. (Shopping Cart doesnt allow us to remove items before becomes empty)Add value for custom quote item attribute using REST apiREST API endpoint v1/carts/cartId/items always returns error messageCorrect way to save entries to databaseHow to remove all associated quote objects of a customer completelyMagento 2 - Save value from custom input field to quote_itemGet quote_item data using quote id and product id filter in Magento 2How to set additional data to quote_item table from controller in Magento 2?What is the purpose of additional_data column in quote_item table in magento2Set Custom Price to Quote item magento2 from controller

How to solve knockout JS error in Magento 2 Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?(Magento2) knockout.js:3012 Uncaught ReferenceError: Unable to process bindingUnable to process binding Knockout.js magento 2Cannot read property `scopeLabel` of undefined on Product Detail PageCan't get Customer Data on frontend in Magento 2Magento2 Order Summary - unable to process bindingKO templates are not loading in Magento 2.1 applicationgetting knockout js error magento 2Product grid not load -— Unable to process binding Knockout.js magento 2Product form not loaded in magento2Uncaught ReferenceError: Unable to process binding “if: function()return (isShowLegend()) ” magento 2