Mens base64-koding ikke har til hensikt å kryptere, er det ikke langt å hente å tenke at kodingsprosessen kan tempereres med på en eller annen måte for å skape en kryptering. Sikkert, jeg er ikke den første personen som tenker på et slikt krypteringsforsøk å bruke base64-koding. Derfor vil jeg spørre hvilke typer base64-krypteringsstrategier som er kjent?
Kommentarer
- Som en 6-biters streamkryptering?
- generelt skjer krypteringen før dataene kjøres gjennom Base64
- Jeg ‘ har sett base64-krypteringsskjemaer som ble brukt før, men alle kan være trivielt ødelagt. Dette spørsmålet er fornuftig fordi folk leter etter algoritmer som dette. Men sunn fornuft betyr sannsynligvis at vi indikerer at base64 ikke er ment som en kryptering og er et resultat av forvirrende koding med kryptering. Merk at mange av oss vil anta at forutsetningen for dette spørsmålet er feil: at et kodingsskjema kan brukes til kryptering. Dette kan resultere i nedstemninger, selv om spørsmålet i det minste er interessant for mange startende kryptografer.
- Kanskje tangensielt relevant: crypto.stackexchange.com/questions/62425/… , crypto.stackexchange.com/questions/5862/… og crypto.stackexchange. no / spørsmål / 45215 / …
Svar
Dette er hentet fra Wiki-oppføring for Base64:
Hvis du virkelig ment å tukle Base64-koding for å gi kryptering, kan det gjøres på indeksnivå uthevet ovenfor. Du trenger en hemmelig nøkkel, en nøkkelavledningsfunksjon skreddersydd for å lage et frø med høyt entropi som deretter startet en pseudo tilfeldig tallgenerator. Generatorens (6-biters) utgang vil da bli XORed med indeksen for å endre kodingen for hvert tegn. Og denne teknikken kan reverseres for å dechiffrere den krypterte meldingen.
Du ser at det hele er litt plagsom. Tradisjonelt ville du lage krypteringsteksten og deretter kode den. Annet enn å beskjære en typisk 8-biters tilfeldig sekvens til 6 bits, er arbeidsmengden identisk med den tradisjonelle strømkryptering . Egentlig trenger du 33% ekstra beregninger, men det er verken her eller der.
Du er kanskje den første til å ha tenkt på denne Base64-varianten, da ingen ser ut til å være klar over lignende oppførsel. Dette skal fungere skjønt.
Kommentarer
- Takk for dette interessante forslaget! Egentlig hadde jeg i tankene enkle ting, som å permute 6bit letter table association. Eller introdusere en nøkkel og ha en bitvis xor-operasjon på hver bokstav som sykler gjennom nøkkelen eller lignende.
- @Kagaratsch Vel, jeg tror vi ‘ tenker på lignende linjer. For å permutere deg ‘ vil du trenge PRNG-funksjonalitet og for å koble en nøkkel til en PRNG, trenger du ‘ du trenger en slags nøkkelavledningsfunksjon ellers der ‘ Det vil være et misforhold mellom nøkkelformatet og formatet / tilstanden som kreves for å betjene PRNG. Hvis du bare tillater uten nøkkel, eller bruker nøkkelkarakteren din, sykling, er ordningen ‘ ikke veldig sikker, og dette er tross alt crypto.SE 🙂
- @PaulUszak Det tekniske navnet er faktisk ganske åpenbart så snart du vet det … det ‘ heter bare » XOR-kryptering «. 😉 Likevel, merk at frekvensanalyse vil bryte den trivielt. Det samme gjelder kjente klartekstangrep. Å, og for å være fullstendig angående teknisk navngivning: når du kaster inn en prng, blir en slik » XOR-kryptering » til div id = «483708b171»>
stream cipher «. Men du visste det sikkert allerede, visste du ikke ‘?
a bitwise xor operation on each letter cycling through the key
og Cycling round through the key means that the plain text will be XORed with the same sequence over and over, and in the same order.
– at ‘ heter » XOR-kryptering «. Ingen feil eller språkgap der.Svar
Dette gir ikke mening. Det er ingen hemmelig nøkkel i base64: base64-koding og dekoding er offentlige funksjoner som alle kan evaluere.
Den eneste måten base64 er relatert til kryptografi er at det er praktisk å kode kodetekst fra noe kryptosystem, som er jevnt fordelt i 8-biters strenger, i et begrenset sett med US-ASCII som ikke vil bli munget eller avvist i sammenhenger som er begrenset til ren tekst, for eksempel XML.
Kommentarer
- +1 (… og base64 gir kortere utganger enn hex-koding, det er derfor den ble utviklet og hvorfor den pleier å brukes ofte i applikasjoner.)
- Det gir perfekt fornuft 🙂 Spørsmålet ble stilt som et hypotetisk og OP leter etter implementeringsmuligheter. Det ‘ er ingen naturlov som krever at all kryptering må være super dooper effektiv. Det må bare krypteres / dekrypteres. Vet du at folk fremdeles bygger dampmotorer og er veldig stolte av dem ..?
- @PaulUszak Det gir ikke ‘ ikke mening som base64, en offentlig transformasjon mellom to ekvivalente representasjoner av data, er en annen type objekt fra en krypteringsplan som involverer hemmeligheter som ikke er kjent for en motstander. Enhver måte du endrer grensesnittet og det indre av base64 for å plassere en slags nøkkel og kryptering i det, kan tas med i standard base64-representasjonstransformasjonen og noen underliggende kryptering hvis sikkerhet ikke er relevant for base64-delen. Hvis du laget en dampdrevet Enigma-maskin, ville du si at du modifiserte konseptet med dampkraft til et krypteringsskjema?
- @SqueamishOssifrage Ja.
Svar
Den gyldne regelen for kryptografi skal være: «Det er ikke fordi du ikke kan lese teksten at denne er kryptert». Base64 er ikke ment å bli brukt for å skape krypteringstekst, og den skal ikke brukes til det formålet.
Krypteringsmetoder er alltid avhengige av en hemmelighet eller gjenstander som sikrer at bare kommunikasjonsaktørene kan reversere krypteringstekst. Hvis det ikke gjør det, som med Base64, er det ikke kryptering.
Base64 er ment å kode binært som tekst med forskjellige fordeler i forhold til andre kodingsordninger. Personvern er ikke blant disse fordelene.
Svar
Ja, det er en interesse i å kryptere oppstrøms base64: det er økonomien i iterasjoner. Når vi krypterer data og deretter koder dem, må vi lage minst to sløyfer: en om kryptering av dataene og den andre om koding av dataene som genereres. Ved å kryptere oppstrøms kan vi redusere til en sløyfe og derfor få betydelig ytelse.
@ e-sushi: Det er faktisk ikke mange eksempler bortsett fra denne som bare bruker en sløyfe: php_base64encrypted
Det er sannsynligvis andre måter å gjøre bedre på, men det viser at det er mulig …
Rediger: beklager, jeg er ikke veldig kjent med dette nettstedet.
Kommentarer
- Kan du gi et eksempel (lenke til papir eller noe) av en slik `interesse for å kryptere oppstrøms base64`? Jeg prøvde å finne mer informasjon ved hjelp av favorittsøkemotoren min , men på en eller annen måte mislyktes jeg. En peker ville derfor være mye ca. eciated.
- Base64-koding er en strømbar prosess (dvs. det gjør at en datastrøm kan kodes trinnvis når den ‘ genereres, uten å måtte lese det hele). Dermed ville det være fullt mulig å la et konvensjonelt krypteringsskjema mate utgangen til en inkrementell base64-koder, uten å måtte » lage minst to sløyfer » over dataene. Den eneste grunnen til at dette ikke er ‘ t mer vanlig, er sannsynligvis det faktum at ‘ er vanligvis mye mer effektive for å hoppe over base64-koding helt og bare overføre og / eller lagre dem som rå binære data.