Каков несколько безопасный способ генерации 64-битной подписи?

StackOverflow https://stackoverflow.com/questions/279418

Вопрос

Я бы хотел знак устройство, и у меня есть 64 бита для хранения моей подписи в устройстве.У этого устройства есть MAC-адрес и некоторые другие данные (объемом около 30 байт) Я могу изменить их, чтобы создать свою подпись.

Если возможно, я бы хотел, чтобы метод был односторонним, чтобы я мог проверить, что подпись действительна, не зная, как создать действительную подпись.Большинство общедоступных и закрытых ключей имеют эту функцию, но они генерируют подписи длиной 48 байт (у меня всего 8 байт).

Реализация на Python - это плюс.

Спасибо

Редактировать:Всем спасибо за совет.Это звучит так, как будто нет безопасный способ сделать это, только такой, который является умеренно неудобным для злоумышленников.Вероятно, я буду использовать криптографический хэш в сочетании с секретной перетасовкой битов.Это будет так же безопасно, как и любая другая ссылка в моей (очень слабой) "безопасности".

Это было полезно?

Решение

Хэш - функции и цифровые подписи - это очень разные вещи.

Размер цифровой подписи зависит от базовой хэш-функции и длины ключа.Таким образом, теоретически вы можете создать реализацию RSA, которая генерирует 64-разрядные подписи, но это была бы чрезвычайно слабая подпись.

Для получения ключей меньшей длины вы можете обратиться к криптографии с эллиптической кривой.

Редактировать: Да, я криптограф.

ПРАВКА 2: Тем не менее, если вам нужна только хэш-функция, вы можете посмотреть на elf64 или RIPEMD-64, как предложил Фернандо Мигелес.

ПРАВКА 3: Подсчитав, вам нужно было бы использовать 16-разрядные ключи в ECC для генерации 64-разрядных подписей, что очень слабо.Для ECC все, что меньше 128 бит, можно считать слабым.Для RSA это 1024 бита.

Другие советы

По сути, то, что вам нужно, - это 64-разрядный криптографическая хэш-функция, такие как Ripemd-64 или elf-64.Затем вы шифруете хэш с помощью криптографического метода и получаете 64-битную подпись.Единственная проблема заключается в том, с точки зрения не-криптоаналитика, что 64-разрядная версия предлагает гораздо более слабую подпись, чем типичный более чем 128-битный хэш.Тем не менее, он все еще может подойти для вашего приложения.

Вы могли бы просто использовать стандартную функцию хеширования (MD5 SHA1) и использовать только первые или последние 30 байт.
Количество байтов, генерируемых функцией хеширования, довольно произвольно - очевидно, что это компромисс между пробелом и уникальностью.В длине подписи, которую они используют, нет ничего особенного.

Редактировать - извините, я думал, что MD5 вернул 32 байта - фактически он возвращает 16 байт, но обычно записывается в виде 32-кратных цифр.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top