Bitcoin использует криптографию эллиптической кривую для своих ключей и подписей, но конкретные кривой используются довольно необычно. Это называется secp256k1, от стандарта под названием SEC2, опубликованной группой под названием SECG, http://www.secg.org/index.php?action=secg,docs_secg.
Принимая имя secp256k1 друг от друга, сек происходит от стандарта, р означает, что координаты кривой простое поле, 256 означает, что простое имеет длину 256 бит, к означает, что он представляет собой вариант на так называемой кривой Köblitz, а 1 означает его первый (и единственный) кривая этого типа в стандарте. Это все хорошо, и общее, за исключением части Köblitz кроме. Кривые Köblitz представляют собой особый вид эллиптических кривых, которые имеют некоторую внутреннюю структуру, которая может быть использована для ускорения вычислений. Стандарты органов, как правило, уклоняется от кривых Köblitz из страха, что эта внутренняя структура когда-нибудь может быть использована, чтобы получить новую атаку. Действительно наверняка кривые Köblitz, но не secp256k1, потерять пару десятков битой защиты в известной атаку.
Большинство стандартов используют так называемые случайные кривые, когда они используют простые поля. SEC2 также включает в себя случайные кривые, а следующий один за secp256k1 называется secp256r1. Эти кривые, secp256r1, широко стандартизированы и используются, в том числе правительства США, который называет его P-256.
Я не знаю, обоснование использования secp256k1. Она имеет потенциал для скорости - Я видел оценки от 33% до 50% ускорения - но методы весьма эзотерические, как это не обычные кривых Коблиц, и я сомневаюсь, что реализация OpenSSL использует это. Я не потерять много спать по теоретической возможности нападения на secp256k1, но это, вероятно, будет менее широко применяется. Я посмотрел на BouncyCastle, широко используемой библиотека Java крипты, и они закомментирован код secp256k1. В то время как secp256r1 (P-256) вполне может быть кривая по умолчанию для нативных криптографических ключей в будущей ОС.
Это не было бы изменить, чтобы сделать легко, но мы могли бы рассмотреть вопрос о переходе к этому более широко используется стандартной кривой. Мы должны были бы отметить новые ключи, чтобы отличить их, и быть готовы к обработке оба вида подписей.
Вопрос состоит в том, будем ли мы когда-нибудь достичь точки, где клиенты могли бы устранить поддержку старого кривой? Может быть, только шахтеры могли сохранить поддержку, а также тот факт, что сделка попала в блок с некоторыми подтверждениями будет достаточно доказательств того, что это действительно было.