Як відомо, Bitcoin побудований на принципах криптографії - науки про шифри. Напевно всі чули про злом шифрувальної машини Enigma , Що дозволила союзникам розшифровувати перехоплені повідомлення для німецьких підводних човнів під час Великої Вітчизняної війни. Саме з Енігми, а так само робіт Шеннона і Тьюринга почалася історія сучасної криптографії.
Шеннон був одним з перших, хто розвіяв міф про " безпеки через приховування ". До цього намагалися зберегти в таємниці саме алгоритми шифрування в надії на те, що не знаючи деталей реалізації, ворог не зможе перехоплювати шифровані повідомлення. Досить було шпигунськими методами викрасти опис алгоритму і вся система ставала скомпрометованої. Крім того, подібні алгоритми, як правило, не мали вдалим дизайном, містили уразливості і погано протистояли атакам так, що часом навіть не було необхідності в впізнаванні деталей їх реалізації.
Шеннон сформулював принцип "ворог знає систему", а це означало, що не було сенсу ховати алгоритм, а навіть навпаки, слід було відкрити його для всіх бажаючих. Але щось приховане все одно має бути, адже шифр за визначенням - це повідомлення, прочитати яке в ідеалі може лише одна людина - володар секрету шифру. При підході "ворог знає систему" подібним секретом став так званий "ключ".
Саме знання правильного ключа і робить розшифрування повідомлення можливим. Логічно, що в ідеалі, ключ повинен бути відомий лише довіреною сторонам. "Уплившій" ключ, в залежності від обраної криптографічного системи, дає ворогові можливість перехоплювати і навіть підробляти повідомлення власника. В основі Bitcoin все ті ж принципи, ось чому так важливо тримати ключі від гаманців в безпечному сховищі.
Коли ми говоримо про ключі, ми як правило згадуємо і його довжину. Довжина ключа в будь-який криптографічного системі вимірюється в бітах, але в різних системах "безпечна" довжина ключа так само різна. Для симетричних алгоритмів, на зразок AES - це сотні бітів, а для систем з публічним ключем на зразок RSA - це тисячі. Об'єднує їх одне - за задумом зломщикові потрібні величезні обчислювальні потужності і дуже багато часу для лобової атаки шифру. До моменту, коли атакуючий знайде правильний ключ, інформація швидше за все буде вже неактуальною, а електрики він витратить більше, ніж зможе виручити від продажу цієї інформації.
Вважаючи, що ключі мають вигляд статистично рівномірного розподілу, тобто будь-яка комбінація бітів равновероятности, ворогові належить випробувати в середньому половину з усіх комбінацій навіть в разі, якщо він буде перебирати не один за іншим, а таким собі випадковим чином. Значить, можна сказати, що безпека ключа заснована на комбінаторики і ми маємо справу з вірогідністю. Якщо ймовірність знайти ключ за розумний час, володіючи розумними потужностями нижче деякого порогового значення, то ми говоримо, що шифр криптографически стійкий, за умови, що у дано ¿алгоритму не існує будь-яких "вроджених" вразливостей.
У Bitcoin використовується ECDSA secp256k1, криптографія на основі еліптичних кривих, з довжиною ключа 256 біт. Алгоритм лобової атаки полягає в наступному:
За допомогою наступної команди виміряємо час генерації ключа secp256k1 на моєму 2.3 Ghz Core i7 (на одному ядрі):
$ Time for i in {1..10000}; do openssl ecparam -genkey -name secp256k1 -noout -out myprivatekey.pem; openssl ec -in myprivatekey.pem -pubout -out mypubkey.pem; done
Тут, для точності експерименту я зробив 10 тис. Вимірів, що зайняло 1 хвилину і 40 секунд (user time) або 10 мілісекунд на операцію. Далі ми зробимо такі припущення:
Коридори Tianhe-2
отримаємо:
Мхм, занадто багато, попротикаємо ще припущень.
Отримаємо: 4,5 * 10 ^ 21 років. Все одно занадто і занадто багато.
Ще в наші обчислення можна включити закон Мура , Прикинути потужності квантових комп'ютерів майбутнього, знайти помилку в моїх розрахунках і т.д., але все одно - до 2140-року, кінця епохи біткоіни, ну ніяк не встигнути.
Окремо хочу зупинитися на числі з 48-ю нулями і красивою назвою куіндіцілліон і щоб така величезна кількість могло вміститися в голові, пропоную кілька порівнянь від маленького до великого:
Маса Місяця - 0,0123 земної. Таким чином, ймовірність випадково знайти ключ від Bitcoin-гаманця - це навіть не голка в стозі сіна, насправді це те ж саме, що знайти одну єдину заповітну молекулу всередині Місяця.
Запевняю вас, можете спати спокійно.
Китайський монстр виявився не таким вже й потужним?Copyleft © 2017 . www.sundao.com.ua Йога в Украине