
Snapshot del codice sorgente di OpenSSL 1.0.1g, che fornisce una libreria SSL/TLS e di crittografia generica con cifrari, digest e gestione dei certificati 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 All rights reserved.
Il Progetto OpenSSL è uno sforzo collaborativo per sviluppare un toolkit robusto, di livello commerciale, completo e open source che implementa i protocolli Secure Sockets Layer (SSL v2/v3) e Transport Layer Security (TLS v1) oltre a una libreria crittografica di uso generale a piena potenza. Il progetto è gestito da una comunità mondiale di volontari che utilizzano Internet per comunicare, pianificare e sviluppare il toolkit OpenSSL e la sua documentazione correlata.
OpenSSL si basa sull'eccellente libreria SSLeay sviluppata da Eric A. Young e Tim J. Hudson. Il toolkit OpenSSL è concesso in licenza con una doppia licenza (la licenza OpenSSL più la licenza SSLeay), il che significa sostanzialmente che sei libero di ottenerlo e utilizzarlo per scopi commerciali e non commerciali, a condizione di soddisfare i termini di entrambe le licenze.
Il toolkit OpenSSL include:
libssl.a: Implementazione di SSLv2, SSLv3, TLSv1 e del codice necessario per supportare sia SSLv2, SSLv3 che TLSv1 in un unico server e client.
libcrypto.a: Crittografia generale e materiale X.509 v1/v3 necessario per SSL/TLS ma non effettivamente parte logica di esso. Include routine per quanto segue:
Cifrari
libdes - pacchetto di crittografia DES libdes di EAY che circolava
in rete per alcuni anni, e poi da lui ri-licenziato come parte di
SSLeay. Include 15 'modalità/varianti' di DES (versioni a 1, 2 e 3
chiavi di ecb, cbc, cfb e ofb; pcbc e una forma più generale di cfb
e ofb) incluso desx in modalità cbc, un veloce crypt(3), e routine
per leggere password dalla tastiera.
Crittografia RC4,
Crittografia RC2 - 4 modalità diverse: ecb, cbc, cfb e ofb.
Crittografia Blowfish - 4 modalità diverse: ecb, cbc, cfb e ofb.
Crittografia IDEA - 4 modalità diverse: ecb, cbc, cfb e ofb.
Digest
Algoritmi di message digest MD5 e MD2, implementazioni veloci,
Algoritmi di message digest SHA (SHA-0) e SHA-1,
Message digest MDC2. Un hash basato su DES popolare nelle smart card.
Chiave pubblica
Cifratura/decifratura/generazione RSA.
Non c'è limite al numero di bit.
Cifratura/decifratura/generazione DSA.
Non c'è limite al numero di bit.
Scambio di chiavi/generazione di chiavi Diffie-Hellman.
Non c'è limite al numero di bit.
Certificati X.509v3
Codifica/decodifica X509 da/verso ASN1 binario e una codifica
binaria ASCII basata su PEM che supporta la cifratura con una chiave
privata. Programma per generare richieste di certificato RSA e DSA
e per generare certificati RSA e DSA.
Sistemi
Le normali routine di envelope digitale e codifica base64. Accesso
di livello superiore a cifrari e digest per nome. Nuovi cifrari possono
essere caricati a runtime. Il sistema IO BIO che è una semplice astrazione
IO non bloccante. I metodi attualmente supportati sono: descrittori di file,
socket, accettazione socket, connessione socket, buffer di memoria,
buffering, client/server SSL, puntatore a file, crittografia, digest,
test non bloccante e nullo.
Strutture dati
Un sistema di hashing a crescita dinamica
Una pila semplice.
Un caricatore di configurazione che utilizza un formato simile ai file .ini di MS.
openssl: Uno strumento a riga di comando che può essere usato per: Creazione di parametri chiave RSA, DH e DSA Creazione di certificati X.509, CSR e CRL Calcolo di Message Digest Crittografia e decifratura con cifrari Test client e server SSL/TLS Gestione di mail firmate o crittografate S/MIME
Varie aziende detengono vari brevetti per vari algoritmi in varie località nel mondo. TU sei responsabile di assicurarti che l'uso di qualsiasi algoritmo sia legale verificando se ci siano brevetti nel tuo paese. Il file contiene alcuni dei brevetti di cui siamo a conoscenza o di cui si sospetta l'esistenza. Questo non è un elenco definitivo.
RSA Security detiene brevetti software sull'algoritmo RC5. Se intendi utilizzare questo cifrario, devi contattare RSA Security per le condizioni di licenza. La loro pagina web è http://www.rsasecurity.com/.
RC4 è un marchio registrato di RSA Security, quindi l'uso di questa etichetta dovrebbe forse essere utilizzato solo con il permesso di RSA Security.
L'algoritmo IDEA è brevettato da Ascom in Austria, Francia, Germania, Italia, Giappone, Paesi Bassi, Spagna, Svezia, Svizzera, Regno Unito e Stati Uniti. Devi contattarli se l'algoritmo deve essere utilizzato; la loro pagina web è http://www.ascom.ch/.
NTT e Mitsubishi hanno brevetti e brevetti in attesa sull'algoritmo Camellia, ma ne consentono l'uso gratuito senza richiedere un accordo di licenza esplicito: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
Per installare questo pacchetto su un derivato Unix, leggi il file INSTALL. Per una piattaforma Win32, leggi il file INSTALL.W32. Per sistemi OpenVMS, leggi INSTALL.VMS.
Leggi la documentazione nella directory doc/. È piuttosto rozza, ma elenca le funzioni; probabilmente dovrai guardare il codice per capire come usarle. Guarda i programmi di esempio.
Per alcune piattaforme, ci sono alcuni problemi noti che potrebbero influenzare l'utente o l'autore dell'applicazione. Cerchiamo di raccoglierli in doc/PROBLEMS, con riflessioni attuali su come risolverli in una versione futura di OpenSSL.
Vedi il sito web di OpenSSL www.openssl.org per i dettagli su come ottenere supporto tecnico commerciale.
Se hai problemi con OpenSSL, segui prima questi passaggi:
- Scarica l'istantanea corrente da ftp://ftp.openssl.org/snapshot/
per vedere se il problema è già stato affrontato
- Rimuovi le versioni ASM delle librerie
- Rimuovi i flag di ottimizzazione del compilatore
Se desideri segnalare un bug, ti preghiamo di includere le seguenti informazioni in qualsiasi segnalazione di bug:
- Su sistemi Unix:
Rapporto di autotest generato da 'make report'
- Su altri sistemi:
Versione OpenSSL: output di 'openssl version -a'
Nome SO, Versione, Piattaforma Hardware
Dettagli compilatore (nome, versione)
- Dettagli applicazione (nome, versione)
- Descrizione del problema (passaggi per riprodurre il problema, se noti)
- Traccia dello stack (se l'applicazione produce un core dump)
Segnala il bug al progetto OpenSSL tramite il Request Tracker (http://www.openssl.org/support/rt.html) via email a:
Nota che il request tracker NON dovrebbe essere utilizzato per assistenza generale o richieste di supporto. Solo perché qualcosa non funziona come ti aspetti non significa che sia necessariamente un bug in OpenSSL.
Nota che la posta a [email protected] viene registrata nel database pubblicamente leggibile del request tracker e inoltrata a una mailing list pubblica. La posta riservata può essere inviata a [email protected] (chiave PGP disponibile dai server di chiavi).
Lo sviluppo è coordinato sulla mailing list openssl-dev (vedi http://www.openssl.org per informazioni su come iscriversi). Se desideri inviare una patch, inviala a [email protected] con la stringa "[PATCH]" nell'oggetto. Assicurati di includere una spiegazione testuale di cosa fa la tua patch.
Se non sei sicuro se una funzionalità sarà utile per la comunità generale di OpenSSL, discutine prima sulla mailing list openssl-dev. Qualcuno potrebbe già star lavorando alla stessa cosa o potrebbe esserci una buona ragione per cui quella funzionalità non è implementata.
Le patch dovrebbero essere il più aggiornate possibile, preferibilmente relative al Git corrente o all'ultima istantanea. Dovrebbero seguire lo stile di codifica di OpenSSL e compilare senza warning. Alcuni target di sviluppo del team principale possono essere utilizzati per scopi di test, (debug-steve64, debug-geoff ecc.). OpenSSL compila su molte piattaforme diverse: cerca di assicurarti di utilizzare solo funzionalità portabili.
Nota: Per motivi legali, i contributi dagli Stati Uniti possono essere accettati solo se una notifica TSU e una copia della patch vengono inviate a [email protected] (ex BXA) con una copia al Coordinatore delle richieste di crittografia ENC; prenditi un po' di tempo per guardare http://www.bis.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html [sic] e http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (Sezione EAR 740.13(e)) per i dettagli. Se "il tuo codice sorgente di crittografia è troppo grande per essere inviato come allegato email", sono lieti di riceverlo via fax; spero tu abbia un piano tariffario economico per lunghe distanze.
Il nostro formato preferito per le modifiche è l'output "diff -u". Puoi generarlo così: