Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
26 июля 2014, 1:30:16 AM   # 1
 
 
Сообщения: 352
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я сделаю правильное объявление позже, но я работаю над небольшим JavaScript приложение для создания смарт-контракты с вашей будущей личности.

Идея заключается в том, что вы поставили перед собой цель для себя, например. Запуск в общей сложности 100 км к концу месяца, и запереть деньги в Bitcoin сети, вы будете неустойки (на благотворительность), если вы не достигнете своей цели. Вы отслеживать тренировки на активность RunKeeper, который в свою очередь, контролируется Действительность ключи или аналогичные, которые обеспечивают ключи, которые позволят вам разблокировать деньги, если вам удастся или пусть назначенный благотворительность разблокировать деньги, если вы не.

Приложение является чисто статический HTML / JavaScript, построенный на вершине bitcore.js. (Это размещается на GitHub, но в теории вы можете запустить его локально.) Так как нужно некоторые вещи, которые обычный бумажник не мог сделать, как разговаривать с Reality ключей и подписанием фантазии ветвления multisig сделок, он реализует свой собственный маленький бумажник, с ключами, полученных из семян, который хранится в локальном хранилище в браузере.

Охранно-мудрые вещи, как "браузер" а также "локальное хранилище" очевидно суб-оптимальный, но мы вообще не говорим об огромных суммах денег. Тем не менее, я хотел бы избежать, помогая пользователям потерять свои деньги невынужденных ошибок. Как бы люди предлагают обработку создания семени? Должны ли мы позволить пользователю ввести что-то, или мы лучше позволить JavaScript сделать его лучше всего сделать что-то случайное? Любые предложения для вещей, которые я должен / не должен делать здесь, и любые хорошие примеры там я должен учиться?

Вот приложение в его текущем состоянии:
https://bitpact.github.io/
https://github.com/bitpact/bitpact.github.io
edmundedgar сейчас офлайн Пожаловаться на edmundedgar   Ответить с цитированием Мультицитирование сообщения от edmundedgar Быстрый ответ на сообщение edmundedgar


Как заработать Биткоины?
Без вложений. Не майнинг.


26 июля 2014, 4:18:06 AM   # 2
 
 
Сообщения: 327
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Получил 1806 Биткоинов
Реальная история.





Почему все в сообществе Bitcoin зафиксированной на основе Javascript подписи / шифрования? Это просто все вокруг плохая идея. Вот:

http://matasano.com/articles/javascript-cryptography/

Envrin сейчас офлайн Пожаловаться на Envrin   Ответить с цитированием Мультицитирование сообщения от Envrin Быстрый ответ на сообщение Envrin

26 июля 2014, 6:13:39 AM   # 3
 
 
Сообщения: 352
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Почему все в сообществе Bitcoin зафиксированной на основе Javascript подписи / шифрования? Это просто все вокруг плохая идея. Вот:

http://matasano.com/articles/javascript-cryptography/

Люди заинтересованы в делать это таким образом, потому что это более практично для многих сценариев использования, чем заставить человек устанавливать собственные приложения, а также более прозрачные и менее централизованные, чем хранить секреты пользователей на чьем-сервере.

Тем не менее, мне нравится предложение Matasano о том, что ваш браузер может сделать PGP, который был бы большим для потребительных случаев он обсуждающих, и там, наверное, хорошо аналогичное решение для Bitcoin и подобных, а не много людей, доставляющих свои собственные подобные реализации JavaScript , Вопросы безопасности здесь весьма сложны для анализа, но один из перспективных проектов являются Bitcoin Wallet API Юрий Рашковским, которая является немного браузера расширения моста на локальное программное обеспечение бумажника:
https://bitcoin-wallet-api.github.io/
edmundedgar сейчас офлайн Пожаловаться на edmundedgar   Ответить с цитированием Мультицитирование сообщения от edmundedgar Быстрый ответ на сообщение edmundedgar

26 июля 2014, 8:08:27 PM   # 4
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Во-первых, я хотел бы посмотреть на реализующего RFC6979 (Детерминированные ECDSA Подписи). Он производит детерминированное, но секретное значение К в качестве альтернативы использования в одноразовом номер подписях ECDSA. Это уменьшает атаку пространство вплоть до ключа (ей) пользователя. Я не уверен, почему вам нужно будет больше, чем один ключ, но это не сильно меняется.

Перетасованного колода карт имеет 225 бит энтропии и был бы намного превосходит любой яваскрипта PRNG, однако, что не может быть практически.  

Если вы должны сгенерировать ключ пользователя в браузере, то есть не так много, особенно хороших решений, но одна общая концепция вы можете захотеть взглянуть на это, чтобы использовать несколько источников энтропии, которые вместе операции XOR. В качестве примера можно использовать яваскрипт ПСЧ, но это очень трудно проверить, насколько безопасно, что на все браузеры, все версии, все операционка. С другой стороны, вы могли бы пользователь обеспечить энтропию (движения мыши, случайные попадания случайный текст). Каждый метод имеет свои уязвимые места. Если у вас есть пользователь ввести 200 charecters некоторых пользователей собираются ввести aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, вы должны рассчитывать на атакующем делает прообраз атаку. С другой стороны, если вы используете ПСЧ и она скомпрометирована на некоторых системах, чем те, в результате ключи могут быть хрупкими.

Вместо этого вы бы объединить два независимых источника и энтропия результирующее значение будет наименее так же хорошо, как энтропия высшего источника энтропии. Простейший вариант будет XOR каждого источника, но в зависимости от библиотеки у вас есть доступ к I предпочел бы использовать что-то вроде HMAC. Таким образом, даже если оба источника имеет к югу от номинальной энтропии объединенного значения будет лучше, чем любой источник самих по себе. Вы даже можете использовать полу-доверенные общественные номера, как вытягивать из random.org, если они должным образом в сочетании с другими источниками энтропии.

Что касается хранения в браузере локального хранения убедитесь, что вы даете пользователю (настоятельно рекомендуется) возможность печати из семян. Вы не хотели бы потери средств из-за локальной потери данных для хранения.
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

27 июля 2014, 8:51:02 AM   # 5
 
 
Сообщения: 141
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Как это качество bitaddress.org?
Может быть, хорошо, чтобы получить некоторые практики из нее.
раппорт сейчас офлайн Пожаловаться на раппорт   Ответить с цитированием Мультицитирование сообщения от раппорт Быстрый ответ на сообщение раппорт

31 июля 2014, 1:11:37 PM   # 6
 
 
Сообщения: 352
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Спасибо за предложения, особенно отличные DeathAndTaxes пост, который все делает этот материал следует читать, но чья мудрость я буду в основном игнорировать (см ниже):

Похоже, что я собираюсь закончить копирование реализации Counterwallet, который, кажется, достаточно хорошо продумано, и на основе других вещей, которые также кажутся хорошо продуманными и, надеюсь, по крайней мере, несколько тщательно изученные.
https://counterwallet.co/
https://github.com/CounterpartyXCP/counterwallet/blob/master/src/js/mnemonic.js

Они, кажется, полагаться на генерации случайных чисел браузера, но взрывать, если у вас есть браузер, который не способен производить что-либо отдаленно как случайное число. Тогда это показывает до пользователя, как двенадцать слов мнемических, что он строго предупреждает вас, чтобы записать и не течь.

Я принимаю DeathAndTaxes Подчеркнем, что было бы целесообразно, чтобы иметь больше источников случайности вперемешку, но я собираюсь передать это делать сам на том основании, что риск моей реализации как-то завинчивания вещи пытается сделать это сам, вероятно, больше, чем выгода здесь.

Точно так же на детерминированных значений K Я собираюсь отложить до bitcore.js, который выглядит, как это имеет открытый вопрос:
https://github.com/bitpay/bitcore/issues/311
...и доказать, что ЛАВАШ это, чтобы получить это право, серьезную связанную ошибку безопасности, которая теперь неподвижную:
https://github.com/bitpay/bitcore/pull/309
edmundedgar сейчас офлайн Пожаловаться на edmundedgar   Ответить с цитированием Мультицитирование сообщения от edmundedgar Быстрый ответ на сообщение edmundedgar

31 июля 2014, 2:35:08 PM   # 7
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Точно так же на детерминированных значений K Я собираюсь отложить до bitcore.js, который выглядит, как это имеет открытый вопрос:
https://github.com/bitpay/bitcore/issues/311
...и доказать, что ЛАВАШ это, чтобы получить это право, серьезную связанную ошибку безопасности, которая теперь неподвижную:
https://github.com/bitpay/bitcore/pull/309

Я не уверен, если вы неправильно прочитать тянет или сформулировать его странно что может смутить кого-то другого.

Выпуск № 309 не имеет ничего общего с RFC6979. Код включает в себя генерацию случайного значения K, но это был сделан неправильно, что при определенных условиях может привести к утечке к (и через к закрытому ключу). Фиксированный код в # 309 также не использует RFC6979 он все еще использует случайное значение K, однако, что один конкретный недостаток был исправлен. Предложение в # 309 было сделано, чтобы перейти от случайного значения K к детерминированной подписи, чтобы избежать целый класс ошибок, подобных # 309, который может просочиться закрытый ключ. # 311 не "ошибка" а открытое улучшение примечание. Он будет закрыт, как только bitcore орудия RFC6979.

Возьму момент выступать юнят тесты и TDD. Bitcoin слишком легко получить достаточно неправильно, что кто-то теряет деньги, но достаточно верно, что это "работает", Модульное тестирование имеет важное значение для развития крипто валюты. Ошибка # 309 можно было бы предотвратить с помощью теста блока, который использует один ключ, чтобы подписать несколько хэшей в последовательности, а затем проверить результирующий набор сигнатур (R, S) являются уникальными. Похоже, что они добавили подобный тест блока. Чем больше проблемы заключается в том, что получение хорошего покрытия кода на недетерминированных функциях (например, подписи, которые не являются детерминированными из-за случайный ввод) трудно. Вы можете написать тесты, но это трудно понять, если ваши тесты адекватны. RFC6979 делает подписи детерминированной. Для данного входного сигнала (сообщения & ключ) есть только один правильный выход (подпись). Это означает, что ошибки скользит через трещину в покрытии коды уменьшаются.

Есть некоторые тест-сообщество для Bitcoin конкретного RFC6979. Вы должны получить ту же сигнатуру на всех платформах, и если вы не очень хорошо, что это здорово, потому что это видно провал, а не один, который ломает "молча",


 
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

31 июля 2014, 2:43:37 PM   # 8
 
 
Сообщения: 352
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Точно так же на детерминированных значений K Я собираюсь отложить до bitcore.js, который выглядит, как это имеет открытый вопрос:
https://github.com/bitpay/bitcore/issues/311
...и доказать, что ЛАВАШ это, чтобы получить это право, серьезную связанную ошибку безопасности, которая теперь неподвижную:
https://github.com/bitpay/bitcore/pull/309

Я не уверен, если вы неправильно прочитать тянет или сформулировать его странно что может смутить кого-то другого.

Второй один, но спасибо за поставив его ясно.
edmundedgar сейчас офлайн Пожаловаться на edmundedgar   Ответить с цитированием Мультицитирование сообщения от edmundedgar Быстрый ответ на сообщение edmundedgar

31 июля 2014, 3:27:09 PM   # 9
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Второй один, но спасибо за поставив его ясно.

Нет проблем. Казалось бы bitcoinjs реализует RFC6979 и использует детерминированный к для всех подписания. Всегда у вас есть подтверждение, но это может позволить вам использовать RFC6979 не изобретая колесо.
https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/src/ecdsa.js
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

31 июля 2014, 4:04:26 PM   # 10
 
 
Сообщения: 352
Цитировать по имени
цитировать ответ
по умолчанию Re: Лучшая практика для создания семени для бумажника JavaScript (кроме нет)

Второй один, но спасибо за поставив его ясно.

Нет проблем. Казалось бы bitcoinjs реализует RFC6979 и использует детерминированный к для всех подписания. Всегда у вас есть подтверждение, но это может позволить вам использовать RFC6979 не изобретая колесо.
https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/src/ecdsa.js


Ура, я посмотрю.
edmundedgar сейчас офлайн Пожаловаться на edmundedgar   Ответить с цитированием Мультицитирование сообщения от edmundedgar Быстрый ответ на сообщение edmundedgar



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW