Fernando:
Não importa qual programa, nenhum deles usa algoritmos Assimétricos para cifrar!
Os assimétricos, como o RSA ou o DSA são computacionalmente inviáveis, devido ao esforço matemático exigido. Um processador não daria conta de cifrar um download de um CD Iso, por exemplo.
TODOS ELES usam algoritmos SIMÉTRICOS, por serem bons e rápidos.
Olhando o man do openvpn vi que ele prefere usar o algoritmo simétrico blowfish em modo CBC (Cipher-Block Chaining, ou seja, como um algoritmo de bloco encadeando-os para evitar repetição).
Mas como toda boa ferramenta profissional, o OpenVPN suporta diversos algoritmos (execute openvpn --show-ciphers para ter uma listagem do seu).
Assim, a segurança dos dados em tráfego dependem do algoritmo e do tamanho da chave. O menor deles, ma minha versão de openvpn, é o DES com 64 bits que já está fraquinho. Usar ele pode significar estar fragilizado.
O Blowfish padrão usa 128 bits que está MUITO, mas MUITO BOM (o pessoal acha que é pouco já que o RSA deve ser de, pelo menos, 1024. Mas são princípios matemáticos distintos:
http://www.vivaolinux.com.br/artigo/Introducao-a-criptografia cap 6)
Bom, mas onde entra o certificado e a criptografia assimétrica?
Quando cliente e servidor negociam, há uma troca de certificados. Um certificado tem muitas informações, incluindo a chave pública, podento estar assinado por uma certificadora.
Um certificado usa diversos algoritmos:
- RSA ou algum outro assimétrico: esta chave deve ser de pelo menos 1024 bits. Menos que isto é perigoso
- HASH: Pra as assinaturas digitais. Não convém mais usar o MD5 por conta das colisões descobertas. O bam bam bam de agora é o SHA1
Ocorre que no início cliente e servidor CRIAM uma chave de sessão de 128 bits para ser usado pelo simétrico (no caso o blowfish). Podem fazer isto usando o protocolo Diffie-Hellman. Esta negociação irá precisar de algumas mensagens, TODAS CIFRADAS PELO RSA (e gastando CPU!).
Mas são só estas poucas, pois assim que uma chave de sessão é trocada, abandonam o lentérrimo RSA e usam o "rapidésimo" simétrico (blowfish no exemplo).
Então, caro amigo, o openssl é sim EXTREMAMENTE SEGURO se observadas algumas coisas:
a) que se use algoritmos bons. O padrão que vem nele está "da hora"
b) que se usem certificados bons, sem MD5 de preferência
c) que se use uma chave forte RSA, se for o caso, de, pelo menos, 1024 bits