SZTE, Számítástudomány Alapjai Tanszék Kriptográfia Hetedik előadás Nyilvános kulcsú kriptográfia II. Kulcsgondozás és további nyilvános kulcsú rendszerek Lecture slides by Lawrie Brown for “Cryptography and Network Security”, 4/e, by William Stallings, Chapter 1 “Introduction”. Dr. Németh L. Zoltán SZTE, Számítástudomány Alapjai Tanszék 2012 tavasz
Kulcsgondozás (Key Management) a nyilvános kulcsú titkosítás segít megoldani a kulcselosztás problémáját Ennek két aspektusa van: I. a nyilvános kulcsok szétosztása azaz eljuttatása mindazokhoz, akik üzenetet küldhetnek a titkos kulcs birtokosának II. a nyilvános kulcsú titkosítás használata titkos kulcsok cseréjére hogy az így biztonságosan eljuttatott titkos kulccsal gyors szimmetrikus titkosítással lehessen kommunikálni hibrid kriptorendszerek, ld. később. One of the major roles of public-key encryption has been to address the problem of key distribution, with two distinct aspects: the distribution of public keys, and the use of public-key encryption to distribute secret keys.
A nyilvános kulcsok szétosztása (Distribution of Public Keys) A nyilvános kulcsú titkosítás, semmit sem ér, ha a küldő nem győződik meg arról, hogy a nyilvános kulcs hiteles, azaz valóban a címzetté. Mert egy támadó a címzett nyilvános kulcsát a saját nyilvános kulcsára hamisítva elolvashatja az üzenetet. Sőt, ha elfogja és megfejti az üzenetet, utána még a címzett valódi kulcsával titkosítani is tudja, majd továbbítani a címzettnek. Így még észrevétlen is maradhat. De pont azért szeretnénk a nyilvános kulcsú rendszert használni, hogy ne kelljen a nyilvános kulcsot előre titokban kommunikálni. Hogyan oldható ez meg mégis? Kemény dió. Several techniques have been proposed for the distribution of public keys, which can mostly be grouped into the categories shown.
A nyilvános kulcsok szétosztása (Distribution of Public Keys) Különböző technikák vannak használatban, melyek az alábbi 4 csoportba sorolhatók: nyilvános kihirdetés (public announcement) nyilvános hozzáférésű katalógus (publicly available directory) nyilvános kulcsszolgáltató (public-key authority) nyilvános kulcs tanúsítványok (public-key certificates) Several techniques have been proposed for the distribution of public keys, which can mostly be grouped into the categories shown.
1. Nyilvános kihirdetés a felhasználók közhírré teszik a nyilvános kulcsukat a várható feladóknak, vagy nagyobb közösségeknek pl. e-mailhez csatolva hírcsoportokra, levelezési listákra küldve (személyes) weblapra feltéve, stb. a legnagyobb hátránya, hogy könnyen hamisítható: bárki könnyen készíthet nyilvános-magán kulcspárt, amit más nevében adhat ki amíg a csalást a címzett észre nem veszi, és a feladókat nem figyelmezteti, a támadó szabadon olvashatja a neki küldött üzeneteket The point of public-key encryption is that the public key is public, hence any participant can send his or her public key to any other participant, or broadcast the key to the community at large. Its major weakness is forgery, anyone can create a key claiming to be someone else and broadcast it, and until the forgery is discovered they can masquerade as the claimed user.
2. Nyilvános hozzáférésű katalógus (Publicly Available Directory) nagyobb biztonság érhető el, a kulcsok nyilvános katalógusba történő regisztrációjával a katalógust működtető egyénben/szervezetben a résztvevőknek meg kell bízni a katalógus: {név, nyilvános kulcs} bejegyzéseket tartalmaz a résztvevők személyesen v. titkosan regisztrálják kulcsaikat a katalógusba a katalógusban tárolt kulcsot bármikor ki lehet cserélni a katalógust időnként közzéteszik a katalógus elektronikusan is biztonságos kommunikációval elérhető hátrány: lehetséges hamisítás és a katalógus feltörése A greater degree of security can be achieved by maintaining a publicly available dynamic directory of public keys. Maintenance and distribution of the public directory would have to be the responsibility of some trusted entity or organization. This scheme is clearly more secure than individual public announcements but still has vulnerabilities to tampering or forgery.
3. Nyilvános kulcsszolgáltató (Public-Key Authority) a biztonságosság növelhető a kulcsok katalógusból történő kiadásának szigorúbb ellenőrzésével tulajdonságai ua.-ok mint a katalógus esetében a felhasználóknak ismerni kell a katalógus nyilvános kulcsát a kért nyilvános kulcsok a katalógusból biztonságos interaktív kapcsolattal kérhetők le de csak akkor szükséges valós idejű hozzáférés a katalógushoz, ha a kulcsok még nem állnak rendelkezésünkre, azaz (1)-(2)-t és (4)-(5)-öt csak ekkor kell végrehajtani Stronger security for public-key distribution can be achieved by providing tighter control over the distribution of public keys from the directory. It requires users to know the public key for the directory, and that they interact with directory in real-time to obtain any desired public key securely. Note that a total of seven messages are required, as shown next.
3. Hitelesítés nyilvános kulcsszolgáltatón keresztül Stallings Figure 10.3 “Public-Key Authority” illustrates a typical protocol interaction. See text for details of steps in protocol. N1 és N2 „nonce” = véletlen bitsorozat, a kapcsolat egyedi azonosítója
4. Nyilvános kulcs tanúsítványok (Public-Key Certificates) a kulcsszolgáltató használata szűk kereszt-metszet lehet: elérhetőség, feltörhetőség a tanúsítvány biztosítja a kulcs-cserét a kulcsszolgáltató valós idejű elérése nélkül a tanúsítvány a felhasználói azonosító és a nyilvános kulcs összetartozását igazolja általában segédinformációkat is tartalmaz, mint érvényességi idő, használati jogkör stb. a tanúsítványt aláírja a nyilvános kulcs szolgáltató vagy hitelesítés-szolgáltató Certificate Authority (CA) bárki ellenőrizheti, aki ismeri a szolgáltató nyilvános kulcsát Például az X.509-es tanúsítvány szabványt használja az IPSec, SSL, SET, S/MIME (ld. később) An further improvement is to use certificates, which can be used to exchange keys without contacting a public-key authority, in a way that is as reliable as if the keys were obtained directly from a public-key authority. A certificate binds an identity to public key, with all contents signed by a trusted Public-Key or Certificate Authority (CA). This can be verified by anyone who knows the public-key authorities public-key. One scheme has become universally accepted for formatting public-key certificates: the X.509 standard. X.509 certificates are used in most network security applications, including IP security, secure sockets layer (SSL), secure electronic transactions (SET), and S/MIME. Will discuss it in much more detail later.
4. Nyilvános kulcs tanúsítványok használata Stallings Figure 10.4 “Public-Key Certificates” illustrates such a scheme. See text for details of steps in protocol.
II. A nyilvános kulcsú titkosítás használata titkos kulcsok cseréjére az előző módszerekkel megszerzett nyilvános kulcsot felhasználhatjuk titkosításra vagy hitelesítésre de a nyilvános kulcsú algoritmusok lassúak ezért inkább a gyors szimmetrikus módszerekkel akarjuk magát az üzenetet titkosítani ehhez egy kapcsolatkulcsra (session key) van szükség ezt cserélik ki a felek egymás közt a nyilvános kulcsú titkosítás használatával Once public keys have been distributed or have become accessible, secure communication that thwarts eavesdropping, tampering, or both, is possible. However, few users will wish to make exclusive use of public-key encryption for communication because of the relatively slow data rates that can be achieved. Accordingly, public-key encryption provides for the distribution of secret keys to be used for conventional encryption.
II. a nyilvános kulcsú titkosítás használata titkos kulcsok cseréjére Több alternatívája van a kapcsolatkulcsban való megegyezésnek és így a biztonságos kapcsolat megteremtésének. Pl: egyszerű titkos kulcs szétosztás titkos kulcs szétosztás nyilvános kulcsú kriptográfiával hibrid kulcs szétosztás Once public keys have been distributed or have become accessible, secure communication that thwarts eavesdropping, tampering, or both, is possible. However, few users will wish to make exclusive use of public-key encryption for communication because of the relatively slow data rates that can be achieved. Accordingly, public-key encryption provides for the distribution of secret keys to be used for conventional encryption.
1. Egyszerű titkos kulcs szétosztás (Simple Secret Key Distribution) Merkle javasolta 1979-ben A generál egy új ideiglenes nyilv./magán kulcspárt A elküldi B-nek a nyilvános kulcsot és az azonosítóját B generál egy új K kapcsolatkulcsot és elküldi A-nak a kapott nyilvános kulccsal titkosítva A megfejti K-t a magánkulccsal Biztonságos passzív támadás (csak lehallgatás) ellen. Nem biztonságos aktív támadás ellen, a támadó a nyilvános kulcsot a sajátjára cserélve megszemélyesítheti A-t és hozzájuthat K-hoz. An extremely simple scheme was put forward by Merkle [MERK79]. But it is insecure against an adversary who can intercept messages and then either relay the intercepted message or substitute another message. Such an attack is known as a man-in-the-middle attack [RIVE84].
Egyszerű titkos kulcs szétosztás vázlat
2. Titkos kulcs szétosztás nyilvános kulcsú kriptográfiával Ha már PUA és PUB cseréje megtörtént: N1 és N2 „nonce” = véletlen bitsorozat, a kapcsolat egyedi azonosítója Stallings Figure 10.6 “Public-Key Distribution of Secret Keys” illustrates such an exchange. See text for details of steps in protocol. Note that these steps correspond to final 3 of Figure 10.3, hence can get both secret key exchange and authentication in a single protocol.
3. Hibrid kulcs szétosztás (IBM) szükséges egy kulcselosztó központ (key distribution center: KDC) itt minden felhasználónak egy titkos (szimmetrikus) főkulcsa (master key) van a KDC szimmetrikus titkosítással továbbítja a kapcsolatkulcsokat a felekhez nyilvános kulcsú titkosítás csak a főkulcsok szétosztásához, váltásához szükséges előnyei: teljesítmény (a szimmetrikus titkosítás gyorsabb) hátrafele kompatibilitás (backward compatibility) különösen egyetlen KDC és széles felhasználói kör esetén hasznos Yet another way to use public-key encryption to distribute secret keys is a hybrid approach in use on IBM mainframes [LE93]. This scheme retains the use of a key distribution center (KDC) that shares a secret master key with each user and distributes secret session keys encrypted with the master key. A public key scheme is used to distribute the master keys. The addition of a public-key layer provides a secure, efficient means of distributing master keys. This is an advantage in a configuration in which a single KDC serves a widely distributed set of users.
Diffie-Hellman kulcs-csere (Diffie-Hellman Key Exchange) az első publikált nyilvános kulcsú módszer Diffie és Hellman (1976), a nyilvános kulcsú rendszer ismertetésével megj: ma már tudjuk, hogy Williamson (UK CESG) 1970-ben ismerte ezt, de eredményét titokként kezelték egy praktikus eljárás titkos kulcsok nyilvános cseréjére számos kereskedelmi termékben használják The idea of public key schemes, and the first practical scheme, which was for key distribution only, was published in 1977 by Diffie & Hellman. The concept had been previously described in a classified report in 1970 by Williamson (UK CESG) - and subsequently declassified in 1987, see [ELLI99].
Diffie-Hellman kulcs-csere egy közös titkos érték kialakítását valósítja meg nem használható tetszőleges üzenet titkosítására de jó egy közös kulcsban való megállapodásra melyet csak a két fél ismer a végső közös titok függ mindkét résztvevőtől (a felek nyilvános és titkos információiktól) ,,könnyű irány’’: moduláris (v. véges test feletti) hatványozás : y = ax mod q ,,nehéz irány’’: diszkrét logaritmus számítása : x = ”loga,mod q y” Azaz hanyadik hatványra kell a-t emelni, hogy y-t kapjunk mod q ? The purpose of the algorithm is to enable two users to securely exchange a key that can then be used for subsequent encryption of messages. The algorithm itself is limited to the exchange of secret values, which depends on the value of the public/private keys of the participants. The Diffie-Hellman algorithm uses exponentiation in a finite (Galois) field (modulo a prime or a polynomial), and depends for its effectiveness on the difficulty of computing discrete logarithms.
Diffie-Hellman kulcs-csere vázlat
Diffie-Hellman kulcs generálás a felhasználók (többen is lehetnek, nem csak ketten) megegyeznek a globális paraméterekben: egy q nagy prímszám a egész mely q primitív gyöke azaz a hatványiként minden 0<y<q egész előáll mod q minden felhasználó (pl. A) elkészíti a kulcsait: generál egy titkos xA < q számot, a magánkulcsát kiszámítja a nyilvános kulcsát: yA = axA mod q a nyilvános kulcsát mindenki közzéteszi In the Diffie-Hellman key exchange algorithm, there are two publicly known numbers: a prime number q and an integer a that is a primitive root of q. The prime q and primitive root a can be common to all using some instance of the D-H scheme. Note that the primitive root a is a number whose powers successively generate all the elements mod q. Users Alice and Bob choose random secrets x's, and then "protect" them using exponentiation to create their public y's. For an attacker monitoring the exchange of the y's to recover either of the x's, they'd need to solve the discrete logarithm problem, which is hard.
Diffie-Hellman kulcs-csere az A és B közös titka KAB lesz: KAB = axA·xB mod q = yAxB mod q (ahogy B számítja ki) = yBxA mod q (ahogy A számítja ki) KAB ezután használható titkos kulcsként szimmetrikus titkosításra A és B között a támadónak a titkos xA vagy xB értékek valamelyikének kiszámítására van szüksége, ami a diszkrét logaritmus probléma megoldását jelenti, hiszen ő csak a nyilvános yA, yB és q értékeket ismeri. hátrány, hogy A és B a következő kapcsolatban is ugyanazzal a kulccsal kommunikál, ha csak nem generálnak újra nyilvános/magán kulcspárt The actual key exchange for either party consists of raising the others "public key' to power of their private key. The resulting number (or as much of as is necessary) is used as the key for a block cipher or other private key scheme. For an attacker to obtain the same value they need at least one of the secret numbers, which means solving a discrete log, which is computationally infeasible given large enough numbers. Note that if Alice and Bob subsequently communicate, they will have the same key as before, unless they choose new public-keys.
Példa Diffie-Hellman kulcs-cserére A és B közötti titok kialakítása: közös paraméterek: q=353 és a=3 választott magánkulcsok: A választása xA=97, B választása xB=233 a nyilvános kulcsok kiszámítása: yA=397 mod 353 = 40 (A-é) yB=3233 mod 353 = 248 (B-é) a közös titok kiszámítása: KAB= yBxA mod 353 = 24897 = 160 (A) KAB= yAxB mod 353 = 40233 = 160 (B) Here is an example of Diffie-Hellman from the text.
Kulcs-csere protokollok (Key Exchange Protocols) minden pár minden kommunikáció előtt új nyilvános/magán kulcsot generálva egyezik meg a kapcsolatkulcsban a felhasználók csak egyszer készítik el a kulcsaikat, melyeket egy közös katalógusban tesznek közzé, mellyel biztonságosan kommunikálnak sajnos mindkét módszer sérülékeny az aktív (men-in-the-middle) támadásra (HF!) a kulcsok hitelesítésére van szükség Detail a couple of possible Key Exchange Protocols based on Diffie-Hellman. Note that these are vulnerable to a meet-in-the-Middle Attack, and that authentication of the keys is needed.
Elliptikus görbéken alapuló kriptográfia Elliptic Curve Cryptography a nyilvános kulcsú kriptográfia jórésze (RSA, D-H) hatalmas prímszámokra vagy polinomokra épül ez jelentős terhet jelent a kulcsok használatában, cseréjében és tárolásában az elliptikus görbék erre kínálnak alternatívát ugyanazt a biztonságot kisebb kulcsméret mellett nyújtják új módszerek, még nem annyira kiforrott az elemzésük (mint pl. az RSA-é) A major issue with the use of Public-Key Cryptography, is the size of numbers used, and hence keys being stored. Recently, an alternate approach has emerged, elliptic curve cryptography (ECC), which performs the computations using elliptic curve arithmetic instead of integer or polynomial arithmetic. Already, ECC is showing up in standardization efforts, including the IEEE P1363 Standard for Public-Key Cryptography. Although the theory of ECC has been around for some time, it is only recently that products have begun to appear and that there has been sustained cryptanalytic interest in probing for weaknesses. Accordingly, the confidence level in ECC is not yet as high as that in RSA.
Valós elliptikus görbék egy kétváltozós egyenlet definiálja őket a számunkra érdekes harmadrendű elliptikus görbék az alábbi alakúak: y2 = x3 + ax + b ahol x,y,a,b valós számok feltétel: nincs többszörös gyök, azaz 4a3 + 27b2 ≠ 0 és még egy speciális pont: O (végtelen távoli pont) egy ilyen göbe pontjain összeadást definiálhatunk: a P és Q pont összege: P+Q legyen a PQ egyenes és a görbe R metszéspontjának, az x tengelyre vonatkozó tükörképe (Ez szintén a görbén lesz, mert a görbe az x –tengelyre szimetrikus) First consider elliptic curves using real number values. See text for detailed rules of addition and relation to zero point O. Can derive an algebraic interpretation of addition, based on computing gradient of tangent and then solving for intersection with curve. There is also an algebraic description of additions over elliptic curves, see text.
Összeadás elliptikus görbén Stallings Figure 10.9b “Example of Elliptic Curves”, illustrates the geometric interpretation of elliptic curve addition.
Összeadás elliptikus görbén P +Q számításának speciális esetei: P + O = O +P = P ha nincs metszéspont PQ egyenes függőleges, ekkor P+Q := O, (vagyis Q = -P, az additív inverz = a tükörkép) ha P = Q, akkor 2P = P + P a P-beli érintő és a görbe metszetének tükörképe Belátható, hogy a görbe pontjai az így definiált összeadásra nézve Abel-csoportot alkotnak. Így pl.: (P + Q ) + (-Q) = P /ezért kell tükrözni./ Szemléltetése: CryptTool bemutató (Indiv. Procedures / legalsó menüpont) First consider elliptic curves using real number values. See text for detailed rules of addition and relation to zero point O. Can derive an algebraic interpretation of addition, based on computing gradient of tangent and then solving for intersection with curve. There is also an algebraic description of additions over elliptic curves, see text.
Véges elliptikus görbék Az elliptikus görbék kriptográfiája olyan görbéket használ, melynek mind az együtthatói, mind a változóinak értékei végesek. két általánosan használt családjuk: prím görbék Ep(a,b) a Zp test felett egész értékeket használ modulo p (ahol p prím) feltétel, hogy 4a3 + 27b2 ≠ 0 Ep(a,b)= {(x,y) | y2=x3+ax+b mod p} szoftver alkalmazásokban jobb bináris görbék E2m(a,b)a GF(2m) véges test felett bináris együtthatójú polinomokat használ hardver alkalmazásokban jobb Elliptic curve cryptography makes use of elliptic curves in which the variables and coefficients are all restricted to elements of a finite field. Two families of elliptic curves are used in cryptographic applications: prime curves over Zp (best for software use), and binary curves over GF(2m) (best for hardware use). There is no obvious geometric interpretation of elliptic curve arithmetic over finite fields. The algebraic interpretation used for elliptic curve arithmetic over does readily carry over. See text for detailed discussion.
Elliptikus görbék kriptográfiája (Elliptic Curve Cryptography) P+Q: ECC összeadás = a hagyományos moduláris szorzás analógiája kP: ECC ismételt összeadás = a hagyományos moduláris hatványozás analógiája a “nehéz irány” a diszkrét log analógiája: Q=kP, ahol Q és P a prím görbe pontjai Q-t kiszámítani k és P ismeretében könnyű de k-t meghatározni Q-ból és P-ből nehéz ezt nevezzük elliptikus görbe logaritmus problémának (elliptic curve logarithm problem) Példa: E23(9,17) Elliptic Curve Cryptography uses addition as an analog of modulo multiply, and repeated addition as an analog of modulo exponentiation. The “hard” problem is the elliptic curve logarithm problem.
ECC Diffie-Hellman kulcs-csere a D-H-hoz hasonlóan állapodhatunk meg egy közös titokban a felek előre választanak egy alkalmas Ep(a,b) görbét és egy alappontot (base point) G=(x1,y1) melynek rendje: n nagy (rend = a legkisebb n melyre nG=O) A és B magánkulcsot választ: nA<n, nB<n a nyilv. kulcsok: PA=nAG, PB=nBG a közös titok: K=nAPB, K=nBPA ez ugyanaz, mert K=nAnBG Illustrate here the elliptic curve analog of Diffie-Hellman key exchange, which is a close analogy given elliptic curve multiplication equates to modulo exponentiation.
ECC Titkosítás/megfejtés több alternatíva van, az alábbi a legegyszerűbb: alkalmas görbét és G alappontot választunk az üzenet M blokkját a görbe egy Pm pontjával azonosítjuk a címzett generál egy magánkulcsot: nB<n és kiszámítja a nyilvános kulcsát: PB=nBG Pm titkosítása: Cm={kG, Pm+kPB}, ahol k véletlen érték Cm megfejtése: Pm+kPB–nB(kG) = Pm+k(nBG)–nB(kG) = Pm Several approaches to encryption/decryption using elliptic curves have been analyzed in the literature. This one is an analog of the ElGamal public-key encryption algorithm. The sender must first encode any message M as a point on the elliptic curve Pm (there are relatively straightforward techniques for this). Note that the ciphertext is a pair of points on the elliptic curve. The sender masks the message using random k, but also sends along a “clue” allowing the receiver who know the private-key to recover k and hence the message. For an attacker to recover the message, the attacker would have to compute k given G and kG, which is assumed hard.
Az ECC biztonsága a biztonsága az elliptikus görbe logaritmus probléma nehézségén alapszik a ma ismert leggyorsabb eljárás rá a “Pollard rho algoritmus” összehasonlítva a faktorizációval jóval kisebb kulcsmért elégséges, mint pl. az RSA esetén ugyanakkor egyező kulcsméret mellett a titkosítás számításigénye, kb. megegyezik az RSA-éval ezért hasonló biztonság szint megtartásával az ECC jelentős számítási előnnyel rendelkezik The security of ECC depends on how difficult it is to determine k given kP and P. This is referred to as the elliptic curve logarithm problem. The fastest known technique for taking the elliptic curve logarithm is known as the Pollard rho method. Compared to factoring integers or polynomials, can use much smaller numbers for equivalent levels of security.
Szimmetrikus titkosítások (a modulus mérete bitekben) A szükséges kulcsméretek összehasonlítása egyező biztonsági szintek mellett Szimmetrikus titkosítások (kulcs bitekben) ECC-alapú (n mérete bitekben) RSA/DSA (a modulus mérete bitekben) 56 112 512 80 160 1024 224 2048 128 256 3072 192 384 7680 15360 Stallings Table 10.3 - “ Comparable Key Sizes in Terms of Computational Effort for Cryptanalysis” illustrates the relative key sizes needed for security.
Felhasznált irodalom Virrasztó Tamás: Titkosítás és adatrejtés: Biztonságos kommunikáció és algoritmikus adatvédelem, NetAcademia Kft., Budapest, 2004. Online elérhető: http://www.netacademia.net/book.aspx?id=1# William Stallings: Cryptography and Network Security, 4th Edition, Prentice Hall, 2006. (Chapter 10) Lawrie Brown előadás fóliái (Chapter 10)