Таким образом, я много думал о безопасности бумажник; пароль патч Мэтты это хороший первый шаг, но, возможно, мы можем по крайней мере построить в некоторых инфраструктурах для лучшего решения.
Нам действительно нужно решение, в котором операции генерируются на одном устройстве, а затем проверить на втором устройстве, так что вредоносные программы должны ставить под угрозу оба устройства (например, компьютер и мобильный телефон или веб-кошелек и мобильный телефон), чтобы украсть монеты.
gmaxwell из IRC считает, что это может быть сделано без нескольких подписей (только со стандартной сделки мы имеем сейчас), и глядя на математику ECDSA На этой странице википедии Я думаю, что он прав. Я считаю, что он был вдохновлен наблюдением ByteCoin, что вы можете создать генерации ключа службы общественной тщеславия, которое secure-- служба может генерировать открытый ключ, но не знаете, закрытый ключа.
Я в основном пишу это, чтобы убедить себя, что может работать и дать ByteCoin и Hal и gmaxwell и кто-нибудь еще, кто знает много больше, чем крипто мне шанс ткнуть отверстия в ней. А потом мне точку к стандарту FIPS, который имеет все это понял, уже ...
Итак: генерирование ECDSA ключей означает выбор частного ключа д, то вычисления открытого ключа Q = дG (где G является неподвижной точкой на эллиптической кривой).
Генерации ключа могут быть разделены; есть устройство 1 выбирает DA1 и устройство 2 выбирают дA2. Устройство 1 затем посылает QA1 к устройству 2, и он может вычислить QA1dA2 = QA1 * A2. Или по-английски, устройство 1 находит открытый ключ на кривой. Затем устройство 2 использует свою часть секретного ключа, чтобы сделать более гроздь эллиптической кривой умножает найти составную открытый ключ, не зная открытый ключ устройства 1, в.
Так большая, ни устройство 1 или 2 потребности когда-либо иметь оба части секретного ключа на них, чтобы сгенерировать общий открытый ключ.
Теперь давайте говорить Устройство 1 хочет провести TxOut, который один из этих ключей раскола. Бит ключа алгоритма формирования подписи (см страницу Википедии: http://en.wikipedia.org/wiki/Elliptic_Curve_DSA#Signature_generation_algorithm ) является:
...
4. Рассчитать сек = к-1(Г + й) (По модулю п)
...
Это можно переписать в виде:
Рассчитать сек = к-1(Г + йA1dA2) (По модулю п)
А теперь я застрял. Может ли это уравнение быть переработано так, что устройство-можно вычислить часть подписи, отправьте его частичный результат на устройство 2, и имеет устройство-завершить подпись (без устройства-будучи в состоянии выяснить, 1 часть закрытого ключа?)?