PDA

Bekijk de volledige versie : Hardware Encryption on WL-500gP / WL-500gD / WL-700gE



staticroute
28-07-2012, 15:33
Инфа с OpenWRT wiki (http://wiki.openwrt.org/doc/hardware/cryptographic.hardware.accelerators)


Note: If you want to learn about the current situation, you should search the Internet or maybe ask in the forum. This is outdated. Especially if you want to know, how fast a copy from a mounted filesystem (say ext3 over USB) over the scp is, you should specifically search for such benchmarks.

Some models of the BCM47xx/53xx family support hardware accelerated encryption for IPSec (AES, DES, 3DES), simple hash calculations (MD5, SHA1) and TLS/SSL+HMAC processing. Not all devices have a hw crypto supporting chip. At least Asus WL500GD/X, Netgear WGT634U and Asus WL700gE do have hw crypto. However, testing of a WGT634U indicates that a pin under the BCM5365 was not pulled low to enable strong bulk cryptography, limiting the functionality to single DES.

How did you find that out?
Do you get an interrupt when sending a crypto job to the chip and limiting the request to DES only?)

The specification states the hardware is able to support 75Mbps (9,4MB/s) of encrypted throughput. Without hardware acceleration using the blowfish encryption throughput is only ~0,4MB/s.

Benchmark results that show the difference between software and hardware accelerated encryption/decryption can be found here. Due to the overhead of hardware/DMA transfers and buffer copies between kernel/user space it gives only a good return for packet sizes greater than 256 bytes. This size can be reduced for IPSec, because network hardware uses DMA and there is no need to copy the (encrypted) data between kernel and user space.

The hardware specification needed for programming the crypto API of the bcm5365P (Broadcom 5365P) can be found here.

The crypto chip is accessible through the SSB bus (Sonics Silicon Backplane). A Linux driver for SSB is available in OpenWRT's kernel >= 2.6.23 (Kamikaze)

An example about how to communicate with the crypto chip can be found here (file b5365ips.tar.bz2).

An OCF Linux driver that works with the ASUS WL500gP can be found in Trunk (SVN) or here and is called ubsec_ssb. Only OCF-enabled applications can be accelerated. That means, if you want e.g. an accelerated OpenSSH you have to manually enable cryptodev in OpenSSL. The driver is still considered experimental.

Links to mailing-list posts with references to more recent and working version of Linux driver for Broadcom crypto chips here and here.

Sun Crypto Accelerator 500 and 1000 (X6762A) cards are based on BCM5821. Might be worth checking Solaris references as well. Here is OpenSolaris driver for Broadcom crypto chips.

Asus WL-700gE sources come with patched FreeSwan to utilize ubsec.

Closed-source binary included in Asus Wl-700gE sources do support AES based on headers.

There's a Linux port of the OpenBSD Cryptographic Framework (OCF) but the ubsec driver (Broadcom 58xx PCI cards) is not ported yet. If you compile OCF with the /dev/crypto device driver, userspace applications and libraries such as OpenSSL can be accelerated. There are patches for Openswan as well.

Discussion about hardware accelerated crypto.

Various versions of old BCM5820 driver sources.

BCM5801/BCM5805/BCM5820 Security Processor Software Reference Library http://www.broadcom.com/products/access_request.php?category_id=0&id=7&filename=5801-5805-5820-SRL101-R.pdf

Cisco PIX VAC+ Encryption module is 64-bit PCI card based on Broadcom BCM5823. Another similar card is Checkpoint VPN-1 Accelerator Card II, III and IV from Silicom.

SoC / CPU Accelerated Methods Datasheet
BCM94704AGR WEP 128, AES OCB AES CCM 94704AGR-PB00-R.pdf
BCM?4704P WEP 128, AES OCB, AES CCM, VPN 94704AGR-PB00-R.pdf
BCM5365 AES (up to 256-bit CTR and CBC modes), DES, 3DES (CBC), HMAC-SHA1, HMAC-MD5, SHA1 and MD5. IPSec encryption and single pass authentication. 5365_5365P-PB01-R.pdf
BCM5365P AES (up to 256-bit CTR and CBC modes), DES, 3DES (CBC), HMAC-SHA1, HMAC-MD5, SHA1 and MD5. IPSec encryption and single pass authentication. 5365_5365P-PB01-R.pdf

Сам драйвер для WL-500gP: http://danm.de/files/src/bcm5365p/

Надеюсь кто-то заинтересуется и портирует этот драйвер ядра на текущую прошивку, для OpenVPN/или других приложений нужно будет также пересобрать с поддержкой hardware-encryption (cryptodev) и запатчить OpenSSL с патчем от автора.

Подбор ссылок по теме:
https://forum.openwrt.org/viewtopic.php?id=18805
https://dev.openwrt.org/browser/trunk/package/ubsec_ssb/Makefile?rev=19372
https://forum.openwrt.org/viewtopic.php?pid=161355#p161355

ryzhov_al
29-07-2012, 15:05
Надеюсь кто-то заинтересуется и портирует этот драйвер ядра на текущую прошивку, для OpenVPN/или других приложений нужно будет также пересобрать с поддержкой hardware-encryption (cryptodev) и запатчить OpenSSL с патчем от автора.Идея замечтательная, но в новых линейках роутеров N series (http://ru.asus.com/Networks/Wireless_Routers/N_series) и Dual-Band N series (http://ru.asus.com/Networks/Wireless_Routers/DualBand_N_Series) случайно не попадаются ни Secured Switch-процессоры наподобие BCM5365, ни SoC-процессоры с крипто-функциями как в BCM94704, или о наличии таких функций пока не догадываются:) Значит, речь может идти только об акселерации крипто-функций в стареньких роутерах wl-x00g со старым Broadcom SDK. Не за горами переход на новый SDK, в котором поддержки этих роутеров уже не будет.

Сравнил скорость работы openssl из прошивки RT-N66u @BCM4706 (надеясь на наличие h/w акселерации шифрования) с аналогом из Entware. Никаких различий в скорости работы не обнаружил. На мой взгляд, если бы BCM4706 имел функции криптоакселерации, то с большой долей вероятности они были бы задействованы. К разговору можно будет вернуться только в случае, если выяснится, что в чипах новых роутеров криптоакселерация всё же есть.


Подбор ссылок по теме:
https://forum.openwrt.org/viewtopic.php?id=18805
https://dev.openwrt.org/browser/trunk/package/ubsec_ssb/Makefile?rev=19372
OpenWRT комьюнити год назад забросило (https://dev.openwrt.org/changeset/27753) отдельно стоящий ubsec_ssb, заменив его на патчи из ocf-linux.

Omega
29-07-2012, 19:11
Идея замечтательная, но в новых линейках роутеров N series (http://ru.asus.com/Networks/Wireless_Routers/N_series) и Dual-Band N series (http://ru.asus.com/Networks/Wireless_Routers/DualBand_N_Series) случайно не попадаются ни Secured Switch-процессоры
наподобие BCM5365, ни SoC-процессоры с крипто-функциями как в BCM94704, или о наличии таких функций пока не догадываются :)
Значит, речь может идти только об акселерации крипто-функций в стареньких роутерах wl-x00g со старым Broadcom SDK.
Не за горами переход на новый SDK, в котором поддержки этих роутеров уже не будет.
Sentry5™ Secured Switch Processor - BCM5365/5365P (http://www.broadcom.com/products/Wireless-LAN/802.11-Wireless-LAN-Solutions/BCM5365-5365P) & AirForce Wireless Network Processor - BCM94704 (http://www.broadcom.com/products/Wireless-LAN/802.11-Wireless-LAN-Solutions/BCM94704) :rolleyes:

Есть ещё и такой: Single-Core Control Plane Processor - BCM5836P (http://www.broadcom.com/products/Processors/Home-and-Small-Business/BCM5836P) ;) Programmer’s (http://voodoowarez.com/bcm5365p.pdf) Guide (http://read.pudn.com/downloads127/doc/fileformat/537112/mips/bcm5836/5836-5836P-PG01-RDS.pdf)/Data Sheet (http://read.pudn.com/downloads127/doc/fileformat/537112/mips/bcm5836/5836_5836P-DS05.pdf)/PCI (http://read.pudn.com/downloads127/doc/fileformat/537112/mips/bcm5836/BCM5836CPCI.pdf) :cool:


For advanced security, the BCM5836P integrates an on-chip IPSec acceleration engine that can deliver up to 75 Mbps of single-pass AES/3DES encryption throughput
and supports a broad range of industry-standard security features such as symmetric-key encryption and authentication algorithms including the latest 256-bit Advanced
Encryption Standard (AES), Digital Encryption Standard (DES), 3DES, SHA-1, MD5, HMAC-SHA1, and HMAC-MD5. These features make this processor an obvious choice
for SOHO/SMB networking customers who need both high bandwidth performance and advanced security features such as encryption and user authentication.




в DIR-330 USB-1.1Тогда действительно вопрос отпадает.
BCM5836 = BCM4704 with additionl components - USB 2.0 coreТам используется hardware crypto acceleration (http://oldwiki.openwrt.org/HardwareAcceleratedCrypto.html) for IPSec, но нужна поддержка этого дела в прошивке.

D-Link DIR-330

CPU : Broadcom BCM5836PKPBG (264MHz)
Flash : Spansion S29GL064A (8Mb)
RAM : 2x16Mbytes
Switch : BCM5325e
Wi-Fi : BCM4318
Serial : yes
USB : yes
JTAG : yes

http://wl500g.info/showthread.php?18954-%CF%F0%EE%F8%E8%E2%E0%E5%EC-D-Link-DIR-330


BCM5801/BCM5805/BCM5820 Security Processor Software Reference Library http://www.broadcom.com/products/access_request.php?category_id=0&id=7&filename=5801-5805-5820-SRL101-R.pdf
BCM5801/BCM5805/BCM5820 Software Reference Library: http://www.broadcom.com/collateral/srl/5801-5805-5820-SRL101-R.pdf

ryzhov_al
30-07-2012, 12:06
Sentry5™ Secured Switch Processor - BCM5365/5365P (http://www.broadcom.com/products/Wireless-LAN/802.11-Wireless-LAN-Solutions/BCM5365-5365P) & AirForce Wireless Network Processor - BCM94704 (http://www.broadcom.com/products/Wireless-LAN/802.11-Wireless-LAN-Solutions/BCM94704) :rolleyes:

Есть ещё и такой: Single-Core Control Plane Processor - BCM5836P (http://www.broadcom.com/products/Processors/Home-and-Small-Business/BCM5836P) ;) Programmer’s Guide (http://read.pudn.com/downloads127/doc/fileformat/537112/mips/bcm5836/5836-5836P-PG01-RDS.pdf)/Data Sheet (http://read.pudn.com/downloads127/doc/fileformat/537112/mips/bcm5836/5836_5836P-DS05.pdf)/PCI (http://read.pudn.com/downloads127/doc/fileformat/537112/mips/bcm5836/BCM5836CPCI.pdf) :cool: Ок, давай посмотрим (http://wiki.openwrt.org/toh/start#asus) где эти чипы встречаются:


SoC-камень BCM94704: 8 роутеров, включая два Азуса WL-500gpv1, WL-500W,
криптосвитч BCM5365: 2 роутера, включая один Азус WL-500g Deluxe.


Всё это - девайсы старой гвардии. Боюсь, после того как будет закончен переезд на новый Broadcom SDK, эти роутеры останутся за бортом. Зачем корячиться-то?
Мне кажется, что за поддержку акселерации крипто-функций возьмётся тот, кто тепло относится к этим некогда культовым железакам. Как ув.тов.Vampik, не позволяющий уйти в небытие DIR-320.

staticroute
06-08-2012, 20:05
Ок, давай посмотрим (http://wiki.openwrt.org/toh/start#asus) где эти чипы встречаются:


SoC-камень BCM94704: 8 роутеров, включая два Азуса WL-500gpv1, WL-500W,
криптосвитч BCM5365: 2 роутера, включая один Азус WL-500g Deluxe.


Всё это - девайсы старой гвардии. Боюсь, после того как будет закончен переезд на новый Broadcom SDK, эти роутеры останутся за бортом. Зачем корячиться-то?
Мне кажется, что за поддержку акселерации крипто-функций возьмётся тот, кто тепло относится к этим некогда культовым железакам. Как ув.тов.Vampik, не позволяющий уйти в небытие DIR-320.

Если так рассуждать, можно вообще ничего не делать. В принципе сам драйвер уже есть, также есть пакеты вроде бы в OpenWRT с поддержкой этих штук, надо только сделать соответствующие пакеты и включить поддержку драйвера опционально в прошивку.

ryzhov_al
06-08-2012, 20:16
Если так рассуждать, можно вообще ничего не делать.
...надо только сделать соответствующие пакеты и включить поддержку драйвера опционально в прошивку.Я не имел в виду то, что это нафиг никому не нужно. Я говорил о том, что вряд ли стоит тратить усилия на те роутеры, которые в новом Broadcom SDK не будут поддерживаться.

Переход на новый SDK во всю идёт, но на новых роутерах ничего не слышно про акселерацию крипто-функций. Поэтому за поддержку этой фичи скорее возьмётся кто-то заинтересованный, а не команда энтузиастов.

ryzhov_al
05-10-2012, 22:31
В мэйл-листе OpenWrt-Devel пробегал (http://patchwork.openwrt.org/patch/2656/) интересный патч, ускоряющий с помощью ассемблерной вставки работу OpenSSL:

On a lightly loaded 24Kc, as measured by 'openssl speed sha1', shows between 27% and 120% speedup depending on block size. SHA1 is notably used in Transmission for piece verification.
Предложил (http://forum.ixbt.com/topic.cgi?id=14:57589-80#2759) патч Андрею, результаты впечатляют:

скорость речекинга 9.15 ГБ торрента занимает 15 минут. Но это с NTFS раздела через ufsd 8.6.
Кто заинтересован, можете в Entware замерить скорость работы OpenSSL встроенным бенчмарком (http://wiki.openwrt.org/inbox/benchmark.openssl) и/или оценить скорость работы завязанного на OpenSSL софта: торрентокачалки, VPN'ы и пр. После очередного ежемесячного обновления (в течение этой недели) посмотрим эффект от этого патча.

ryzhov_al
10-10-2012, 05:56
В продолжение разговора. Проверил по встроенным бенчмаркам OpenSSL прирост скорости. Очень даже:



Тест
MD5
SHA-1
SHA-256
SHA-512
DES
3DES
AES-128
AES-192
AES-256
RSA Sign
RSA Verify
DSA Sign
DSA Verify


Прирост скорости
2%
89%
43%
1%
0%
0%
0%
0%
0%
81%
90%
90%
90%



Все тесты повторял трижды, затем арифметически усреднял значения. Напомню, именно SHA1 используется, например, торрент-клиентами при сверке хэшей торрент-контента.
Обновлённая OpenSSL доступна в репозитории Entware.

staticroute
10-10-2012, 21:10
В продолжение разговора. Проверил по встроенным бенчмаркам OpenSSL прирост скорости. Очень даже:



Тест
MD5
SHA-1
SHA-256
SHA-512
DES
3DES
AES-128
AES-192
AES-256
RSA Sign
RSA Verify
DSA Sign
DSA Verify


Прирост скорости
2%
89%
43%
1%
0%
0%
0%
0%
0%
81%
90%
90%
90%



Все тесты повторял трижды, затем арифметически усреднял значения. Напомню, именно SHA1 используется, например, торрент-клиентами при сверке хэшей торрент-контента.
Обновлённая OpenSSL доступна в репозитории Entware.

Можете пересобрать OpenVPN с поддержкой нового OpenSSL? (или уже собран?)

ryzhov_al
11-10-2012, 05:46
Можете пересобрать OpenVPN с поддержкой нового OpenSSL? (или уже собран?)Пересобирать весь софт незачем (хотя в Entware он пересобран из-за обновления тулчейна). На примере wget. Он зависит от OpenSSL:

$ ldd /opt/bin/wget | grep ssl
libssl.so.1.0.0 => /opt/lib/libssl.so.1.0.0 (0x2aac0000)
$ opkg search *libssl.so*
libopenssl - 1.0.1c-1
т.е. при запуске подгружает пересобранную библиотеку OpenSSL и успешно её использует. Как и asterisk, lighttpd, transmission и остальные...

$ find ./feeds/ -name Makefile | xargs grep DEPENDS | grep libopenssl | wc -l
123
... 123 пакета.

ryzhov_al
07-02-2013, 13:53
Ассемблерная оптимизация openssl теперь включена и в прошивки Padavan'а (RT-N56U/65U), и в AsusWRT-Merlin, и, с вышедшего на днях релиза Shibby's TomatoUSB.