Crypto
Au début de cette année d'étude à l'école Cs2i j'ai suivi des cours de cryptographies (dans le cadre de ma spécialisation)
j'ai appris pas mal de chose et voila qques morceaux sympa concernant la crypto sous linux.
OpenSSH et la crypto
SSH utilise utilise un couple clée publique / clée privé
mais pour le transport des données une fois la connexion établie
un algorithme symétrique est utilisé (pour des rainsons de performances).
Je vous propose tout d'abord de tester différents algorithmes est de voir en quoi ils affectent les performances d'un tunnel ssh :
J'ai réalisé cette "bench" sous VMWARE avec une distribution linux CENTOS 4.4 :
Voila le bout de script shell que j'ai écri :
#!/bin/sh
for algo in aes128-cbc 3des-cbc blowfish-cbc cast128-cbc arcfour aes192-cbc aes256-cbc
do
#Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
echo "--------------------------"
echo "test avec " $algo
echo "--------------------------"
time dd bs=1M count=100 if=/dev/zero | ssh -c $algo root@localhost "cat > /dev/null"
done
Execution !
[root@srv1 ~]# ./sshBenchmark.sh
--------------------------
test avec aes128-cbc
--------------------------
100+0 records in
100+0 records out
real 0m19.185s
user 0m2.381s
sys 0m10.238s
--------------------------
test avec 3des-cbc
--------------------------
100+0 records in
100+0 records out
real 0m28.414s
user 0m6.796s
sys 0m10.732s
--------------------------
test avec blowfish-cbc
--------------------------
100+0 records in
100+0 records out
real 0m17.568s
user 0m1.939s
sys 0m9.913s
--------------------------
test avec cast128-cbc
--------------------------
100+0 records in
100+0 records out
real 0m19.722s
user 0m2.817s
sys 0m10.377s
--------------------------
test avec arcfour
--------------------------
100+0 records in
100+0 records out
real 0m13.579s
user 0m0.739s
sys 0m8.627s
--------------------------
test avec aes192-cbc
--------------------------
100+0 records in
100+0 records out
real 0m19.393s
user 0m2.552s
sys 0m10.283s
--------------------------
test avec aes256-cbc
--------------------------
100+0 records in
100+0 records out
real 0m20.044s
user 0m2.841s
sys 0m10.444s
On voit très nettement que arcfour est le plus rapide (algorithme basé sur RC4 utilisé par la NSA :) ), OpenSSH propose un fichier de configuration pour chaque utisateur
il se trouve dans : [home de l'utilisateur]/.ssh/config :
[root@srv1 ~]# vi .ssh/config
Host srv2 Cipher aes128-cbc
#Algo disponibles :
# Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
Ainsi dans la configuration j'ai la possibilité de préciser pour une machine donnée qu'elle sont les options à utiliser ici je force l'utilisation de l'algo AES 128 pour la
ma machine srv2.