Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018)

Материал из 0x1.tv

(перенаправлено с «20180930G»)
Докладчик
Алексей Колотников.jpg
Алексей Колотников

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.

Презентация

Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018).pdf Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018).pdf Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018).pdf Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018).pdf Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018).pdf Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018).pdf Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018).pdf Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018).pdf

Thesis

Обзор

Важно
построение шифрующего маршрутизатора потребует использования всех алгоритмов для разных размеров шифруемого пакета.
Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018) 2018-10-03 22-12-25 image0.png

Шифрование на CPU и регистрах общего назначения

  • Шифруется 1 блок размером 64бит.
  • Время шифрования 1 блока по 64 бит — 450 ns
Наиболее гибкий подход, позволяет реализовать любой вариант зацепления(CTR, CBC и тд.), но достаточно медленный.

Скорость модели ~150 Mbit/s на ядро. (Байкал Т — 2 ядра.)

Шифрование с применением векторного сопроцессора MSA

  • Шифруется 4 блока по 64 бит.
  • Время шифрования 4 блоков по 64 бит — 720 ns
  • Скорость модели ~350Mbit/s на ядро. (Байкал Т — 2 ядра.)
Работает для данных без зацепления (ECB, CTR)

Прим. Есть некоторые сложности с использованием MSA в ядре линукс т. к. текущая реализация предполагает, что использование MSA возможно только для некоторых процессов пользовательского уровня

Решения
  1. полностью отключать поддержку MSA+FPU и использовать MSA только для шифрования
  2. включить поддержку для всех процессов и всегда сохранять контекст MSA

Шифрование на модулярном сопроцессоре

Иллюстрация ниже показывает сильную зависимость скорости шифрования от размера пакета. т. к. в сетевом трафике много пакетов небольшого размера (64байт) ,то использование только модулярного сопроцессора не даёт хороших результатов.

Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018) 2018-10-03 22-17-15 image0.png

Тестирование туннеля

  • Iperf режим: TCP/IP
  • IPsec ESP (MTU=1500)

Модельный пример для проверки концепта смешанного алгоритма шифрования с зависимостью от размера пакета.

Частота CPU 1.2GHz

ECB

  • Пакет менее 128байт шифруется на CPU+MSA
  • Пакеты больше 128байт шифруются модулярным сопроцессором:
    • поток 231 Мбит/с
    • дуплекс 159+152 Мбит/с
  • Разнесение прерываний по ядрам даёт значительный прирост:
    • поток 282 Мбит/с
    • дуплекс 235+184 Мбит /с
    • Смесь 7*66+4*518+1*1450 дуплекс 109+109 Мбит/с

CTR

  • Пакет менее 128 байт шифруется на CPU+MSA
  • Пакеты больше 128 байт шифруются модулярным сопроцессором (счётчик готовится на CPU модулярный сопроцессор шифрует в режиме ECB):
    • поток 200 Мбит/с
    • дуплекс 115+101 Мбит/с
  • Разнесение прерываний по ядрам с отключённым модулярным сопроцессором:
    • поток 177 Мбит/с
    • дуплекс 166+126 Мбит/с
    • Смесь 7*66+4*518+1*1450 дуплекс 87+87 Мбит/с

CBC + Imito

  • Пакет менее 128 байт шифруется на CPU
  • Пакеты больше 128 байт шифруются модулярным сопроцессором:
    • поток 224 Мбит/с
    • дуплекс 181+108 Мбит/с
  • Разнесение прерываний по ядрам даёт значительный прирост:
    • поток 281 Мбит/с
    • дуплекс 216+188 Мбит/с
    • Смесь 7*66+4*518+1*1450 дуплекс 92+92 Мбит/с
Оптимизация шифрования на Байкал-Т1 по ГОСТ28147-89 (Алексей Колотников, OSSDEVCONF-2018)!.jpg

Примечания и ссылки

Plays:286   Comments:0