2012-03-27 2 views
4

Проверка хеширования, созданного HMAC, требует, чтобы ключ был известен валидатору. Таким образом, он симметричен. Что такое асимметричное решение similer, кроме SSL? так как я хочу, чтобы подпись была меньше, чем хеш md5. и процедура генерации и проверки должна быть легкой. Я проходил через алгоритм подписи Рабина, но не смог найти никакой реализации или псевдокода.асимметричный HMAC

ответ

3

Наименьшие асимметричные подписи исходят от elliptic curce криптосистем, таких как ECDSA. Схемы подписи ECDSA требуют, чтобы сигнатуры приблизительно в четыре раза превышали длину симметричного ключа шифрования эквивалентной безопасности. Таким образом, схема, сопоставимая по безопасности с 128-разрядной AES, имела бы 512-битные подписи. Это состояние дел прямо сейчас - схемы с меньшими сигнатурами, но с равной или большей безопасностью неизвестны.

Если вам не нужна высокая безопасность, вы можете использовать 192-битную кривую, которая приведет к 384-битным сигнатурам. Вы можете перейти к 320-битным сигнатурам (160-битные кривые) и по-прежнему иметь безопасность, сопоставимую с 80-битными симметричными шифрами. Если вы действительно не особо заботитесь о безопасности, можно использовать 112-битные кривые, обеспечивающие 224-битные подписи, которые так же сложно сломать, как DES.

следующих кривых то, что я рекомендовал бы для каждого уровня безопасности:

SecP112R1: 224-битных подписи, 56-битного уровень безопасности
SecP128R1: 256-битных сигнатуры, 64-битная безопасность уровень
SecP160K1: 320-битные подписи, 80-битный уровень безопасности
SecP192K1: 386-битные подписи, 96-битный уровень безопасности
SecP224K1: 448-битовые подписи, 112-битный уровень безопасности
SecP256K1: 512-битные подписи, 128-битный уровень безопасности

Для каждой кривой, закрытый ключ имеет тот же размер, как кривой. Открытые ключи (в сжатом виде) на один бит больше размера кривой. Подписи в два раза превышают размер кривой. Таким образом, с SecP256K1, закрытые ключи - 256 бит, открытые ключи - 257 бит, а подписи - 512 бит. Это минимальные размеры для исходных двоичных значений.

Осторожно: Я бы рассмотрел 160-битные кривые как минимум для любых целей, где безопасность является фактором. Меньшие кривые могут быть подходящими, если ключи генерируются, используются, а затем выбрасываются за небольшой промежуток времени. Для долговременной защиты следует использовать 256-битные кривые. Система в целом должна оцениваться компетентными специалистами, прежде чем она будет опираться.

+0

Можете ли вы предоставить ссылку на реализацию? и в основном используется для чего? –

+0

[OpenSSL] (http://www.openssl.org/) имеет реализацию ECDSA, как [Bouncy Castle] (http://www.bouncycastle.org/). ECDSA используется всякий раз, когда необходима схема подписи с наименьшей возможной длиной бит. (Например, транзакции [биткойн] (http://bitcoin.stackexchange.com/) защищены подписью SecP256K1 ECDSA.) –

+0

Можете ли вы мне немного помочь? Я создаю закрытый ключ с 'openssl ecparam -name secp112r1 -genkey', теперь мне нужно сгенерировать открытый ключ с помощью какой команды? Я не очень хорошо знаю команды openssl. –

Смежные вопросы