Difference: SSH(2-A) (r2 vs. r1)

SSH (2-A)

SSH:n pohjalla olevista protokollista (versiosta 2) tuli vuoden 2006 alussa IETF:n standardi (RFC 425x, x=0,...,4). Nimeä SSH käytetään sekä näistä protokollista, niitä käyttävästä ohjelmistosta että sen takana olevasta yrityksestä SSH Communications Security, jonka tuotteen nimi on nykyään SSH Tectia ( flash-esittely). Monet muutkin tekevät vastaavaa ohjelmaa ( F-Secure, OpenSSH, ...).

SSH-protokollassa on SSL:n tapaan erillisiä osia, ja IPsecin tapaan ne on esitelty eri RFC-dokumenteissa: käyttäjän autentikointi on SSH:n ylin kerros (RFC 4252), kuljetusosa mm. autentikoi palvelimen ja sen rooli vastaa koko SSL:ää (RFC 4253), ja yhteyskerros mahdollistaa usean istunnon kanavoinnin saman yhteyden sisään (RFC 4254).

Protokollan (siis version 2) alussa luodaan istuntoavain Diffie-Hellman -avaimenvaihdolla, jonka palvelin autentikoi allekirjoituksellaan. Aiemmin tähän käytettiin palvelimen pysyvän julkisen avaimen lisäksi sen ilmoittamaa tunneittain vaihtuvaa julkista avainta, ja istuntoavain laskettiin kättelyssä käytetyistä arvoista vähän SSL-kättelyn tapaan.

Seuraavassa katsotaan lähinnä käyttäjän näkökulmasta, miten etäkoneelta (tässä "mikrolta", mutta voisi olla muukin) otetaan SSH:lla yhteys Unix-koneeseen. Oleellista kaikissa tapauksissa on se, että ensin tapahtuu edellä mainittu kohdekoneen eli palvelimen autentikointi ja vasta sitten käyttäjän. Edellinen tapahtuu (molemmissa versioissa) julkisen avaimen periaatteella eikä siinä tarvitse välittää salakuuntelulle altista autentikointidataa -- toisin kuin mahdollisesti käyttäjän autentikoinnissa.

SSH:n asiakasohjelman asentamisen jälkeen/yhteydessä mikron käyttäjä luo oman julkisen avaimensa generointiohjelmalla, joka kysyy

  • avaimeen liitettävää kommenttia: kenen avain (esim. sähköpostiosoite);
  • "loitsun" eli salauslauseen ('passphrase'), jolla luotava yksityinen avain salataan ja tulos talletetaan valitun nimiseen tiedostoon radix-64-koodattuna otsikkokenttien väliin.
  • kryptosysteemin: RSA vai DSA, ja avaimen pituuden eli moduulin bittien määrän (minimi 768). Julkisen avaimen talletus on vastaava kuin yksityisen mutta ilman salausta ja tiedostonimelle jatke 'pub'.

Satunnaislukugeneraattorin tarvitsema siemenluku syötettiin aiemmin hiiren liikuttelulla. Nykyään aitoa satunnaisuutta, entropiaa, haetaan tietokoneen sisäisistä prosesseista fysikaaliselta tasolta asti.

Yhteydenotto SSH:lla tapahtuu kohdekoneessa toimivaan SSH-demoniin, joka Unix-koneessa on nimeltään sshd. Se kuuntelee TCP-porttia 22.

Tapaus 1, perusmalli

  1. Kohdekoneen julkinen avain on asennettu mikrolle etukäteen (muistitikulta, verkon kautta tai miten vain) ja
  2. mikron (käyttäjäkohtainen) julkinen avain on tallennettu käyttäjän henkilökohtaiseen hakemistoon kohdekoneella.

Yhteyden luontia varten annetaan mikrolle kohdekoneen nimi, käyttäjätunnus sekä loitsu, jolla mikrolla olevan yksityisen RSA-avaimen salaus puretaan. Tämän jälkeen SSH suorittaa istuntoavaimen vaihdon siten, että autentikointi perustuu kummankin osapuolen toisesta tietämään julkiseen avaimeen. Salasanaa ei siis käytetä. Tämän jälkeen kommunikointi salataan käyttämällä CBC-moodissa jotain useasta vaihtoehtoisesta algoritmista: AES (128-, 192- tai 256-bittisellä avaimella, ja samoin Twofish), kolmois-DES (kolmella avaimella) Blowfish, CAST, Arcfour tai tavallinen DES. Ketjuttava salausmoodi on oleellinen, sillä näppäimistön käyttäjä viestittää yleensä merkki kerrallaan, eikä sama näppäin saa tuottaa eri kerroilla samaa salatekstiä. Laskurityyppinen moodi olisi myös mahdollinen.

Tapaus 2. Jos kohdekoneen julkista avainta ei ole mikrolla, SSH kysyy sen kohdekoneelta. Tällöin on kaksi mahdollisuutta

  • perinteisessä tavassa käyttäjällä ei ole oikeastaan muuta vaihtoehtoa kuin hyväksyä se ainakin siksi kerraksi. Hyväksymisen tukena voi olla muuta kautta tehty tarkistus, jossa käyttäjä vertaa tarjotun avaimen tiivistettä.
  • uudemmissa versioissa asiakasohjelma saa avaimen mukana varmenteen, jonka se voi todentaa -- tietenkin vain jos sillä on tiedossa varmentajan avain ja luottamus siihen.

Tapaus 3. Jos mikron julkista avainta ei ole kohdekoneessa (käyttäjän omalla alueella), tai sitä ei haluta käyttää, yhteyden aloittamiseksi tarvitaan käyttäjän salasana kohdekoneessa ja tietysti myös kohdekoneen julkinen avain (tapauksen 1 tai 2 mukaisesti). Kohdekoneen autentikoiduttua mikrolle salasana kuljetetaan istuntoavaimen suojaamana.

Tunnelointi. Sshd sekä SSH (siis client) kykenevät tarvittaessa salaamaan minkä tahansa TCP/IP-yhteyden. Tästä käytetään usein nimitystä tunnelointi tai TCP/IP:n portin uudelleenohjaus (-forwardointi). Tällöin sshd tai SSH-asiakasohjelma asetetaan kuuntelemaan jotakin muuta(kin) porttia kuin 22, esim. HTTP-protokollan käyttämää 80:ä. Tähän porttiin (sovellusohjelmalta) tuleva liikenne kuljetetaan sitten salatun yhteyden läpi kohdekoneen vastaavaan porttiin. Tämä merkitsee sitä, että SSH toimii proxy-palvelimena (siis samassa koneessa kuin sovellusasiakasohjelmakin, esim. selain).

Asian voi toteuttaa toisinkinpäin: SSH tunneloi Unix-koneissa käytettävän X-ikkunoinnin liikenteen automaattisesti luomalla proxy-X-palvelimen etäkoneeseen. Ikkunat näyttävä X.11-palvelinhan on käyttäjän koneessa.

Tunneloinnilla kuten SSH-pääteyhteyksillä yleensäkin saavutetaan osapuolten autentikointi ja viestinnän luottamuksellisuus, mutta on tietenkin eri asia, millaisia päätteitse käytettävät ohjelmat ovat. Erityisesti X-ikkunoinnissa on omat riskinsä, sillä etäkoneessa oleva sovellus hallitsee ikkunan kautta täysin tiettyä prosessia käyttäjän koneessa. Jos siihen on onnistuttu asentamaan Troijan hevonen, ei tunneloinnista tietenkään ole apua.

Hyödyllinen tunneloitava protokolla olisi tiedostonsiirron FTP, mutta SSH-toteutuksiin kuuluu SFTP, jolla saadaan aikaan vastaava toiminnallisuus. Toinen SSH-toteutusten tarjoama mekanismi on SCP, joka toimii kuin cp eli Unixin tiedoston kopiointi (oikeastaan rcp eli remote), mutta on s eli secure.

TTY:n lisensoima SSH Communications Security'n SSH2-asiakasohjelma löytyy paikalliselta intranet-sivulta. SSH on saatavana myös ilmaisohjelmana, alussa mainittu OpenSSH? on sellainen.

-- JukkaKoskinen?

SivuTiedotLaajennettu edit
Vaativuus Perus
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Tite-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa

View topic | View difference side by side | History: r2 < r1 | More topic actions
 
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback