README.md

Шифрование на уровне протокола PDCP стандарта 3GPP

Представлена реализация алгоритмов 128-EEA1, 128-EEA2 и 128-EEA3 (3GPP TS 33.401), основанных на шифрах Snow 3G, AES в режиме гамммирования (CTR) и ZUC соответственно. Кроме того, предложена реализация 128-EEA2 на основе шифра Кузнечик (ГОСТ Р 34.12─2015).

Файлы

  1. Шифрование в PDCP (используются оптимизированные реализации криптопримитивов)
    • eea1.c - функция шифрования, реализующая алгоритм 128-EEA1
    • eea2.c - функция шифрования, реализующая алгоритм 128-EEA2
    • eea2_gost.c - функция шифрования, реализующая шифрование аналогично алгоритму 128-EEA2, однако вместо AES используется Кузнечик в режиме гаммирования
    • eea3.c - функция шифрования, реализующая алгоритм 128-EEA3
  2. Реализации криптопримитивов
    • Без оптимизации
      • snow3g.c - реализация поточного шифра Snow 3G
      • aes.c - реализация шифра AES в режиме гамммирования
      • gost.c - реализация шифра Кузнечик в режиме гаммирования
      • zuc.c - реализация поточного шифра ZUC
    • Оптимизированные
      • snow3g_opt.c - оптимизированная по производительности реализация поточного шифра Snow 3G
      • aes_ni.c - реализация шифра AES в режиме гамммирования с использованием инструкций AES-NI
      • gost_avx2.c - реализация шифра Кузнечик в режиме гаммирования с использованием векторных инструкций AVX2
      • zuc_opt.c - оптимизированная по производительности реализация поточного шифра ZUC
  3. Функции тестирования
    • Корректности реализаций
      • test_snow3g.c - функции для проверки корректности разных реализаций шифра Snow 3G
      • test_aes.c - функции для проверки корректности разных реализаций шифра AES
      • test_gost.c - функции для для проверки корректности разных реализаций шифра Кузнечик
      • test_eea1.c - функция для проверки корректности реализаций алгоритма шифрования 128-EEA1
      • test_eea2.c - функция для проверки корректности реализации алгоритма шифрования 128-EEA2
      • test_eea3.c - функция для проверки корректности реализации алгоритма шифрования 128-EEA3
    • Быстродействия реализаций
      • test_snow3g_speed.c - функции для измерения скорости работы разных реализаций шифра Snow 3G
      • test_aes_speed.c - функции для измерения скорости работы разных реализаций шифра AES
      • test_gost_speed.c - функции для измерения скорости работы разных реализаций шифра Кузнечик
      • test_zuc_speed.c - функции для измерения скорости работы разных реализаций шифра ZUC
      • test_eea1_speed.c - функция для измерения скорости работы реализации алгоритма шифрования 128-EEA1
      • test_eea2_speed.c - функции для измерения скорости работы разных реализаций алгоритма шифрования 128-EEA2 (AES и Кузнечик)
      • test_eea3_speed.c - функция для измерения скорости работы реализации алгоритма шифрования 128-EEA3
  4. plot.py - вычисление статистик и генерирование диаграмм, описывающих скорость работы шифров

Работа

  1. make test - проверка на корректность разных реализаций криптопримитивов и алгоритмов шифрования для PDCP.
  2. make speed - замер средней скорости работы и сбор статистики по затраченному количеству тактов для разных реализаций криптопримитивов и алгоритмов шифрования для PDCP. Результаты сохраняются в папку docs.

make - запустить оба 1 и 2
make clean - удаление артефактов сборки

Ссылки

Взяты за основу реализации:

Snow 3G:

AES:

Кузнечик:

ZUC:

Описание

Реализация шифрования на уровне протокола PDCP стандарта 3GPP

Конвейеры
0 успешных
0 с ошибкой