KÉTKULCSOS TITKOSÍTÁS Történeti előzmények Az RSA algoritmust Rivest, Shamir és Adleman fejlesztették ki 1976-ban. Ennek első gyakorlati megvalósítása a PGP, amelynek első változatát Philip Zimmermann írta 1991-ben. Az internet klasszikus kommunikációs protokolljai mind nyílt szöveg alapúak (azaz a hálózaton az üzenetváltások nyílt szöveg formájában haladnak át, beleértve az esetleges jelszavakat is). Ennek oka, hogy ezek tervezésekor a biztonság kérdése még nem volt előtérben, hiszen a hálózat csak szakemberek szűk körének volt munkaterülete. Az SSH a Secure SHell rövidítése, távoli számítógépekre történő biztonságos belépést teszi lehetővé, kihasználva az RSA-algoritmus nyújtotta lehetőségeket. Minden valamirevaló UNIX/Linux rendszer szerves része, Windows operációs rendszereken is használható kliens-változata a putty.exe. L. bővebben: RSA-eljárás. http://hu.wikipedia.org/wiki/RSA-elj%C3%A1r%C3%A1s Simon Singh: Kódkönyv: a rejtjelezés és rejtjelfejtés története. Park Kiadó, 2002. Ködmön József: Kriptográfia. Az informatikai biztonság alapjai. ComputerBooks Könyvkiadó, Budapest, 1999. PGP. http://hu.wikipedia.org/wiki/PGP putty: www.putty.org/ putty: www.kfki.hu/cnc/ssh/putty/ putty: www.putty.hu/
Az SSH működése Célja, hogy biztonságos, azaz titkosított kapcsolatot teremtsen két számítógép között. Ehhez szükség van egy(megfelelően beállított) ssh kiszolgálóra a távoli gépen, és egy ssh kliensre a helyi gépen. A felhasználónak létre kell hoznia saját (helyi) gépén egy kulcspárt (ssh-keygen -t rsa), ezek a .ssh/ könyvtárban az id_rsa és id_rsa.pub nevű fájlokban találhatók, előbbi a titkos, utóbbi a nyilvános kulcs. A nyilvános kulcsot el kell juttatni az elérni kívánt távoli gépre, és el kell helyezni az ottani .ssh/authorized_keys nevű fájlban. A felhasználó hitelesítése a távoli gépen úgy történik, hogy az elküld egy véletlenszámot, melyet a felhasználó ott meglévő nyilvános kulcsával kódolt. Ha a felhasználó ezt dekódolni tudja, az azt jelenti, hogy birtokában van a megfelelő titkos kulcspár, tehát a távoli gép elfogadja a személyazonosságát. Amikor a felhasználó azonosságát elfogadja a szerver, akkor vagy végrehajtja a megadott parancsot, vagy belép a gépbe, és a felhasználónak egy szokásos shell-t ad a távoli gépen (gyakorlaton kipróbáltuk). Minden, a távoli parancsal 1
vagy shell-el történő kommunikáció automatikusan titkosítva lesz. Ha nincs a távoli gépen a felhasználónak nyilvános kulcsa a .ssh/authorized_keys fájlban, akkor normális, jelszó alapú hitelesítés is lehetséges, de az adatforgalom ez esetben is titkosított. A két gép közötti fájlátvitel (scp) ugyancsak titkosított. További, talán legfontosabb lehetőség a nem megbízható hálózati szolgáltatások megbízhatóvá tétele kaputovábbítás (portforward) útján, mintha VPN-t (virtual private network) használnák. Az SSH nemcsak a felhasználókat, hanem az adatcserében részt vevő gépeket is azonosítja a gépek megfelelő kulcspárjainak felhasználásával, a felhasználókhoz hasonlóan. A távoli gépek ismert, és hitelesnek elismert nyilvános kulcsai a .ssh/known_hosts fájlban találhatók. Ilymódon tehát az SSH megoldja a hitelesítés, a titkosítás és ráadásul az adatforgalom épségének biztosítását. Az SSH kiszolgáló megfelelő beállítása, illetve az ügyféloldali (lehetséges és szükséges) beállítások az idevágó leírások alapján végezhetők el. L. bővebben: man ssh: http://www.openssh.org/manual.html Dwivedi, Hirmanshu: SSH a gyakorlatban. Módszerek biztonságos hálózati kapcsolatok kialakítására. Kiskapu, 2004. Gagné, Marcel: Linux-rendszerfelügyelet. Kiskapu, 2002. Flickenger, Rob: Linux Server Hacks. O'Reilly & Associates, Inc., 2003. Hagen, Bill von – Jones, Brian K.: Linux Server Hacks, Volume Two. O'Reilly Media, Inc., 2006.
Port (kapu) Egy TCP kapu (port) nem más, mint egy virtuális kapu, amelyet különféle programok használhatnak adatok cseréjére a két számítógép között, (ideiglenes) fájlok használata nélkül. Hasonlatosak a hivatali ablakokhoz, ahol minden ablaknál más-más ügyintéző más-más ügyeket intéz. A kapuk sorszámozottak, 0tól 65.535-ig. Tipikusan szokásos kapuk: 21 22 23 25 80 110 143 3389
FTP (file transfer protocol) SSH (secure shell) telnet (titkosítatlan kapcsolódás adott gép adott portjára) SMTP (simple mail transfer protocol) – levélküldés HTTP (hypertext transfer protocol) – a megszokott böngészés POP3 (post office protocol) – levélfogadás IMAP (internet message access protocol) – levélfogadás remote desktop - windows távoli asztal kapcsolat
Mindennapi kommunikációs helyzetek Mindennapos probléma, hogy a vállalat munkatársainak távolról kell(ene) igénybe venniük különféle hálózati szolgáltatásokat, otthonról, vagy akár ellenérdekelt fél hálózatából. Mindennaposan szükséges hálózati szolgáltatások: le2
vélküldés, -fogadás, intranet böngészése, Windows programok távoli futtatása. Tegyük fel, hogy a munkatársak laptopokkal rendelkeznek, és akár otthonról, akár konkurens cégek hálózatából szükséges hozzáférniük a fent említett szolgáltatásokhoz. A munkatársak laptopjain lehet Linux vagy Windows operációs rendszer. Témánk szempontjából a különbség annyi, hogy az alább ismertetendő megoldásokat egyik (Linux) esetben parancssorból, illetve megfelelő scriptekből lehet elvégezni, a másik (Windows) esetben pedig a putty.exe futtatásával és különféle rovatainak értelemszerű kitöltésével. Egy másik problémás helyzet a magánszféra védelme. Internetezési szokásaink igen hely- és költségtakarékos módon lajstromozhatók készletező adatgyűjtés formájában. Bizonyos határok között ez kivédhető. A Pofakönyvön (facebook, de: iwiw, myvip stb. szintén) tálcán kínáljuk kapcsolati hálónkat az érdeklődőknek. Ezen túl, ha tudják valakiről, hogy milyen oldalakat látogat milyen rendszerességgel, milyen kereséseket szokott végezni, már rengeteget tud az illető személyiségéről, politikai irányultságáról stb. Van róla egy személyiségprofil. Ha csak azt tudják, hogy mikor, kivel vált drótpostát, annak tartalma nélkül, ugyancsak föltérképezték (aktív) kapcsolati hálóját. Egy url átlagos hosszát vegyük szerényen 40 karakternek. Tegyük föl, hogy naponta megnéz 50 különböző oldalt. Az országban van (2010. tavaszi adat) 1,8 millió szélessávú internet-előfizetés, kerekítsük 2 millióra. Az összes böngészés összes url adata naponta kitesz 3.815 MB-ot, egy teljes esztendőnyi adatmenynyiség pedig nem éri el a másfél TB-ot (1,36 TB). Mai áron 1 TB SATA csatlakozós merevlemez (PC-be) 16.000 magyar forint, áfástól, kiskerben. 4 TB SATA HDD 43.000 Ft (Seagate 3.5" Barracuda 7200rpm 64MB SATAIII winchester ST4000DM000)... A drótposták metaadataira vonatkozóan mindenki elvégezheti önállóan a számítást: feladó, címzett címe, küldés dátuma, üzenet mérete adatokkal. L. bővebben: PRISM (surveillance program) http://en.wikipedia.org/wiki/PRISM_%28surveillance_program%29 Bodnár Ádám: PRISM: nincs itt semmi látnivaló! http://www.hwsw.hu/hirek/50411/prism-fisa-jog-kozossegi-web-megfigyeles.html
Levelezés email klienssel – Thunderbird Elektronikus levelezést többféleképpen lehet végezni: a) webes felületen (http, https protokoll), az ingyenes szolgáltatások többsége ilyen, vagy elsősorban ilyen (g-, free-, citro-, vip-, hotmail stb.); b) levelező kliensprogrammal, grafikus felületen (Mennydörgő Madár, Kitekintő Gyorsvonat stb.), POP3/IMAP és SMTP protokoll használatával c) egyéb, parancssori kliens használatával (mutt, pine, nail stb.). Tekintettel arra, hogy számítógépes környezetünkben legfőbb érték az adat, ezért kritikus fontosságú a rendszeres biztonsági mentés többek között levele3
zésünkről is. Ha levelező klienst használunk és IMAP protokollt, akkor a biztonsági mentés – megfelelő beállítások esetén mintegy mellékesen – önműködően megtörténik. Az IMAP protokoll használata során a helyi gépen, a levelező klinessel létrehozott levélmappákat a kliens szinkronizálja a kiszolgálóval, miután a leveleket onnan letöltötte saját gépünkre. Így tehát levelezésünkről van két egyenértékű másolatunk, ráadásul ha idegen gépről kell elérjük levelezésünket, a webmail továbbra is használható böngészővel. Korlátok csak annyiban vannak, hogy adott szolgáltató nyújt-e nemcsak webmail, hanem IMAP/SMTP protokollon is szolgáltatást (a Gmail igen). További előny, hogy a kliens egyszerre és egységes szerkezetben több különböző postafiókot (személyazonosságot) is képes kezelni. A POP3 használata esetén a kiszolgálón semmilyen szinkronizálás nem történik, a levelek letöltése után azok a kiszolgálóról rendszerint törlődnek. Alapvető beállítások Amit mindenképpen tudni kell: beérkező és kimenő levelek kiszolgálója (gépnév, port, protokoll; nem muszáj külön gép legyen), a felhasználó azonosításának módja, esetleg különféle technikai paraméterek a finomhangoláshoz. Egyes esetekben a levelező kliens képes önműködően elvégezni a beállítást. Mennydörgő Madár esetén Az órán próbált esetben, tanszéki kiszolgálónkkal a következő az eljárás. A program első futtatásakor elindul a postafiók-beállító tündér vagy varázsló. Ha evvel nem élünk, vagy később szeretnénk újabb postafiókot beállítani, az Edit menü Account settings pontjában az Account actions gombot és az Add mail account lehetőséget választjuk. Megadandó adatok a beérkező levelekhez: saját (ál)nevünk, a postafiókhoz tartozó emilcím, opcionálisan a Reply-to cím, ha különbözik az előzőtől. Server settings: gépnév, port, felhasználónév, Connection security (kapcsolat biztonsága), Authentication method (felhasználó azonosításának módja). Az Advanced lehetőségek között szükséges lehet a Maximum number of server connections to cache értékének csökkentése 1-re vagy 0-ra. Majd a kimenő levelek útját kell beállítani (Outgoing server – SMTP), hasonlóan a beérkező levelek esetéhez. Gmail.com: Részletes leírások találhatók1 a világhálón a „gmail imap settings” vagy „gmail imap beállítások” kifejezésre keresve (idézőjelek nélkül). SSH-alagút Órán a tanszéki kiszolgáló beállításai miatt ssh-alagutat kellett létrehozni a géptermi gépek és a kiszolgáló között. Ennek lényege: a kiszolgáló úgy van beállítva, hogy továbbküldésre levelet csak saját magától (helyi felhasználótól) fogad el, tehát még a géptermi gépektől sem. Az ssh-alagút a géptermi gép valamely portját köti össze a tanszéki kiszolgáló adott portjával úgy, hogy a kiszolgáló azt „érzi”, hogy saját magától kapja a továbbítandó levelet, a gépter1 pl. http://support.google.com/mail/answer/78892?hl=hu
4
mi gépek pedig azt „érzik”, hogy az SMTP (ill. IMAP) szolgáltatás helyben, saját magukon üzemel. A szükséges parancsok: ssh -p 8192 -f -N -L 2525:localhost:25 t224**@193.225.224.240 ssh -p 8192 -f -N -L 1143:localhost:143 t224**@193.225.224.240
aholis: -p 8192: kiszolgálónkon az ssh szolgáltatás nem a megszokott 22-es porton figyel, hanem a 8192-es porton. -f: indítás után az ssh a háttérben fog futni, azaz visszakapjuk a parancssori promptot. -N: nem hajt végre a kiszolgálón parancsokat, csak kaputovábbítás (port forward) történik. -L 2525:localhost:25: a helyi (géptermi) gép 2525-ös portját köti össze a távoli gép 25-ös portjával oly módon, hogy a távoli gépen ez belülről, saját magától érkezőnek (localhost) látszik. t224**@193.225.224.240: felhasználónév és távoli gép/kiszolgáló megadása. A csillagok az egyes gépek IP címéből képzett számot jelentik (1-től 30-ig). Jelszót kér, de megoldható lenne titkos-nyilvános kulcspár alapján is a felhasználó hitelesítése, azonban az ssh kulcspárgenerálást, majd a nyilvános kulcs távoli gépre történő elhelyezését nem vettük. Alapműveletek Levél írása (Write gomb vagy Ctrl-M) és küldése (Send gomb vagy Ctrl-Enter). Esetlegesen beérkezett új levelek soron kívüli lekédezése (Get mail gomb). Új levélmappa létrehozása (jobb egérgomb a baloldali mappalistában a szülő mappára, majd New folder...). Levelek mozgatása a beérkezettek mappájából (Inbox) máshová: egérrel át lehet húzni, vagy billentyűzetről a Message menü, Move to menüpont, tovább értelemszerűen; az Alt-M, M stb. billentyűkkel is végezhető egér nélkül (tíz ujjal vakon gépelni tudók számára áldás). Digitális aláírás, titkosítás A Mennydörgő Madárhoz telepíthető az Enigmail 2 kiegészítő, ügyeljünk az operációs rendszer fajtájára és a Mennydörgő Madár változatszámára. A bővítmény telepítése után első lépésben létre kell hozni saját kulcspárunkat, az OpenPGP menüben (Key management / Generate). Ennek során – véletlenszámok előállításának megkönnyítése érdekében – a kulcsgenerálás megkezdésekor intenzív lemezhasználatra kér bennünket, amelynek legegyszerűbb
2 pl. http://www.enigmail.net/download/index.php 5
módja a böngészés: gyors egymásutánban tetszőleges linkekre kattintgatunk 5-10 alkalommal. A kulcsgeneráláskor jelszó megadását javasolja a program: saját titkos kulcsunkat védhetjük jelszóval: ha sikerülne eltulajdonítania valakinek a titkos kulcsunkat, akkor azt még mindig védi a jelszó – ha az elég erős, akkor sokáig védi. Ennek persze „ára van”: időnként be kell írnunk azt. A jelen programváltozatban a jelszónak legalább 8 karakter hosszúságúnak kell lennie. Aláírt levél küldése: elküldés előtt az OpenPGP menüben kiválasztandó a Sign message menüpont (vagy beállítandó alapértelmezettnek). Ekkor kérheti a titkos kulcsunk jelszavát. Nyilvános kulcs elküldése: levélírás, OpenPGP menü, Attach my public key menüpont. Ezt a levelet nem érdemes még aláírni, nyilvánvalóan (az aláírás ellenőrzéséhez szükséges nyilvános kulcsunkat még csak most küldjük...). Nyilvános kulcs importálása: a megkapott nyilvános kulcsokat importálni kell. A levélmellékletként érkező nyilvános kulcs (csatolmány neve ilyesmi: 0xEA6848D2.asc) importálása úgy történik, hogy jobb egérgombbal helyi menüt kérünk, majd abból kiválasztjuk a kulcs importálása pontot. Az importált nyilvános kulcsot ellenőrizni kell (ellenőrző összeg, fingerprint öszszeolvasása), hogy valóban ahhoz a személyhez tartozik-e, akiének a látszat mutatja (vö. közbeékelődéses támadás, MITM). Ha ezt megnyugató módon ellenőriztük, alá kell írnunk (Key management, jobb gomb, Sign key). Itt van lehetőségünk még arra is, hogy az ellenőrzés mértékét, alaposságát illetően különbségeket tegyünk. Ne felejtsük: a nyilvános kulcsú titkosításnál két kritikus fontosságú mozzanat, biztonsági szabály van: a titkos kulcsunknak titokban kell maradnia, a begyűjtött nyilvános kulcsokat pedig ellenőrizni kell, hogy tényleg a megfelelő személyhez tartoznak-e. Ha olyan feladótól kapunk aláírt emilt, akinek a nyilvános kulcsát korábban importáltunk, akkor több lehetőség van: •
zöld mezőben a Good signature felirat jelenik meg az emil olvasásakor (ha az importált kulcsot ellenőriztük, és aláírtuk), ha minden rendben van;
•
piros mezőben az Error verifying signature felirat jelenik meg (az aláírás ellenőrzése hibát jelez: az üzenet tartalma megváltozott útközben, vagy a feladó hamis vagy mindkettő);
•
kék mezőben az Untrusted good signature felirat azt jelzi, hogy az aláírás ellenőrzése – matematikailag – rendben van, csak azt nem tudjuk, hogy az ehhez használt nyilvános kulcs valóban az aláíróé-e.
Ha a feladó nyilvános kulcsa nem áll rendelkezésünkre, akkor sárga mezőben az Unverified signature feliratot látjuk. Titkosított levél küldéséhez előbb be kell gyűjtenünk a címzett(ek) nyilvános kulcsát (kulcsait). Ha ez(ek) rendelkezésre áll(nak), akkor nincs más dolgunk, mint levélíráskor az OpenPGP menüben kiválasztani az Encrypt message me6
nüpontot. Több címzett esetén mindenkinek a megfelelő kulccsal történik a titkosítás. L. bővebben: EnigMail – openpgp email security for mozilla applications. The Handbook. Written by Daniele Raffo with Robert J. Hansen and Patrick Brunschwig, v 1.0.0. https://www.enigmail.net/documentation/Enigmail_Handbook_1.0.0_en.pdf
Egyéb lehetőségek SSH alagutak alkalmazásával megoldható a biztonságos(abb) böngészés, az intranet biztonságos elérése, távoli Windows kiszolgálón biztonságos programfuttatás stb.
7