A hagyományos titkosítási módszerek egyetlen kulcsot használnak kódolásra. A feladó ezzel a kulccsal titkosítja az üzenetet. A címzettnek a visszafejtéshez ugyanerre a kulcsra van szüksége. Ezt a kulcsot oly módon kell eljuttatni a címzetthez, hogy másoknak ne legyen lehetőségük a megszerzésére. Ha bárki másnak is megvan ez a kulcs, a titkosítás ezen módszere haszontalan.
Az úgynevezett nyílt kulcsok használatával megoldhatjuk ezt a problémát. A nyílt kulcsok eljárásnál két kulcsot használunk. Az egyik egy nyilvános kulcs amit bármilyen úton-módon terjeszthetünk és bárki megszerezheti. A másik kulcs a titkos kulcs. Ez titkos és nem szabad terjeszteni. Ehhez a kulcshoz csak a tulajdonosának szabad hozzáférnie. Ha a rendszert jól valósítják meg a nyilvános kulcsból nem határozható meg a titkos kulcs. A küldő a címzett nyilvános kulcsával kódolja az üzenetet. A dekódolás a címzett titkos kulcsával történik.
Ebben
a módszerben létfontosságú, hogy a titkos kulcs titkos maradjon, senkinek nem
adhatjuk oda és azt is biztosítani kell, hogy ne is férhessen hozzá más csak a
kulcs tulajdonosa. SOHA NE KÜLDJÜK EZT A KULCSOT AZ INTERNETEN KERESZTÜL! Továbbá
nem túl bölcs dolog a GnuPG-t telnet
-en keresztül használni. (A nagy
biztonsági kockázat miatt egyáltalán nem célszerű telenetet használni. Alternatívaként
például használhatjuk az ssh
-t -a ford.)
Annak bizonyítására, hogy egy üzenetet valóban az állítólagos feladó küldte, kitalálták a Digitális Aláírást. Ahogy azt a neve is mutatja az üzenetet a küldő digitálisan aláírja. Ezzel az aláírással ellenőrizhető egy üzenet valódisága. Így csökkenthetjük annak veszélyét, hogy trójai lovat kapunk (ez egy olyan file, ami pl. azt állítja hogy javítás valamely problémára de valójában egy vírust tartalmaz vagy a számítógépeden levő adatokkal tesz valamit). Információk és adatok legális forrásból való származását is ellenőrizhetjük vele amiket ezáltal hitelesnek tekinthetünk.
Digitális aláírást a titkos kulcs és a szöveg kombinálásával hozunk létre. A küldő nyilvános kulcsát használva ellenőrizhető az üzenet. Nemcsak a küldő személye ellenőrizhető hanem a tartalom is. Tehát tudhatjuk, hogy az üzenet tényleg a feladótól jött és a továbbítási folyamat során nem változott meg.
A nyílt kulcsú algoritmusok gyenge pontja a nyilvános kulcsok terjesztése. Egy felhasználó hamis kóddal rendelkező felhasználói azonosítót juttahat be a rendszerbe. Ha ezzel a kóddal küldenek üzeneteket a behatoló dekódolhatja és elolvashatja a (nem neki szánt) üzeneteket. Ha ezután a címzett eredeti nyilvános kulcsával kódolja a visszafejtett üzenetet majd ezt továbbküldi az eredeti címzettnek a támadás nem észrevehető.
Ennek a problémának a feloldására a PGP (és ezáltal automatikusan a GnuPG is) a kulcsok aláírását használja. Egy nyilvános kulcsot mások is aláírhatnak. Ezek a további aláírások azt igazolják, hogy az adott UID (User Identification, felhasználó azonosító) által használt kulcs valóban ahhoz a személyhez tartozik mint állítja. Ezután már a GnuPG használóján múlik mennyire bízik meg az aláírásban. Megbízhatónak tekinthet egy kulcsot ha megbízik a kulcs küldőjében és biztosan tudja hogy a kulcs valóban ahhoz a személyhez tartozik. Kizárólag akkor bízhatunk meg az aláírásban ha megbízunk az aláíró kulcsában. Ha abszolút biztosak akarunk lenni abban, hogy a kulcs valódi, megbízható csatornákon keresztül össze kell hasonlítanunk az ún. ujjlenyomatokat.
Ha olyan adataink vannak amelyeket titokban szeretnénk tartani, nem elég azt eldönteni hogy milyen kódoló algoritmust használjunk. Át kell gondolnunk a teljes biztonsági rendszerünket. Alapvetően biztonságosnak tekintjük a PGP-t és ezen leírás készítésekor a szerzőnek nem volt tudomása egyetlen olyan esetről sem ahol a PGP-t feltörték volna. Ez nem jelenti azt, hogy minden amit kódoltunk biztonságban van (például sem az NSA, az amerikai Nemzeti Biztonsági Ügynökség nem fog értesíteni minket arról hogy valahogy sikerült feltörniük a PGP-t sem mások, akik mindenféle rossz szándékból törnek kódot). De még ha a PGP teljesen feltörhetelen is, vannak más módjai is a biztonság elleni támadásnak. Február elején találtak egy olyan trójai vírust amely a winchesteren megkereste a titkos PGP kulcsokat majd FTP-n keresztül elküldte őket valakinek. Ha a jelszót (amit a titkos kulcs tárolás közbeni kódolására használunk) rosszul választottuk meg a titkos kulcs könnyen kinyerehető.
Egy másik technikai lehetőség (bár sokkal bonyolultabb) olyan trójai vírusok használata amelyek a billentyűzetleütéseket küldik el valahova. Szintén lehetséges (de nagyon nehéz) a képernyő tartalmának "lehallgatása". Ilyen esetekben nincs szükség az üzenetek feltörésére. Mindezen kockázati tényezők figyelembevételével egy jól átgondolt biztonsági tervet kell készíteni amit életbe is léptetünk.
Nem az a célunk hogy paranoiát keltsünk az emberekben, hanem hogy rámutassunk milyen sokat kell tennünk ahhoz hogy nagyobb biztonságot teremtsünk. A legfontosabb hogy megértessük, a titkosítás csak egy lépés a biztonság felé és nem egy teljes megoldás. Ahogyan azt az 1999 márciusában feltűnt Melissa vírusbeli trójai programok bebizonyították, sok társaság nincs felkészülve rájuk.
A hivatalos letöltési hely: GnuPG Honlap. Ezen a helyen linkeket találunk a tükörhelyekhez.
Jogi korlátozások miatt nem szabad USA-beli szerverekről letölteni a GnuPG-t. Az USA-ban korlátozások vannak érvényben a titkosító programok kivitelét illetően. Ez az oka annak, hogy a PGP mindíg egy nemzetközi és egy nemzeti (az USA-n belüli) változatban is elérhető. A nemzetközi verzió esetében a forráskódot nyomtatott formában, könyvként vitték ki az országból. Ezután Európában (Oslóban) beszkennelték. A témával kapcsolatban további információk a Nemzetközi PGP Honlapon találhatók. A PGP nemzetközi változata szabadon importálható az Egyesült Államokba amíg nem exportálják tovább.
Változás: 2000 januárjában az amerikai kormány enyhített az exportkorlátozásokon és nyílt forráskódú titkosító programok forráskódja felteheteő letöltésre a hálózatra, csak egy értesító emailt kell küldenie a megfelelő címre. Nekünk ez annyit jelent, hogy az USA-ból is szabadon letölthetők és használhatók az ilyen programok (amíg demokrácia van nálunk és nem akarják korlátozni ezek használatát.).
Ha valaki már felinstallálta a GnuPG-t vagy a PGP-t, ellenőrizze a file aláírását. (lásd Aláírások).
A GnuPG-hez Debian csomagként, RPM csomagként (Redhat Package Manager) vagy forráskódként juthatunk hozzá. A csomagok bináris file-ként installálódnak a linux platformokhoz szükséges segédprogramokkal együtt. Ha más platformon szeretnénk használni a GnuPG-t, le kell fordítanunk magadnak. Nagyon szívesen vennénk ha a más platformokhoz készített eltérő installálási módszereket hozzáférhetővé tennéd a széles tömegek számára.
Mivel a fejlesztés legnagyobb része Linuxon (x86) történik, más rendszerekre való átvitele nem okozhat különösebb problémát. A GnuPG-t támogató operációs rendszerek aktuális listája a GnuPG Honlapon található meg. Az alábbiakban leírt eljárás meglehetősen platformfüggetlen. Az ismertetett eljárás a forráskódból történő GnuPG installálást írja le.
Bontsuk ki a tar csomagot a következő paranccsal:
tar xvzf gnupg-?.?.?.tar.gz
A kibontás után lépjünk a forráskódot tartalmazó könyvtárba. Itt adjuk ki a
./configure
parancsot.
Ha így teszünk, semmi különleges nem történik. Ha a
./configure --help
parancsot
adjuk ki, megnézhetjük a fordítás rendelkezésre álló beállítási lehetőségeit.
Ha problémák merülnének fel a nemzetköziesítéssel kapcsolatban (GET text), a --with-included-gettext
opció használatával megadhatunk másikat vagy kikapcsolhatjuk a --disable-NLS
kapcsoló használatával.
Ezek után a fordítás a
make
parancs
kiadásával történik. A fordításnak probléma nélkül le kell futnia. Ha mégis felmerülne
bármilyen probléma, a következők szerint járjunk el (az itt olvashatókkal megegyező
sorrendben): Először próbáljuk meg magunk megoldani a dolgot (természetesen a
rendelkezésre álló dokumentáció segítségével). Ezek után bizonyosodjunk meg arról
hogy ez nem egy ismert hiba (ellenőrizd a http://www.gnupg.org-on található BUGS
file-t). Ezután kérdezzünk meg valaki ismerőst. Ha mindezen lépések nem oldják
meg a problémát küldjük el egy levélben a GnuPG levelező listára (lásd Információforrások).
Ha a probléma az elérési utakkal van kapcsolatban, próbáljuk meg kiadni a make
clean
majd a configure
parancsot majd próbáld újra lefordítani.
Ha ez sem működik ideje pánikba esnünk.
Írjuk be:
make install
Ez
másolja be ténylegesen a programot és a man oldalakat az install könyvtárba. Ha
a ./configure kiadásakor nem változtattuk meg az install könyvtárat ez a usr/local/share/gnupg/
könyvtár lesz. Ezt a könyvtárat az options.skel
file-ban talájuk
meg. Ha ezt átmásoljuk a ~/.gnupg/options
file-ba a benne található
beállítások lesznek az alpértelmezettek. A másolás elvileg a ~/.gnupg/
létrehozásakor automatikusan megtörténik. A lehetséges beállítások jól dokumentáltak
ezért az itt való ismertetésük nem szükséges.
A
GnuPG-t futtahatjuk suid root-kent is. Ezáltal a program a superuser összes jogával
fut. Ha így teszünk kizárjuk annak lehetőségét, hogy a program bizonyos részei
kívül tárolásra kerüljenek és ezáltal bárki számára olvashatóvá váljanak. Én magam
nem tudom megítélni ennek kockázatát. Annak aki suid root-ként futtatja a programot
tudatában kell legyen a trójai programok veszélyének. Egy root jogokkal futó trójai
program az egész rendszert tönkreteheti. Ha ezen okból (vagy más okból) úgy döntünk
hogy nem suid root-ként futtatjuk a GnuPG-t, a figyelmezetetéseket a no-secmem-warning
beállításával kapcsolhatjuk ki a ~/.gnupg/options
file-ban.
A
gpg --gen-key
paranccsal
egy új kulcspárt készíthetünk (kulcspár: titkos és nyilvános kulcs). Az első kérdés
az, hogy milyen algoritmust használjunk. Az algoritmusokról bővebben a PGP
DH és az RSA összehasonlítása GYIK-ban olvashatunk vagy az Alkalmazott
kriptográfiá-ban. Használjuk az alapértelmezett DSA/ ElGamal kódolást. Ez
nem szabadalmaztatott algoritmus tehát a használatát sem korlátozza semmi.
A következő kérdés a kulcs hossza. Ez egy nagyon felhasználótól függő dolog. Választanunk kell biztonság és számítási idő között. Ha egy kulcs hosszabb, az üzenet elfogása esetén a feltörés kockázata csökken. Ugyanakkor a hosszabb kulcs hosszabb számítási idővel jár együtt. Ha a számítási idő fontos számunkra akkor is figyelembe kell vennünk hogy esetleg évekig nem használjuk a kulcsot mialatt a törésre használható számítási teljesítmény jelentősen megnő. A GnuPG által megkövetelt minimális kulcshossz 768 bit. Lehet hogy néhányan azt mondják 2048 bites kulcs kell (ami jelenleg egyben a maximum is a GnuPG-ben ). A DSA-ban az 1024 bit a szabvány méret. Ha a biztonság mindenekfeletti prioritást élvez, a lehetséges legnagyobb kulcsméretet válasszuk.
Ezután a rendszer bekéri a neveket, megjegyzéseket és e-mail címeket. Az itt megadott adatok szolgálnak a kód azonosítására. Később ezek módosíthatók. Lásd Kulcspárok adminisztrációja. Célszerű hosszabb érvényes e-mail címet választani mivel a teljes felhasználói azonosító aláírásra kerül. Ha a címet megváltoztajuk, az aláírás nem lesz érvényes a megváltoztatott adatokkal.
Végül meg kell adnunk egy jelszót (vagy inkább jelmondatot, mivel szóközök is megengedettek). Ez a jelszó biztosítja a titkos kulcshoz kapcsolódó funkcionalitást. Egy jó jelszó (jelmondat) a következő tulajdonságokkal rendelkezik:
Miután mindent megadtunk a rendszer legenerálja a kulcsokat. Ez némi időt vesz igénybe. Ez alatt az idő alatt rengeteg véletlen adatot kell gyűjtenie. Segíthetjük a rendszert a változó véletlen adatok gyűjtésében azzal ha egy másik képernyőn dolgozunk. Ahogy mostanra bizonyára megértettük, a kulcs mindíg más lesz. Ha 5 perc különbséggel generálunk két kulcsot ugyanazokkal az adatokkal két különböző kulcsot kapunk. Most már érthető miért nem szabad elfelejtenünk a jelszót.
A
gpg --export [UID]
parancs
az adott UID-hez tartozó kulcsot exportálja. Ha nem adunk meg UID-t akkor az összes
jelenlegi kulcsot exportálja a program. Alapértelmezésben a kimenetet a stdout
-ra
küldi, a -o
kapcsolóval átirányíthatjuk egy file-ba. Tanácsos a -a
kapcsolóval kimenteni a kulcsot mivel ekkor egy 7-bites kódolású ASCII file-t
hoz létre.
A nyilvános kulcs exportálása nagyobbra nyithatja előttünk a világot. Ezzel a lépéssel lehetőséget biztosítunk mások számára arra hogy biztonságosan vehessék fel velünk a kapcsolatot. A kulcsot feltehetjük a web-oldalunkra, elérhetővé tehetjük a finger útján, egy kulcs szerveren keresztül vagy bármilyen más módon ami csak eszünkbe jut.
Amikor megkapjuk valakinek a nyilvános kulcsát (vagy néhány nyilvános kulcsot) el kell helyeznünk azt a kulcskarikánkon ahhoz hogy használni tudjuk. Az erre szolgáló parancs a
gpg --import [Filename]
ahol
a Filename az a file amelyik az importálandó kulcso(ka)t tartalmazza. Ha nem adunk
meg filenevet a program a stdin
-ról olvas.
Különböző okoból lehet szükségünk egy kulcs érvénytelenítésére. Például ellopták a titkos kulcsot vagy rossz kezekbe került, megváltozott a UID, a kulcs már nem elég hosszú stb. A kulcsunkat a
gpg --gen-revoke
paranccsal
érvénteleníthetjük. Ekkor a program létrehoz egy érvénytelenítési igazolást. Ahhoz
hogy ezt megtehessük, szükségünk van a titkos kulcsunkra, különben bárki
érvényteleníthetné a kulcsunkat. Ennek van egy hátránya is. Amennyiben elfelejtjük
a jelszót a kulcs használhatatlanná válik. De így a kulcsot nem tudjuk érvényteleníteni!
Ezen probléma elkerülésére bölcs dolog a kulcspárunk létrehozásakor létrehozni
egy érvénytelenítési igazolást. Ha viszont így teszünk nagyon vigyázzunk rá! Tárolhatjuk
lemezen, papíron stb. Gondoskodjunk róla hogy ne kerüljön rossz kezekbe!!!!. Ha
nem így teszünk bárki akinek kezébe került felhasználhatja és ezáltal a kulcsunkat
használhatatlanná teheti.
A kulcskarika egy file amit egyfajta adatbázisnak tekinthetünk. Ebben a file-ban található meg az összes kulcs a hozzátartozó információkkal együtt (minden információ az ún. Ownertrust értékek kivételével). Erről részletesebben a Kulcs aláírása) részben olvashatunk. A
gpg --list-keys
parancs
hatására a kulcskarikánkon található összes kulcs kilistázódik. Ha a hozzájuk
tartozó aláírásokat is ki szeretnénk listáztatni a
gpg --list-sigs
parancsot
adjuk ki (lásd a Kulcs aláírása szekciót
bővebb információkért). Ha a kulcsokat a hozzájuk tartozó ujjlenyomatokkal együtt
szeretnénk látni a
gpg --fingerprint
parancsot
kell kiadnunk. Az ujjlenyomatok rövid számsorok melyekkel a kulcsokat azonosíthatjuk.
Ez például arra jó hogy meggyőződjünk arról hogy valaki tényleg az akinek mondja
magát (például egy telefonbeszélgetésben). Ennek a parancsnak a kimenete viszonylag
kis számokból áll. A titkos kulcsok kilistázására a
gpg --list-secret-keys
parancs
szolgál. Megjegyezzük hogy privát kulcsokból történő ujjlenyomat és aláírás listázásank
nincs értelme. Egy nyilvános kulcs törlésére a
gpg --delete-key UID
parancs.
míg egy titkos kulcséra a
gpg --delete-secret-key
szolgál.
Egy fontosabb kulcskezelő parancs maradt még, a
gpg --edit-key UID
Az
ezt követő menüben egyebek között megváltoztathatjuk a jelszót és a kulcs lejárati
idejét, ujjlenyomatot adhatunk hozzá és aláírhatjuk amiről a következő fejezetben
lesz szó.
Mint már korábban említettük a rendszer Achilles-sarka a nyilvános kulcsok hitelesítése. Ezért hozták létre a kulcsok aláírását. Ezzel az aláíró tanusítja, hogy a kulcs tulajdonosa valoban az UID-ben megadott személy.
Miután
a gpg --edit-key UID
paranccsal kiválasztottuk az alírni kívánt kulcsot
az aláírás a sign
parancs hatására történik meg.
Kizárólag olyan kulcsot írjunk alá amelynek eredetiségéről meg vagyunk győződve!. Ez akkor lehet ha az ember vagy személyesen jutott hozzá (például egy kulcsaláíró partin) vagy más módon és ezután ellenőrizte azt (például telefonon) az ujjlenyomat-mechanizmus segítségével. Soha ne írjunk alá kulcsot feltételezésekre alapítva!
A rendelkezésre álló aláírások és "Ownertrust"-ok segítségével a GnuPG ellenőrzi a kulcsok érvényességét. Az Ownertrust egy olyan érték amit a kulcs tulajdonosa arra használ hogy a kulcs megbízhatósági szintjét megjatározza. A lehetséges értékek:
Miután mindent telepítettünk és konfiguráltunk nekiláthatunk kódolni és dekódolni.
Ha
több privát kulccsal rendelkezünk, kódolás és dekódolás előtt meg kell mondanunk
a programnak melyiket akarjuk használni. Ez lesz az aktív kulcs. Az aktiválást
a -u UID
vagy a --local-user UID
kapcsolóval végezhetjük.
Ez a parancs a konfigurációs file-ban a default-key KeyID
paranccsal
megadott alapértelmezett kulcsot cseréli ki az újonnan megadottra.
A
címzettet a -r
vagy --recipient
kapcsolókkal változtathatjuk
meg.
A kódolást a
gpg -e Recipient [Data]
vagy
a
gpg --encrypt Recipient [Data]
paranccsal
végezhetjük el. Annak veszélyét elkerülendő hogy valaki azt mondja magáról hogy
ő mi vagyunk nagyon hasznos minden kódolt adatot aláírni lásd Aláírások.
A dekódolást a
gpg [-d] [Data]
vagy
a
gpg [--decrypt] [Data]
paranccsal
végezhetjük el. Alapértelmezésben itt is a stdout
-ra küldi a program
az eredményt de a -o
opció használatával átirányíthatjuk a kimenetet
egy file-ba.
Egy adatfile saját kulcsunkkal való aláírásáshoz a
gpg -s (or --sign) [Data]
parancsot
használjuk. Ezzel egyidőben a program tömöríti is az adatokat ezáltal olvashatatlanná
válnak. Ha olvasható eredményt akarunk, használjuk a
gpg --clearsign [Data]
parancsot.
Ez biztosítja, hogy az eredmény olvasható marad. A
gpg -b (or --detach-sign) [Data]
paranccsal
egy külön file-ba irathatjuk az aláírást. Ez különösen akkor ajánlott ha bináris
file-okat írunk alá (például ?archives). Ezeknél a parancsoknál nagyon hasznos
lehet a --armor
opció.
Gyakran talákozhatunk olyan file-okkal melyeket kódoltak és alá is írtak. Ilyet a
gpg [-u Sender] [-r Recipient] [--armor] --sign --encrypt [Data]
paranccsal
készíthetünk. A -u
és (--local-user
) valamint a -r
és (--recipient
)
opciók a fentieknek megfelelően működnek.
Ha egy kódolt file-t még aláírással is hitelesítettek a dekódoláskor az aláírást is ellenőrizhetjük a
gpg [--verify] [Data]
paranccsal.
Ez természetesen csak akkor lehetséges ha a küldő nyilvános kulcsa a birtokunkban
van.
gpg --help
nagyon
hasznos lehet.
A PGP egy régebbi és széles körben elterjedt titkosító program. Az évek során rengeteg leírás készült hozzá amelyek nagyon hasznosak. Ezen információ nagy része annyira általános, hogy a GnuPG-re is érvényes. Ezen leírások a következő helyeken találhatóak:
Copyright © 1999 Szommer Péter (magyar változat) Copyright © 1999 Brenno J.S.A.A.F. de Winter (angol változat) Copyright © 1999 Michael Fischer v. Mollard (eredeti német verzió)
This document is free documentation you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Eredeti német verzió: Az első német verzió a 0.1 volt
Változások a magyar verzióban