Это важный вопрос, который волнует мета-политические войны в криптографическом сообществе.
SafeCurves — хороший ресурс, но очень мнение о том, что означает «безопасный».
Например secp256k1
, кривая, используемая Биткойном и Эфириумом для гарантии своей безопасности, считается командой SafeCurves «небезопасной», в то время как в настоящее время она имеет более 1000+ B$ «баунти-баунти» в виде BTC и ETH, которые могут быть взломаны, если вы сможете сломать это...
Так что нет, это не потому, что SafeCurves говорит, что что-то не так».Безопасно"это значит, что это"сломанныйКонечно, кривые NIST могли бы быть лучше, но они все еще работают и выполняют свою работу, и (насколько нам известно) против них не существует эффективных практических атак, которые угрожали бы системам, которые в настоящее время их используют, до тех пор, пока они "правильно" реализованы...
Что значит они не сломаны, и я бы лично не сказал, что они «небезопасны» для использования в 2021 году. Но если я разрабатываю новую систему, в которой я могу выбрать любой механизм согласования ключей или алгоритм подписи, они также не являются моим первым выбором.
Огромной проблемой, когда вы работаете в области разработки программного (и аппаратного) обеспечения, является «соблюдение требований», и, боюсь, именно NIST выпускает «стандарты», которые считаются Святым Граалем в мире соответствия.
Итак, пока они в настоящее время работают над новыми проектами (например, черновик для FIPS 186-5 в настоящее время включает Ed25519 в качестве алгоритма подписи), содержащий более «современные» кривые, они до сих пор еще не обновили свои рекомендации и стандарты, и поэтому многие организации обязаны полагаться на свои старые добрые рекомендации, такие как кривая P-256.
Совместимость также является большой проблемой. Например, кривая NIST P-256 поддерживается Web Crypto API, который должен быть постоянным и «безопасным» (в смысле «мы не знаем эффективных, практических атак против него»). Между тем более современный Curve25519 считается более безопасным и менее подверженным ошибкам реализации, чем P-256, но пока не поддерживается Web Crypto API. Итак, чтобы делать вещи JavaScript с использованием ECC, вам лучше использовать P-256, чем Curve25519. (Или WASM, но это уже другая тема.)
Кроме того, важно отметить, что GnuPG следует Спецификации OpenPGP и пытается быть широко интероперабельным, взаимосовместимым инструментом. Таким образом, он поддерживает МНОЖЕСТВО различных схем, среди которых некоторые старше, чем другие, некоторые более или менее используются.
Существует проект, включающий поддержку Ed25519 и X25519 в PGP, который в настоящее время открыт и над которым активно работали в течение последних нескольких лет:
Те же проблемы с совместимостью возникают и с PGP: если вы хотите иметь возможность легко общаться с другими, использующими его, лучше всего использовать то, что другие также используют/поддерживают.
Таким образом, PGP в какой-то момент достигнет этого, но это медленный процесс, и пока эти старые кривые и стандарты практически не нарушены (или не рискуют быть нарушенными), этот медленный процесс, вероятно, не ускорится.
Теперь вы должны изменить свои ключи PGP, если вы используете P-256 или другую кривую, чья «стоимость ро» выше 2 ^ 100 в этом списке: https://safecurves.cr.yp.to/rho.html ?
Я бы сказал "Нет". Вам не нужно беспокоиться сейчас, по крайней мере, в течение следующих 5 лет, возможно, больше. Но Квантовые компьютеры могут изменить эту историю еще через несколько лет, если они окажутся столь же эффективными, как мы ожидаем, при решении проблемы дискретного логарифмирования на практике.