Unix criptare una stringa nel terminale
Autore:[Antonio Gallonetto]
Molto spesso è necessario usare delle password da terminale e se si vuole nasconderle un buon metodo è criptarle.
Per la cifratura usiamo il terminale e openssl, facciamo un piccolo script che può essere usato direttamente oppure nelle varie utilità da riga di comando
#!/bin/bash
echo "inserisci frase da criptare"
read frase
echo $frase | openssl enc -aes-256-cbc -a
Per la decrittazione
#!/bin/bash
echo "inserisci frase da decriptare"
read frase
echo $frase | openssl enc -aes-256-cbc -d -a
Un esempio di utilizzo di questa tecnica è il seguente:
supponiamo di avere creato una stringa di crittazione con il primo script ed è la seguente:
U2FsdGVkX18g7yJSzXjsewvUVe3bDMHn6Bm7LimoQz8=
Questa è la password criptata di un server ftp, e vorrei sincronizzare una cartella locale sul server ftp, lo script per farlo è il seguente:
#!/bin/bash
cartellaSorgente = <nome cartella sorgente>
cartellaDestinazione = <nome cartella destinazione>
ipdestinazione = <indirizzo ip destinazione>
nomeutente = <nome utente>
mypass = U2FsdGVkX18g7yJSzXjsewvUVe3bDMHn6Bm7LimoQz8=
clearpass = echo $mypass | openssl enc -aes-256-cbc -d -a
open sftp://$nomeutente:$clearpass@$destinazione
mirror -c $cartellaSorgente $cartellaDestinazione
exit
Per tutti i dettagli su openssl si può travare un libro molto interessante fatto dallo stesso creatore di questo software, e si può trovare qui https://www.feistyduck.com/library/openssl-cookbook/.
Da questo libro abbiamo una lista dei possibili metodi di cifratura, la elenco di seguito:
| aes-128-cbc | aes-128-ecb | aes-192-cbc | aes-192-ecb |
| aes-256-cbc | aes-256-ecb | aria-128-cbc | aria-128-cfb |
| aria-128-cfb1 | aria-128-cfb8 | aria-128-ctr | aria-128-ecb |
| aria-128-ofb | aria-192-cbc | aria-192-cfb | aria-192-cfb1 |
| aria-192-cfb8 | aria-192-ctr | aria-192-ecb | aria-192-ofb |
| aria-256-cbc | aria-256-cfb | aria-256-cfb1 | aria-256-cfb8 |
| aria-256-ctr | aria-256-ecb | aria-256-ofb | base64 |
| bf | bf-cbc | bf-cfb | bf-ecb |
| bf-ofb | camellia-128-cbc | camellia-128-ecb | camellia-192-cbc |
| camellia-192-ecb | camellia-256-cbc | camellia-256-ecb | cast |
| cast-cbc | cast5-cbc | cast5-cfb | cast5-ecb |
| cast5-ofb | des | des-cbc | des-cfb |
| des-ecb | des-ede | des-ede-cbc | des-ede-cfb |
| des-ede-ofb | des-ede3 | des-ede3-cbc | des-ede3-cfb |
| des-ede3-ofb | des-ofb | des3 | desx |
| rc2 | rc2-40-cbc | rc2-64-cbc | rc2-cbc |
| rc2-cfb | rc2-ecb | rc2-ofb | rc4 |
| rc4-40 | seed | seed-cbc | seed-cfb |
| seed-ecb | seed-ofb | sm4-cbc | sm4-cfb |
| sm4-ctr | sm4-ecb | sm4-ofb |
Se vogliamo ad esempio ripetere l’esempio precedente utilizzando la crittografia del camelia-256
#!/bin/bash
echo "inserisci frase da criptare"
read frase
echo $frase | openssl enc -camellia-256-cfb -a
Il cifrario che andiamo ad usare è a blocchi, trovate una bella spiegazione sui cifrari a blocchi e sulle diciture ad esempio cfb in Modalità di funzionamento dei cifrari a blocchi