В последнее время я играл с тем, как лучше использовать мульти-подпись адреса (P2SH) в качестве механизма для безопасных веб-кошельков. В принципе, я думаю, что мы все должны быть с использованием P2SH вместо одноключевых адресов Bitcoin. Это привело меня к рецензию следующей идеи. До сих пор он получил довольно хорошую обратную связь, но я хотел бы поделиться им здесь, чтобы посмотреть, что вы думаете, ребята.
Полный технический документ доступен по этой ссылке (https://bitgo.com/p2sh_safe_address), Но я также включил текст здесь.
Любая обратная связь будет супер.
Надеюсь, вы найдете это интересным.
Майк
P2SH Безопасный Адрес
Майк Belshe
mike@bitgo.com
В данной статье описан механизм для использования функциональных возможностей P2SH Bitcoin, чтобы построить более сильную, более безопасный веб-кошелек.
Задний план
Bitcoin адреса обеспечены сегодня с использованием криптографии с открытым ключом и эллиптической кривой алгоритма цифровой подписи (ECDSA). Это обеспечивает очень высокий уровень безопасности. Но секретные ключи, используемые в ECDSA длинен 256 номера, которые люди не могут вспомнить, и безопасность вашего Bitcoin зависит от того, насколько безопасно вы можете защитить этот ключ от других. Для того, чтобы помочь нам защитить и управлять своими ключами, пользователи используют Bitcoin кошельков. Есть много кошельков, доступных на выбор, и каждый предлагает свои уникальные преимущества для простоты использования, безопасности и функций. Но бумажник можно разделить на две основные категории:
Клиентские бумажники
Эти бумажники, такие как оригинальный Satoshi Client, выполняется с использованием программного обеспечения, установленного локально на компьютере пользователя.
веб-бумажники
Эти кошельки размещены на веб-сайте и не требуют установки программного обеспечения на заказ от пользователя.
Клиентские бумажники
Преимущество на стороне клиента кошелек является то, что ключи Bitcoin полностью самостоятельно. Нет посредников не требуется, чтобы помочь вам заключать. Недостаток на стороне клиента кошелек является то, что безопасность полностью самостоятельно. В действительности вы охранник вашего банка. Таким образом, необходимо: предотвратить вредоносные программы и вирусы от кражи ключи поддерживать и обновлять соответствующие резервные копии ключей обеспечивать физическую безопасность компьютера (ов), содержащие ключи (например, запертые с зашифрованным жестким диском). Доступ к биткойно с нескольких компьютеров может быть трудно, так как она требует, чтобы передать ключи безопасно между несколькими компьютерами. Кроме того, поскольку большинство пользователей принять дополнительные меры предосторожности с их паролями для их Bitcoin наличных, забывая или потерять необычно «сильные» пароли становится реальной угрозой потери.
веб-бумажники
Веб-бумажники имеют то преимущество, что они доступны через Интернет из любой точки мира. Веб-сайт хостинг ваш кошелек должен быть доверенной стороной, так как они часто требуют прямого доступа к вашим ключам, или они могут держать свои ключи, пока вы их не имеют вообще. Предполагая, что веб-сайт делает хорошую работу управления безопасностью ваших ключей, это может быть преимуществом, так как вам не нужно делать это самостоятельно.
Но недостатки очевидны. Веб-сайт держит много ключей для миллионов пользователей является очень очевидной мишенью для злоумышленников. Если веб-сайт взломали, вы потеряете ваш Bitcoin. Точно так же, если сайт отключение из-за несоблюдения нормативных требований, вы потеряете ваш Bitcoin, а также.
Платный Script Hash (а.к.а. P2SH)
P2SH представляет собой новый тип Bitcoin адреса, который был введен в качестве части предложения по улучшению Биткойна 16 (BIP 16) в начале 2012 года P2SH адресов может быть обеспечено с помощью более сложных алгоритмов, чем традиционные адреса Bitcoin. В данной работе мы оцениваем, используя подпись адрес 2-в-3, который мы будем называть «2-в-3-адрес».
В отличие от традиционных Bitcoin адресов, которые скреплены с помощью одной клавиши ECDSA, 2-из-3 адреса обеспечены тремя ключами ECDSA. Депонирование средств в адрес 2-в-3 такая же, как внесения средств в стандартный адрес Bitcoin. Тем не менее, вывод средств из адреса 2-в-3 требует, по меньшей мере, 2 из 3-х ключей для входа.
Использование 2-в-3-адрес имеет ряд преимуществ:
- Вы можете дать доверенной стороне один ключ для окончательного утверждения по сделкам, не позволяя им инициировать транзакции на ваших средств в одиночку.
- Вы можете потерять ключ, но не потерять доступ к своим фондам.
- Вы можете разделить ключ с несколькими, доверенных лиц, которые по отдельности не могут получить доступ ваши средства, но могут ли они работать вместе.
Предложение для 2-из-3 Адреса Web Wallet реализации
В этом разделе мы предлагаем реализацию веб-кошелька, используя адрес 2-в-3. Он предоставляет следующие возможности
безопасности
- Служба не может инициировать транзакцию самостоятельно
- Кража онлайна пароля пользователя не является достаточным, чтобы украсть деньги
- Кража онлайн закрытый ключ пользователя не является достаточным, чтобы украсть деньги
- Вредоносные программы на компьютере пользователя не может похитить средства
- Пользователь может получить доступ свои средства с любого компьютера
- Пользователю не нужно помнить свой закрытый ключ и может получить доступ к средствам с помощью пароля и двухфакторной аутентификацией.
- Пользователь может вернуть средства, даже если услуга отключенный по нормативным документам [/ li]
- Пользователь может потерять свой сайт пароль и не потерять свои деньги
- Пользователь может потерять свой закрытый ключ, и не потерять свои деньги
- Защита должна быть сохранена для средств пользователя
Эта реализация будет опираться на:
- Служба (например, веб-сайт) со всеми коммуникациями над TLS.
- Координация между браузером и этой службой
- Использование аутентификации 2-фактора
- Использование надежных паролей
- 2-оф-3 Адрес Creation
Процесс начинается с браузером пользователя (или ключевым создателем стороны клиента), генерирующим 2 ключом ECDSA:
пара ключей Абонентская
Резервная пара ключей
Резервное копирование закрытого ключа пара будет распечатана и сохранена полностью в автономном режиме. Это только для восстановления фонда. Резервный открытый ключ будет храниться в службе. Служба никогда не видит резервное копирование закрытого ключа и не может использовать его, чтобы разблокировать средства.
закрытый ключ пользователя будет шифроваться на компьютере пользователя с сильным паролем по выбору пользователя. Зашифрованный закрытый ключ и открытый ключ будет храниться в службе. Поскольку секретный ключ шифруется с помощью пароля службы никогда не видела, служба не может использовать этот ключ, чтобы разблокировать средства.
Сервер будет создать 3-ий ключ. Закрытый ключ будет зашифрован с сильным паролем, известным на службу и хранится на сервере. Сервер будет использовать 2 открытых ключи от пользователя, а также сервисного ключа для создания адреса 2-в-3. Сервер будет уведомлять пользователь открытого ключа сервера, так как это будет иметь решающее значение для восстановления средств с адреса, если служба никогда не выходит из строя. Пользователь будет распечатать копию всех 3-х открытых ключей и хранить их надежно.
С помощью этой системы, у нас теперь есть адрес, где пользователь имеет 1 ключ, услуга имеет 1 ключ, а третий ключ был сохранен для последующего использования.
Вывод денег из 2-оф-3 Адрес
Для вывода средств из адреса 2-в-3, следующие шаги необходимо будет иметь место.
Во-первых, пользователь будет войти в систему или проверить подлинность службы, и информировать об этом службу, что она сделает вывод. Услуга будет требовать от пользователя для дальнейшей проверки подлинности с помощью 2-фактора вызова аутентификации на смартфон или мобильное устройство. Примечание: Аутентификация 2-фактор необходима, потому что даже сильные пароли могут быть украдены с кейлоггером.
После проверки подлинности на 2-факторе, служба посылает зашифрованный секретный ключ пользователя в браузер пользователя. Браузер запрашивает у пользователя пароль пользователя, чтобы разблокировать зашифрованный закрытый ключ.
Выполнение в браузере пользователя, приложение создает транзакцию Bitcoin для вывода, разблокирует зашифрованный закрытый ключ, и подписывает сделку с одной подписью.
И, наконец, подписанная транзакция отправляются на службу. Служба проверяет сделку, и если подходит, применяется 2-й подписи с использованием своего секретного ключа. Обратите внимание, что услуга, скорее всего, реализовать лимиты по транзакциям. Если по какой-то причине, учетная запись пользователя была нарушена, служба может отказаться от подписания крупных сделок, если дополнительно аутентификация или резервное копирование ключа подписи не предоставляются.
Поддержание конфиденциальности
Для поддержания максимальной личной жизни, важно не использовать повторно Bitcoin адреса. Тем не менее, повторно генерировать такие ключи повторно с каждой сделкой будет делать много преимуществ для резервного копирования, которые приходят с этой системой трудно. Пользователи Bitcoin стандартных адресов уже сталкиваются с этой проблемой сегодня и использовать различный детерминированные механизмы бумажника для создания нескольких ключей из одного источника.
Одни и те же методы могут быть применены к адресу 2-в-3. Любой ключ, используемый в качестве подписи должен быть повернут на новый адрес на основе следующей последовательности в детерминированной ключе.
В качестве компромиссного решения, адрес 2-из-3 предлагает еще один вариант: только вращая ключ сервера. Поскольку ключ 2-из-3 формируется из 3-х ключей, один из которых управляется службой, мы можем вращать средства пользователя на новый адрес лишь вращая ключ сервера. Полученный адрес не может быть соотнесен с оригинальным адресом 2-в-3. Однако при расходовании выходов, открытые ключи вновь будут выявлены и корреляция может быть сделана в то время. Для того, чтобы сохранить возможность для пользователя, чтобы извлечь средства без службы, службы необходимо отправить Новоиспеченные службы открытого ключа пользователя для хранения. Это можно сделать по электронной почте. Но опять-таки для максимальной конфиденциальности, рекомендуется использовать поворота ключа детерминированной.
Другие преимущества
Использование нескольких подписей бумажники обеспечивает гибкость для пользователя, чтобы разделить ключи с доверенной семьей, не подвергая все средства. Например, пользователь может решить, дать один ключ к его сестре, а другой к своему адвокату, с инструкциями, чтобы получить Bitcoin, когда пользователь умирает. При традиционном обращении Bitcoin, адвокат и сестра оба имеют полный доступ к средствам пользователя. С бумажником 2-из-3, они должны были бы сговариваются против пользователя. Но в целом, адрес 2-из-3 предлагает большую гибкость.
Недостатки
Никакой механизм безопасности не является совершенным. Один потенциальный недостаток с адресом 2-в-3 является то, что она имеет 2 из 3 ключей онлайн в браузере пользователя в момент создания адреса. Вредоносные программы, специально ориентированные приложения с использованием 2-из-3 кошельков могут лежать в-злоумышлений адреса должны быть создано, украсть ключи, а затем извлечь средства позже. Тем не менее, любой кошелек, клиент или сервер страдает от этой проблемы. С адресом 2-в-3, воздействие вредоносных программ в основном ограничивается решения о времени создания, в то время как традиционные адреса подвергаются этой слабости в любое время вы Transact. Аппаратные бумажники могут быть лучшим Mitigator против этой конкретной атаки.