Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
11 июня 2014, 9:32:11 PM   # 1
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: M-из-N паролей для генерации ключа шифрования бумажника

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


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

Цель
Изменение шифрования бумажника, который обычно требует от пользователя ввести пароль, а затем ключ растягивает его в симметричный ключ шифрования (например, AES256) и использует для шифрования бумажника закрытых ключей. То, что я хотел бы это: во время установки кошелька, вы можете иметь 3 Введенные пароли и любые два из них было бы достаточно для системы, чтобы вычислить ключ шифрования AES256. Конечно, было бы неплохо реализовать любые М-из-N.

Идея заключается в том, что 3 сотрудника на [крыле] организация будет нести ответственность за управление либо одной знач бумажником, или один ключом мульти-сиг бумажника. Для того, чтобы получить доступ к автономному ключа подписывать сделки, бумажник необходимо будет расшифрован, но ключ дешифрования не может быть вычислен из пароля любого отдельного сотрудника.  


Задний план
Секретный Sharing Шамира представляет собой механизм, с помощью которого секретная часть данных интерпретируются с как высший порядок coefficeint полинома, а затем точки этого полинома распределены и хранятся отдельно. Например, вы храните в тайне, как наклон линии, а затем записать три точки линии на отдельных листах бумаги. Если у вас есть какие-либо два куска бумаги, у вас есть две точки на линии и может вычислить наклон - который восстанавливает секрет. Это будет 2-в-3. Вы можете сделать это с любым M и N, используя N точек на (М-1) -го порядка полинома.

Хотя это понятие легко представить себе, как мы делали в средней школе, вы не можете использовать число с плавающей точкой из-за проблемами точности. Вместо этого, вы делаете все операции на конечных полях, которые на самом деле просто по модулю arithmatic, циклических групп. Вы просто определить все операции, чтобы быть на целых чисел от 1 до некоторого большого простого N, определяют деление быть / Ь = а * ЬN-1, а затем вы можете реализовать все алгебру одинаково. Я не буду вдаваться в подробности здесь, но это является как SSS реализован в криптографических системах. Однако, как правило, простое N выбирается заранее, и известно устройствами, поэтому он знает, какое конечное поле, чтобы использовать для объединения точек.  

Перефразировать цель:  
Секрет Sharing Шамира представляет собой процесс преобразования секрет в акции М-оф-N, подлежащих распределению. То, что я хочу, это процесс преобразования N акций (пароли пользователей) в M-из-N секрета. Это обратная задачи, решаемые SSS.


Почти на месте
Если бы это было 2-из-2, 3-в-3, или М-оф-М, запас SSS будет работать. Скажем 3-в-3: система собирает все три пароля при создании кошелька, вычисляет coeffiicent высшего порядка параболы, созданного хэш всех трех паролей (возможно, используя первые четыре байта хэша как X -значение, а остальное, как Y-значение), а затем использует это в качестве ключа шифрования для бумажника. Когда все пароли введены, система может вычислить это значение, расшифровать бумажник, а затем уничтожить его. Это работает, хотя есть более простые способы комбинируют Mulitple паролей. Но как сделать произвольный M-из-N?  


обсуждение
Но это не работает для M-из-N, где M не равна N. Для 2-в-3: вы хотели бы, чтобы вычислить наклон, который может быть вычислен из любых двух из трех точек, но три очка не коллинеарные в заранее определенном конечной области. Одним из способов было бы собрать все пароли, а затем выяснить набор параметров конечных полей, для которых все три точки коллинеарны (для простых простых на основе конечных полей, попытаться найти простое N таким образом, что они коллинеарны). Сохраняют параметры FF в бумажнике, а бумажник будет использовать эти данные, когда два пароля будет введен. Но это чувствует, как взломать.

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


альтернативы
Лучшей альтернативой является просто не позволить пользователям создавать пароли, но создать безопасный ключ шифрования, а затем использовать SSS и положить акции на смарт-карты. В институциональном мире безопасности, это, по крайней мере, как резервное копирование производится при использовании ИМП (и как Оружейная делает фрагментирован резервные копии своих кошельков). В этом случае, мы просто пытаемся расширить понятие пользовательского пароля будет выполняться на потребительских ПК. На данный момент, ИМП не существует в мире БТД, и в то время как они могут, все равно было бы здорово иметь решение этой проблемы здесь.

Другой альтернативой для малых M и N, чтобы просто хранить все N-выбрать-М мульти-зашифрованы формы ключа шифрования. Например, для 2-х из-3, ключ шифрования будет случайным образом генерируется системой, а затем он будет храниться 3 раза в бумажнике, каждый из которых шифруется с различными 2 ключами. Дешифрование будет просто вопрос пытается расшифровать все три ключа и выбрать тот, который работает (если таковые имеются). Но это еще больше рубить, и это не очень хорошо масштабируется (хотя современные компьютеры могут работать с большинством сценариев использования довольно легко, если не было никаких дополнительных клавиш не растягивая).


Предостережения
Я понимаю, что мы все еще говорим о едином куске потребителя аппаратных средств, которые могут быть скомпрометированы вредоносными программами, или кто-то с DMA может сильно ударить ключ из памяти, как только все пароли вводятся, и т.д. Цель состоит в том, чтобы обеспечить механизм, в котором несколько людей требуется для доступа к системе, и вместе они контролируют все взаимодействия с системой и убедитесь, что ни один не фальсификация / манипулировать им. Является ли это failproof? Нет, но она по-прежнему мешает один человек, который временно получает доступ от вытягивать ключ с диска, даже если у них есть один пароль. Если контроль надлежащего доступа осуществляется, это может дать еще один инструмент для осуществления разделения обязанностей, на месте, или в-дополнение к мульти-Sig сделки.  

В будущем это может быть спорным, так как Orgs будет двигаться к ИМПУ, которые все защищенные от повреждений, уничтожить закрытые ключи, если вы пытаетесь открыть, реализовать подобный контроль M-из-N доступа и т.д. Но для потребительской техники, я думаю, что это может быть довольно сильным.

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


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


11 июня 2014, 10:24:01 PM   # 2
 
 
Сообщения: 111
Цитировать по имени
цитировать ответ
по умолчанию Re: M-из-N паролей для генерации ключа шифрования бумажника

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





 Не может секрет схема разделения Шамира уже сделать нечто подобное?

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

 Ваш ключ программного обеспечения Создание придется выбирать (псевдо) случайных коэффициентов для кривой и вычислить п точек, чтобы дать участникам. Бумажник шифруется с постоянным сроком кривой. Программное обеспечение бумажник (который не имеет знания коэффициентов кривой) может воссоздать ключ шифрования (константы) данным к из п точек на кривой.

 Может быть, я неправильно понял вашу проблему. Я не уверен, что это именно то, что вам нужно?

 

 

 

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

11 июня 2014, 10:27:13 PM   # 3
 
 
Сообщения: 1260
Цитировать по имени
цитировать ответ
по умолчанию Re: M-из-N паролей для генерации ключа шифрования бумажника

Очень интересно etotheipi.

Я всегда полагал, SSS был м п уже ... его нет?
 
Будет ли это просто еще одна реализация multisig? 
Что было бы преимущество над текущим?
jonald_fyookball сейчас офлайн Пожаловаться на jonald_fyookball   Ответить с цитированием Мультицитирование сообщения от jonald_fyookball Быстрый ответ на сообщение jonald_fyookball

11 июня 2014, 10:27:51 PM   # 4
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: M-из-N паролей для генерации ключа шифрования бумажника

Не может секрет схема разделения Шамира уже сделать нечто подобное?

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

 Ваш ключ программного обеспечения Создание придется выбирать (псевдо) случайных коэффициентов для кривой и вычислить п точек, чтобы дать участникам. Бумажник шифруется с постоянным сроком кривой. Программное обеспечение бумажник (который не имеет знания коэффициентов кривой) может воссоздать ключ шифрования (константы) данным к из п точек на кривой.

 Может быть, я неправильно понял вашу проблему. Я не уверен, что это именно то, что вам нужно?

Да, я должен был быть более ясным в моем посте. Перефразируя, что вы сказали:

Секретный Sharing Шамира обычно начинается с секретом, а затем разделить его на акции М-оф-N. Участники, получающие акции не получают право голоса в данных, содержащихся в акции.   Вы начинаете с секретом и получить M-из-N акций.

То, что я хочу, чтобы ваши N участники каждый производят свои собственные акции indpendently (их пароли), а затем некоторые расчет выполняется на всех из них, чтобы произвести ключ шифрования, который является вычислимой только с М из них.   Вы начинаете с акциями, и получить M-из-N секрет.  Это хорошо, если этот процесс производит часть нечувствительных данных, которые должны быть сохранено с зашифрованными данными, чтобы завершить вычисление.

При формулировке таким образом, это всего лишь обратная проблема, что SSS решает
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

11 июня 2014, 10:41:45 PM   # 5
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: M-из-N паролей для генерации ключа шифрования бумажника

Одним из способов достижения этой цели будут генерировать случайный ключ AES, используйте SSS, чтобы разбить его, а затем зашифровать каждый из частей с соответствующими паролями.

Так AES_MasterKey -> SSS (2 из 3) -> {S1, S2, S3}

Шифрование (S1, PBKDF2 (пароль1)) = Encrypted_S1
Шифрование (S2, PBKDF2 (password2)) = Encrypted_S2
Шифрование (S3, PBKDF2 (password3)) = Encrypted_S3

Магазин Encrypted_S1, Encrypted_S2, & Encrypted_S3 в файле бумажника.

Вы должны по крайней мере, два из паролей и файл бумажника для восстановления мастер-ключа.

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

11 июня 2014, 11:54:56 PM   # 6
 
 
Сообщения: 111
Цитировать по имени
цитировать ответ
по умолчанию Re: M-из-N паролей для генерации ключа шифрования бумажника

есть версии SSS, где участники могут использовать свои собственные пароли, чтобы создать секрет
Google «секретный обмен без дилера» - https://eprint.iacr.org/2011/241.pdf
и вы можете построить м пороговых схем п
эти схемы должны быть «проверяемыми», так что вы знаете, что все участники честны

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

этот документ обсуждался некоторое время назад

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.67.9913&Rep = REP1&тип = PDF

если использовать схему "нет дилера здесь, то вы можете позволить участникам выбирать свои собственные«пароли»и использовать его для создания открытого ключа (который может быть проверен), а затем м участников п может произвести подпись.
 Таким образом, в DSA только лицо (или м русского народа) с закрытым ключом может «Encrypt» или «знаком» документ и кто-нибудь с помощью открытого ключа может «расшифровка» или проверку подписи.

 Таким образом, при движении задним ходом это, может быть, вы могли бы рода использовать это, чтобы добиться того, что (я думаю) вы предлагаете. Вы зашифровать бумажник с открытым ключом и нуждаетесь в «м п» участников для расшифровки, но вы используете асимметричное шифрование, так что вы не должны построить секрет для того, чтобы зашифровать бумажник.

 Основная проблема с большим количеством этих схем является то, что вам нужно обеспечить «точка-точка» связи между отдельными участниками, и это может сделать все усложняется. Как будто они не были достаточно сложно уже.
 

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

12 июня 2014, 5:01:29 PM   # 7
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: M-из-N паролей для генерации ключа шифрования бумажника

Одним из способов достижения этой цели будут генерировать случайный ключ AES, используйте SSS, чтобы разбить его, а затем зашифровать каждый из частей с соответствующими паролями.

Так AES_MasterKey -> SSS (2 из 3) -> {S1, S2, S3}

Шифрование (S1, PBKDF2 (пароль1)) = Encrypted_S1
Шифрование (S2, PBKDF2 (password2)) = Encrypted_S2
Шифрование (S3, PBKDF2 (password3)) = Encrypted_S3

Магазин Encrypted_S1, Encrypted_S2, & Encrypted_S3 в файле бумажника.

Вы должны по крайней мере, два из паролей и файл бумажника для восстановления мастер-ключа.

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

@Crowex: это интересный материал. Я рад, что, наконец, знать, что искать. Я математик, поэтому я до сих пор интригует этих теоретических решений, и я хотел бы найти некоторые математике, что делает это, естественно, вместо раствора D&Т разм выше. Хотя, если я эти функции в Оружейной будет D&Решение T по очевидным причинам. Но я рад продолжить обсуждение математика в этой теме.
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

21 июля 2014, 5:13:36 AM   # 8
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: M-из-N паролей для генерации ключа шифрования бумажника

FYI, эта функция скользила довольно красиво в новый формат бумажник я работаю. Одна вещь, которую я хотел бы упомянуть для полноты картины, есть необходимость, чтобы убедиться, что вы не могу проверять пароли по отдельности. Я хранение ключей растягивания информации с каждым фрагментом, так что Оружейные знает, как расшифровать его, но все это расшифровывает является непрозрачным 32-байтовый фрагментом данных, без четкого указания, является ли результат справедлив. Единственный способ узнать, если кворум паролей присутствует для восстановления ключа шифрования, который тогда могут быть проверены на точность.   

Это важно, потому что это означает, что вы экспоненциально увеличение эффективной энтропии шифрования мастер-ключа, не линейна. Например, предположим, что у вас есть 3-в-5 и пароль каждый из 5 участников выбирает пароль с 40 битами энтропии. Если вы можете проверить каждый пароль самостоятельно, то эффективное время грубой силы:

Код:
3 * bruteForceTime (40bits)

Вместо этого я, убедившись, что только окончательный reconstucted ключ может быть проверен, что означает время перебора является:

Код:
bruteForceTime (3 * 40bits)

В буквальном смысле, первый из них является грубой forceable, а второй нет. Недостатком является то, что если типы один человек их пароль неправильно, нет никакого способа узнать, не все заново вводить свои пароли. Я думаю, что КОНОПС может быть расширена так, что, когда пароли первоначально установлены, каждый участник также вставляет ключ USB и получает фрагмент 3-в-5 резервной копии бумажника (незашифрованном) копируется в него. Они могут защитить, что тем не менее они считают нужным, так что вам нужно либо:

(A) Зашифрованные бумажник файл + 3-из-5 паролей
(В) 3-из-5 фрагментов, чтобы восстановить потерянный файл бумажника

Тем не менее, если три человека теряет диск USB и три человек забыли свой пароль, бумажник бы не быть возмещен, несмотря на 4 "куски" (2 паролей + 2 фрагменты). Возможно, зашифрованное фрагмент пароля должно быть скопировано вместе с незашифрованным резервным осколком. В любом случае, это, кажется, есть все необходимые свойства для защиты многопользовательского бумажника или куска мульти-сиг бумажника. Вы можете также распечатать эти данные на бумаге, но, вероятно, будет несколько вопросов, OPSEC, имеющие 5 человек в комнате все подвергаясь / мелькнула фрагменты получения распечатаны. 

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW