Сегодня я думал о том, что вы могли бы реализовать на основе программного обеспечения многофакторную ключ шифрования для бумажника. Что приходит на ум, это разделение секрета Шамира, но в обратном направлении. Я объясню, что это значит, когда я объясню основной 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 доступа и т.д. Но для потребительской техники, я думаю, что это может быть довольно сильным.