Benutzer-Werkzeuge

Webseiten-Werkzeuge


ssh_scp_-_sicherheit_und_geschwindigkeit

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ssh_scp_-_sicherheit_und_geschwindigkeit [2016-04-01 14:18:54] – [SSH/SCP - Sicherheit und Geschwindigkeit] manfredssh_scp_-_sicherheit_und_geschwindigkeit [2025-07-21 12:21:21] (aktuell) – [RSA, die Primzahlen und die Riemannsche Vermutung (Die Riemann-Hypotese)] manfred
Zeile 1: Zeile 1:
 +====== SSH/SCP - Sicherheit und Geschwindigkeit ======
 +
 +  * [[http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch03_09.htm]]
 +  * [[https://www.heise.de/security/artikel/Gute-Zahlen-schlechte-Zahlen-270078.html|DSA- und ECDSA-Signaturen]]
 +
 +
 +===== neuer SSH-Key auf Basis von elliptischer Kurven =====
 +
 +Zur Zeit ist das ED25519-Schlüsselformat, das sicherste verfügbare SSH-Schlüsselformat!\\
 +RSA mit großer Schlüssellänge ist der zweitsicherste, die DSA-Schlüssel sind alle NSA-optimiert und somit als unsicher anzusehen.
 +
 +**''ACHTUNG\\
 +Die ED25519-Schlüssel werden erst __seit Ubuntu 14.04__ (ab [[http://www.golem.de/news/bessere-verschluesselung-openssh-6-5-veroeffentlicht-1401-104289.html|OpenSSH 6.5]]) unterstützt!''**
 +
 +Der ED25519-Schlüssel hat eine __feste Länge von 256 Bit__, hier wird die Option ''"-b"'' __ignoriert__:
 +  > ssh-keygen -o -t ed25519 -a 256
 +
 +Die Option **''-a''** beschreibt, mit wieviel Rotationen die Passphrase verschlüsselt wird.\\
 +Je größer diese Anzahl ist, desto stärker ist die Passphrase gegen Brut-Force-Angriffe gesichert aber desto langsammer ist auch der Verbindungsaufbau.\\
 +Die gleiche Wartezeit, die zum generieren des Schlüssels benötigt wird, fällt auch bei einem Verbindungsaufbau mit dem generierten Schlüssel an.\\
 +Also wenn das generieren eines Schlüssels mit 65536 Runden ca. 10 Minuten dauert, dann wird der Vebindungsaufbau mit diesem Schlüssel von diesem Rechner aus, auch ca. 10 Minuten benötigen!
 +
 +In soeinem Fall sollte man die Anzahl der Runden auf einen Wert reduzieren, bei dem die Zeit zum generieren bzw. für den Verbindungsaufbau, in einem verträglichen Zeitrahmen liegt.
 +
 +Auf einem Rechner mit einer "Intel Core i7-2620M 2.70GHz"-CPU, dauert der Login mit einem ED25519-Schlüssel mit 1024 Runden, ca. 10 Sekunden und mit 65536 Runden ca. 10 Minuten. Mit 128 Runden dauert der Verbindungsaufbau auf einem Rechner mit einer "Intel Core i7-2620M 2.70GHz"-CPU, ca. eine Sekunde.
 +
 +
 +==== leider nimmt der SSH-Agent die Ed25519-Schlüssel nicht automatisch auf ====
 +
 +Um das Problem zu beheben, müssen einmalig zwei Zeilen an die ''~/.bashrc'' unten angefügt werden:
 +  > echo 'eval $(ssh-agent)' >> ~/.bashrc
 +  > echo "ssh-add" >> ~/.bashrc
 +
 +Ab jetzt wird beim öffnen eines Terminal-Fensters die Passphrase abgefragt und die Schlüssel (auch der Ed25519-Schlüssel) ordentlich aufgenommen. Und ein passwortloser Login ist jetzt auch mit dem Ed25519-Schlüssel möglich. :-)
 +
 +
 +===== DSA versus RSA =====
 +
 +**Stand: Mai 2011**
 +
 +
 +==== ECDSA ====
 +
 +RSA war mal durch Patente geschützt, die sind jetzt aber abgelaufen.
 +Der ECDSA-Algorithmus stammt noch aus der Zeit und sollte eine freie
 +Alternative zum durch Patent geschützten RSA sein.
 +
 +**Vor kurzem wurde der ECDSA-Algorithmus geknackt.
 +ECDSA-Schlüssel sollte man als "veraltet" und "unsicher" betrachten.**
 +
 +Schlüsselstärkenvergleich (Brutforce-Angriff, kein Strukturangriff!):
 +  - 160 Bit ECDSA-Schlüssel => 1024 Bit RSA-Schlüssel
 +  - 224 Bit ECDSA-Schlüssel => 2048 Bit RSA-Schlüssel
 +  - 256 Bit ECDSA-Schlüssel => 3072 Bit RSA-Schlüssel
 +  - 521 Bit ECDSA-Schlüssel => 15360 Bit RSA-Schlüssel
 +
 +
 +==== RSA ====
 +
 +  - da die RSA-Patente abgelaufen sind, ist RSA jetzt frei;
 +  - einen RSA-Schlüssel kann man mit einer beliebigen Schlüssellänge generieren;
 +  - Signaturen werden schneller verifiziert als erzeugt;
 +  - um die Sicherheit eines 1024 Bit DSA-Schlüssels zu erzielen, muss der RSA-Schlüssel ca. 1232 Bit lang sein;
 +  - RSA kann zum Signieren und zum Verschlüsseln verwendet werden (das tut OpenSSH aber nicht, da es aus kryptografischer Sicht ungünstig ist);
 +
 +
 +==== DSA ====
 +
 +  - einen DSA-Schlüssel kann man nur mit einer maximalen Schlüssellänge von 1024 Bit generieren (das alte DSS konnte auch längere);
 +  - DSA hängt wohl doch sehr von guten Zufallszahlen ab, die man unter Windows wohl nicht bekommt;
 +  - bei der Implementierung von DSA, kann man wohl viele Fehler machen die die Sicherheit des Verfahrens stark gefährden, dem entsprechend gibt es angeblich auch viele problematische DSA-Implementierungen;
 +  - Signaturen werden schneller erzeugt als verifiziert;
 +  - DSA kann nur zum Signieren, nicht zum Verschlüsseln verwendet werden;
 +
 +
 +===== Sicherheit und Geschwindigkeit =====
 +
 +Auf dieser Seite wurden Transfervergleiche mit unterschiedlichen //Cipher// (Kodes) gefahren:
 +  * [[http://blog.famzah.net/2010/06/11/openssh-ciphers-performance-benchmark/]]
 +
 +Da die Pakete bei FTP unbearbeitet über das Netz gehen, ist es die schnellste aber auch unsicherste Methode,
 +Daten zu übertragen. Aus diesem Grunde verwendet man heute SSH/SCP/SFTP zur verschlüsselten Datenübertragung.
 +Hier kann man die Daten auf verschiedene Weise verschlüsseln/kodieren.
 +Jeder von SSH unterstützte Kode hat seine besonderen Eigenschaften, deshalb ergibt sich auch ein Unterschied
 +in der Datenübertragungsrate und der Sicherheit in Abhängigkeit vom verwendeten Kode:
 +
 +  - Standard ist der Kode "3DES", es ist der langsamste aber nicht der sicherste;
 +  - der schnellste ist "ARCFOUR" (kompatibel zu "RC4");
 +  - "AES" ist langsam aber sicherer als "3DES";
 +  - als einen sehr guten Kompromiss zwischen Sicherheit und Geschwindigkeit kann man den "Blowfish"-Kode ansehen;
 +  - die FreeBSD-Version von SSH2 beherrscht sogar den "Twofish"-Kode, ihn kann man als den sichersten Kode ansehen, von allen die SSH unterstützt;
 +
 +Welche Kodes (Cipher) von der eingesetzten SSH-Version unterstützt werden, kann man sich wie folgt anzeigen lassen:
 +  # man ssh_config
 +
 +  * => siehe in der Sektion **//Ciphers//**
 +
 +Beispiel:
 +  # ssh -c blowfish -X fritz@rechner
 +  # scp -c blowfish testdatei.txt fritz@rechner:
 +
 +Es ist auch möglich mehrere Kodes (Cipher) kommasepariert anzugeben:
 +  # ssh -c blowfish,blowfish-cbc,aes256-ctr,aes192-ctr,aes128-ctr,3des,arcfour,arcfour256,arcfour128 -X fritz@rechner
 +  # scp -c blowfish,blowfish-cbc,aes256-ctr,aes192-ctr,aes128-ctr,3des,arcfour,arcfour256,arcfour128 testdatei.txt fritz@rechner:
 +
 +
 +==== /etc/ssh/ssh_config ====
 +
 +Man kann die bevorzugten Kodes (Cipher) auch in der Konfigurationsdatei vom SSH-Client dauerhaft eintragen
 +und spart sich so das aufführen auf der Kommandozeile.
 +
 +  # vi /etc/ssh/ssh_config
 +  ....
 +  Ciphers blowfish,blowfish-cbc,aes256-ctr,aes192-ctr,aes128-ctr,3des,arcfour,arcfour256,arcfour128
 +  ....
 +
 +
 +===== RSA, die Primzahlen und die Riemannsche Vermutung (Die Riemann-Hypotese) =====
 +
 +RSA basiert darauf, dass man Primzahlen nicht erraten kann, weil man davon ausgeht, dass sie im Zahlenraum unvorhersehbar verteilt sind... Geht man von existierenden mathematischen Beweisführungen aus, dann liegt man da gar nicht so falsch... Aber wenn man die empirischen Erfahrungen im gesamten Zahlenraum, die von heutigen Computern bearbeitet werden, betrachtet, dann ist das komplett falsch!
 +
 +Siehe dazu den Vortrag über die [[https://youtu.be/sZhl6PyTflw?t=2034|Riemannsche Vermutung]].
 +
 +Riemann hatte vor Jahrhunderten schon vermutet, dass die Primzahlen, im Zahlenraum, nur auf einem schmalen Streifen liegen. Das wurde mathematisch noch nicht bewiesen (darauf berufen sich alle) aber es wurde im gesamten Zahlenraum, den Computer bearbeiten können, schon empirisch nachgewiesen. Demnach sind auch RSA-Schlüssel (egal wie lang) nicht mehr sicher.
 +Nun kann man sagen, dass RSA ja schon durch die Kosinusfunktionen abgelöst wurden... aber da haben wir das gleiche Problem, wie bei DSA, diese Schlüssel (z.B. ed25519) sind in ihrer Länge auf nur 256Bit beschränkt.
 +
 +Soviel zu Sicherheit, heutzutage!!!
 +