Ed25519 är en signaturalgoritm som använder sig av EdDSA som är en så kallad twisted Edwards-kurva. Ed25519 ska enligt utsago vara både snabbare och säkrare än ECDSA och DSA samt så är nyckellängden enbart 68 tecken.
Nu har dock Konstantinos Chalkias vid MystenLabs upptäckt att ca 40 olika tredjepartsbibliotek som implementerar Ed25519 öppnar upp för en möjlig sårbarhet. Denna sårbarhet ligger i en prestandaoptimering som går ut på att en publik nyckel inte beräknas för varje meddelande som signeras. Då kan funktionen användas som ett orakel och en angripare kan beräkna den privata nyckeln med tillräckligt mycket tid och resurser.
Bild som förevisar en Ed25519-signering:
För listan med ca 40 bibliotek se följande Github-länk:
GnuPG är en öppen och fri mjukvara som implementerar OpenPGP och som i folkmun kallas PGP. Alla releaser som ligger under 2.1 går under benämningen ”modern” och innehåller således nya features. Stabila utgåvor ligger under 2.0 samt klassiska under 1.4.
Följande ändringar och nyheter innehåller version 2.1.9:
* gpg: Allow fetching keys via OpenPGP DANE (--auto-key-locate). New
option --print-dane-records.
* gpg: Fix for a problem with PGP-2 keys in a keyring.
* gpg: Fail with an error instead of a warning if a modern cipher
algorithm is used without a MDC.
* agent: New option --pinentry-invisible-char.
* agent: Always do a RSA signature verification after creation.
* agent: Fix a regression in ssh-add-ing Ed25519 keys.
* agent: Fix ssh fingerprint computation for nistp384 and EdDSA.
* agent: Fix crash during passprase entry on some platforms.
* scd: Change timeout to fix problems with some 2.1 cards.
* dirmngr: Displayed name is now Key Acquirer.
* dirmngr: Add option --keyserver. Deprecate that option for gpg.
Install a dirmngr.conf file from a skeleton for new installations.
Att SSH är en otroligt använd tjänst råder ingen tvekan om. Nästan alla som har någon form av server använder sig av SSH.
Denna guide börjar med klientsäkerhet för att sedan ge rekommendationer för server-sidans konfiguration. Vi kommer främst att fokusera på de algoritmer som används.
SSH klientsäkerhet
Först och främst ska du se till att du har en relativt ny SSH-klient som du ansluter med. Den som följer med Mac OS X är gammal och stödjer bara gamla krypton, så därför är det lämpligt att uppgradera till en nyare version med hjälp av brew.
Denna följer med Mac OS X Yosemite:
$ ssh -V
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
$ ssh -V
OpenSSH_6.8p1, OpenSSL 1.0.2a 19 Mar 2015
Nu ser det betydligt bättre ut. Nästa steg är att generera nya Ed25519 nycklar som vi kan använda:
$ ssh-keygen -t ed25519 -C "min@epost" -a 100 -o
Om du i ovan steg får ett felmeddelande om att algoritmen inte stöds så har du fel sökväg till ssh-keygen binären. Testa då /usr/local/bin/ssh-keygen istället.
Glöm framförallt inte att använda ett lösenord för att skydda din privata nyckel.
Vi ska även ändra i vår klient-konfigurationsfil så vi enbart stödjer SSH version 2 samt ett antal algoritmer som vi litar mer på:
Du bör även se till att just ovan hostnycklar verkligen finns. Om någon ej skulle finnas så kan du skapa en ny med ssh-keygen:
$ ssh-keygen -t ed25519 -f ssh_host_ed25519_key
När det fungerar med inloggning via nycklar bör du ändra följande förutsatt att du inte använder någon funktion som de tillhandahåller:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Givetvis ska även root-logins stängas av med PermitRootLogin no. En annan bra sak är att ta bort kortare Diffie-Hellmanparameterar, följande kommando gör detta åt dig:
awk '$5 > 2000' /etc/ssh/moduli > "${HOME}/moduli"
wc -l "${HOME}/moduli" # se till att du har något kvar i filen
mv "${HOME}/moduli" /etc/ssh/moduli
Glöm inte att starta om openssh samt genomför tester så du inte stänger ute dig själv.
Givetvis finns det mängder med andra inställningar du kan göra för att höja säkerheten. Lämna gärna en kommentar med dina tips.
Uppdatering: För att försvåra brute-force attacker så bör du använda fail2ban eller sshguard. Tipstack till Jonas Thambert!