it-swarm-eu.dev

Co znamená „klíč s délkou x bitů“?

Chtěl bych vědět, co to znamená říci „kryptosystém C používá klíče s délkou x bitů“. Nerozumím, co znamená délka bitů ... nezávisí to na kódování? Stejné slovo kóduje bitové řetězce různých délek v utf8, iso a unicode, takže existuje obecné kódování používané k definování délky klíče? Nebo znamená „délka x bitů“ něco úplně jiného?

22
strauberry

Pro symetrické algoritmy ( symetrické šifrování , ověřovací kód zprávy ) je klíčem posloupnost bity, takže jakákoli sekvence správné délky je možným klíčem. Například AES je symetrický šifrovací algoritmus (konkrétně bloková šifra ), který je definován pomocí klíčů 128, 192 a 256 bitů: jako klíč lze použít libovolnou sekvenci 128, 192 nebo 256 bitů. Způsob kódování těchto bitů zde není relevantní: bez ohledu na to, zda je pouze vyhodíte surové (8 bitů na bajt), nebo použijete Base64, nebo hexadecimální nebo vyvodíte z řetězce znaků, nebo cokoli, je jen na vás.

Existuje několik gotchas s některými algoritmy. Prvním příkladem je DES , předchůdce AES. DES je definováno pro použití 64bitového klíče. Pokud se však podíváte na definici algoritmu, uvidíte, že se použije pouze 56 z těchto bitů; zbývajících 8 je jednoduše ignorováno (pokud číslujete bity od 1 do 64, jedná se o bity 8, 16, 24, 32, 40, 48, 56 a 64; mají se jednat o „paritní bity“ v závislosti na 56 dalších, ale nikdo se opravdu nestará o jejich nastavení nebo kontrolu). Často se říká, že DES má 56bitový klíč. Důvodem je, že délka klíče souvisí s bezpečností: pokud algoritmus přijímá klíče délky n bitů, pak existuje 2n možných klíčů, a tak je vyzkoušet všechny (útok známý jako „vyčerpávající vyhledávání“ nebo „hrubá síla“) má čas úměrný 2n (s n dostatečně velký, tj. více než asi 85, což je technologicky nemožné). V tomto smyslu DES nabízí zabezpečení 56bitového klíče ( 2)56 "opravdu odlišné" možné klíče). Přesto, pokud používáte knihovnu implementující DES, bude tato knihovna očekávat DES klíče jako sekvence 64 bitů (často poskytované jako 8 bajtů).

Další algoritmus se zvláštním pravidlem je RC2 . Přijímá klíče o délce 8 až 128 bitů (pouze násobek 8); ale má také další parametr nazvaný efektivní délka klíče označený „T1“. Uprostřed zpracování klíče je vnitřní hodnota „redukována“ na posloupnost bitů T1, což znamená, že následné šifrování bude záviset pouze na hodnotách bitů specifických pro T1 v této vnitřní hodnotě. Odpor RC2 proti vyčerpávajícímu hledání pak není větší než odpor nabízený klíčem T1, protože pro tuto vnitřní hodnotu lze vyzkoušet všechny možné sekvence bitů T1. Přesto RC2 má stále skutečnou délku klíče (délka sekvence bitů, která je poskytována jako klíč), která může být větší než T1.

Pro asymetrické algoritmy (také známé jako kryptografie s veřejným klíčem , zahrnující asymetrické šifrování, digitální podpisy, některé protokoly pro výměnu klíčů a několik esoterických algoritmů), klíče fungují páry sestávající z veřejného klíče a soukromého klíče. Tyto klíče jsou matematické objekty s nějakou těžkou vnitřní strukturou. "Délka klíče" je pak obvyklým měřítkem velikosti jednoho ze zúčastněných matematických objektů.

Například veřejný klíč RSA obsahuje velké celé číslo zvané modulus, jakož i další celé číslo (obvykle malé) zvané veřejný exponent. Když řekneme „1024bitový klíč RSA“, máme na mysli, že modul má délku 1024 bitů, tj. Je celé číslo větší než 21023 ale nižší než 21024. Takové celé číslo může být kódováno jako sekvence 1024 bitů, tj. 128 bytů. Veřejný klíč musí přesto obsahovat veřejný exponent, takže skutečná kódovaná délka bude větší. A soukromý klíč je, z teoretického hlediska, znalost toho, jak může být modul ovlivněn prvočísly; tradiční kódování pro tuto znalost je kódování hlavních faktorů, spolu se spoustou pomocných hodnot, které by mohly být přičítány z faktorů (ale to by bylo mírně drahé) a může pomoci při rychlejším provádění algoritmu.

Pro odlišné typy klíčů, které fungují přes odlišnou matematiku, se používají jiné „délky“, takže nemůžete přímo porovnat zabezpečení algoritmů pouhým porovnáním délek klíčů. 256bitový ECDSA klíč je mnohem bezpečnější než 768bitový RSA klíč. Matematická struktura vlastní párům veřejných a soukromých klíčů také umožňuje mnohem rychlejší útoky, než jen vyzkoušet spoustu náhodných bitů, a existuje mnoho jemných detailů. Viz tento web , kde jsou vysvětlivky a online kalkulačky pro různé sady pravidel pro porovnávání velikostí klíčů, se kterými mnoho regulačních organizací přišlo.

23
Thomas Pornin

Zvažte jednoduché šifrování posunu každého písmene doprava v abecedě tak, že A se stane B, B se změní na C a tak dále. Takže: HELLO se šifruje jako: IFMMP

Mohu posunout jedno písmeno doprava, dvě písmena doprava nebo až 25 písmen doprava. Za „klíč“ považujte „počet písmen vpravo“. Držení čísla mezi 0 a 25 trvá 5 bitů. Velikost klíče je tedy „5 bitů“.

Nebo namísto posunutí doprava řekněme, že náhodně přeuspořádáme abecedu a provedeme individuální mapování: ABCDEFGHIJKLMNOPQRSTUVWXYZ RJQFGSKPBTODUZLNHYAVXEMWIC V tomto případě vyhledáme písmeno „H“ v tabulce, transformuje se na písmeno „P“ a zpráva: HELLO se stává: PGDDL

Řekněme, že náhodné řazení abecedy se provádí pomocí matematické sekvence založené na 5bitovém čísle, takže každé číslo generuje jinou sekvenci. 5bitové číslo je tedy opět „klíčem“.

Problém s 5bitovým klíčem je v tom, že má pouze 32 kombinací. Pokud znám šifrovací algoritmus, mohu všech 32 klíčů najít, dokud nenajdu správnou kombinaci. Čím větší je klíč, tím těžší se stává - EXPONENTÁLNĚ. 6bitový klíč má 64 kombinací, 7bitový klíč má 128 kombinací atd. 10 bitový klíč má tisíc kombinací, 20 bitový klíč má milion kombinací, 30 bitový klíč má kombinace BILLION.

Řekněme, že máte počítač, který dokáže vyzkoušet miliardu klíčů za sekundu a pokoušet se brutálně vynutit všechny kombinace. To znamená, že můžete rozbít 30bitový klíč během jedné sekundy. Ale to znamená, že vám to zabere miliardu sekund (nebo 34 let), než zlomíte 60bitový klíč.

Každých 30 bitů, které přidáme, ztěžuje miliardkrát. Špionážní agentura jako NSA může crackovat 60 bitové klíče pomocí superpočítačů, ale 90bitový klíč je miliardkrát těžší crackovat a 120 bitový klíč by byl další miliardkrát těžší) prasknout než 90 bitový klíč.

Proto jsou starší WEP (40 bitů) a DES (56 bitů) považovány za zastaralé: můžeme je roztrhat se stolními počítači vyzkoušením všech kombinací. Proto moderní kryptogramy, jako je AES, používají 128 Tyto algoritmy nemůžeme brutálně vynutit násilím.

14

Délka klíče v bitech nic víc než specifikace jeho velikosti. 128bitový klíč zabírá 16 bajtů prostoru - pouze prvotní bity, které procesor používá. Není nic zvláštního, žádný překlad.

Kódování je mapování bitů na něco, co má význam. Například 8bitová sekvence 01100001 (0x61) v ASCII je písmeno "a". Protože klíče jsou náhodná data a nemají žádný význam, kódování přichází do hry pouze pro překlad binárních dat do něco, co lze tisknout, například BASE 64. Takže místo „jaké posloupnosti bitů musím napsat písmeno a?“ - což se může lišit podle různých kódování, klíčem je „co je to bit? co je to bit? co je to bit ? “.

3
Jeff Ferland

Stejné slovo kóduje bitové řetězce různých délek v utf8, iso a unicode, takže existuje obecné kódování používané k definování délky klíče?

Klíč není slovo. Je to posloupnost bitů. „Obecné kódování“, o kterém hovoříte, není kódování.

Další poznámkou jsou kódování kódových bodů - řetězců nazývané UTF-8 a ISO- *, ale unicode není kódování. Je to znaková sada.

Možná může pomoci definování některých pojmů.

"Znaková sada", například unicode, je sada symbolů obvykle identifikovaných celočíselným indexem. V unicode se tyto symboly nazývají také kódové body (striktně skalární hodnoty unicode).

„Řetězec“ je posloupnost symbolů vybraných z abecedy. Není-li uvedeno jinak, má posloupnost konečnou délku a abeceda je podmnožinou unicode, ale tento termín lze také použít pro jiné abecedy: „řetězec bajtů“ (kde je abeceda množina celých čísel reprezentovatelných v 8 bitech [0,255] nebo [-128,127]) nebo „řetězec UTF-16“ (kde je abeceda množinou celých čísel [0,65535]).

„Kódování“ je (obvykle reverzibilní) mapování z jednoho druhu řetězce na druhý. UTF-8 mapuje sekvence „kódového bodu“ (aka pravidelné řetězce) na bajtové řetězce.

1
Mike Samuel

Nerozumím, co znamená délka bitů ... nezávisí to na kódování?

Text - posloupnost znaků a dalších glyfů z více jazyků - je abstrakce. Lidé vědí, jak se vypořádat s textem, ale počítače ne - dokud nevymyslíme způsob, jak to počítače udělat. Tento způsob se nazývá „kódování“ - kódování je způsob mapování posloupnosti znaků na posloupnost bajtů a mapování posloupnosti bytů zpět na posloupnost znaků. V jednom kódování může být znak kódován do jednoho bajtu, zatímco v jiném kódování bude stejný znak kódován do čtyř bajtů.

Jednoduše, text může být kódován do posloupnosti bajtů. Text je však abstraktní, a musí být kódováno, aby bylo možné se s ním vypořádat.

Ale posloupnost bajtů je jen posloupnost bajtů a nemá nic společného s textem a nemá vůbec žádnou koncepci kódování.

Sekvence bitů, pokud jsou jejich délky vždy násobky 8 bitů, jsou ekvivalentní sekvencím bajtů. Když tedy někdo mluví o 16-bajtovém klíči, odpovídá to 128bitovému klíči.

Když se zabýváme kryptografickými funkcemi, měli byste vždy dbát na to, aby se zabývali pouze sekvencemi bitů nebo bajtů. Pokud má někdo text, který chce zašifrovat nebo hash, měl by se nejprve postarat o kódování textu nejprve do posloupnosti bajtů, a to buď pomocí stejného kódování ve všech případech, nebo si všimne, které kódování bylo v tomto případě použito. Jeden by měl šifrovat nebo hashovat bajty, nikdy text: a kódování je způsob, jak převést text do bajtů. Podobně, pokud má jeden klíčový kód reprezentovaný v hexadecimálním nebo base64 textovém kódování, měli byste se nejprve postarat o dekódování klíče zpět do bytů.

1
yfeldblum

Skutečný význam toho je, kolik bitů bude tvořit požadovaný klíč pro pokračování v šifrovacích nebo dešifrovacích algoritmech. Předpokládejme, že velikost klíče je 256 bitů, což znamená, že pokud vezmete celé číslo, které je stručnější než 2 ^ 255 a nižší než 2 ^ 256. Mezi celým číslem ji musíte vzít jako veřejný nebo soukromý klíč.

0
seshu babu