Поэтому было бы желательно иметь защищенный сервер offloadable KDF, что означает своего рода blindable детерминированной доказательство правильности работы. Я описал одно такое доказательство правильности работы в этой должности (по отношению к слепому-HashCash другому, но в задней видимости, связанная тему, где в дополнении нужно перемещаемое публично проверяемое доказательство работы):
На основе blindable RSA (обеспечения) функции работы выгрузки:
общественные Титулы:
п = рд (простые числа р & д удалены при установке)
г = общий генератор
е = 2 ^ (2 ^ ш) -1 т.е. большого, большое число ш является фактором работы
у = г ^ е п моды (генерируется дешево при установке или вычислима одноразовой стоимости впоследствии)
слепой:
т = сообщение
б = случайное ослепительного фактор
г = г ^ Ь * м (broacast г шахтеров)
Работа:
s = г ^ е по модулю п (дорого, потому что е является большим и CARM (п) = (р-1) (Q-1) / 2 неизвестна)
unblind:
и = у ^ Ь (фактор, раскрытие кода)
м ^ е = с / у (как с / у ^ Ь = г ^ е / г ^ {} быть = г ^ {} будет * м ^ е / г ^ {} быть)
п = рд (простые числа р & д удалены при установке)
г = общий генератор
е = 2 ^ (2 ^ ш) -1 т.е. большого, большое число ш является фактором работы
у = г ^ е п моды (генерируется дешево при установке или вычислима одноразовой стоимости впоследствии)
слепой:
т = сообщение
б = случайное ослепительного фактор
г = г ^ Ь * м (broacast г шахтеров)
Работа:
s = г ^ е по модулю п (дорого, потому что е является большим и CARM (п) = (р-1) (Q-1) / 2 неизвестна)
unblind:
и = у ^ Ь (фактор, раскрытие кода)
м ^ е = с / у (как с / у ^ Ь = г ^ е / г ^ {} быть = г ^ {} будет * м ^ е / г ^ {} быть)
Так что, если мы называем, которые можно использовать в качестве слепого детерминированного пароля на основе доказательства работы: мы могли бы установить сообщение = пароль, или H (пароль), слепой случайный множитель г ^ Ь, и имеем серверный слепой-pbkdf (пароль ) для нас с некоторыми большой вес, что мы не можем позволить себе сделать на нашем смарт-телефон или ноутбук, потому что ОИТ быть слишком медленным.
Выше работа в основном ослеплена версия Ривест и коллеги по времени блокировки головоломки (время блокировки головоломка желает нон-parallelizabiiity как идея заключается в том, чтобы намеренно зашифровать что-то в будущее, где вы не можете ускорить его с помощью нескольких ядер. )
Дело в том, что он не является параллелизуемым на самом деле является недостаток для слепого KDF, это означает, что скорость до ограничена самого быстрого сервера выгрузки одноядерного. Другая простая параллелизуемое время блокировка предложена в работе временной блокировки, которая просто симметрично зашифровать и отбрасывать говорят 40 ключевых биты (это также модель, используемая Juels & Brainard для их клиентов-головоломки доказательства работы, которая несколько HashCash-как, но не имеет никакой публичной проверяемости). Однако это не blindable как его не алгебраической форме.
Но это легко сделать намеренно распараллеливаемой экземпляр, скажем, на 128 серверных ядер (16x 8 основных серверов, или еще более впечатляющий основной кол GPU фермы серверов), используйте меньший е значение взять например, 10 минут на ядре 1ГГц GPU (независимо от Ваша сделка допуск задержки), затем растягивает пароль, используя, например, PBKDF2 и 1 итерации, нулевую соль, в 128 значений на сумму выходного вызова псевдослучайного эти m1..m128. т.е. (m1 || .. || m128) = PBDF2 (1,"",пароль). Теперь создать 128 криптографический случайный (недетерминирована ГСЧ) вызовы b1 ... B128, ключ ECDSA х = m1 ^ е + ... + m128 ^ е по модулю п, быстро вычислить, когда вы знаете д (перед удалением р , д и д). Каждое сообщение Разгрузка является r_i = г ^ b_i * м1 по модулю п, и соответствующий unblind u_i = у ^ b_i мод п. и ключ к = s1 / u1 + ... + s128 / u128 мод п.
К сожалению, пользователь не должен сохранять г, у & п (или опубликовать их в жестком цензировать место, и сохранить хэш с = Н (г, у, п) в качестве публичного отпечатка пальца, или встроить, что в их монетах на блоке-цепи, потому что если пользователь полагался на разгрузке сервер для обеспечения г, у, п-сервер может обеспечить Аg, п, где г имеет небольшую подгруппу, что позволяет пространство поиска ослепляющего фактор будет значительно уменьшена. несколько оставшихся хэши кандидатов пароль, то можно было бы запустить через KDF с реальным п.
Пользователь может даже создать предварительно подписанное сообщение с передачей прав собственности из ключа Q1 = x1 * G с новым ключом Q2 = x2 * G, с большими параметрами работы на х2, что он запрашивает оператор сервера или доверенной сторону, чтобы освободить, когда имеется размеры вычислений фермы увеличить и вычислить становится дешевле. Если Locktime работал должным образом, вы могли бы даже транслировать эту сделку с годом Locktime 1 в будущее, и полагаться на сеть Bitcoin, чтобы автоматически обновлять запас безопасности в течение долгого времени.
Таким образом, пользователь защищает $ 10000 мозг кошелек Bitcoin инвестиций может сказать использование $ 10 стоит времени GPU (в ценах Амазонии $ 2,10 за 400core тесла GPU часа Thats 100000 Fermi ядра секунд или 714 Fermi карт секунд. Согласно Bitcoin горнорудной вики сравнения S2070 4 Тли ядро, и не 750MH так сказать 187.5MH / тесло второго составляет около 37 бит энтропии по сравнению с PBKDF2 раундами. Если у вас есть 40-битная энтропия пароль, который доставит вас из рискует GPU мозг бумажник добывал ( $ 80 стоят размола) до неправдоподобно неэкономичная границы не представляется возможной с любыми ресурсами для среднесрочной перспективы. Конечно, есть быстрее (AMD не Nvidia) и более дешевые способы измельчения, чем амазонки. Например Bitcoin майнинг выплата, вероятно, заряжает намного меньше. Может быть, это будет что-то для процессора & ГПУ шахтеры делать в качестве альтернативы туалетной добычи или добычи полезного ископаемых адреса primecoin / litecoin.
Так в кратком изложении Вы в яваскрипта клиенте, или ничтожный процессор Клетки может создать сколь угодно трудно отменить KDF без какой-либо практической стоимости процессора во время установки. Вы можете разгрузить его надежно позже на сервере, и вы не полагаетесь на сервере, чтобы быть вокруг - информация является общедоступной (на blockchain) "сервер" является сменным и лицами без гражданства, и даже может быть основной Bitcoin функция (плата CPU / GPU шахтеры и другие пользователи небольших сборов, чтобы помочь вам расшифровать ваш brainwallet). Это параллелизуемое так должно быть легко добавить 40-бит ключ растягивания или более, что было бы очень дорого, даже на высоком конце ПК с верхней частью линии видеокарты, чтобы сделать это с смартфона.
Возможно, еще несколько вещей, которые можно были бы сделать, например, в сочетании с секретным обменом, так что вы можете обнаружить и устранить дефектные рабочие ответы, или, возможно, найти способ также подписали доказательство работы, как-то легко проверяемый без введения проверки пароля кроватки.
Адам