Рейтинг:0

Каковы самые быстрые алгоритмы, которые производят выборку из равномерного распределения?

флаг ru

Многие алгоритмы криптографии полагаются на генераторы псевдослучайных чисел. Иногда, имея открытый текст, вам нужно сгенерировать из него псевдослучайное число. Какие быстрые алгоритмы делают это?

Я видел один, который использует SHA256, и другой, который использует AES, но я не смог найти никакой литературы о них или какой-либо реализации, которую я мог бы использовать. Они должны быть быстрыми, потому что современные процессоры имеют для них аппаратную поддержку.

на странице 8 этой статьи: dl.acm.org/doi/10.1145/2808425.2808431 это говорит

введите описание изображения здесь

флаг cn
Название и основная часть вопроса не совпадают.
флаг ru
@Maeher Разве генераторы псевдослучайных чисел не используются для выборки из равномерного распределения?
Paul Uszak avatar
флаг cn
Я думаю, что вам придется расширить _«Иногда, имея открытый текст, вам нужно сгенерировать из него псевдослучайное число»._ Простой текст — это незашифрованное сообщение с семантическим содержанием. Для чего псевдослучайное число?
флаг ru
@PaulUszak на странице 8 этой статьи: https://dl.acm.org/doi/10.1145/2808425.2808431 там написано https://imgur.com/a/NhDoBlu
kodlu avatar
флаг sa
пожалуйста, отредактируйте свой вопрос, чтобы сделать его ясным и автономным
флаг cn
PRF не является случайной выборкой. И распределения могут быть равномерными по чему-то, например. определенное количество битов или конечное поле, общего «равномерного распределения» не существует.
флаг cn
Хм, есть 2 закрытых голосования, а затем была добавлена ​​награда (так что никто больше не может голосовать за закрытие). Добавление награды вместо исправления проблем ... это не заставляет никого хотеть вам помочь.
Geoffroy Couteau avatar
флаг cn
Я должен немного покопаться, чтобы найти указатель, но, насколько мне известно, самые быстрые PRNG основаны на перестановке AES с расписанием с фиксированным ключом. Хорошей отправной точкой может быть [эта статья] (https://eprint.iacr.org/2019/074.pdf).
Рейтинг:1
флаг in

Преобразование произвольного сообщения в псевдослучайное число — это, по сути, вычисление криптографического хэша.

Итак, этот вопрос, кажется, спрашивает, какой самый быстрый безопасный криптографический хэш?

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

Другие алгоритмы обеспечат сопротивление предварительному изображению и второму предварительному изображению, но не сопротивление столкновениям, например, MD5 или SHA1.

Некоторые алгоритмы сегодня считаются в целом безопасными, а также обеспечивают устойчивость к коллизиям и часто моделируются как псевдослучайные функции. Например, SHA-3.

Вот несколько тестов, сравнивающих криптографические примитивы. https://www.cryptopp.com/benchmarks.html И другое сравнение (другая настройка и другая метрика): https://medium.com/logos-network/benchmarking-hash-and-signature-algorithms-6079735ce05

Последний выбрал blake2 как самую быструю хэш-функцию, и она считается безопасной для любых целей, требующих безопасной хеш-функции, даже несмотря на то, что она не так широко используется, как стандартизированные семейства SHA2 или SHA3. (Примечание. У Blake2 есть несколько вариантов). введите описание изображения здесь

Первая ссылка имеет MD5 довольно быстро - 6,8 циклов процессора / байт, что очень и очень быстро. И по-прежнему безопасен для многих целей, но некоторым было бы неудобно использовать «сломанную» хеш-функцию.

Для большинства целей вам не нужен самый быстрый алгоритм хеширования, вам нужен достаточно быстрый хеш, и хорошая реализация любого стандарта должна быть достаточно быстрой. Никто никогда не был уволен за выбор SHA-3.

Рейтинг:0
флаг in

Предупреждение: я новичок

ТЛ; ДР. Самый быстрый алгоритм шифрования с предварительным общим ключом, содержит самый быстрый CSPRNG (он просто добавляет, что ввод XOR против него). Вы можете изменить только один, чтобы он игнорировал ввод (например, не выполнял XOR против ввода, потому что мы не хотим шифровать).


Предполагая, что вы спрашиваете о криптографически безопасных PRNG:

  • Если вам нужен практически неограниченный цикл, выберите самый быстрый алгоритм предварительно общего шифрования. Я думаю, что это их основная цель: найти самый быстрый начальный CSPRNG, а затем XOR с открытым текстом против него. В конце концов, полная секретность достигается, когда открытый текст подвергается операции XOR с некоторыми равномерно распределенными данными (например, с одноразовым блокнотом). Алгоритм предварительного общего шифрования просто направлен на создание этого блока с использованием метода заполнения (начальное значение является ключом, а состояние CSPRNG является одноразовым номером).

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

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

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

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

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.