Приватні ключі є одним із найважливіших компонентів криптовалютної мережі та присутні в системі з моменту її появи. Сучасні гаманці позбавляють користувачів необхідності розбиратися в пристрої приватних ключів та їх призначенні. Однак, як показує практика, нерідко люди, які активно використовують криптовлюти потрапляють у ситуації, які потребують наявності базових знань про влаштування та принцип роботи приватного ключа. Розглянемо детально даний компонент блокчейн-систем та його особливості. Для прикладу візьмемо класичну мережу - біткоїн, яка по суті є основою для переважної більшості криптовалют
У мережі біткоін приватний ключ - це просто набір цифр від 1 до 1077. Даний діапазон чисел настільки великий, що застосовуючи його на практиці, він фактично нескінченний і якби людина мала нескінченний запас часу і могла перебирати трильйон приватних ключів за одну секунду, то на підбір усіх пішов би часу в мільйон разів більше, ніж вік нашого всесвіту. Велика кількість можливих варіантівприватного ключа грає вирішальну роль захисту мережі Bitcoin.
При створенні біткоін-гаманця на комп'ютері створюється спеціальний файл, що містить два записи: private key (приватний ключ, PRIV) і public key (публічний ключ, PUB). І якщо приватний ключ генерується випадково, публічний створюється шляхом отримання хеш-суми від PRIV. Образно кажучи, це схоже на звичайний ключ, який вставляється в замкову свердловину, якщо private key підходить до public key і при повторному розрахунку ці два показники відповідають один одному, то мережа визначає криптовалюту як належну конкретному користувачеві і надає можливість здійснити транзакцію.
Зв'язок біткоін-адреси та приватного ключа
Біткоін-адреса генерується на основі публічного та приватного ключа. Від взятих за основу ключів обчислюється хеш-сума та виходить адреса у вигляді набору цифр та букв латинського алфавіту.
Адреса необхідна для того, щоб отримати криптовалюту або здійснити переклад іншому користувачеві. Простіше кажучи – це шлях до розташування BTC у своєрідній обліковій книзі. Вкрай важливо, що в ній немає інформації про приватні та публічні ключі, мережі вони невідомі, тому потрібно зберігати їх у надійному, недоступному ні для кого місці. Передача адреси іншому користувачеві абсолютно безпечна для власника гаманця, тому що хеш-сума влаштована таким чином, що з неї неможливо отримати публічний і приватний ключ. Всі комп'ютери, підключені до мережі біткоін знають про зв'язок між публічними та приватними ключами, що дає можливість користуватися ключами для підпису транзакцій.
Перевірка транзакції
Перед тим як відбувається транзакція дані про операцію, що включають адресу, публічний і приватний ключ відправляються в блокчейн, який звіряє отриману інформацію. Перевірка складається з кількох етапів:
- Блокчейн перевіряє чи є запис отримання конкретного биткоина користувачем;
- Проводиться перевірка адреси одержувача, якщо в ньому є друкарська помилка, то транзакція скасовується;
- Перевіряється цифровий підпис, який надав власник btc (перевірка сумісності private key з public key), та здійснюється запис операції у блокчейні.
Після того, як в одному блоці була проведена перевірка і платіж був підтверджений дані відправляються в інші вузли блокчейна, де операція повторюється. Після того, як кілька блоків підтвердили транзакцію платіж вважається досконалим.
Усі операції, які мають правильні підписи, приймаються мережею біткоїн і тому будь-яка людина, яка володіє чужим приватним ключем, може викрасти кошти з гаманця. Зловмисники зазвичай крадуть приватні ключі з носіїв інформації (флеш) чи через канали комунікацій. Тому необхідно дотримуватись суворих заходів безпеки, при зберіганні та транспортуванні приватного ключа. Програмні гаманці містять приватні ключі у файлі свого гаманця на жорсткому диску комп'ютера в стандартній директорії, яка є основною мішенню кіберзлочинців, тому головним завданнямвласника криптовалюти є забезпечення надійного захистусвоїх приватних ключем. Для цієї мети чудово підходять апаратні рішення, особливо якщо гаманець містить значну суму криптовалюти.
Висновок
Простими словами блокчейн – це відкрита мережа передачі повідомлень між користувачами, яка захищена потужним інструментом криптографії з використанням публічних ключів. На відміну від інших мереж, де використовуються лише паролі та логіни в блокчейні для захисту використовуються цифрові підписи, які створюються після взаємодії унікальних публічних та приватних ключів.
Будьте в курсі всіх важливих подій United Traders - підписуйтесь на наш
Надзвичайно важливо, щоб доступ до закритого ключа SSL сертифіката був повністю під вашим контролем. Якщо приватний ключ знаходиться у безпечному місці та недоступний для сторонніх осіб, це гарантує безпеку особистої інформації всіх користувачів вашого сайту.
Якщо ви не знаєте, де зберігається ваш приватний ключ, у цій статті ви знайдете інформацію про те, де в разі потреби його знайти, як забезпечити його безпеку та як створити новий ключ у разі втрати або компрометації попереднього.
Збереження приватного ключа SSL
Організації, що видають SSL сертифікати безпеки, не мають доступу до вашого закритого (або приватного) ключа шифрування – і не повинні мати – оскільки закриті ключі створюються на рівні користувача, тобто на вашому сервері чи комп'ютері. Навіть якщо Ви генеруєте CSR запит та приватний ключ на нашому сайті, Ви повинні зберегти його у себе, тому що на нашому сервері інформація про ключ не зберігається.
Два головні фактори, від яких залежить криптографічна безпека закритого ключа, – це кількість і випадкова послідовність простих чисел, які використовуються під час його створення. По суті, закритий ключ - це файл із набором чисел, згенерованих випадковим чином. Конфіденційність цієї інформації є гарантією безпеки вашого ключа протягом усього періоду використання SSL-сертифіката.
Щоб забезпечити збереження вашого закритого ключа, доступ до нього слід дозволяти лише тим членам вашої організації, кому він дійсно необхідний, наприклад, системному адміністратору, який займається встановленням SSL сертифіката. Крім того, рекомендується змінювати закритий ключ (і перевипускати відповідний SSL сертифікат) щоразу, коли співробітник, який мав доступ до нього, залишає вашу організацію.
Як знайти приватний ключ SSL?
Ваш приватний ключ створюється, як правило, в той момент, коли Ви генеруєте CSR запит, або безпосередньо перед цим. Якщо для керування вашими приватними ключами ви використовуєте OpenSSL (наприклад, ви користуєтеся дистрибутивами Linuxна основі Debian або Red Hat), то при виконанні команди OpenSSL req приватний ключ зазвичай зберігається в тому ж каталозі, де була ініційована команда.
Якщо ви використовуєте веб-сервер Microsoft IIS, то ваш закритий ключ SSL зберігається в прихованої папкина сервері-відправнику запиту на випуск SSL сертифіката (який ще називається Certificate Signing Request або скорочено CSR-запит). При правильної установки, Сертифікат сервера буде збігатися з приватним ключем. Якщо приватного ключа немає, це може означати:
- Сертифікат не був встановлений на сервері, що використовувався для створення CSR-запиту (актуально для серверів Microsoft IIS та деяких інших).
- Запитання, що чекає на обробку CSR, було скинуто веб-сервером IIS.
- Сертифікат встановлено за допомогою майстра імпорту сертифікатів, а не засобами IIS.
Різні пристрої та сервери використовують різні методи зберігання та створення приватних ключів. Найчастіше визначити розташування приватного ключа на сервері досить складно. Ознайомлення з документацією вашого пристрою – найбільш швидкий спосіброзібратися, де приватні ключі зберігаються на вашому сервері.
Як створити закритий ключ?
Якщо ви не змогли знайти закритий ключ SSL або ще не створили його, вам потрібно буде це зробити, якщо ви хочете отримати SSL сертифікат. Як правило, закритий ключ потрібно створювати на сервері, на якому ви плануєте встановити сертифікат. При цьому його потрібно створити перед тим, як генерувати CSR-запит або разом з ним, якщо ваш пристрій це дозволяє. Деякі програми автоматизують ці завдання, що прискорює весь процес.
Щоб випустити SSL сертифікат, сертифікаційний центр«Підписує» ваш CSR-запит, саме тому при оформленні сертифіката, з Вами будуть говорити саме про генерацію CSR запиту на отримання SSL сертифіката, а не про створення приватного ключа. Тут важливо розуміти, що створення CSR запиту передбачає і створення приватного ключа.
Визначеному CSR запиту відповідає лише один приватний ключ. Тому, якщо ви втратили закритий ключ (не зберегли його або випадково видалили), необхідно ініціювати перевипуск SSL сертифіката з новим приватним ключем. Для цього необхідно створити новий CSR запит.
Постачальники SSL-сертифікатів повинні надавати інформацію про генерацію приватного ключа та CSR-запиту. Інструкції щодо створення CSR-запиту та приватного ключа ви можете знайти на нашому сайті.
Ви також можете використовувати сервіс для створення приватного ключа та CSR-запитуна нашому сайті. Для цього необхідно заповнити відповідні поля у формулярі на латиниці за прикладом, як показано на зображенні:
У полі країна важливо вказати скорочену назву країни великими літерами. Далі слід заповнити місто та область, в яких ви проживаєте або в яких зареєстрована ваша організація, якщо сертифікат замовляєте як юридична особа. Якщо ви замовляєте OV SSL сертифікатз перевіркою компанії або ще надійніший EV SSL сертифікатз розширеною перевіркою важливо, щоб заповнені дані збігалися з інформацією в реєстраційних документах вашої фірми. Якщо замовляєте простий сертифікат, це не так важливо, головне не залишати порожніх полів.
Також при заповненні форми краще не використовувати спеціальних символів, так як не всі центри сертифікації приймають запити, що містять їх CSR. В полі " Доменне ім'я» введіть домен, для якого ви оформляєте сертифікат SSL. Якщо ви замовили
Які типи шаблонів адреси можна давати vanitygen для відповідного підбору?
Може робити добірку для простих префіксів та регулярних виразів. Префіксом є рядок, з якого починається адреса. Коли підбирається адреса із встановленим префіксом, Vanitygen перевіряє, що такий префікс у принципі можливий та видасть оцінку складності такого підбору. За замовчуванням префікс чутливий до регістру, однак можна використовувати ключик –i для пошуку без урахування регістру. Регулярні вирази є фільтруючими шаблонами. Вони дуже потужні і можуть використовуватися для підбору відповідних префіксів, суфіксів, ключів різної довжини та підбору послідовностей символів тощо. Щоб використати регулярні вирази, вкажіть ключ –r. На жаль, підбір за регулярними виразами дуже повільний і складність сильно впливає швидкість пошуку ключів. Тому регулярні вирази слід використовувати лише якщо це дійсно потрібно. Регулярні висловлювання не будуть ефективно відпрацьовувати з oclvanitygen, тому що на даний момент oclvanitygen не може працювати з регулярними виразамина GPU.
Як я можу вказати список шаблонів?
Vanitygen може шукати за списком шаблонів з командного рядкаабо взятих із файлу, використовуючи ключ –f. Файл джерело має бути сформоване так, щоб кожен шаблон йшов з нового рядка. Знайшовши відповідність заданому шаблону, vanitygen зупинить пошук інших відповідностей даного шаблону. Для пошуку кількох відповідностей використовуйте ключ –k.
Чи можу я використати Vanitygen для пошуку чийогось ще закритого ключа знаючи його bitcoin адресу?
Звичайно! Фактично Vanitygen – це додаток для підбору ключів. Однак, щоб знайти повністю відповідну bitcoin адресу, навіть використовуючи всі комп'ютерні потужності на планеті, вам знадобиться неприйнятно багато часу.
Як я можу зібрати vanitygen з вихідних джерел?
Все це зазначено у файлі INSTALLу дистрибутиві вихідника.
Яку швидкість пошуку ключів я можу очікувати від X-пристрою?
Деякі приблизні оцінки:
Dual-core desktop CPU, 32-bit mode: 100-250 тис. ключів/сек.
Dual-core desktop CPUs, 64-bit mode: 150-450 тис. ключів/сек
Quad-core desktop CPUs, 32-bit mode: 200-400 тис. ключів/сек
Quad-core desktop CPUs, 64-bit mode: 300-750 тис. ключів/сек
NVIDIA GT200 GPUs: до 6.5 млн. ключів/сек
AMD Radeon 58XX, 68XX GPU: до 23.5 млн. ключів/сек.
AMD Radeon 69XX GPU: до 19.5 млн. ключів/сек.
vanitygen виконує безліч великих цілочисельних арифметичних операцій, і запуск утиліти на 64 бітній системі дає істотне збільшення швидкості пошуку ключів, приблизно 50% збільшення в порівнянні з 32-бітною. Для 64-х бітної версії Windows, за умови, що використовується не GPU, не забудьте використати vanitygen64.exe.
Radeon 58XX перевершує Radeon 69XX. Oclvanitygen використовує множення цілих чисел, а Radeon 58XX здійснює множення паралельно з іншими оперціями. За однаковий час Radeon 5830 перевершить Radeon 6970.
У користувальницьких збірках продуктивність CPU буде меншою за очікувану, якщо OpenSSL бібліотеки старої версії (<1.0.0d) либо не собирались с включённой оптимизацией.
Як захистити адресу, що генерується цією програмою? Чи хтось може розгадати мій закритий ключ і вкрасти мої BTC?
Vanitygen використовує OpenSSL для створення випадкових чисел. Це такий же RNG (генератор випадкових чисел), як і використовується в bitcoin та більшості серверів, що використовують HTTPS. Вони розглядаються як добре досліджені. У Linux RNG беруться із /dev/urandom. Відгадування приватного ключа для адреси підібраного vanitygen не простіше, ніж відгадування приватного ключа, згенерованого самим додатком bitcoin. Vanitygen використовує генератор випадкових чисел для створення закритого ключа та адрес, порівнюючи отримані адреси з вихідним шаблоном. Він оновлює закритий ключ після 10,000,000 невдалих спроб підбору (100M для oclvanitygen), або поки не знайдеться відповідність
Які опції можна задавати ключами Vanitygen?
V Verbose output -q Quiet output -i Case-insensitive prefix search -k Keep pattern і continue search after finding a match -N Generate namecoin address -T Generate bitcoin testnet address -X Encrypt private keys with (UNSAFE) -p Чи можна спільно шукати адреси?