По-настоящему случайный блокнот для шифрования

Я делаю проект по информационной безопасности, мой проект включает в себя шифрование и дешифрование данных. У меня есть идея генерировать действительно случайный ключ, который не может быть повторно использован с использованием одноразовой панели. Но я не хотел бы начинать с нуля при написании кода, так как я не являюсь экспертом в языке программирования Python. Мне нужен код, который написан на Python. Как и код должен быть исполняемым на ОС Windows. Так как я использую Windows 7 и 8.

3 ответа

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

99% всех "улучшенных" OTP оказались потоковыми шифрами. Я подозреваю, что ваш дизайн ничем не отличается. Исследуйте потоковые шифры для идей.

Вы не можете генерировать криптографически хорошую случайность из генератора псевдослучайных чисел, который является почти каждым компьютерным ГСЧ.

В Python вы можете использовать random.SystemRandom,если ваша система предоставляет сервис, и это займет больше времени, чем ваше терпение, потому что системе требуется время для сбора энтропии.

Для классного упражнения, ОТП 0x00000000… или же 0x01020304… может быть идеально подходит для демонстрационных целей. Это может быть даже лучше, потому что ручная проверка намного проще.

Действительно, OTP всех нулей, как показывает Рэндалл Манро, является совершенно случайным OTP

Поистине случайный ключ нецелесообразен и его невозможно сгенерировать. Вам нужен криптографически случайный ключ. В python это может быть сгенерировано os.urandom(n), который используется random.SystemRandom, как предложил пользователь msw.

Хотя создание вашей собственной случайной функции будет лучшим, этого должно быть достаточно.

Другие вопросы по тегам