Kryptografický primitiv - Cryptographic primitive
Kryptografické primitivy jsou dobře zavedené, na nízké úrovni kryptografické algoritmy, které se často používají k sestavení kryptografické protokoly pro zabezpečení počítače systémy. Mezi tyto rutiny patří mimo jiné: jednosměrné hashovací funkce a šifrovací funkce.
Odůvodnění
Při tvorbě kryptografické systémy, návrháři používají kryptografická primitiva jako své nejzákladnější stavební kameny. Z tohoto důvodu jsou kryptografické primitivy navrženy tak, aby prováděly jeden velmi konkrétní úkol přesně definovaným a vysoce spolehlivým způsobem.
Vzhledem k tomu, že kryptografické primitivy jsou používány jako stavební bloky, musí být velmi spolehlivé, tj. Musí fungovat podle jejich specifikace. Například pokud šifrovací rutina tvrdí, že je porušitelná pouze s X počet počítačových operací a je rozdělen s podstatně menším než X operace, pak kryptografický primitiv selhal. Pokud se zjistí, že kryptografický primitiv selže, téměř každý protokol, který jej používá, se stane zranitelným. Protože vytváření kryptografických rutin je velmi těžké a testování jejich spolehlivosti trvá dlouho, není v zásadě nikdy rozumné (ani bezpečné) navrhnout nový kryptografický primitiv, který by vyhovoval potřebám nového kryptografického systému. Mezi důvody patří:
- The návrhář nemusí být kompetentní v matematických a praktických aspektech kryptografických primitiv.
- Navrhování nového kryptografického primitivu je velmi časově náročné a velmi náchylné k chybám, dokonce i pro odborníky v oboru.
- Vzhledem k tomu, že algoritmy v této oblasti nemusí být pouze dobře navrženy, ale musí být také dobře otestovány komunitou kryptologů, i když kryptografická rutina vypadá dobře z hlediska designu, může stále obsahovat chyby. Úspěšné odolat takové kontrole dává jistotu (ve skutečnosti zatím jedinou jistotu), že algoritmus je skutečně dostatečně bezpečný k použití; bezpečnostní důkazy pro kryptografické primitivy obecně nejsou k dispozici.
Kryptografické primitivy jsou v některých ohledech podobné programovací jazyky. Počítačový programátor málokdy při psaní nového programu vymyslí nový programovací jazyk; místo toho budou používat jeden z již zavedených programovacích jazyků program v.
Kryptografické primitivy jsou jedním ze stavebních kamenů každého kryptosystému, např. TLS, SSL, SSH atd. Návrháři kryptosystémů, kteří nejsou v pozici, aby mohli definitivně prokázat svou bezpečnost, musí brát primitivy, které používají, jako zabezpečené. Výběr nejlepšího primitivu dostupného pro použití v protokolu obvykle poskytuje nejlepší dostupné zabezpečení. Slabé stránky v kompozici jsou však možné v jakémkoli krypto systému a je odpovědností návrhářů, aby se jim vyhnuli.
Běžně používané primitivy
- Jednosměrná hashovací funkce, někdy také nazývané jako funkce jednosměrné komprese —Počítat sníženou hodnotu hash pro zprávu (např. SHA-256 )
- Symetrická klíčová kryptografie —Počítat šifrovací text dekódovatelný pomocí stejného klíče, který se používá ke kódování (např. AES )
- Kryptografie veřejného klíče —Počítat šifrovací text dekódovatelný pomocí jiného klíče použitého ke kódování (např. RSA )
- Digitální podpisy —Potvrďte autora zprávy
- Smíchejte síť —Spolupráce od mnoha uživatelů k anonymizaci toho, co od koho přišlo
- Získávání soukromých informací —Získejte informace o databázi, aniž by server věděl, která položka byla požadována
- Schéma závazků —Umožňuje člověku zavázat se k vybrané hodnotě a zároveň ji skrýt před ostatními, se schopností odhalit ji později
- Kryptograficky bezpečný generátor pseudonáhodných čísel
Kombinace kryptografických primitiv
Kryptografické primitivy jsou samy o sobě poměrně omezené. Nelze je správně považovat za kryptografický systém. Například holý šifrovací algoritmus neposkytne žádný mechanismus ověřování ani žádnou kontrolu integrity explicitní zprávy. Pouze v kombinaci bezpečnostní protokoly, lze řešit více než jeden bezpečnostní požadavek. Například k přenosu zprávy, která je nejen kódovaná, ale také chráněná před vrtáním (tj. Je důvěrné a chráněno integritou ), rutina kódování, například DES a hash-rutina, jako je SHA-1 lze použít v kombinaci. Pokud útočník nezná šifrovací klíč, nemůže zprávu upravit tak, aby byly platné hodnoty souhrnu zprávy.
Kombinace kryptografických primitiv k vytvoření bezpečnostního protokolu je sama o sobě celou specializací. Většina zneužitelných chyb (tj. Nejistoty v krypto systémech) není způsobena chybami návrhu primitiv (za předpokladu, že byly vždy vybrány s opatrností), ale způsobem, jakým jsou použity, tj. Špatný návrh protokolu a chybná nebo nedostatečně pečlivá implementace . Matematická analýza protokolů není v době psaní tohoto článku zralá.[Citace je zapotřebí ] Existuje několik základních vlastností, které lze ověřit automatizovanými metodami, například BAN logika. Existují dokonce metody úplného ověření (např SPI počet ), ale jsou extrémně těžkopádné a nelze je automatizovat. Návrh protokolu je umění vyžadující hluboké znalosti a hodně praxe; i přesto jsou chyby běžné. Ilustrativní příklad skutečného systému lze vidět na OpenSSL zranitelnost stránka s novinkami tady.
Viz také
- Kategorie: Kryptografické primitivy - seznam kryptografických primitiv
- Kryptoagility
Reference
- Levente Buttyán, István Vajda: Kriptográfia és alkalmazásai (kryptografie a její aplikace), Typotex 2004, ISBN 963-9548-13-8
- Menezes, Alfred J: Příručka aplikované kryptografie, CRC Press, ISBN 0-8493-8523-7, Říjen 1996, 816 stran.
- Crypto101 je úvodní kurz kryptografie, volně dostupný pro programátory všech věkových skupin a úrovní dovedností.