Turvakest

Turvakest (inglise keeles Secure Shell, lühendatult SSH) on krüptograafiline võrguprotokoll turvaliseks võrguteenuste opereerimiseks turvamata võrgu kaudu. Põhiliselt kasutavad seda arvutikasutajad arvutisüsteemidesse kaugsisselogimiseks. SSH võimaldab klient-server arhitektuuri puhul luua turvamata võrgus turvalise andmeedastuskanali, ühendades SSH klientrakenduse SSH-serveriga. Üldrakendused sisaldavad käsureale kaugsisselogimist ja käskude kaugkäivitamist, samuti on võimalik SSH abil turvata paljusid võrguteenuseid. Protokolli kirjeldus eristab kahte peamist versiooni, mis on tuntud kui SSH-1 ja SSH-2. Protokolli kasutatakse kõige rohkem UNIXi-laadsetes süsteemides kestakontodesse sisselogimiseks, samuti leiab see piiratud kasutust Windowsi süsteemides. Aastal 2015 teatas Microsoft võimalikust sisseehitatud SSH toest Windowsi tulevastes versioonides. SSH disainiti asendama Telneti ja teisi turvamata kaugkesta protokolle, nagu Berkeley rlogin, rsh ja rexec. Loetletud protokollid edastavad andmeid, sealhulgas paroole, avatekstina, mis teeb need paketianalüüsi kasutamisel haavatavaks vahelthaaramise ja andmete lekkimise suhtes. SSH kasutatav krüpteerimine püüab tagada turvamata võrgus (nagu seda on Internet) edastatavate andmete konfidentsiaalsuse ja tervikluse, kuigi Edward Snowdeni lekitatud failid osutavad, et NSA on suuteline mõnikord SSH-d dekrüpteerima, mis võimaldab neil SSH seansside sisu lugeda. 6. juulil 2017 kinnitas valitsuste läbipaistvuse nimel tegutsev organisatsioon WikiLeaks, et Luure Keskagentuur on loonud tööriistad, mida on võimalik paigaldada Microsoft Windowsi või GNU/Linuxi operatsioonisüsteemiga arvutitesse ja mis on mõeldud rikutud süsteemis käivitatud SSH-klientprogrammide algatatud SSH-ühenduste vahelthaaramiseks. SSH kasutab avaliku võtme krüptograafiat, et autentida võrguarvuti ja võimaldada sellel vajadusel kasutajat autentida. SSH kasutamiseks on mitu võimalikku lähenemisviisi, üks on automaatselt genereeritud avaliku-salajase võtmepaari abil krüpteerida võrguühendus ja seejärel kasutada parooliga autentimist sisselogimiseks. Teine võimalus on autentida manuaalselt genereeritud avaliku-salajase võtmepaari abil ja lubada kasutajal või programmil ilma parooli sisestamata sisse logida. Selle stsenaariumi jaoks võib igaüks luua erinevatest võtmetest (avalikust ja salajasest) sobiva võtmepaari. Avalik võti pannakse kõikidesse arvutitesse, mis peavad salajase võtme omanikule ligipääsu võimaldama. Kui autentimine põhineb salajasel võtmel, siis autentimise käigus ei edastata seda võtit kunagi üle võrgu. SSH ainult verifitseerib, kas sama isiku avalik võti vastab salajasele võtmele. Kõigis SSH versioonides on olulisel kohal tundmatute avalike võtmete verifitseerimine, see tähendab avaliku võtme ja identiteeti seose tuvastamist enne võtme valiidseks tunnistamist, kuna ründaja avaliku võtme aktsepteerimine ilma seda valideerimata annab volitamata kasutajale ligipääsu volitatud kasutaja õigustele. UNIXi-laadsetes süsteemides hoitakse volitatud avalike võtmete nimekirja harilikult selle kasutajakonto, millega on lubatud võrgu kaudu sisse logida, kodukataloogis failis ~/.ssh/authorized_keys. SSH tunnustab volitatud võtmete faili ainult juhul, kui see pole kirjutatav kellegi teise poolt peale faili omaniku ja juurkasutaja. Kui kaugarvutis on olemas avalik võti ja kohalikus arvutis on sellele vastav salajane võti, siis pole parooli sisestamine enam tarvilik (mõni tarkvara võib siiski korrektseks töötamiseks parooli nõuda, näiteks Message Passing Interface (MPI) virn). Siiski võib täiendava turvalisuse lisamiseks ka salajast võtit parooliga kaitsta. Salajast võtit võidakse otsida standardsetest asukohtadest, samuti on selle täisrada võimalik määrata käsureaargumentidega (utiliidi ssh puhul võti -i). Salajasi ja avalikke võtmeid luuakse utiliidi ssh-keygen abil, need genereeritakse alati võtmepaaridena. SSH toetab ka paroolipõhist autentimist, see protseduur on krüpteeritud automaatselt loodud võtmete abil. Parooliga autentimise kasutamisel võib ründaja imiteerida serverit, küsida kasutajalt parooli ja selle ka saada (vahendusrünne). Siiski on kirjeldatud stsenaarium on võimalik vaid juhul kui osapooled pole end varem teineteisele autentinud, kuna SSH säilitab serverite poolt varem esitatud võtmed. Enne võtme aktsepteerimist varem tundmata serverist kuvab SSH klient hoiatuse. Paroolautentimist on võimalik ka keelata. SSH-d kasutatakse enamasti kaugarvutisse sisselogimiseks ja nendes korralduste täitmiseks, samuti tunnelite loomiseks ning TCP portide ja X11 ühenduste edastuseks. Samuti on toetatud failide ülekandmine SSH failiedastuse (SFTP) võis turvalise kopeerimise (SCP) protokollidega. SSH põhineb kliendi-serveri arhitektuuril. SSH-serveritega ühenduse loomiseks on määratud standardne TCP port 22. SSH klientprogrammi kasutatakse harilikult ühenduse loomiseks kaugühendusi vastu võtva SSH-deemoniga. Mõlemad on reeglina kaasas enamikus uuemates operatsioonisüsteemides, näiteks Mac OS, suurem osa Linuxi distributsioone, FreeBSD, NetBSD, Solaris ja OpenVMS. Windows on üks väheseid kaasaegseid operatsioonisüsteeme, mis SSH tuge vaikimisi ei sisalda. 1995. aastal kirjutas Helsingi Tehnikaülikooli insener Tatu Ylönen samas koolis korraldatud paroolinuhi (password-sniffing) ründe tõttu SSH esimese versiooni (SSH-1). SSH eesmärk oli asendada rlogin, Telnet ja rsh protokollid, mis ei pakkunud turvalisust ega konfidentsiaalsust. Ylönen väljastas oma programmi vabavarana 1995. aasta juulis ja see muutus kiiresti populaarseks. 1995. aasta lõpuks oli SSH kasutajate hulk kasvanud 20 000 inimeseni 50 riigis. 1995. aasta detsembris asutas Ylönen SSH müümiseks ja arendamiseks ettevõtte SSH Communications Security. Algne versioon kasutas paljusid vabavaralisi lõike, näiteks GNU libgmp, kuid hilisemad versioonid olid üha enam mõeldud äriliseks kasutamiseks. 1996. aastal muudeti uuendatud versioon standardiks (SSH-2), mis ei ühildunud SSH-1-ga. Uus versioon suurendas turvalisust, näiteks võeti kasutusele uued võtmevahetusmehhanismid, nagu Diffie-Hellmani võtmevahetus. SSH2 pakub ka lisafunktsioone, nt võimalust luua mitu ühendust ühe SSH-tunneli kaudu. Samuti parandati protokolli struktuuri, jagades selle mitmeks kihiks. 1998. aastal avastati SSH versioonis 1.5 turvaauk, mis lubas ründajal krüpteeritud SSH andmevoogu andmeid sisestada. Viga tulenes ebapiisava terviklikkuskontrolli CRC-32 kasutamisest. Enamikus SSH versioonides võeti kasutusele rünnakutuvasti (inglise keeles SSH Compensation Attack Detector), mis selle turvavea parandas.  Pikemalt artiklis OpenSSH 1999. aastal tekkis arendajatel idee luua uus, avatud lähtekoodiga SSH rakendus. Björn Grönvall kirjutas SSH viimase avatud lähtekoodiga versiooni 1.2.12 põhjal rakenduse OSSH, mille põhjal lõid OpenBSD arendajad OpenSSH ja väljastasid selle koos OpenBSD versiooniga 2.6. Sellest versioonist loodi "mobiilne" haru võimaldamaks OpenSSH-d ka teistes operatsioonisüsteemides kasutada. Aastal 2000 oli SSH-l hinnanguliselt 2 000 000 kasutajat. Alates 2005. aastast on avatud lähtekoodiga OpenSSH kõige populaarsem SSH rakendus ja see on paljude operatsioonisüsteemide koosseisus. OSSH on käibelt kadunud. 2006. aasta jaanuaris pakkus IETF-i töörühm Secsh välja idee võtta SSH-2 internetistandardiks. RFC 4250, SSH protokollis määratud arvväärtused RFC 4251, SSH protokolli arhitektuur RFC 4252, SSH autentimisprotokoll RFC 4253, SSH transpordiprotokoll RFC 4254, SSH ühendusprotokoll RFC 4255, DNS-i kasutamine SSH võtmete sõrmejälgede (Key Fingerprints) turvaliseks avalikustamiseks RFC 4256, SSH protokolli üldotstarbelise autentimise sõnumivahetus RFC 4335, SSH seansi kanali katkestamise laiend RFC 4344, SSH transpordikihi krüpteerimisrežiimid RFC 4345, Arcfour šifri parandatud režiimid SSH transpordiprotokollile Originaalpublikatsioonis kirjeldatud standardit on hiljem muudetud ja laiendatud järgmistes publikatsioonides: RFC 4419, SSH transpordikihi protokolli Diffie-Hellman grupivahetus (märts 2006) RFC 4432, SSH transpordikihi protokolli RSA võtmevahetus (märts 2006) RFC 4716, SSH avaliku võtme faili vorming (november 2006) 2008. aastal avastati SSH-2 viga, mis lubas teatud tingimustel kuni 4 baiti lihtteksti SSH andmevoost kätte saada. Seda nimetatakse lihttekstirünnakuks (Plaintext Recovery Attack). Viga on parandatud vaikekrüpteeringu režiimide muutmisega alates OpenSSH versioonist 5.2-st. SSH failiedastusprotokolli kasutatakse mitmetes failiülekande vahendites: SSH failiedastusprotokoll (SFTP) tuleneb FTP-st SSH kaudu; Turvakoopiaprotokoll (SCP) tuleneb RCP-st SSH kaudu; Failiedastus käsureaprotokolli FISH abil väljastati 1998, see tuleneb Unixi käsurea kasutamisest SSH kaudu. IETF-i standardid ei ole mõeldud nimetatud protokollide jaoks. IETF on koostanud hulgaliselt visandeid SFTP jaoks, kuid alates aastast 2006. aastast on nende arendamine seisatud, põhjustatuna vaidlustest teemal, et SFTP olevat failisüsteem. Transpordikihi turbeprotokoll (SSL) Kermit OpenSSH RFC 4251 RFC 4252 Peter Bright (2. juuni 2015). "Microsoft bringing SSH to Windows and PowerShell". Ars Technica. SSH Hardens the Secure Shell, Serverwatch.com "Prying Eyes: Inside the NSA's War on Internet Security". Spiegel Online. 28. detsember 2014. "BothanSpy". wikileaks.org. 06.07.2017. Vaadatud 25.10.2017. "SSH setup manual". Originaali arhiivikoopia seisuga 11. juuli 2017. Vaadatud 26. oktoobril 2017. port-numbers assignments at iana.org SSH Korduma kippuvad küsimused O'Reily: Secure Shell, The Definitive Guide SSH Insertion Attack SSH CRC-32 Compensation Attack Detector Vulnerability, SecurityFocus Nicholas Rosasco and David Larochelle. "How and Why More Secure Technologies Succeed in Legacy Markets: Lessons from the Success of SSH" (PDF). Quoting Barrett and Silverman, SSH, the Secure Shell: The Definitive Guide, O'Reilly & Associates (2001). Dept. of Computer Science, Univ. of Virginia. Originaali (PDF) arhiivikoopia seisuga 25. juuni 2006. Vaadatud 19. mail 2006. OSSH Information for VU#419241 "Plaintext Recovery Attack Against SSH". Originaali arhiivikoopia seisuga 11. jaanuar 2010. Vaadatud 4. märtsil 2010. OpenSSH - Changes since OpenSSH 5.1 ftp://ftp.ietf.org/ietf-mail-archive/secsh/2006-08.mail[alaline kõdulink]