OpenSSL: Unterschied zwischen den Versionen

Aus robopagex.com
Zur Navigation springen Zur Suche springen
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 96: Zeile 96:
 
== '''Asymmetric encryption with openssl''' ==
 
== '''Asymmetric encryption with openssl''' ==
 
===== Generate a private key =====
 
===== Generate a private key =====
 +
[https://www.digicert.com/kb/ssl-support/openssl-quick-reference-guide.htm OpenSSL Quick Reference Guide]
 +
[https://www.ibm.com/docs/en/license-metric-tool?topic=communication-step-1-creating-private-keys-certificates Creating private keys and certificates IBM]
 +
https://gist.github.com/briansmith/2ee42439923d8e65a266994d0f70180b
 +
 +
When generating a key, you have to decide three things: the key algorithm, the key size, and whether to use a passphrase.
 +
1. Key Algorithm
 +
2. Key Size
 +
3. Passphrase
 +
 +
'''[https://www.ssl.com/de/leiten/pem-der-crt-und-cer-x-509-Kodierungen-und-Konvertierungen/  PEM, DER, CRT und CER: X.509-Codierungen und -Konvertierungen]'''
 +
'''PEM (ursprünglich “PRivalität Everbessert Mail ”) '''
 +
'''DER (Distinguished Encoding Rules) '''
 +
 +
[https://stackoverflow.com/questions/9375044/can-we-have-multiple-public-keys-with-a-single-private-key-for-rsa Can we have multiple public keys with a single private key for RSA?]
 +
'''In practice and with respect to security, no, mathematically, yes'''
 +
 +
[https://stackoverflow.com/questions/5244129/use-rsa-private-key-to-generate-public-key Use RSA private key to generate public key?]
 +
 +
'''Private-Key with RSA'''
 
  '''$ openssl genrsa -out key1.pem 512'''
 
  '''$ openssl genrsa -out key1.pem 512'''
 
  '''$ openssl genrsa -out key1.pem 4096'''
 
  '''$ openssl genrsa -out key1.pem 4096'''
  '''$ openssl genrsa -des3 -out key1_private_key.pem 2048'''
+
  '''$ openssl genrsa -des3 -out key1.pem 2048''' (With password)
 +
 
 +
'''Private-Key with ECDSA'''
 +
For a list of possible curve names, run:
 +
'''$ openssl ecparam -list_curves'''
 +
'''$ openssl ecparam -name secp521r1 -genkey -noout -out my.key.pem'''
 +
'''$ openssl ecparam -genkey -name secp521r1 | openssl ec -aes256 -out my.key.pem''' (With password)
 +
 
 +
'''$ openssl ecparam -name prime256v1 -genkey -noout -out key.pem'''
 
   
 
   
 
  [https://serverfault.com/questions/9708/what-is-a-pem-file-and-how-does-it-differ-from-other- openssl-generated-key-file What is a Pem file and how does it differ from other OpenSSL Generated Key File Formats?]
 
  [https://serverfault.com/questions/9708/what-is-a-pem-file-and-how-does-it-differ-from-other- openssl-generated-key-file What is a Pem file and how does it differ from other OpenSSL Generated Key File Formats?]
Zeile 126: Zeile 153:
 
  Was ist Datenintegrität?
 
  Was ist Datenintegrität?
 
   Der Begriff Datenintegrität bezieht sich auf die Korrektheit, Vollständigkeit und Konsistenz von Daten.
 
   Der Begriff Datenintegrität bezieht sich auf die Korrektheit, Vollständigkeit und Konsistenz von Daten.
  - Nicht verändert worden
+
  - '''Nicht verändert worden'''
  - Identifizierung des Senders
+
  - '''Identifizierung des Senders'''
 
   Identifizierung oder Identifikation (von lateinisch identitas „Wesenheit" und facere „machen") steht für: . Identifikation (Psychologie), das Einfühlen in eine andere Person oder Figur der Nachweis oder die  Verifizierung einer behaupteten Eigenschaft einer Entität, die Authentifizierung; bei Personen die amtliche Identitätsfeststellung
 
   Identifizierung oder Identifikation (von lateinisch identitas „Wesenheit" und facere „machen") steht für: . Identifikation (Psychologie), das Einfühlen in eine andere Person oder Figur der Nachweis oder die  Verifizierung einer behaupteten Eigenschaft einer Entität, die Authentifizierung; bei Personen die amtliche Identitätsfeststellung
 
   [https://de.wikipedia.org/wiki/Identifizierung Identifizierung | Wikipedia]
 
   [https://de.wikipedia.org/wiki/Identifizierung Identifizierung | Wikipedia]
 +
- '''repudiation attack'''
 +
 +
===== Hashing =====
 +
'''FUNCTION(DATEN)=HASHWERT'''
 +
 +
===== CHECKSUM =====
 +
'''echo -n "TEXT" | cksum'''
 +
'''md5sum SecretFile > checksum.txt'''
 +
'''md5sum -c checksum.txt'''
 +
 +
===== Digitale Signatur =====
 +
'''openssl rsautl'''
 +
'''openssl dgst'''
 +
 +
'''openssl genrsa -des3 -out user2_private_key.pem 2048'''
 +
'''openssl rsa -in user2_private_key.pem -outform PEM -pubout -out user2_public_key.pem'''
 +
'''openssl rand -hex -out user1_random_key.bin 64'''
 +
'''openssl enc -aes-256-cbc -salt -in SecretFile -out SecretFile.enc -pass file:user1_random_key.bin'''
 +
'''openssl rsautl -encrypt -inkey user'''

Aktuelle Version vom 11. März 2022, 11:12 Uhr

OpenSSL Version 1.1.1

Encryption for
- data
- communication
- traffic
- secret
- signing
plain --> cipher
Terminology
Plain text (human readable)
Cipher text (not human readable)
Encryption (process)
Symmetric encryption (type of encryption)
Asymmetric encryption (type of encryption)
Symmetric key (symmetric encryption)
AES - Advanced Encryption Standard (algorithm for encryption)

Types of encryption

Symmetric encryption ==> Same key for encrypt/decrypt
 Algorithms examples:
 - AES
 - DES
 - Triple DES
 - Serpent
 - Twofish
Asymmetric encryption ==> Different key for encrypt/decrypt
 Algorithms examples:
 - RSA
 - DSA
 - PGP
 - SHA-1
 - SHA-2
 - SHA-24
 - SHA-256
 - SHA-512
 - Diffie-Hellman
 - ElGamal
 - ECC

Key length & keyspace

Binary System -> 0|1
1 Bit -> 0|1 # on|off # true|false # 
128-bit key
Key length =
Key space = 

Classification of symmetric algorithms

Stream ciphers -> RC4, A5/1, E0
Block ciphers -> AES, DES, SHA, IDEA, SERPENT, TWOFISH
$ whereis openssl
$ which openssl
$ openssl rsautl
$ openssl version
$ openssl help
$ openssl help list
$ openssl list -help
 Valid options are:
 -help                   Display this summary
 -1                      List in one column
 -commands               List of standard commands
 -digest-commands        List of message digest commands
 -digest-algorithms      List of message digest algorithms
 -cipher-commands        List of cipher commands
 -cipher-algorithms      List of cipher algorithms
 -public-key-algorithms  List of public key algorithms
 -public-key-methods     List of public key methods
 -disabled               List of disabled features
 -missing-help           List missing detailed help strings
 -options val            List options for specified command

Terminology of asymmetric encryption

Asymmetric key/keys (1 for encryption, 1 for decryption)
Key pair, private and public key
Public key, part of asymmetric key, for encryption
Private key for decryption

Symmetric encryption/decryption with gpg

$ gpg --symmetric --cipher-algo AES256 --output file.gpg file.txt
$ gpg --decrypt --output file.txt file.gpg

Symmetric encryption with openssl

 $ openssl enc -aes-256-cbc -in sslmessage -out sslmessage.enc
 $ openssl enc -aes-256-cbc -salt -pbkdf2 -in msg.txt -out msg.txt.enc

Symmetric decryption with openssl

$ openssl enc -aes-256-cbc -d -in sslmessage -pass pass:test
$ openssl aes-256-cbc -d -salt -pbkdf2 -in msg.txt.enc -out msg.read
$ openssl aes-256-cbc -d -salt -pbkdf2 -in msg.txt.enc -out msg.read -pass pass:test

Asymmetric encryption with openssl

Generate a private key
OpenSSL Quick Reference Guide
Creating private keys and certificates IBM
https://gist.github.com/briansmith/2ee42439923d8e65a266994d0f70180b
When generating a key, you have to decide three things: the key algorithm, the key size, and whether to use a passphrase.
1. Key Algorithm
2. Key Size
3. Passphrase
PEM, DER, CRT und CER: X.509-Codierungen und -Konvertierungen
PEM (ursprünglich “PRivalität Everbessert Mail ”) 
DER (Distinguished Encoding Rules) 
Can we have multiple public keys with a single private key for RSA?
In practice and with respect to security, no, mathematically, yes
Use RSA private key to generate public key?
Private-Key with RSA
$ openssl genrsa -out key1.pem 512
$ openssl genrsa -out key1.pem 4096
$ openssl genrsa -des3 -out key1.pem 2048 (With password)
Private-Key with ECDSA
For a list of possible curve names, run:
$ openssl ecparam -list_curves
$ openssl ecparam -name secp521r1 -genkey -noout -out my.key.pem
$ openssl ecparam -genkey -name secp521r1 | openssl ec -aes256 -out my.key.pem (With password)
$ openssl ecparam -name prime256v1 -genkey -noout -out key.pem

openssl-generated-key-file What is a Pem file and how does it differ from other OpenSSL Generated Key File Formats?
Generate a public key from private key
$ openssl rsa -in key1.pem -outform PEM -pubout -out key1.pub
$ openssl rsa -in key1_private_key.pem -outform PEM -pubout -out key1_public_key.pem
 
 Generate random key
$ openssl rand -hex -out key1_random_key.bin 64
Display information

 $ openssl rsa -in key1.pem  -text
 $ openssl rsa -in key1.pem  -text -noout
Encrypt
$ openssl rsa -in key1.pem -des3 -out key1.enc
$ openssl genrsa -des3 -out key1.enc
$ openssl enc -aes-256-cbc -salt -in SecretFile -out SecretFile.enc -pass file:user1_random_key.bin
$ file SecretFile.enc
Decrypt
$ openssl rsa -in key1_enc.pem -outform PEM -pubout -out mypublickey1.pem
Datenintegrität
Was ist Datenintegrität?
 Der Begriff Datenintegrität bezieht sich auf die Korrektheit, Vollständigkeit und Konsistenz von Daten.
- Nicht verändert worden
- Identifizierung des Senders
 Identifizierung oder Identifikation (von lateinisch identitas „Wesenheit" und facere „machen") steht für: . Identifikation (Psychologie), das Einfühlen in eine andere Person oder Figur der Nachweis oder die  Verifizierung einer behaupteten Eigenschaft einer Entität, die Authentifizierung; bei Personen die amtliche Identitätsfeststellung
 Identifizierung | Wikipedia
- repudiation attack
Hashing
FUNCTION(DATEN)=HASHWERT
CHECKSUM
echo -n "TEXT" | cksum
md5sum SecretFile > checksum.txt
md5sum -c checksum.txt
Digitale Signatur
openssl rsautl
openssl dgst
openssl genrsa -des3 -out user2_private_key.pem 2048
openssl rsa -in user2_private_key.pem -outform PEM -pubout -out user2_public_key.pem
openssl rand -hex -out user1_random_key.bin 64
openssl enc -aes-256-cbc -salt -in SecretFile -out SecretFile.enc -pass file:user1_random_key.bin
openssl rsautl -encrypt -inkey user