it-swarm-eu.dev

Proč by člověk neměl používat pro šifrování stejný asymetrický klíč jako pro podepisování?

V odpověď na otázku o RSA a PGP, PulpSpy poznamenal toto:

Je možné vygenerovat pár klíčů RSA pomocí GPG (pro šifrování i podepisování - neměli byste používat stejný klíč pro oba).

Co je za tím důvodem?

Možná moje chápání šifrování veřejného klíče je chybné, ale myslel jsem si, že operace šly něco podobného tomuto:

  • Když Bob chce zašifrovat zprávu Alice, použije pro šifrování Alice veřejný klíč. Alice poté pomocí svého soukromého klíče dešifruje zprávu.
  • Když Alice chce Bobovi digitálně podepsat zprávu, podepíše ji soukromým klíčem. Bob poté použije Alice k ověření podpisu veřejný klíč.

Proč je důležité používat různé klíče pro šifrování a podepisování? Neznamenalo by to také, že musíte distribuovat dva veřejné klíče každému, s kým chcete komunikovat? Představuji si, že by to mohlo snadno vést k určitému množství zmatku a zneužití klíčů.

100
Iszi

Většinou se přístupy správy a časové rámce liší pro použití podpisových a šifrovacích klíčů.

V případě nevypovědení nikdy nechcete, aby někdo jiný získal kontrolu nad vaším podpisovým klíčem, protože by vás mohl vydávat. Vaše pracoviště však může chtít zašifrovat váš šifrovací klíč, aby ostatní, kteří potřebují, mohli získat informace, které jste zašifrovali.

Můžete také chtít, aby byl podpisový klíč platný po dlouhou dobu, aby lidé na celém světě mohli kontrolovat podpisy z minulosti, ale pomocí šifrovacího klíče jej často budete chtít převrátit dříve a budete moci zrušit staré, aniž by mnoho potíží.

69
nealmcb

Je to potenciálně nezabezpečené používat stejný klíč pro podpis i šifrování. V opačném případě může dojít k útokům v závislosti na konkrétním schématu veřejného klíče, který používáte. Tento druh použití není tím, k čemu byl systém určen, takže použití systému způsobem, který nebyl navržen, „ruší záruku“.

Nedělej to. Žádá o potíže.

34
D.W.

Existuje několik důvodů, proč bychom neměli používat stejný klíč pro šifrování a podepisování.

  1. Pro šifrovaná data musíme zálohovat náš tajný klíč. Později chceme dešifrovat některé staré šifrované zprávy, ale k podpisu nemusíme zálohovat náš tajný klíč. Pokud útočník najde klíč, můžeme našim CA říct, aby jej zrušil a získal nový tajný klíč pro podpis bez nutnosti zálohování.

  2. Ještě důležitější je: Pokud pro šifrování a podepisování použijeme stejný klíč, může útočník použít k dešifrování naší šifrované zprávy. To by udělal:

    Útočník si musí vybrat náhodné číslo r, kde

    r musí mít GDC(N, r) = 1,
    A N je číslo použité pro vytvoření soukromého a veřejného klíče (N = pq)

    Útočník poté vybere novou zprávu (m′) A odešle ji k podpisu odesílateli:

    m′ = m^e.r^e (zde (e,n) Je veřejný klíč)

    Když odesílatel podepíše m′, Dostaneme

    m′^d ≡ (m^e.r^e)^d ≡ m.r (mod N)

    Útočník nyní potřebuje „rozdělit“ r, aby získal m (tajná zpráva).

12
Am1rr3zA

Důvody použití samostatných klíčů pro podepisování a šifrování:

  1. Užitečné v organizaci bylo, že šifrovací klíč musí být zálohován nebo uchováván v úschově, aby bylo možné dešifrovat data, jakmile zaměstnanec/uživatel organizace již není k dispozici. Na rozdíl od šifrovacího klíče nesmí podpisovací klíč nikdy používat kdokoli jiný než zaměstnanec/uživatel a nemusí a neměl by být uchováván v úschově.
  2. Umožňuje mít různé doby vypršení platnosti pro podpis šifrovacích klíčů.
  3. Vzhledem k tomu, že základní matematika je stejná pro šifrování a podepisování, pouze v opačném případě, pokud útočník může přesvědčit/přimět držitele klíče, aby podepsal neformátovanou šifrovanou zprávu pomocí stejného klíče, pak útočník získá originál.

Reference

  1. https://www.entrust.com/what-is-pki/

  2. https://www.gnupg.org/gph/en/manual/c235.html

  3. http://www.di-mgt.com.au/rsa_alg.html

7
moo

Podle mě jsou hlavní důvody spíše spojeny se správou klíčů než se samotným šifrováním.

U asymetrických kryptografií může zejména období, během kterého chcete platit veřejný klíč, silně záviset na zamýšleném použití tohoto klíče. Zvažte například systém, ve kterém se musí součást autentizovat vůči jiným komponentám. Kromě toho musí tato komponenta také pravidelně vytvářet podpis u některých dat. Teoreticky lze jediný soukromý klíč použít pro oba účely. Předpokládejme však, že certifikační autorita PKI z bezpečnostních důvodů chce omezit dobu, po kterou může proběhnout úspěšná autentizace na základě jediného certifikátu, na dva roky. Zákony o uchovávání údajů mohou současně vyžadovat, aby se údaje uchovávaly po dobu pěti let a aby podpis těchto údajů musel být ověřitelný po celé toto období. Jediným (zvukovým) způsobem, jak tento problém vyřešit, je dát komponenty dva soukromé klíče: jeden pro autentizaci a druhý pro podpis. Certifikát prvního klíče vyprší po dvou letech, certifikát pro podpis vyprší po pěti letech.

Podobné úvahy lze použít na symetrickou kryptografii: pokud používáte různé klíče pro různé účely, můžete se rozhodovat o všech otázkách správy klíčů (např. Frekvence převrácení hlavního klíče, doba zálohování klíčů atd.) Na základě podle požadavků jediného účelu. Pokud použijete jeden (hlavní) klíč pro více účelů, můžete skončit s konfliktními požadavky.

5
David Bakker

Šifrování RSA je založeno na funkci Trapdoor, tedy na dvojici funkcí. Zavolám jim D a E. Funkce jsou navrženy tak, aby D(E(x)) = x a E(D(x)) = x (pro libovolné x). Jinými slovy, D a E jsou inverzní. Funkce Trapdoor je taková, že pokud máte veřejný klíč, můžete vypočítat pouze E (prakticky řečeno). Pokud máte soukromý klíč, můžete spočítat D i E.

Způsob, jakým šifrování funguje, je z tohoto popisu docela zřejmý. Pokud Bob chce poslat Alice šifrovanou zprávu, vypočítá ciphertext := E(plaintext). Potom Bob pošle ciphertext Alice. Alice počítá D(ciphertext), což je D(E(plaintext)), což je jen plaintext.

Nyní pojďme mluvit o tom, jak podpisování funguje. Pokud chce Alice podepsat message, vypočítá signature := D(message). Potom pošle oběma message a signature Bobovi. Bob pak vypočítá validation := E(signature). Protože signature je D(message), pak validation = E(D(message)) = message.

Jinými slovy: při podepisování zprávy budete jednat, jako byste ji dešifrovali, a to je váš podpis. Pro ověření vašeho podpisu mohou lidé šifrovat podpis a zajistit, aby vám vrátili původní zprávu.

Znovu to řeknu: podepisování je stejná operace jako dešifrování.

Toto je základní starost o oddělení podpisových a šifrovacích klíčů. Pokud vás někdo může přimět něco podepsat, pak vás právě přiměli, abyste to dešifrovali.

Předpokládejme, že provozujete notářskou společnost. Pokud vám někdo dá 10 $ a zprávu (například texty písní), podepíšete tuto zprávu a pošlete ji zpět vám. Pokud někdo později zkopíruje vaše texty písní, můžete vytvořit podpis od důvěryhodné notářské společnosti a prokázat, že jste tyto texty písní napsali.

Předpokládejme, že Eva zachytila ​​šifrovanou zprávu vaší notářské společnosti. Jak může podvracet šifrování? Stejnou zprávu vám pošle pro notifikaci! Nyní spustíte operaci podpisu (která, pamatujte, je stejná jako operace dešifrování) a výsledek jí pošlete zpět. Nyní má dešifrovanou zprávu.

V praxi mají protokoly kroky, které tento útok ztěžují. Například PGP (čímž myslím protokol; gpg je zde nejčastější implementací) nepodepisuje původní zprávu; podepisuje hash zprávy. Ale bezpečnostní důkazy jsou nejlepší v jednoduchých situacích. Nechcete, aby váš důkaz o zabezpečení RSA závisel na hašovací funkci. (Například mnoho lidí používalo MD5 jako preferovaný hash po dlouhou dobu, ale dnes je MD5 považován za docela zlomený.) Zabezpečení RSA závisí na myšlence, že nepodepíšete svévolné zprávy klíčem, který se používá pro šifrování. Zachování tohoto požadavku je nejlepším způsobem, jak zajistit bezpečnost PGP. (Jak si vzpomínám, jedná se o nejčastěji se opakující výpověď o asymetrickém šifrování v knize Bruce Scheiera Aplikovaná kryptografie .))

Nyní si povíme o další otázce, kterou jste položili: „Znamenalo by to také, že nemusíte distribuovat dva veřejné klíče každému, s kým chcete komunikovat?“

„Klíčem“ se rozumí jedna věc pro uživatele a jiná věc než krypto implementace. Potřebujete pouze komunikovat jeden „klíč“ na úrovni uživatele, i když to může obsahovat mnoho veřejných klíčů RSA.

PGP má koncept podklíče. Můj hlavní klíč je klíč pouze pro podpis. Mám samostatný šifrovací podklíč. Tento podklíč je podepsán mým hlavním klíčem. Pokud importujete můj PGP klíč z klíčových serverů nebo jej stáhnete z mého webu, dostanete můj hlavní klíč a všechny mé podklíče. I když jste možná podepsali pouze můj hlavní klíč, můj hlavní klíč podepsal můj šifrovací podklíč, takže víte, že patří i mně. To znamená, že stažením mého PGP klíče (který zahrnuje mnoho veřejných klíčů RSA) máte nyní vše, co potřebujete k ověření mých podpisů ak zašifrování zpráv ke mně.

U podklíče je správa klíčů složitější z kryptografického hlediska (je třeba provést další krok ověření klíče), ale ne z praktického hlediska (můj klíč PGP zahrnuje můj hlavní klíč, stejně jako všechny mé podklíče). Mimořádná složitost je v implementaci skrytá a není vystavena uživateli.

2
Piquan