Jonhoo Skrevet 28. februar 2008 Rapporter Del Skrevet 28. februar 2008 (endret) Heisann folkens =) Har nylig begynt å leke litt med C++ igjen etter en laaang pause, og fant ut at jeg skulle prøve å lage en encrypter.. Føler jeg har kommet frem til et rimelig kjapt og sikkert program, men vil gjerne høre feedback på koden.. Tror det meste skal være ganske godt kommentert også =) Binærfil og kildekode ligger på http://sourceforge.net/project/showfiles.php?group_id=219133 På forhånd takk, Jon Endret 28. februar 2008 av Jonhoo Lenke til kommentar
steingrim Skrevet 29. februar 2008 Rapporter Del Skrevet 29. februar 2008 Jeg skulle gjerne gitt deg feedback på c++'en men min c++ er jeg slettes ikke flink nok i MEN jeg ble nysgjerrig på hvilke algortime® du har implementert? Lenke til kommentar
Jonhoo Skrevet 29. februar 2008 Forfatter Rapporter Del Skrevet 29. februar 2008 Er egentlig bare en enkel XORing operasjon som kjører bytene som blir lest både gjennom starten og slutten av passordet, samt passordlengden.. Altså: Inn: Hello Pass: World out[0] = H ^ W ^ d ^ 5 out[1] = e ^ o ^ l ^ 5 out[2] = l ^ r ^ r ^ 5 etc... Hvor ^ tilsvarer en XOR operasjon.. Står litt nøyere forklart på http://encryptthis.sourceforge.net =) Lenke til kommentar
GeirGrusom Skrevet 29. februar 2008 Rapporter Del Skrevet 29. februar 2008 Det enkleste er vel bare void encrypt(char* buffer, int length) { for(int i = 0; i < length; i++) *buffer++ = buffer[i] ^ i; } Veldig basic da, og også lett å gjette seg frem til, og lett å se hvis man disassembler programmet. Lenke til kommentar
charlie di meola Skrevet 29. februar 2008 Rapporter Del Skrevet 29. februar 2008 (endret) for at algoritmen din skal være sikker, så må nøkkelen være like lang som plaintext. post gjerne en fil med ciphertext (hvor det er brukt repeterende key) så er det sikkert noen her som kan dekryptere. edit: altså, det at du også XOR'er keysize og passordet begge veier gjør ingenting for sikkerheten kontra bare å XOR'e passordet forfra, du må fortsatt ha like lang key som det du skal kryptere for at det skal være sikkert Endret 29. februar 2008 av charlie di meola Lenke til kommentar
GeirGrusom Skrevet 29. februar 2008 Rapporter Del Skrevet 29. februar 2008 (endret) h e l l o w o r l d 000102030405060708090a Uansett er ikke XOR alene en spesielt sikker kryptering, men det trenger den heller ikke nødvendigvis være. Enkel Xor kryptering vil gjøre at man kvitter seg med en god del data-innbrudd. Veldig mange gir opp så fort det ikke er ren-tekst. Endret 29. februar 2008 av GeirGrusom Lenke til kommentar
areffhaug Skrevet 29. februar 2008 Rapporter Del Skrevet 29. februar 2008 Heisann folkens =)Har nylig begynt å leke litt med C++ igjen etter en laaang pause, og fant ut at jeg skulle prøve å lage en encrypter.. Føler jeg har kommet frem til et rimelig kjapt og sikkert program, men vil gjerne høre feedback på koden.. Tror det meste skal være ganske godt kommentert også =) Binærfil og kildekode ligger på http://sourceforge.net/project/showfiles.php?group_id=219133 På forhånd takk, Jon Enhver algoritme som bruker XOR er usikker, med mindre du genererer en key som er like lang som selve teksten du skal kryptere. Denne keyen må være 100% tilfeldig. Med tilfeldig menes her tilfeldighet i høyere grad enn å bruke f.eks. Cs rand() eller en hvilken som helst annen random-funksjon. De fleste operativsystem har en pseudo random number generator (PSRNG) som generer svært gode, men ikke gode nok, tilfeldigheter for denne typen kryptering. Det ideelle er å kunne lese av diverse svingninger forbundet med radioaktivitet. Dette er kjent som en One time pad (http://en.wikipedia.org/wiki/One-time_pad), og såfremt keyen er 100% random finnes det ingen måte å knekke det på. Alle løsninger er like sannsynlige, og det er ingen måte å regne seg fram til hvorvidt originalteksten var "negative" eller "bestemor". Boken "Applied Cryptography" av Bruce Schneier regnes for å være bibelen når det kommer til praktisk kryptografi, jeg anbefaler deg absolutt å ta en titt - haugevis å lære. Dette er vel mer eller mindre et direkte sitat av hva han skriver om XOR-kryptering (med unntak av en One Time PAD): Here's how to perform an attack that will break the trivial XOR encryption in a few minutes: Determine how long the key is This is done by XORing the encrypted data with itself shifted various numbers of places, and examining how many bytes are the same. If the bytes that are equal are greater than a certain percentage (6% accoridng to Bruce Schneier's Applied Cryptography second edition), then you have shifted the data by a multiple of the keylength. By finding the smallest amount of shifting that results in a large amount of equal bytes, you find the keylength. Shift the cipher text by the keylength, and XOR against itself. This removes the key and leaves you with the plaintext XORed with the plaintext shifted the length of the key. There should be enough plaintext to determine the message content. Lenke til kommentar
Jonhoo Skrevet 1. mars 2008 Forfatter Rapporter Del Skrevet 1. mars 2008 WoW, takk for mye feedback! =) Tror ikke sistnevnte metode vil fungere ganske enkelt fordi det ikke kun gjennomføres en enkelt XORing.. Som nevnt innledningsvis så XORes teksten tre ganger.. Først med passordet fra starten, så med passordet fra slutten for å forhindre for eksempel at dersom en eventuell "bad guy" kjenner til de første bytene av teksten så kan han bare putte inn den og få ut passordet.. Og gjennom lengden på passordet for å gjøre opp for symetriske passord og sikre at ikke deler av filen blir kryptert med et ufullstendig passord... Har som sagt nettopp begynt med kryptering, så det er bare å si at jeg er helt på jordet her hvis jeg er det.. =P Av nysgjerrighet: Hvordan fungerer andre krypteringsrgrammer som ikke bruker XOR? Lenke til kommentar
charlie di meola Skrevet 1. mars 2008 Rapporter Del Skrevet 1. mars 2008 som sagt, xoring av lengde og passord begge veier gir ingen ekstra sikkerhet i forhold til bare å xor'e forfra. post en fil med en kryptert utgave av ditt favorittdikt eller noe, og bruk en repeterende nøkkel, så skal jeg poste plainteksten her (hvis jeg får det til da ). Lenke til kommentar
Jonhoo Skrevet 1. mars 2008 Forfatter Rapporter Del Skrevet 1. mars 2008 Vedlagt zipfil heter egentlig Kryptert.enc, ikke .zip.. Er bare forumet som ikke vil la meg laste opp ^^ Veldig spent =) kryptert.zip Lenke til kommentar
charlie di meola Skrevet 1. mars 2008 Rapporter Del Skrevet 1. mars 2008 En snekker og nok en snekkersatt på stillaset og spaset. Da er det en planke knekker og vipper dem vekk fra stillaset. Og A hugg seg fast med sin hammer, men B la beslag på hans legge, og en vill og evindelig jammer steg opp mot det blå fra dem begge. Og hvinet ble verre og verre, og folk fulgte med dem i jammer’n. Slipp, hylte hammerens herre, slipp, ellers slår jeg med hammer’n. De hang der, gud bedre, og spaset for mengdens beundrende blikke. Men så ble det stilt på stillaset, og plutselig hang de der ikke. Men om det var ham som hang fast, som skal legges til last, eller ham som sa slipp, som slapp, det blir hipp som happ. Og dette vil ergre de store, men enkelte små vil det more. Lenke til kommentar
steingrim Skrevet 1. mars 2008 Rapporter Del Skrevet 1. mars 2008 Auda.. Erfaringen: krypteringsalgortimer overlater man til ekspertene Det er en grunn til at smarte matematikere driver med dette. Det er ikke enkelt. Lenke til kommentar
charlie di meola Skrevet 1. mars 2008 Rapporter Del Skrevet 1. mars 2008 (endret) i din algoritme har du out = plaintext ^ key ^ key[length - i - 1] ^ length; men tenk deg at altkey = key ^ key[length - i - 1] ^ length; og out = plaintext ^ altkey; da vil du bare trenge å finne altkey ved hjelp av metoder som brukes til å cracke "vanlig" xor'ing (out = plaintext ^ key). den originale keyen som du bruker er vanskeligere å finne, men den trenger man ikke for å dekryptere. og da ser du kanskje hvorfor algoritmen ikke gir mer sikkerhet enn rett frem xor'ing (det blir akkurat det samme). Endret 1. mars 2008 av charlie di meola Lenke til kommentar
Jonhoo Skrevet 1. mars 2008 Forfatter Rapporter Del Skrevet 1. mars 2008 Ah! Skjønner =) Takker for god feedback! Noen forslag til nytt program jeg kan prøve å lage? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå