асимметричный HMAC - PullRequest
       53

асимметричный HMAC

5 голосов
/ 28 марта 2012

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

1 Ответ

4 голосов
/ 28 марта 2012

Наименьшие асимметричные сигнатуры происходят от эллиптических кривых криптосистем, подобных 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-битные кривые.Система в целом должна быть оценена компетентными экспертами, прежде чем на нее положиться.

...