-> Introdução - aceleração de hardware para OpenSSL em sistemas embarcados.
1) Sistema embarcados.
2) Aceleradores de hardware
3) SSL - OpenSSL
4) Linux
5) Acelerando
6) IPSec, DPI e segurança sistemica
7) Conclusões
8) Referências
A) Referência de chamadas de código para cifrador AES.
Aceleração em Hardware para OpenSSL em Sistemas Embarcados: Introdução e conceitos básicos
1. Implementação de OpenSSL para
Sistemas Embarcados com Linux:
Aceleradores de Hardware
Bruno Castelucci
RA 152503
IA012A:2014 1S
Prof.: Marco Aurélio Amaral Henriques
3. Sistemas Embarcados
• Sistema microprocessado
• Com função específica
• Inserido em um sistema maior
• Motivos:
– Menor custo / energia / tamanho
– Maior segurança / performance
• Substituidos por PCs?
4. Aceleradores de Hardware de Segurança
Complexidade PK
1024-2048-bit (NIST)
Uso de Criptografia
Tempo
5. Aceleradores de Hardware de Segurança
• Motivações
– Velocidade (vs SW)
– Custo
– Energia
– Segurança (*)
• Tipos
– Flexíveis
– FPGA
– Programáveis.
– Maior custo.
– Específicos
– Funções definidas.
– Menor consumo.
Complexidade PK
1024-2048-bit (NIST)
Uso de Criptografia
Tempo
13. OpenSSL
• SSL/TLS implementada como uma lib no
OpenSSL.
– Lib mais popular em sistemas Linux.
– Subcomponentes da OpenSSL:
• Lib de protocolos SSL
• Lib Crypto
• Gerenciamento de certificados
• Download código fonte: www.openssl.org
14. OpenSSL -Comandos
Obter uma lista de comandos no OpenSSL:
$ openssl help
• ca - Gerencia certificados.
• dgst - Calcula hashes.
• enc - (Des)criptografa usando algoritmos de chave simétrica.
• genrsa - Gera par de chaves assimétricas RSA.
• passwd - Calcula Hash de senha.
• rand - Gera números pseudo aleatórios.
• rsautl - (Des)criptografa, assina e verifica dados no formato RSA.
• speed – Mede a performance local.
• s_client – Implementa um cliente TLS/SSL simples.
• s_server – Implementa um servidor TLS/SSL simples.
19. OpenSSL no Linux
Aplicação
OpenSSL
Cryptodev
CryptoAPI
Driver SEC
/dev/crypto
Hardware
Inicializa o hardware, implementa a
CryptoAPI utilizando o hardware,
Define Device Tree
Registra /dev/crypto, implementa ioctl,
chama CryptoAPI.
Registra função na CrytoAPI, faz ioctl no
/dev/crypto
Chama funções do OpenSSL
ablkcipher_encrypt(...)
SET_REG(AES_SC, 0x1234)
ioctl(/dev/crypto, AES_blk_encrypt)
opensslenc -aes-256-cbc
20. Linux Drivers
• Específicos:
– Device Tree: Adiciona o acelerador (dts).
– SEC Driver: Conecta o driver específico
(registradores) com a device tree.
• Implementa a Cryto API: ablkcipher_encrypt (…)
• Providos:
– Cryptodev: registra dispositivo /dev/crypto.
• Implementa o ioctl(…) do dispositivo.
• Chama ablkcipher_encrypt (…)
– OpenSSL: registra a função ablkcipher_encrypt.
• Chama ioctl no /dev/crypto.
21. IP Sec
• IPSec está na camada de rede.
– SSL entre aplicação e transporte.
• IPSec mais pode facilmente ser gerenciado pelo hardware.
• Deep Packet Inspection.
*Pergunta Inicio
22. Inspeção de Pacotes
4x PCIe
10x GB Eth
Analisa e
Classifica
Gerenciador
de Fila
Acelerador
Segurança
DMA
Memória RAM
Core 0 Core 1 Core 2 Core n
Barramento
Pacotes
IPSec
AES, DES (~40Gbps)
SHA, MD5 (~40Gbps)
RSA, ECC (~25K RSA/s)
24. Conclusões
• Tráfego seguro na internet aumentando.
– Custo desta implementação em software é
inviável.
• Sistemas embarcados provêm menor custo,
maior eficiência e segurança.
• Aceleração em hardware paralelizada.
• IPSec pode ser inteiramente gerenciado por
Hardware.
– Mesmo nível de segurança.
• Importância da segurança total da solução.
25. Referências
• Security in Embedded Systems: Design Challenges -
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.83.586&rep=rep1&type=pdf
• Hardware Acceleration of OpenSSL Cryptographic Functions for High-Performance Internet Security -
http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=5416065
• The Linux Kernel Cryptographic API - http://www.linuxjournal.com/article/6451
• Freescale kernel source tree - http://git.freescale.com/git/cgit.cgi/ppc/sdk/linux.git/tree/
• Cryptodev Webpage - http://cryptodev-linux.org/index.html
• Cryptodev Source Tree - https://github.com/cryptodev-linux/cryptodev-linux
• Transport Layer Security (TLS) Parameters -http://www.iana.org/assignments/tls-parameters/tls-
parameters.xhtml
• Freescale SDK Documentation -
http://www.freescale.com/infocenter/index.jsp?topic=%2FQORIQSDK%2F5009694.html
• OpenSSL documentation - https://www.openssl.org/docs/apps/openssl.html#COMMAND_SUMMARY
• An Introduction to OpenSSL -
http://users.dcc.uchile.cl/~pcamacho/tutorial/crypto/openssl/openssl_intro.html
• OpenSSL Command Line How-to - http://www.madboa.com/geek/openssl/
• Crypto Acceleration on OpenBSD - http://www.paeps.cx/pubs/crypto_acceleration/slides.pdf
• P2020 - Security Reference Manual – www.freescale.com
• Wikipedia:
– http://en.wikipedia.org/wiki/Secure_Shell
– http://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2
– http://en.wikipedia.org/wiki/Cipher_suite