Я пишу программу на Python для криптографии с эллиптическим кривым (для школы и без интереса). В настоящее время я работаю над алгоритмом цифровой подписи. В настоящее время я ищу хорошую и безопасную функцию хеширования, которая является стандартной для Python или ее можно легко загрузить и импортировать. Я думал о SHA256, так как это единственный, кого я знаю, который еще не сломался (насколько я знаю). Тем не менее, я также прочитал, что SHA не следует использовать для криптографии. Является ли SHA256 подходящим для алгоритма цифровой подписи? Или следует использовать другую функцию хэширования? Если да, то какой из них будет хорошим выбором?Криптографические хэш-функции в Python
ответ
Я использую SHA-512 для аналогичной цели, я думаю, вам будет трудно получить гораздо более безопасную защиту. SHA-512 доступен в hashlib питона, и может быть использован как так:
import hashlib
hashGen = hashlib.sha512()
hashGen.update("What you want to hash")
hash = hashGen.hexdigest()
print "your hash is: ", hash
1) Можно ли «очистить» объект от всех его обновлений, чтобы он начинался со всего, как бы? 2) Стоит ли SHA512 использовать, если моя эллиптическая кривая использует только 256 бит и порядок? – Dasherman
1) Не совсем, но вы можете добиться такого же эффекта, повторяя строку hashGen = hashlib.sha512(). 2) Его все равно стоит использовать, но у вас не будет полного потенциала (я не 100% на этом). –
Лучший стандартизованный алгоритм в настоящее время доступны по-прежнему SHA-2. SHA-2 теперь состоит из 6 хэш-функций: сначала были определены SHA-256, SHA-384 и SHA-512. SHA-224 был добавлен позже, чтобы обеспечить меньший размер выпуска. После этого были введены менее хорошо доступные SHA-512/224 и SHA-512/256.
SHA-2 в основном состоит из 32-битных ориентированных SHA-256 вариантов - SHA-256 и SHA-224 - и 64-битных SHA-512 вариантов - других. Производительность вариантов SHA-512 на самом деле может быть выше на 64-битных машинах, поэтому введение SHA-512/224 и SHA-512/256. В принципе, варианты SHA-256/SHA-512 отличаются только константами, которые они используют внутри, и количеством бит, используемым в качестве размера вывода.
Во время соревнований SHA-3 выяснилось, что SHA-2 по-прежнему довольно силен, даже если SHA-1 находится под атакой. Я бы предложил только посмотреть на другие хеши, если SHA-2 находится под атакой или если стандартизированы алгоритмы хеширования.
Материал из Википедии:.
В 2005 году недостатки безопасности были определены в SHA-1, а именно, что математическая слабость может существовать, что указывает на более сильную хэш-функция была бы желательна [6] Хотя SHA-2 имеет некоторое сходство с алгоритмом SHA-1, эти атаки не были успешно распространены на SHA-2.
Обратите внимание, что SHA-2 использует значительно более сложные раунды по сравнению с SHA-1.
1) Достаточно ли хэширования сообщения для цифровой подписи? Или я должен делать хэш несколько раз перед подписанием? 2) Будет ли SHA-2 достаточным для получения симметричных ключей шифрования, например, от пользовательского ввода или от точки эллиптической кривой или координаты x? Или я должен использовать для этого другой алгоритм? – Dasherman
1) Только один раз.2) Вы должны использовать PBKDF, такой как PBKDF2 или bcrypt/scrypt для паролей, и * официально * вы должны использовать KBKDF, такой как HKDF для второго. Для второго вы можете обмануть бит и использовать (самые левые бит) выход одного из алгоритмов SHA-2 как KDF. Обратите внимание, что PBKDF2 построен на HMAC, который, в свою очередь, основан на хеш-функции, такой как SHA-2. –
Может ли ваш «чит» быть более уязвимым для атак, чем с использованием HKDF? – Dasherman
- 1. Delphi 2010 криптографические библиотеки
- 2. Новые криптографические алгоритмы?
- 3. Радужные столы и криптографические
- 4. python криптографические файлы привязки времени выполнения в GCS
- 5. Как удалить криптографические ограничения Java?
- 6. Эллиптическая кривая Криптографические алгоритмы в Java
- 7. Ошибка маркера antiforgery ASP.MVC и криптографические ошибки
- 8. ARM криптографические инструкции и макрос __ARM_FEATURE_CRYPTO
- 9. Ruby XOR бит мудрый манипулирование криптографические упражнения
- 10. Статистическая функция хэш-функции и криптографические вместе
- 11. Где я могу скачать криптографические окна 7 64-разрядный установщик
- 12. Какие криптографические библиотеки доступны для шифрования с поддержкой форматирования (FPE)?
- 13. Можем ли мы применить криптографические методы в MATLAB?
- 14. Как генерировать криптографические подписи PKCS # 7 в Java?
- 15. RSA-OAEP: Как криптографические хэш-функции расширяют количество бит?
- 16. Есть ли высокий уровень абстракции Криптографические библиотеки для C#?
- 17. Криптографические хеш-функции достигают каждого возможного значения, например. они сюръективны?
- 18. Rails cookie.signed [: value] использовать криптографические алгоритмы для шифрования
- 19. PKHash RipeMD160 в python
- 20. Какие криптографические алгоритмы я могу использовать для отправки/получения данных на/с веб-сервера?
- 21. ASP.NET - уязвимость безопасности (криптографические оракулы) - почему перенаправление html для pre .NET 3.5 SP1
- 22. Как исправить криптографические алгоритмы Windows Platform FIPS с помощью плагина Jenkins ALM
- 23. Как шифровать длинный или int, используя криптографические процедуры Bouncy Castle для BlackBerry?
- 24. Использование Google Cloud Bigquery для доступа к edx2bigquery: невозможно использовать криптографические функции Попробуйте установить OpenSSL
- 25. Рекомендуемый криптографический модуль Python?
- 26. Получить тупоконечнику последовательность байт целого числа в Python
- 27. Python: печать в python?
- 28. Запуск Python Интерактивно в Python
- 29. python code parser в python
- 30. Python repl в приложении python
Если мне нужно было подписать сообщение в проекте, я бы использовал http://pythonhosted.org/itsdangerous/, и они используют HMAC и SHA1, видимо, – Anentropic
Не устарел ли SHA1? Я думал, что это оказалось очень уязвимым? Во всяком случае, я ищу программу, насколько смогу. Это означает, что я хочу запрограммировать почти все для ECDSA, кроме функции хеширования, поскольку я пока недостаточно осведомлен об этом предмете. – Dasherman
@ Энтропия Это MAC, а не подпись. МАС является симметричным. – CodesInChaos