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

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

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

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

Спасибо

EDIT : Спасибо за совет всем. Похоже, что нет безопасного способа сделать это, только способ, который умеренно неудобен для злоумышленников. Я, вероятно, буду использовать криптографический хеш в сочетании с секретной перестановкой битов. Это будет так же безопасно, как и любая другая ссылка в моей (очень слабой) «безопасности».

Ответы [ 3 ]

5 голосов
/ 11 ноября 2008

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

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

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

РЕДАКТИРОВАТЬ: Да, я криптограф.

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

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

3 голосов
/ 11 ноября 2008

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

0 голосов
/ 11 ноября 2008

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

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

...