===== Digitális aláírás ===== Laikusok szemében a digitális aláíráson azt sejtik, hogy egy asszisztens szkenner segítségével bedigitalizálja a főnöke aláírását egy képállományba és szükség esetén ez a kép könnyen beilleszthető az aláírandó dokumentumokba. Sajnos ez a módszer komoly büntetőjogi szankciókkal is járna ha így járnának el, de a digitális aláírás a valóságban egészen más. A nyilvános kulcsú rendszereket **aszimmetrikus** rendszereknek is szokás nevezni, mert a kódoláshoz és a dekódoláshoz már más kulcs szükséges. A **szimmetrikus** rendszerekben ugyanaz a kulcs kódol és dekódol. Az **aszimmetrikus** rendszerekben Annának bárki küldhet titkos üzenetet. Hogyan bizonyosodhatunk meg a küldő kilétéről? A digitális aláíró algoritmusok is speciális aszimmetrikus rendszerek. Van egy titkos kulcs az aláíráshoz és egy nyilvános kulcs az aláírás hitelességének ellenőrzéséhez. ==== A digitális aláírás követelményei ===== * **Az aláírás legyen hiteles**: az aláírás meggyőzi a dokumentum olvasóját, hogy az aláírás tulajdonosa tudatosan írta alá a dokumentumot. * **Legyen hamisíthatatlan**: az aláírás bizonyítja, hogy az aláírás tulajdonosa maga és nem más írta alá a dokumentumot. * **Az aláírás nem lehet felhasználni fel más dokumentumon**: az aláírás a dokumentum szerves része, nem helyezhető át egy másikra. * Az aláírt dokumentumot ne lehessen megváltoztatni észrevétlenül. * **Legyen letagadhatatlan**: az aláíró később nem tagadhatja le, hogy aláírta a dokumentumot. Ezek a követelmények a manuális (analóg) aláírásnál sokkal biztonságosabb megoldást jelentenek. ==== Egyszerű digitális aláírás RSA közvetlen alkalmazásával ==== Egyszerű esetben az RSA algoritmus is alkalmas lehet digitális aláírásra. Az alábbi pontok felsorolják a lépéseket: * saját titkos kulcsunkkal kódolni kell a dokumentumot. * RSA-ban a titkos és nyilvános kulcsok szerepe felcserélhető: akármelyikkel rejtjelezhetünk, mindig a másikkal (és csakis azzal) lehet visszafejteni az üzenetet. * Ha valaki titkosít egy üzenetet a titkos kulcsával, akkor a nyilvános kulccsal visszafejthető (így ellenőrizve a hitelességet). * Az egész dokumentum el van kódolva az aláírásban. (maga a kódolt dokumentum az aláírás) * Az aláíró nem tagadhatja le az aláírás tényét, mert ő az egyetlen aki az előállításhoz szükséges titkos kulcsot ismeri. Az RSA aláíró módszer használatával a dokumentum olvashatatlan marad, ahhoz hogy el tudjuk olvasni, ellenőrizni kell az aláírást. Ez a módszer kényelmetlen, ha: * ha nem áll rendelkezésre a nyilvános kulcs, * ha nincs elegendő számítási kapacitás a visszafejtéshez. ==== Hash függvények ==== A sima **RSA** nagy hátránya, hogy a dokumentum maga az aláírás. Hogyan lehetne az aláírást a dokumentumtól elválasztani? Ehhez vezessük be a **Hash** függvényeket. Hash függvények jellemzése: * olyan speciális függvények, amelyek változó hosszúságú input esetén, fix hosszúságú outputot adnak, * \(y\) outputhoz egy olyan \(x\) inputot találni nehéz, amelyre igaz, hogy \( y = H(x) \), * nehéz olyan \(x’\) inputot találni, amely esetén \( H(x)=H(x’)\) azaz ugyanaz a Hash kód, * de ennek ellenére \(H(x)\) könnyen számolható, * jól szórjon: azaz ha az \(x\) csak 1 bitben is megváltozik, várhatóan \(y\) bitjeinek a fele megváltozzon. A legismertebb Hash-függvények: SHA, MD2, MD5 (Message Digest 5). ==== Digitális aláírás Hash függvénnyel ==== A Hash függvénnyel végzett művelet úgy viselkedik mint egy digitális ujjlenyomat. A függvény biztosítja, hogy tetszőleges dokumentumnál a kód elég változatos lesz. Hogyan is működik ezzel a digitális aláírás? * \(y=H(x)\) alapján az \(y\)-t egy \(x\) dokumentumra kiszámítani. Ez az ujjlenyomat készítés. * \(y\) kódolása a titkos kulccsal * az eredmény csatolása a dokumentumhoz (aláírás) **Következmények** * A dokumentum aláírt formában is olvasható. * Az aláírás a dokumentumtól elkülönítve is tárolható. pl. egy közjegyzőnél vagy adatbázisban A következő kép ezt a folyamatot mutatja: {{:tanszek:oktatas:infrendalapjai_architekturak:informacio_titkositas_es_hitelesites:pasted:20241113-181319.png?600}} A hálózati kommunikáció során a következő adatokat továbbítjuk: * eredeti dokumentum * a dokumentumból képzett Hash, titkosítva feladó titkos kulcsával * a feladó nyilvános kulcsa Az aláírás sértetlenségét a következőképpen állapíthatjuk meg: * számítsuk ki a kapott dokumentum Hash kódját * a nyilvános kulccsal dekódoljuk a kódolt Hash-t * az előző lépéseknek ugyanazt a Hash kódot kell adniuk