Реализация ECC в C

Я хотел бы реализовать «мой собственный гибридный механизм шифрования», используя асимметричную криптографию на основе эллиптических кривых вместо других алгоритмов, таких как RSA или ElGamal.

Предполагая, что я хочу использовать кривые, которые обеспечивают большую безопасность, какие из них мне следует использовать? Основываясь на том, что я прочитал, я думаю, что 521-битная кривая, вероятно, идеальна. Есть ли более безопасные схемы?

Каковы наиболее безопасные реализации на C/C++ (без использования C++ STL) против, например, атак по сторонним каналам? Я хотел бы реализовать его как «отдельный» модуль, поэтому был бы признателен за чистый исходный код или хорошие ссылки.


person Community    schedule 03.07.2011    source источник
comment
Ваш собственный гибридный двигатель? Осторожно. Первое правило криптографии: вы не сможете сделать работу лучше, чем профессионалы. Крайне вероятно, что любые изменения, которые вы вносите в существующие алгоритмы, ослабят их, если вы не имеете опыта работы с криптографией и полностью не понимаете, как работают схемы шифрования — и даже в этом случае вы можете ослабить шифрование.   -  person Jonathan Grynspan    schedule 04.07.2011
comment
Собираетесь ли вы защитить коды ядерных вооружений вашей страны с помощью этой 521-битной криптографии на основе эллиптических кривых? Просто интересно, какие у вас могут быть секреты, для которых недостаточно стандартной реализации FIPS 186-3 с простым размером 256 бит или просто кривой-25519. Они легко доступны, на порядки быстрее, и нет разумного шанса, что что-то из этого будет сломано в течение вашей жизни, или что факторизация EC станет точкой входа в первую очередь (когда это намного больше). скорее всего, найдет эксплойт реализации или проведет социальную инженерию).   -  person Damon    schedule 04.07.2011
comment
Это первое правило не работает на нуле.   -  person Hernán Eche    schedule 04.07.2011
comment
Джонатан, я не модифицировал схемы шифрования. Вероятно, это больше похоже на создание моего «собственного» криптографически безопасного протокола связи вместо реализации полной поддержки SSL, и я даже не реализовал алгоритмы. По сути, я ищу безопасные реализации ECC в C/С++ (без C++ STL)...   -  person    schedule 05.07.2011
comment
Деймон, я хотел бы знать, какие схемы должны быть достаточно эффективными и безопасными, лично меня не волнует, сломают ли, например, квантовые компьютеры текущие алгоритмы PK, такие как RSA или криптографию EC в будущем... Я читал, что 521-битный ECC эквивалентен 15360-битному RSA/DSA, что обеспечивает достаточную безопасность... как вы сказали, эксплойты реализации более вероятны. Я попросил безопасные реализации против эксплойтов.   -  person    schedule 05.07.2011


Ответы (1)


Прежде чем даже думать о том, может ли какая-либо из стандартных кривых быть недостаточно безопасной, я бы просто пошел и убедился, что режим шифрования действительно безопасен против простых атак с выбранным зашифрованным текстом. Я думаю, что статья Крамера и Шоупа «Проектирование и анализ практических схем шифрования с открытым ключом, защищенных от атак с использованием адаптивного выбранного шифротекста», 2003 г., является хорошей отправной точкой для анализа гибридных схем шифрования.

Что касается атак по времени: OpenSSL содержит реализации для небольшого числа выбранных кривых, которые были реализованы так, чтобы они выполнялись в постоянное время.

person Accipitridae    schedule 04.07.2011