README.md
Шифрование на уровне протокола PDCP стандарта 3GPP
Представлена реализация алгоритмов 128-EEA1, 128-EEA2 и 128-EEA3 (3GPP TS 33.401), основанных на шифрах Snow 3G, AES в режиме гамммирования (CTR) и ZUC соответственно. Кроме того, предложена реализация 128-EEA2 на основе шифра Кузнечик (ГОСТ Р 34.12─2015).
Файлы
- Шифрование в PDCP (используются оптимизированные реализации криптопримитивов)
- eea1.c - функция шифрования, реализующая алгоритм 128-EEA1
- eea2.c - функция шифрования, реализующая алгоритм 128-EEA2
- eea2_gost.c - функция шифрования, реализующая шифрование аналогично алгоритму 128-EEA2, однако вместо AES используется Кузнечик в режиме гаммирования
- eea3.c - функция шифрования, реализующая алгоритм 128-EEA3
- Реализации криптопримитивов
- Без оптимизации
- 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
- Без оптимизации
- Функции тестирования
- Корректности реализаций
- 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
- Корректности реализаций
- plot.py - вычисление статистик и генерирование диаграмм, описывающих скорость работы шифров
Работа
make test
- проверка на корректность разных реализаций криптопримитивов и алгоритмов шифрования для PDCP.make speed
- замер средней скорости работы и сбор статистики по затраченному количеству тактов для разных реализаций криптопримитивов и алгоритмов шифрования для PDCP. Результаты сохраняются в папкуdocs
.
make
- запустить оба 1 и 2 make clean
- удаление артефактов сборки
Ссылки
Взяты за основу реализации:
Snow 3G:
AES:
Кузнечик:
ZUC:
Описание
Реализация шифрования на уровне протокола PDCP стандарта 3GPP
Конвейеры
0 успешных
0 с ошибкой