Вопрос или проблема
Есть ли кто-то, кто может протестировать RandMegan? Если он не является криптографически безопасным, пожалуйста, поделитесь мыслями о том, как сделать его более криптографически безопасным. Я работаю над этим в виртуальной среде Python 3.12, и, по данным Microsoft Copilot, он пока не является криптографически безопасным с его генератором случайных чисел MêgaTron.
Репозиторий доступен по этой ссылке. Исходный код доступен через Google Drive, сжатый с помощью 7-Zip.
Я попробовал защиту с многоуровневыми резервами, которая, как и ожидалось, работает отлично. Тем не менее, я пытался внедрить Numpy и ordpy, чтобы улучшить безопасность его генерации случайных чисел. Есть прогресс, но мне нужно подтвердить у кого-то из вас, стоит ли завершать его как криптографически безопасный или нет. В данном случае одного участника будет недостаточно для вывода окончательного решения (хотя мой отец и я – единственные участники, так что я мог бы с ним не согласиться. В этом случае я, возможно, буду искать третье мнение).
Ответ или решение
Работа над обеспечением криптографической безопасности для вашего генератора случайных чисел RandMegan – это важная задача, которая требует внимательного подхода. Давайте рассмотрим несколько аспектов, которые могут помочь сделать ваш проект более защищенным.
-
Использование криптографически безопасных источников случайных чисел: Для генерации криптографически безопасных случайных чисел в Python рекомендуется использовать стандартный модуль
secrets
, который предназначен именно для этих целей. Например, вы можете использоватьsecrets.token_bytes()
для создания криптографически безопасных случайных данных. Это значительно повысит уровень безопасности вашей функции генерации случайных чисел.import secrets # Генерация криптографически безопасного случайного числа secure_random = secrets.token_bytes(16)
-
Алгоритмы генерации: Убедитесь, что используемые вами алгоритмы генерации случайных чисел являются проверенными и прошли оценку на безопасность. Например, алгоритмы, используемые в
NumPy
, могут не иметь достаточной криптографической прочности. Вместо этого вам следует использоватьrandom.SystemRandom()
, который использует операционную систему для получения более качественных случайных данных.import random secure_random = random.SystemRandom().randint(0, 100)
-
Подходы к смешиванию энтропии: Если вы хотите использовать свой собственный генератор, вы можете рассмотреть использование методов смешивания, таких как extracción энтропии из различных источников (например, использование временной метки, мышиного движениe и других непредсказуемых данных). Это поможет повысить уровень энтропии и улучшить защиту вашего генератора.
-
Проверка на криптографическую безопасность: После внесения изменений в ваш генератор случайных чисел важно провести его тестирование. Используйте тесты, такие как NIST SP 800-22, для проверки на случайность. Эти тесты помогут определить, насколько близко вы подошли к криптографически безопасному уровню.
-
Обсуждение с профессионалами: Как вы уже упомянули, получение мнения третьей стороны может быть полезным. Обратитесь к участникам сообщества с опытом в криптографии. Платформы, такие как Stack Overflow или Reddit, могут быть отличным местом для поиска экспертов, готовых дать конструктивную обратную связь.
-
Документация и поддержка: Убедитесь, что ваш код хорошо документирован. Это не только поможет вам понять, как используется каждый компонент, но и облегчит другим разработчикам понимание ваших намерений и методов.
Заключение: Работая над криптографической безопасностью вашего генератора случайных чисел RandMegan, учтите все вышеупомянутые аспекты. Используя криптографически безопасные алгоритмы, увеличивая энтропию и учитывая мнения экспертов, вы сможете значительно улучшить безопасность вашего проекта. Удачи в вашей работе!