В другом потоке люди обсуждают проблемы, связанные с unauditable реализаций ECDSA (). Каждый принимает метод неинтерактивного подписания. Если вы разрешаете взаимодействие, то решение, кажется, легко.
Год назад, когда я разработал Firmcoin (Firmcoin.com), Я предложил реализацию ECDSA подписавшей, который использует случайные к, но использует справедливую монету листать вид протокола для создания K, которая является частной, но проверяемым. Другими словами, устройство и программное обеспечение на ПК взаимодействуют для создания K значение, таким образом, что справедливы следующие свойства:
1. К является равномерно случайным и скрытым каналом-свободным, если программное обеспечение ПК не потайная дверь и устройство потайной двери
2. К является равномерно случайным и скрытым канал-свободным, если программное обеспечение ПК и потайная дверь устройства не потайной двери
3. Программное обеспечение ПК не может получить закрытый ключ.
Полный протокол описан здесь: http://firmcoin.com/?p=52
Но я копируя его здесь:
Подписание сделки с использованием закрытого ключа специальный протокол двухпартийная. Подпись ECDSA состоит из кортежа (R, S). Все известные подсознательные каналы в ECDSA состоят из укрытия некоторой информации в г. s вычисляется детерминированно из D_A, г и г (за исключением из одного бита, который является признаком y_1). Наш протокол гарантирует, что г действительно случайным образом.
Это стандартный протокол ECDSA подписи:
1. подписывающее лицо вычисляет е = HASH (м), где Хэш криптографической хэш-функции, такие как SHA-1.
2. Пусть г на L_n крайний левый бит е, где L_n является немного длина группы порядка п.
3. подписывающий выбирает случайное число к из [1, п-1].
4. подписывающее лицо вычисляет точку кривой (x_1, y_1) = K * G.
5. подписывающее лицо вычисляет г = x_1 (по модулю п). Если R = 0, вернуться к шагу 3.
6. подписывающий вычисляет S = K ^ {- 1} (г + г D_A) (по модулю п). Если s = 0, вернитесь к шагу 3.
7. Подпись пара (R, S), который посылается пользователю.
Это наш протокол (пользователь программное обеспечение PC треста пользователя)
1-2. Эти шаги аналогичны стандартному протоколу.
3. подписывающий выбирает случайное число ¯u из [1, п-1].
3.1. Подписывающий вычисляет Q = U * G.
3.2. Подписывающий вычисляет H = HASH (Q). Это обязательство Q.
3.3. Подписывающий посылает час к пользователю.
3.4. Пользователь выбирает случайное целое число т из [1, п-1].
3.5. Пользователь посылает т к подписывающему.
3,6. Подписывающее лицо проверяет, является т [1, п-1]. Подписывающий посылает Q пользователю.
3,7. Пользователь подтверждает, что HASH (Q) = H. Если не равны, то подписывающий обман.
3,8. Подписавшего вычисляет K = T * и.
4-7. Эти шаги аналогичны в качестве стандартного протокола.
8. Пользователь вычисляет точку кривой (x_2, y_2) = т * В.
9. Пользователь подтверждает, что г = x_2 (по модулю п). Если не равны, то подписывающий обман.
Этот протокол гарантирует, что величина г выбирается равномерно случайным образом из множества рентгеновских координат точек кривых, и в то же время гарантирует, что пользователь не может произвольно заставить эту величину.
Следует отметить, что протокол не должен повторяться неограниченное число раз, если он выходит из строя. Если отказ происходит после шага 3.5, а не до шага 6, из-за подписывающий не реагирует должным образом (либо предоставления и недопустимое сообщение или не отвечает на всех), то новая итерация протокола может позволить подписывающий просачиваться некоторую информацию. Если подписчик не удается п раз до окончания протокола правильно, то боковой канал, который скрывает примерно log2 (N) биты могут быть опробованы. Для 256-битного ECDSA секретного ключа, мы не рекомендуем выполнение указанного протокола более чем в 16 раз, если постоянно выходит из строя, ограничивая количество утечки информации до 4 частных бит.
Если вы обнаружили уязвимость с этим протоколом, пожалуйста, дайте мне знать. Кроме того, если кто-то хочет сделать формальный анализ этого, что было бы удивительным. Насколько я изучал его, он опирается на те же криптографических предположения ECDSA.
С наилучшими пожеланиями,
Серхио.