Можно ли с вычислительной точки зрения найти два идентификатора транзакции с одинаковыми первыми 20 байтами?

Хэши транзакций используют sha256, поэтому их длина составляет 32 байта. Если мне нужно хранить очень большую базу данных хэшей транзакций только для проверки существования позже, действительно ли необходимо хранить все 32 байта? Если я сохраню только 20 последних байтов и сравню транзакции, используя только эти последние 20 байтов, рассердятся ли специалисты по криптографии?

Ответы (2)

Можно ли с вычислительной точки зрения найти два идентификатора транзакции с одинаковыми первыми 20 байтами?

20 байт — это по-прежнему 160 бит безопасности, что считается очень безопасным. Если вы уверены, что вам нужны только идентификаторы для проверки существования, 20 байтов хэшей должно быть достаточно.

Однако место на жестком диске довольно дешевое, и вам может понадобиться полный TXID когда-нибудь только для взаимодействия между другими системами. Поэтому убедитесь, что 20 байтов действительно удовлетворяют ваши варианты использования. Однако 20-байтовый хэш достаточно безопасен.

Я думаю, это зависит от того, что вы хотите с ним делать. Если, например, вы используете эти 20 байтов в качестве ключей в таблице поиска, то все должно быть в порядке, если вы помните, что иногда можете получить ложное срабатывание, поэтому всегда дважды проверяйте, действительно ли это та транзакция, которую вы искали. Для этой цели, вероятно, уже достаточно менее 20 байт.

Если 20 байт — это все, что вы храните, а все остальное выбрасываете, и вы принимаете важные решения, основываясь только на этих 20 байтах, то в какой-то момент вы можете столкнуться с проблемами.

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

Возможно ли, что время от времени бывают ложные срабатывания? Мог ли злоумышленник действительно подделать транзакцию с помощью sha256 с 20 настроенными байтами?
Я не занимался математикой, но да, кажется маловероятным. Я бы доверял ответу StephenM347 на этот счет. Я напечатал свой ответ до того, как он появился. Я просто сказал, что это может зависеть от того, что вы пытаетесь сделать (вы можете уменьшить размер до 20 байт), и иметь в виду, что активные злоумышленники могут вызвать проблемы, если вы сделаете слишком низкий размер.