Title: myPrivateBitcoinKey релиз программы для генерации адресов Post by: myPBK on January 04, 2016, 06:14:04 PM Вашему вниманию релиз программы для генерации адресов Bitcoin по пасс-фразе, методом теоретически устойчивым к брутфорсу (перебору фраз). Пока что программа работает не так быстро как хотелось бы, думаю это связано с применением библиотеки Crypto++.
Алгоритм работы основан на достижении некоторой цели в публичном адресе Bitcoin исходя из вводимых пользователем данных, а не методом генерации больших псевдослучайных чисел. Первые 3 символа в сгенерированном адресе "PBK" выступают в качестве идентификатора такого адреса, для удобства идентификации адреса пользователем и они же являются нашей целью. Пасс-фраза должна быть больше 10 символов, желательно в разных раскладках, должна содержать спецсимволы и заглавные буквы, не должна содержать пробелов (проверка реализована только на кол-во символов). На калькуляцию адреса требуется некоторое кол-во времени, которое обычно занимает от 10 секунд до 2-х минут. При вводе одной и той -же пасс-фразы результат расчета всегда будет одним и тем-же. Вопросы и предложения здесь. И если что, автор не при делах). myPrivateBitcoinKey (скачать) (https://yadi.sk/d/CsRo2HwL3RdP46) (09.01.2016 Обновлено до v.0.02. Небольшие изменения в коде по оптимизации.) Какой же алгоритм? Он прост как 3 рубля, но в то же время относительно безопасен. После ввода пасс-фразы, из нее формируется ее хеш по алгоритму SHA256. Затем это значение просто инкрементируется до того момента, пока 2-й символ в адресе не станет "P", 3-й - "B", 4-й - "K" они же являются идентификатором. Этот измененный хеш и есть наш приватный ключ. Точки Px Py проходят рандомную проверку с последним уровнем безопасности. При совпадении происходит стандартный расчет приватного ключа в формате WIF и его кодировка в стандарт base58. Функция кодировки в base58 была написана собственноручно для библиотеки Crypto++ и проверена многократно. Здесь я разместил ее код (http://stackoverflow.com/a/34589962/5720337). В будущем планируется оптимизация кода для увеличения скорости генерации и соответственно для большей безопасности (хотя даже сейчас этот метод безопаснее чем например сервис brain wallet в десятки тысяч раз). А так-же экспорт ключей из программы в клиент. Пример использования программы: Code:
Заходим на сайт xorbin.com (http://www.xorbin.com/tools/sha256-hash-calculator) и пишем в первом поле строчку "0987654321" (без кавычек), смотрим ее хеш, сравниваем с нашим приватным ключом. Убеждаемся что строчки почти идентичны, различие в нескольких последних байтах, т.к. наш приватный ключ это сумма хеша и количества итераций над этим приватным ключом. Транзакция монет с этим адресом: https://blockchain.info/address/1PBKPJ38tyGgztVvPkCZPo4JgAbRBy96W (https://blockchain.info/address/1PBKPJ38tyGgztVvPkCZPo4JgAbRBy96W) Исходник Code: #include <stdlib.h> Title: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: negeroy on January 04, 2016, 07:19:27 PM Вашему вниманию релиз программы для генерации адресов Bitcoin по пасс-фразе, методом теоретически устойчивым к брутфорсу (перебору фраз). Пока что программа работает не так быстро как хотелось бы, думаю это связано с применением библиотеки Crypto++. Алгоритм работы основан на достижении некоторой цели в публичном адресе Bitcoin исходя из вводных данных пользователем а не в случайном порядке. Первые 3 символа в сгенерированном адресе "PBK" выступают в качестве идентификатора такого адреса, для удобства идентификации адреса пользователем. Пасс-фраза должна быть больше 10 символов, желательно в разных раскладках, должна содержать спецсимволы и заглавные буквы, не должна содержать пробелов (проверка реализована только на кол-во символов). На калькуляцию адреса требуется некоторое кол-во времени, которое обычно занимает от 1-й до 2-х минут. При вводе одной и той -же пасс-фразы результат расчета всегда будет одним и тем-же. Вопросы и предложения здесь. И если что, автор не причем). myPrivateBitcoinKey: https://dropmefiles.com/GGUbF (https://dropmefiles.com/GGUbF) Quote теоретически устойчивым к брутфорсу если алгоритм знает автор программы, какой же он устойчивый, а тем более безопасный Quote Первые 3 символа в сгенерированном адресе "PBK" При вводе одной и той -же пасс-фразы результат расчета всегда будет одним и тем-же. и на хера, как это вяжется с генерацией адреса по пасс-фразе, или он будет одним и тем пока не переустановишь программу, которой он сгенерирован ;D мутно как-то всё Title: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: myPBK on January 04, 2016, 07:55:48 PM Quote если алгоритм знает автор программы, какой же он устойчивый, а тем более безопасный Алгоритм формирования ключей очень прост, и я просто не вижу смысла его освещать. Безопасность основана не на алгоритме, а на достижении некоторой цели в публичном адресе по типу блокчейна. Quote и на хера, как это вяжется с генерацией адреса по пасс-фразе, или он будет одним и тем пока не переустановишь программу, которой он сгенерирован Вы бы хоть попробовали запустить программу прежде чем писать, и сгенерить несколько ключей. Программа не требует выхода в сеть или доступа к файловой системе, и боятся пользователю нечего. Она очень простенькая, не требует установки, выложена в сеть безвозмездно, т.е. даром. Если кому-то нужно будет скину исходники. Но в паблик вылаживать не буду, пока не доведу программулину до "идеально работающей", и под этим тегом имею ввиду только скорость ее работы и ничего более. Title: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: negeroy on January 04, 2016, 08:15:34 PM Quote если алгоритм знает автор программы, какой же он устойчивый, а тем более безопасный Алгоритм формирования ключей очень прост, и я просто не вижу смысла его освещать. Безопасность основана не на алгоритме, а на достижении некоторой цели в публичном адресе по типу блокчейна. Quote и на хера, как это вяжется с генерацией адреса по пасс-фразе, или он будет одним и тем пока не переустановишь программу, которой он сгенерирован Вы бы хоть попробовали запустить программу прежде чем писать, и сгенерить несколько ключей. Программа не требует выхода в сеть или доступа к файловой системе, и боятся пользователю нечего. Она очень простенькая, не требует установки, выложена в сеть безвозмездно, т.е. даром. Если кому-то нужно будет скину исходники. Но в паблик вылаживать не буду, пока не доведу программулину до "идеально работающей", и под этим тегом имею ввиду только скорость ее работы и ничего более. Каким образом можно достичь "некоторой цели в публичном адресе", дважды получив один и тот же адрес, без заранее известного алгоритма по которому будет генерироваться этот адрес, учитывая, что он у вас будет начинаться постоянно на 'PAB' и будет использоваться определённый пароль? скорость работы программы, судя по описанию, будет зависить от вашего железа и его величества случая, вы вообще проверяли адреса, отправляли с них на другие адреса, можно ссылки на блокчейн Title: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: Ivanech on January 04, 2016, 09:28:20 PM Если не хотите пока публиковать исходники, то опубликуйте хотя бы алгоритм, по которому происходит сопоставление пользовательского пароля и приватного ключа. А так же основания, исходя из которых вы считаете, что невозможно обратное вычисление приватного ключа исходя из публичного.
В криптовалюте безопасность - превыше всего, в том числе превыше удобства использования сторонних программ. И пока вы не докажите, что вашей программой пользоваться абсолютно безопасно - всегда будет недоверие (и это абсолютно оправдано). Генерируя приватные ключи сторонними программами следует исходить из того факта, что разработчики этих программ заложили в них алгоритм, позволяющий им восстанавливать приватные ключи по их публичным адресам. Априори это именно так и автору программы нужно именно доказать, что в его программе нет такого [зло]намеренного функционала. Title: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: Xtc on January 05, 2016, 01:04:53 AM Пользуйся, раз разработал. Поделки без алгоритма и исходников...
Title: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: myPBK on January 05, 2016, 08:43:07 AM Quote Пользуйся, раз разработал. Поделки без алгоритма и исходников... Что я и делаю) Для этого и писалась.И если бы она работала идеально, желания представить ее на общественный суд было бы гораздо меньше. Кстати да, неплохая идея реализовать возможность каждому пользователю кроме пасс-фразы задавать свой алгоритм. Я уже писал, что поделюсь исходниками со всеми желающими, просто пока они больше похожи на черновик чем на исходный код, все нужно приводить в порядок. Ну а алгоритм.. Наверное да, он важен. Хотя я конечно не представляю, как можно уместить 32-х байтный приватный ключ в 24 байтном адресе еще и за одну минуту. Хотя конечно если только представить, что ключ не 32 байта, или формируется например из 4-х - 5-ти байт. Но как я уже писал, я готов показать свою писанину. И на данном этапе развития программы, я не предлагаю сразу бросаться переводить все свои сбережения на такой адрес, все это только тестинг, обсуждение. К примеру какое максимальное время генерации готов ждать пользователь, ибо чем дольше, тем безопаснее. Хотя некоторые пользователи успешно пользуются сервисом brain wallet, где генерация ключей происходит сразу же после ввода пасс-фразы, и конечно же некоторым не повезло, потому что неверный подход изначально. Узнал я кстати о сервисе brain wallet уже после написания этой утилиты. Так и быть. Добавлю пока что только алгоритм в шапку. Title: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: Xtc on January 05, 2016, 10:25:00 AM Quote После ввода пасс-фразы, из нее формируется ее хеш по алгоритму SHA256. Затем это значение просто инкрементируется до того момента, пока 2-й символ в адресе не станет "P", 3-й - "B", 4-й - "K" они же являются идентификатором. Ну нормально. По сути это brainwallet, но с перебором адресов до PBKTitle: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: Ivanech on January 05, 2016, 11:15:54 AM А для чего вообще нужна эта программа?
С одной стороны, есть проверенный временем brain wallet если нужно держать в голове пароль от кошелька. С другой стороны есть vanitygen, позволяющий генерировать красивые публичные адреса кошельков. Генерация по маске PBK занимает доли секунд. При этом пользователь может выбрать любую маску любой длины и нет никаких дополнительных алгоритмов генерации приватных ключей, т.е. его использование более безопасно. Так какая область применений вашей программы? Title: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: myPBK on January 05, 2016, 11:38:01 AM Quote С одной стороны brain wallet С другой стороны vanitygen А между ними myPBK :Dvanitygen может создавать красивые адреса, но не может создавать их исходя из входных данных. Т.е. ключи эти нужно хранить либо на листочке, либо в кошельке, а кошелек на флешке. Работает очень быстро, спору нет. brain wallet может генерировать адреса исходя из входных данных, но неустойчив к атаке грубым перебором паролей, т.к. ключи формируются мгновенно, что подрывает безопасность его применения. И у многих пользователей умыкнули их честно заработанные.. myPBK как и vanitygen может генерировать адреса по маске (здесь это не ключевой момент), и как и brain wallet по пользовательскому паролю-фразе, но на расчет требуется определенное время. Это сделано для того, чтобы атакующему брутфорсеру на проверку одной пасс-фразы нужно было потратить как можно больше времени. Title: Re: myPrivateBitcoinKey релиз программы для генерации адресо Post by: myPBK on January 07, 2016, 03:52:39 PM Проверил свои домыслы. Как и предполагалось, проблема оказалась в библиотеке Crypto++. Она совершенно не годится для таких задач как быстрая генерация ECDSA пар, т.к. генерит всего лишь около тысячи ключей в секунду на процессоре i5.
Осваиваю openssl. |