
Kit de ferramentas de código aberto que implementa os protocolos SSL/TLS e uma biblioteca de criptografia de força total com funções de criptografia, descriptografia, gerenciamento de certificados e hash.
OpenSSL 1.0.1g 7 abr 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 de criptografia de propósito geral com força total. 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 licença dupla (a licença OpenSSL mais a licença SSLeay), o que basicamente significa que você está 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: Material geral de criptografia e X.509 v1/v3 necessário para SSL/TLS, mas que não faz parte lógica dele. Inclui rotinas para o seguinte:
Cifras
libdes - pacote de criptografia DES libdes de EAY que circulou pela
rede por alguns anos e foi então relicenciado por ele como
parte do SSLeay. Inclui 15 'modos/variações' do DES
(versões de 1, 2 e 3 chaves de ecb, cbc, cfb e ofb;
pcbc e uma forma mais geral de cfb e ofb), incluindo desx
em 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 que é popular em smart cards.
Chave Pública
Criptografia/descriptografia/geração RSA.
Não há limite no número de bits.
Criptografia/descriptografia/geração DSA.
Não há limite no número de bits.
Troca de chaves/geração de chaves Diffie-Hellman.
Não há limite no 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, soquetes, aceitação de soquete, conexão de soquete, buffer de
memória, bufferização, 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 correio assinado ou criptografado S/MIME
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 quaisquer algoritmos seja legal, verificando se há patentes em seu país. O arquivo contém algumas das patentes que conhecemos ou que se suspeita existirem. Esta não é uma lista definitiva.
A RSA Security detém patentes de software sobre o algoritmo RC5. Se você pretende usar essa cifra, deve entrar em contato com a RSA Security para obter as condições de licenciamento. A página deles é http://www.rsasecurity.com/.
RC4 é uma marca registrada da RSA Security, portanto, o uso desse rótulo talvez deva ser feito somente 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 usado; a página deles é http://www.ascom.ch/.
NTT e Mitsubishi têm patentes e patentes pendentes sobre o algoritmo Camellia, mas permitem o uso sem custo, 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 preliminar, 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 reunir esses problemas em doc/PROBLEMS, com reflexões atuais sobre como eles 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 você deseja 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)
- Stack Traceback (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. O fato de algo não funcionar da maneira que 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 obter 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 geral do OpenSSL, discuta-o primeiro na lista de discussão openssl-dev. Alguém pode já estar trabalhando na mesma coisa, ou pode haver um bom motivo para esse recurso não estar implementado.
Os patches devem ser 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 uma 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 EAR 740.13(e)) para obter 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; espero que você tenha um plano barato de longa distância.
Nosso formato preferido para alterações é a saída de "diff -u". Você pode gerá-la assim: