Hrvatska akademska i istraživačka mreža
  NASLOVNICA MAPA WEBA TRAŽILICA KONTAKTI CARNET WEB
Hrvatska akademska i istraživačka mreža
 
menu 4
Sigurnost
menu 4
Distribucija
menu 4
Pomoć
menu 4
Dokumenti
menu 4
menu 4

 

 

31-03-05 23:45
SSH enkripcija i zaštita integriteta poruka

piše EMIR IMAMAGIĆ

Zaštita poruka u protokolu SSH ostvaruje se enkripcijom i zaštitom integriteta poruka. Za enkripciju se koriste simetrični i asimetrični algoritmi. Za zaštitu integriteta poruka koriste se funkcije za izračunavanje sažetka (engl. hash). Preciznije, koriste se algoritmi MAC (engl. Message Authentication Code), koji u svom radu koriste funkcije za izračunavanje sažetka.

 

Enkripcija poruka

U slučaju simetričnih algoritama za enkripciju i dekripciju koristi se jedan ključ, koji se naziva tajni ključ. Tajni ključ smiju poznavati isključivo pošiljatelj i primatelj. Osnovni je problem tih algoritama mehanizam razmjene tajnog ključa između primatelja i pošiljatelja.

Još jedan bitan parametar simetričnih algoritama je veličina ključa koja se izražava u bitima. Naime, svaki simetrični algoritam je teoretski moguće probiti brutalnom silom, tj. testirajući redom sve moguće vrijednosti tajnog ključa. Međutim, ukoliko je skup vrijednosti velik, a algoritam kriptiranja složen takav postupak je praktično neizvediv.

 

Asimetrični algoritmi koriste različite ključeve za enkripciju i dekripciju - javni i privatni ključ. Primatelj objavljuje javni ključ, a pošiljatelj koristi taj ključ za enkripciju. Poruka kriptirana s primateljevim javnim ključem može biti dekriptirana isključivo s njegovim privatnim ključem. Analogno tomu, primatelj enkriptira odgovor pomoću pošiljateljevog javnog ključa. Asimetrični algoritmi koriste se za razmjenu tajnih ključeva i digitalno potpisivanje poruka. Neki od njih, kao što je DSA, koriste se isključivo za digitalno potpisivanje. Nisu praktični za samu enkripciju poruka jer im je postupak enkripcije dugotrajan, za nekoliko redova veličine sporiji od simetričnih.

 

SSH u radu koristi obje vrste algoritama. Pomoću odabranog simetričnog algoritma obavlja se enkripcija poruka. Asimetrični algoritam koristi se za razmjenu tajnoga ključa između SSH klijenta i SSH poslužitelja. Dodatno, korisnici mogu koristiti svoj javni ključ za autentikaciju. O tome će biti više riječi u predstojećim člancima.

U postupku enkripcije SSH koristi sljedeće ključeve:
Korisnički (engl. user) ključ je par ključeva kojim korisnik ostvaruje razmjenu sjedničkog ključa s poslužiteljem ili autentikaciju. Korisnik stvara korisnički ključ prije početka rada sa SSH klijentom ili naknadno naredbom ssh-keygen. 

Računalni (engl. host) ključ je asimetrični par ključeva pomoću kojega poslužitelj razmjenjuje sjednički ključ s korisnicima. Ovaj ključ se obično stvara prilikom instalacije SSH poslužitelja i moguće ga je naknadno mijenjati.

Sjednički (engl. session) ključ je simetrični, tajni ključ kojim se ostvaruje enkripcija poruka prilikom rada. Dodatno, SSH u radu periodički mijenja tajni ključ s ciljem ostvarenja većeg stupnja sigurnosti. Ova opcija je prisutna isključivo u verziji 2 SSH protokola.

 

Od asimetričnih algoritama OpenSSH koristi DSA (engl. Digital Signature Algorithm) za autentikaciju i algoritam za razmjenu ključeva Diffie-Hellman. Podrška za algoritam RSA (engl. Rivest-Shamir-Adleman) nije obvezna prema verziji 2 standarda SSH, ali OpenSSH omogućava korisničku autentikaciju pomoću RSA ključeva. U 1. verziji SSH protokola RSA je bio podrazumijevani algoritam, ali je napušten u verziji 2 zbog već zaštićenoga patenta. U međuvremenu patent je istekao pa se očekuje da će RSA biti uključen u buduće verzije protokola.

 

OpenSSH omogućava korištenje sljedećih simetričnih algoritama za enkripciju poruka:

AES (engl. Advance Encryption Standard) ili Rijndael s veličinama ključa od 128, 192 i 256 bita. http://csrc.nist.gov/CryptoToolkit/aes/
Triple DES (oznaka u konfiguracijskoj datoteci 3des-cbc) http://kingkong.me.berkeley.edu/~kenneth/courses/sims250/des.html
Blowfish (blowfish-cbc) http://www.schneier.com/blowfish.html
ARC4 (arcfour) http://www.homerow.net/asm/arc4.htm
CAST (cast128-cbc) http://www.faqs.org/rfcs/rfc2144.html.

Podrazumijevani protokol je 128-bitni AES jer su ga nakon dužeg testiranja potvrdile američke agencije među kojima je i NSA, National Security Agency) kao algoritam koji se može koristiti za službene svrhe. Ako se gleda samo brzina, ARC4 je najbolji, međutim nije toliko siguran.

 

Kod OpenSSH se pomoću parametra Ciphers eksplicitno definira skup simetričnih algoritama koji se mogu koristiti. Ovaj parametar se koristi i na poslužiteljskoj (datoteka /etc/ssh/sshd_config) i na korisničkoj (datoteka $HOME/.ssh/config) strani. Parametar se navodi u obliku:

Ciphers algoritam1, algoritam2, ...

Lista algoritama na korisničkoj strani označava da će SSH klijent prilikom spajanja provjeriti podržava li poslužitelj algoritam1. Ako ne podržava, pokušat će sljedeći, itd. Ako poslužitelj ne podržava ni jedan, SSH neće ostvariti vezu s poslužiteljem. Na isti način se na poslužitelju definira koje algoritme korisnici mogu koristiti. Iako ograničavanje skupa algoritama može pridonijeti sigurnosti sustava, u isto vrijeme može i ograničiti pristup samo onim korisnicima čiji SSH klijenti sadrže odabrane algoritme.

Ako nije naveden u konfiguraciji, podrazumijeva se da sadrži listu svih algoritama:

Ciphers aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, arcfour, aes192-cbc, aes256-cbc, aes128-ctr, aes192-ctr, aes256-ctr


Zaštita integriteta poruka

 

Funkcije za izračunavanje sažetka poruke pretvaraju skup podataka proizvoljne veličine u mali skup podataka fiksne veličine koji se naziva sažetak (engl. digest). Duljine sažetaka su obično 128 ili 160 bita. Ove funkcije koriste se za provjeravanje je li poruka izmijenjena u dok je prenošena. Postupak je sljedeći: pošiljatelj uz poruku šalje i izračunati sažetak poruke (kriptiran i digitalno potpisan), a primatelj i sam izračunava sažetak i uspoređuje ga s poslanim sažetkom.

Osnovni problem ovih algoritama je postići da mogućnost pronalaženja poruke s istim sažetkom bude vrlo mala. Ovo svojstvo naziva se otpornost na koliziju (engl. collision resistant). Zanimljivo je da se u 1. verziji protokola SSH koristio postupak CRC-32 (engl. Cyclic Redundancy Check) koji nije bio otporan na koliziju, što se pokazalo kao sigurnosni propust.

MAC algoritmi dodatno osiguravaju zaštitu integriteta poruka ostvarivanjem autentikacije poruka. Jedna skupina MAC algoritama pod nazivom HMAC (engl. keyed-hash MAC) zasnovana je na funkcijama za izračunavanje sažetka. Osnovna ideja algoritma HMAC je kombinirati izračun sažetka sa simetričnim kriptiranjem. Tako je za izračun sažetka potreban i poseban tajni ključ.

Detalje o HMAC algoritmima možete pronaći na stranici: http://www.ietf.org/rfc/rfc2104.txt.

 

OpenSSH koristi različite tajne ključeve za HMAC algoritam i za samu enkripciju poruka. Dodatno, HMAC tajni ključ se također može mijenjati u tijeku jedne korisničke sjednice. OpenSSH omogućava korištenje sljedećih HMAC algoritama za izračunavanje sažetka poruke:

SHA1 (oznaka u konfiguracijskoj datoteci hmac-sha1) http://www.ietf.org/rfc/rfc2202.txt
MD5 (oznaka hmac-md5) http://www.ietf.org/rfc/rfc2202.txt
RIPEMD-160 (oznaka hmac-ripemd160)http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html


SHA1 koristi 160 bitnu duljinu sažetka i sigurniji je od MD5 koji koristi 128 bitnu duljinu poruka. Sami dizajneri MD5 preporučuju prelazak na SHA1.

 

Pomoću parametra MACs se eksplicitno definira skup HMAC algoritama. Parametar se koristi i na poslužiteljskoj i na korisničkoj strani. Parametar se navodi u obliku:

MACs  algoritam1, algoritam2, ..

Ukoliko nije naveden u konfiguraciji, podrazumijeva se da sadrži listu svih algoritama:

MACs  hmac-md5, hmac-sha1, hmac-ripemd160, hmac-sha1-96, hmac-md5-96

Preporuča se eksplicitno navoditi algoritme, jer se na taj način može zabraniti korištenje algoritama za koje se u međuvremenu pokaže da nisu potpuno sigurni.





[Lista]
Ovu uslugu CARNeta realizira Sveučilišni računski centar Sveučilišta u Zagrebu
  Copyright ©2005. CARNet. Sva prava zadržana. Impressum.
Mail to
sys-portal@CARNet.hr