14. marts 2005 - 16:38Der er
16 kommentarer og 2 løsninger
Bryde kryptering
Jeg skriver opgave om kryptering, og vil gerne skrive et afsnit om at bryde krypteringen.
Er det muligt at lave nogle beregninger over, hvor langt tid det vil tage at bryde fx en 128 bit kryptering med fx brute force metoden, eller noget i den stil.
Søger ikke en bestemt konkret beregning, men noget relevant og interessant..
Forresten har jeg oprettet spørgsmølet i denne kategori, fordi jeg har set mange krypteringsdiskussioner her.
Du kan godt lave beregninger over hvor lang tid det tager, men det er ikke altid en lige simpel opgave. Det letteste er at lave en beregning over, hvor lang tid det tager i worst-case udfra en mængde betingelser (såsom længden af input etc). Det udmynter sig nok i at se hvor antallet af mulige kombinationer og så sammenkæde det med den fremgangsmåde du vil bryde noget krypteret på. Hvis du derfor benytter brute-force metoden er det antallet af inputs du prøver i worstcase (hvilket er antallet er gyldige tegn opløftet i maxlængden af strengen plus noget mere :)) multipliceret med den tid det tager at kryptere input og sammenligne det.
Det bliver mere komplekst, hvis du skal lave statistisk analyse af, hvilken gennemsnitstid man kan forvente.
acid-head: Det er meget normalt at man ikke taler om tid i form af sekunder når man snakker om køretid for algoritmer. Man snakker istedet om processer-operationer i forhold til længden af det input algoritmen arbejder med.
For eksempel kan man vise at hvis man sorterer n tal med insertion sort vil køre i værste fald tage n^2 operationer.
acid-head: Det er jo svært at give et bud på. For vi kan jo forvente at du kører i et trådet miljø så den tid du rent faktisk observerer til være højere end den tid vi kan beregne os frem til. Dertil er det umiddelbart lidt svært at skulle beregne på tiden det tager at få fat i informationerne og gemme i lageret samt den tid det nu tager for lager-systemet at skrive tilbage til disken, hvis det bliver nødvendigt.
Dertil kommer at jeg ikke lige kender en god måde at undersøge hvorvidt en compiler er optimal.
Jeg synes også du skal læse den artikel som arne_v postede tidligere.
Med hensyn til hvilke antagelser du skal tage så har arne_v allerede nævnt nogle af de ting som køretiden afhænger af nemlig "algoritmen, koden, compileren, hardwaren". En anden vigtig faktisk er også hvilken input du giver til algoritmen. Der er tilfælde hvor man kan begrænse dette domæne. Hvis man for eksempel vil bryge personlige passwords er det måske en fair antagelse at typiske passwords består af alphanumeriske tegn, samt længden af passwordet max er 16. Det er stadig man kombinationer men dog væsentligt mindre end hvis man skulle udtømme alle muligheder inden for et tegnsæt.
husk at ved brute force angreb vil man i gennemsnit skulle lave (2^128)/2 forsøg for at bryde nøglen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.