fbpx
  • Torchcsprng: библиотека для безопасной генерации случайных чисел

    Torchcsprng — расширение PyTorch для C++/CUDA для криптографически безопасной генерации случайных чисел.

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

    Обзор библиотеки

    Исторически в PyTorch было только две имплементации генератора псевдослучайных чисел: Mersenne Twister для CPU и cuRAND Philox для CUDA от Nvidia. Несмотря на то, что работают оба алгоритма быстро, они непригодны для криптографических задач. Torchcsprng является безопасной альтернативой прошлым алгоритмам. Расширение основывается на dispatch механизме в PyTorch и регистрации операторов. Torchcsprng позволяет пользователям имплементировать свой кастомный генератор псевдослучайных чисел.

    Torchcsprng генерирует случайных 128-битный ключ на CPU с использованием одного из своих генераторов, а затем прогоняет через AES128 в режиме CTR либо на CPU, либо на GPU с использованием CUDA. Это генерирует случайный 128-битное состояние и применяет функцию трансформации, чтобы соотнести это состояние со значениями в тензоре.

    Подход в Torchcsprng основывается на работе Parallel Random Numbers: As Easy as 1, 2, 3 (John K. Salmon, Mark A. Moraes, Ron O. Dror, and David E. Shaw, D. E. Shaw Research). Так, Torchcsprng является криптографически безопасным и параллелизуем на CPU и CUDA.