mboost-dp1

unknown

1024-bit RSA nøglen er død

- Via Ars Technica - , redigeret af Pernicious , indsendt af Pernicious

Et hold af forskere fra universiteterne i Lausanne og Bonn samt firmaet NTT DoCoMo, har nedbrudt en 307 ciffers krypteringsnøgle i primtal. Dette tog dem 11 måneder og 100 års computertid.

Cifferet der blev brudt, er ikke det samme som en RSA nøgle, men viser at de kan brydes hvis man har tid og computerkraf nok. Det der bekymrer forskerne, er hvor hurtigt nøglerne bliver brudt. Da man brød den første nøgle på 155 cifre tog det 9 år, en 200 ciffers nøgle tog 18 måneder og 50 års computertid. Nu er man altså nede på 11 måneder for en langt mere kompleks nøgle.

Professor i kryptering, Arjen Lenstra, der har udviklet den metode der bruges til bryde krypteringen med, mener at 1024 bit RSA nøglen er død. Med de mange botnets der findes, har evt. crackere rigeligt med computerkraft til rådighed, hvis de ønsker at gøre forsøget.





Gå til bund
Gravatar #51 - Hundestejle
26. maj 2007 12:47
Skræmmende ved jeg nu ikke om det er. Ikke for undertegnede.
Hvis der skal 100 "computer-år" og 11 måneder til at bryde mit visakort, så er jeg overbevist om, at det vil være mere rentabelt for en forbryder at tjene de småpenge jeg har, ved at sidde et par dage ved kassen i Netto.
Gravatar #52 - kasperd
26. maj 2007 15:09
[url=#50]#50[/url] janus112
jeg tror, uden at være sikker, at designe en algoritme der vilkårlig løser en vilkårlig kryptering er i sig selv uløseligt.
Hvis ikke der stilles krav om performance, så er der en simpel løsning på det problem. Den løsning hedder brute force. Det er først når det skal gøres hurtigere en brute force, at det bliver interessant. Der findes allerede en generel kvante algoritme, der er hurtigere end brute force. Den er bare ikke så meget hurtigere, at kryptering er værdiløst. Men det betyder dog, at man skal kryptere med det dobbelte antal bits for at opnå samme sikkerhed.

Alt dette forudsætter selvfølgelig, at man har en måde at verificere, hvornår man har fundet den rigtige nøgle. Med asymmetrisk kryptering er der altid en måde at verificere det. Med symmetrisk kryptering afhænger det af forholdet mellem størrelserne af nøgle og data. Bruges en one-time pad er nøglen mindst lige så stor som data, og så hjælper brute force ikke. Man kan selvfølgelig stadig brute force sig igennem alle mulighederne, men det er ret meningsløst, da man aldrig ved hvornår man er nået frem til den rigtige.

[url=#51]#51[/url] Hundestejle
Hvis der skal 100 "computer-år" og 11 måneder til at bryde mit visakort
Nej, de er næppe nogen som ønsker at bruge så mange resourcer på et enkelt kreditkort. Men man må ikke glemme, at efterhånden som computere bliver hurtigere vil den nødvendige mængde resourcer falde. Desuden ville et angreb ikke nødvendigvis bliver rettet imod et enkelt kreditkort. Forestil dig, at man brugte angrebet for at fake et website hvor et stort antal brugere gennemfører transaktioner. Udfør beregningen én gang for at beregne nøglen, derefter kan man hijacke så mange sessioner som man gider.
Gravatar #53 - janus112
26. maj 2007 17:55
#52
ja selfølgelig. Det jeg mener er, at en algorithme der brute force angriber ethver vilkårlig algoritme findes nok ikke. Der kræves måske en konservativ løsning til hver enkel.

Desuden kan en kvantecomputer ikke beregne mere end en almindelig computer, da det kan vises at en turing maskine kan simulere en kvantecomputer.
Gravatar #54 - kasperd
26. maj 2007 21:08
[url=#53]#53[/url] janus112
Det jeg mener er, at en algorithme der brute force angriber ethver vilkårlig algoritme findes nok ikke.
for K in {0,1}^k
do
M=decrypt(C,K)
if correct(M) return K
done
Desuden kan en kvantecomputer ikke beregne mere end en almindelig computer, da det kan vises at en turing maskine kan simulere en kvantecomputer.
Det skal nok passe. Det drejer sig jo ikke om, hvad der kan beregnes, men hvor hurtigt det kan gøres. En Turing maskine er langsom.

Jeg kender til to teoretiske modeller for beregninger, en Turing maskine og en random access maskine. En Turing maskine kører frem og tilbage på et langt tape, men har i sig selv kun et begrænset antal interne tilstande. Det tager tid at køre frem og tilbage på sådan et tape, og en algoritme kan have brug for at gøre det mange gange. En random access maskine minder mere om den måde en computer faktisk fungerer på, og den vil i de fleste situationer kunne udføre en opgave hurtigere end en Turing maskine.

Det er bevist at problemer der kan løses i polynomiel tid på den ene kan også løses i polynomiel tid på den anden. Men normalt vil polynomiet have højere grad på en Turing maskine end på en random access maskine.

En kvantecomputer kan være endnu hurtigere. Spørgsmålet, som vist ikke er endegyldigt besvaret endnu er, om der er problemer som kan løses i polynomiel tid på en kvantecomputer men ikke på en Turing maskine.

Faktorisering er en kandidat, hvor den bedst kendte algoritme på en kvantecomputer kører i polynomiel tid. Det kan den bedst kendte algoritme på en Turing maskine ikke hamle op med.

Det hænger i øvrigt til dels sammen med spørgsmålet om, hvorvidt P=NP. Så vidt jeg ved vil ethveret problem, der kan løses i polynomiel tid på en kvantecomputer, også kunne løses i polynomielt tid på en nondeterministisk Turing maskine. Men det gælder ikke nødvendigvis den modsatte vej. Der er ingen som har udviklet et NP orakel som en polynomiel kvantealgoritme.
Gravatar #55 - hjorth
27. maj 2007 01:14
#54

for K in {0,1}^k
do
M=decrypt(C,K)
if correct(M) return K
done


Din algoritme skulle virke for en vilkårlig krypteringsalgoritme, så du bliver nødt til at fortælle os, hvad kaldet af decrypt gør.

En Turing maskine er langsom.


Du har måske lige samlet nogle empiriske data fra din egen Turing-maskine hjemme på kontoret eller hvad? :) (Undskyld, ved godt hvad du mener)
Gravatar #56 - kasperd
27. maj 2007 07:04
[url=#55]#55[/url] hjorth
så du bliver nødt til at fortælle os, hvad kaldet af decrypt gør.
Kalder den krypterings algoritme, du ønsker at bryde. Du havde måske tænkt dig at gøre brug af security through obscurity?
Gravatar #57 - myplacedk
27. maj 2007 07:14
#56
du bliver nødt til at fortælle os, hvad kaldet af decrypt gør.

Så gætter jeg på, at du som programmør vil sætte stor pris på dokumentation der er så udførlig, at vi andre ikke gider læse den. :)
Jeg gætter på at den forsøger at dekryptere C ud fra nøglen K, og returnerer resultatet.

Der er 3 ting der kan forhindre algoritmen i at virke:
1 Man skal have det krypterede data (steganograpfi osv.)
2 Man skal kende krypteringsformen
3 correct(M) skal kunne implementeres, enten ved at krypteringsformen giver mulighed for det, eller med known plaintext.

Det eneste man kan gøre for at forhindre brute-force angreb helt, er 3'eren. Dvs. kryptere med one-time pad. Det er dog ret besværligt at have med at gøre. Ikke implementering (det er næsten lige så nemt som caesar), men brugen i praksis.
Gravatar #58 - kasperd
27. maj 2007 14:19
[url=#57]#57[/url] myplacedk
Man skal have det krypterede data
Det er jo åbenlyst. Hvis ikke udvekommende har adgang til de krypterede data var der jo ingen grund til at kryptere dem i første omgang.

steganograpfi osv.
Er bare en del af algoritmen.

Man skal kende krypteringsformen
Det er selvfølgelig en fordel, når man ønsker at bryde krypteringen. Men at basere sig på, at andre ikke kender den, er bare security through obscurity. Det opnår man ikke sikkerhed ved.

Et brute force angreb kan stadig udføres, man skal bare brute force over alle nøgler og algoritmer. Det eneste tricky ved det er, at man ikke kan se på en algoritme og afgøre, om det er en kryptering. Det betyder at et brute force angreb vil være nødt til at afprøve flere algoritmer i parallel.

correct(M) skal kunne implementeres, enten ved at krypteringsformen giver mulighed for det, eller med known plaintext.
Eller ved blot at have statistisk kendskab til distributionen af plaintext. Hvis mængden af plaintext der er krypteret er væsentligt større end det antal bits, der skal brute forces, så vil sådan en statistik kunne virke.
Gravatar #59 - myplacedk
27. maj 2007 16:00
#58
"steganograpfi osv."
Er bare en del af algoritmen.

Så har du ikke forstået steganografi, for så er det bare omvendt kompression gjort besværligt. :)

"Man skal kende krypteringsformen"
Det er selvfølgelig en fordel, når man ønsker at bryde krypteringen. Men at basere sig på, at andre ikke kender den, er bare security through obscurity. Det opnår man ikke sikkerhed ved.

Jeg er helt enig. Men hvis krypteringsmetoden ikke er kendt af dit bruteforce-værktøj, kan du ikke bruteforce den. Du må lære den at kende først, og så tilpasse dit bruteforce-værktøj.
Du kan ikke "brute force over alle algoritmer", da du ikke bare kan sætte dig ned og definere samtlige algoritmer der kan opfindes.

"correct(M) skal kunne implementeres, enten ved at krypteringsformen giver mulighed for det, eller med known plaintext."
Eller ved blot at have statistisk kendskab til distributionen af plaintext.

Som sagt, det kræver at krypteringsformen giver mulighed for det, det gør fx. one-time pads ikke.
Gravatar #60 - kasperd
27. maj 2007 18:09
[url=#59]#59[/url] myplacedk
Så har du ikke forstået steganografi, for så er det bare omvendt kompression gjort besværligt.
Ja, sådan kan man godt forstå steganografi. Det gør det ikke væsentligt sværere at bryde krypteringen, når man altså først lige har fundet på at prøve. Men hvis man er i gang med at brute force, så kan man jo bare prøve at brute force alle de data man kan komme i nærheden af, uanset om man tror der er nogle krypterede data gemt eller ej.

Du kan ikke "brute force over alle algoritmer", da du ikke bare kan sætte dig ned og definere samtlige algoritmer der kan opfindes.
Jo, man kan. Det er jo lige netop det, der er hele essensen af Alan Turings arbejde.

Som sagt, det kræver at krypteringsformen giver mulighed for det, det gør fx. one-time pads ikke.
Hvilket så også var det jeg startede med at sige. Nu er der bare mange situationer, hvor en one time pad ikke er praktisk (og meget få, hvor den er).
Gravatar #61 - arne_v
27. maj 2007 18:37
#60

Er der et endeligt antal krypterings algoritmer ?
Gravatar #62 - kasperd
27. maj 2007 18:53
[url=#61]#61[/url] arne_v
Er der et endeligt antal krypterings algoritmer ?
Nej, men de kan nummereres. Så man kan starte fra en ende af, og på et tidspunkt vil man nå frem til den rigtige. Tidsforbruget afhænger selvfølgelig af, hvor kompliceret en algoritme, der anvendes. Men for enhver given algoritme, vil man nå frem til den i endelig tid.

Hvis du tænker på et positivt heltal kan jeg finde frem til det, hvis jeg får lov at prøve vilkårligt mange gange. Jeg gætter først på 1, hvis ikke det var det, så gætter jeg i stedet på 2, så prøver jeg 3, 4, osv.
Gravatar #63 - arne_v
27. maj 2007 20:49
#62

Men for enhver given algoritme, vil man nå frem til den i endelig tid.


Hvad er den forventede tid for en ukendt algoritme ?
Gravatar #64 - kasperd
28. maj 2007 08:06
[url=#63]#63[/url] arne_v
Hvad er den forventede tid for en ukendt algoritme ?
Den må være eksponentiel i længden af algoritmen. (Jeg har aldrig sagt at det ville være effektivt)
Gravatar #65 - hjorth
28. maj 2007 11:40
#56

Kalder den krypterings algoritme, du ønsker at bryde.


Jamen, hele humlen var jo, at din algoritme skulle virke, uden at du havde noget som helst kendskab til krypteringsalgoritmen. Det var det, hele Janus' spørgsmål gik ud på. Du skal altså skrive et program, der givet en krypteret streng S, der kan være krypteret med en vilkårlig algoritme (dette inkluderer algoritmer, du ikke kender), dekrypterer S. Programmet skal virke for alle algoritmer. Det gør dit program ikke, medmindre du laver et eller andet drastisk i dekrypt-metoden.
Gravatar #66 - arne_v
28. maj 2007 13:41
#64

Og hvis længden af algoritmen er ukendt ?

:-)
Gravatar #67 - arne_v
28. maj 2007 13:46
#65

Det er en meget teoretisk betragtning han har gang i.
Gravatar #68 - kasperd
28. maj 2007 14:58
[url=#66]#66[/url] arne_v
Og hvis længden af algoritmen er ukendt ?
Der er intet af det jeg har sagt, der forudsætter, at du kender den.

Man skal selvfølgelig bare huske på, at mængden af krypteret data skal være væsentligt større end det antal bits, der skal brute forces.
Gravatar #69 - arne_v
28. maj 2007 17:36
#68

Hvad er den forventede tid for en ukendt algoritme af ukendt længde ?
Gravatar #70 - kasperd
28. maj 2007 19:24
[url=#69]#69[/url] arne_v
Hvad er den forventede tid for en ukendt algoritme af ukendt længde ?
Algoritmen er ligeglad med om du kender længden. Tidsforbruget vil være det samme.
Gravatar #71 - arne_v
28. maj 2007 21:14
#70

Ja. Uendeligt antager jeg !
Gravatar #72 - kasperd
29. maj 2007 03:40
[url=#71]#71[/url] arne_v
Uendeligt antager jeg
Der tager du fejl.
Gravatar #73 - arne_v
3. jun. 2007 16:34
#72

Gør jeg.

r = størrelse af algoritme
f(r) = antal algoritmer af given størrelse

Det må være åbenlyst at f''(r) > 0 for alle r - oppe i
#64 antyder du at:

f(r) = a * b^r med b > 1

Lad os antage det.

g(r) = tid det tager at prøve alle algoritmer af længde r

g(r) = c * f(r) = d * b^r med b > 1

Gennemsnitlig tid for at finde den rigtige algoritme hvor
med en længde op til r:

v(r) = 0.5*sum(x=1..r,g(x))/r = 0.5*sum(x=1..r,d*b^x)/r

Jeg vil absolut mene at v(r) går mod uendelig når r går
mod uendelig.

Eller ?
Gravatar #74 - kasperd
4. jun. 2007 05:31
[url=#73]#73[/url] arne_v
Jeg vil absolut mene at v(r) går mod uendelig når r går
mod uendelig.
Selvfølgelig går tidsforbruget mod uendelig, når størrelsen går mod uendelig. Men det betyder ikke, at det forventede tidsforbrug er uendeligt.
Gravatar #75 - arne_v
4. jun. 2007 15:45
#74

v(r) er den forventede tid, saa det vil jeg da mene.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login