![][1] Недавно мы применили плату [Ethond][2] в качестве мини-роутера и запустили на нём OpenVPN.
Но обнаружилось, что процессор часто нагружается на 100%, а скорость не поднимается выше 15-16 Мбит/с. На канале связи 100 мегабит это очень мало, поэтому мы решили ускорить процесс аппаратно.
Ребята из группы FPGA-разработчиков сделали прошивку на базе [открытого IP-core][3] для Altera CycloneV с реализацией шифра AES-128, которая умеет шифровать 8 Гбит/сек и дешифровать 700 Мбит/сек. Для сравнения, программа `openssl` на CPU (ARM Cortex A9) того же CycloneV может обрабатывать лишь около 160 Мбит/сек.
Эта статья посвящена нашему исследованию по применению аппаратного шифрования AES. Мы сжато представим описание криптографической инфраструктуры в Linux и опишем драйвер (исходный код открыт и доступен на [github][4]), который осуществляет обмен между FPGA и ядром. Реализация шифрования на FPGA не является темой статьи — мы описываем лишь интерфейс, с которым происходит взаимодействие c акселератором со стороны процессора.
[Читать дальше →][5]
[1]:
https://habrastorage.org/files/38d/8a1/7dd/38d8a17dd0564347af6bb050ffd3c7d0.jpg
[2]:
http://metrotek.spb.ru/ethond.html
[3]:
http://opencores.org/project,aes_decrypt_fpga,overview
[4]:
https://github.com/STC-Metrotek/soc-aes-accel
[5]:
https://habrahabr.ru/post/324042/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut