
Biblioteca de criptografia open-source abrangente que implementa protocolos SSL/TLS, criptografia simétrica/assimétrica, resumos de mensagem, certificados digitais e infraestrutura de PKI X.509.
OpenSSL 1.0.1g 7 Apr 2014
Copyright (c) 1998-2011 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson Todos os direitos reservados.
O Projeto OpenSSL é um esforço colaborativo para desenvolver um kit de ferramentas robusto, de nível comercial, completo e de código aberto que implementa os protocolos Secure Sockets Layer (SSL v2/v3) e Transport Layer Security (TLS v1), bem como uma biblioteca criptográfica de uso geral de alta resistência. O projeto é gerenciado por uma comunidade mundial de voluntários que usam a Internet para se comunicar, planejar e desenvolver o kit de ferramentas OpenSSL e sua documentação relacionada.
O OpenSSL é baseado na excelente biblioteca SSLeay desenvolvida por Eric A. Young e Tim J. Hudson. O kit de ferramentas OpenSSL é licenciado sob uma situação de dupla licença (a licença OpenSSL mais a licença SSLeay), o que basicamente significa que você é livre para obtê-lo e usá-lo para fins comerciais e não comerciais, desde que cumpra as condições de ambas as licenças.
O kit de ferramentas OpenSSL inclui:
libssl.a: Implementação de SSLv2, SSLv3, TLSv1 e o código necessário para suportar ambos SSLv2, SSLv3 e TLSv1 em um único servidor e cliente.
libcrypto.a: Recursos gerais de criptografia e X.509 v1/v3 necessários para SSL/TLS, mas que não fazem parte logicamente dele. Inclui rotinas para o seguinte:
Cifras
libdes - o pacote de criptografia DES libdes do EAY, que circulou
pela internet por alguns anos e foi então relicenciado por
ele como parte do SSLeay. Inclui 15 'modos/variações' de DES
(versões com 1, 2 e 3 chaves de ecb, cbc, cfb e ofb;
pcbc e uma forma mais geral de cfb e ofb), incluindo desx
no modo cbc, um crypt(3) rápido e rotinas para ler senhas
do teclado.
Criptografia RC4,
Criptografia RC2 - 4 modos diferentes: ecb, cbc, cfb e ofb.
Criptografia Blowfish - 4 modos diferentes: ecb, cbc, cfb e ofb.
Criptografia IDEA - 4 modos diferentes: ecb, cbc, cfb e ofb.
Resumos
Algoritmos de resumo de mensagem MD5 e MD2, implementações rápidas,
algoritmos de resumo de mensagem SHA (SHA-0) e SHA-1,
resumo de mensagem MDC2. Um hash baseado em DES popular em cartões inteligentes.
Chave Pública
Criptografia/descriptografia/geração RSA.
Não há limite para o número de bits.
Criptografia/descriptografia/geração DSA.
Não há limite para o número de bits.
Troca de chaves/geração de chaves Diffie-Hellman.
Não há limite para o número de bits.
Certificados X.509v3
Codificação/decodificação X509 de/para ASN1 binário e uma codificação
ASCII-binária baseada em PEM que suporta criptografia com uma chave
privada. Programa para gerar solicitações de certificado RSA e DSA
e para gerar certificados RSA e DSA.
Sistemas
As rotinas normais de envelope digital e codificação base64. Acesso de
nível mais alto a cifras e resumos por nome. Novas cifras podem ser
carregadas em tempo de execução. O sistema de E/S BIO, que é uma abstração
simples de E/S não bloqueante. Os métodos atualmente suportados são
descritores de arquivo, sockets, aceitação de socket, conexão de socket,
buffer de memória, buffering, cliente/servidor SSL, ponteiro de arquivo,
criptografia, resumo, teste não bloqueante e nulo.
Estruturas de dados
Um sistema de hashing que cresce dinamicamente
Uma pilha simples.
Um carregador de configuração que usa um formato semelhante aos arquivos .ini do MS.
openssl: Uma ferramenta de linha de comando que pode ser usada para: Criação de parâmetros de chave RSA, DH e DSA Criação de certificados X.509, CSRs e CRLs Cálculo de resumos de mensagem Criptografia e descriptografia com cifras Testes de cliente e servidor SSL/TLS Manipulação de e-mails S/MIME assinados ou criptografados
Várias empresas detêm várias patentes para vários algoritmos em vários locais ao redor do mundo. VOCÊ é responsável por garantir que seu uso de qualquer algoritmo seja legal, verificando se há patentes em seu país. O arquivo contém algumas das patentes que conhecemos ou que presumimos existir. Esta não é uma lista definitiva.
A RSA Security detém patentes de software sobre o algoritmo RC5. Se você pretende usar esta cifra, deve contatar a RSA Security para obter as condições de licenciamento. A página web deles é http://www.rsasecurity.com/.
RC4 é uma marca registrada da RSA Security, portanto, o uso desse rótulo talvez deva ser feito apenas com a permissão da RSA Security.
O algoritmo IDEA é patenteado pela Ascom na Áustria, França, Alemanha, Itália, Japão, Países Baixos, Espanha, Suécia, Suíça, Reino Unido e EUA. Eles devem ser contatados se esse algoritmo for utilizado; a página web deles é http://www.ascom.ch/.
A NTT e a Mitsubishi têm patentes e patentes pendentes sobre o algoritmo Camellia, mas permitem o uso gratuito sem exigir um acordo de licenciamento explícito: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
Para instalar este pacote em um derivado Unix, leia o arquivo INSTALL. Para uma plataforma Win32, leia o arquivo INSTALL.W32. Para sistemas OpenVMS, leia INSTALL.VMS.
Leia a documentação no diretório doc/. Ela é bastante crua, mas lista as funções; você provavelmente terá que olhar o código para descobrir como usá-las. Veja os programas de exemplo.
Para algumas plataformas, existem alguns problemas conhecidos que podem afetar o usuário ou o autor do aplicativo. Tentamos coletá-los em doc/PROBLEMS, com ideias atuais sobre como devem ser resolvidos em um futuro do OpenSSL.
Veja o site do OpenSSL www.openssl.org para obter detalhes sobre como obter suporte técnico comercial.
Se você tiver algum problema com o OpenSSL, siga os seguintes passos primeiro:
- Baixe o snapshot atual de ftp://ftp.openssl.org/snapshot/
para ver se o problema já foi resolvido
- Remova as versões ASM das bibliotecas
- Remova as flags de otimização do compilador
Se desejar relatar um bug, inclua as seguintes informações em qualquer relatório de bug:
- Em sistemas Unix:
Relatório de autoteste gerado por 'make report'
- Em outros sistemas:
Versão do OpenSSL: saída de 'openssl version -a'
Nome do SO, versão, plataforma de hardware
Detalhes do compilador (nome, versão)
- Detalhes do aplicativo (nome, versão)
- Descrição do problema (etapas que reproduzem o problema, se conhecidas)
- Rastreamento de pilha (se o aplicativo gerar um core dump)
Relate o bug ao projeto OpenSSL por meio do Request Tracker (http://www.openssl.org/support/rt.html) por e-mail para:
Observe que o request tracker NÃO deve ser usado para assistência geral ou consultas de suporte. Apenas porque algo não funciona como você espera não significa que seja necessariamente um bug no OpenSSL.
Observe que o e-mail para [email protected] é registrado no banco de dados publicamente legível do request tracker e é encaminhado para uma lista de discussão pública. E-mails confidenciais podem ser enviados para [email protected] (chave PGP disponível nos servidores de chaves).
O desenvolvimento é coordenado na lista de discussão openssl-dev (veja http://www.openssl.org para informações sobre como se inscrever). Se você quiser enviar um patch, envie-o para [email protected] com a string "[PATCH]" no assunto. Certifique-se de incluir uma explicação textual do que seu patch faz.
Se você não tiver certeza se um recurso será útil para a comunidade OpenSSL em geral, discuta-o primeiro na lista de discussão openssl-dev. Alguém pode já estar trabalhando na mesma coisa, ou pode haver uma boa razão para que esse recurso não seja implementado.
Os patches devem estar o mais atualizados possível, preferencialmente em relação ao Git atual ou ao último snapshot. Eles devem seguir o estilo de codificação do OpenSSL e compilar sem avisos. Alguns dos alvos de desenvolvimento da equipe principal podem ser usados para fins de teste (debug-steve64, debug-geoff, etc.). O OpenSSL compila em muitas plataformas variadas: tente garantir que você use apenas recursos portáveis.
Nota: Por razões legais, contribuições dos EUA só podem ser aceitas se uma notificação TSU e uma cópia do patch forem enviadas para [email protected] (antiga BXA), com cópia para o Coordenador de Solicitações de Criptografia ENC; reserve um tempo para ver http://www.bis.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html [sic] e http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (Seção 740.13(e) da EAR) para os detalhes. Se "o seu código-fonte de criptografia for grande demais para servir como anexo de e-mail", eles ficarão felizes em recebê-lo por fax; esperamos que você tenha um plano barato de longa distância.
Nosso formato preferido para alterações é a saída "diff -u". Você pode gerá-la assim: