XOR Cipher - förstår inte fullt ut

Permalänk

XOR Cipher - förstår inte fullt ut

Detta kanske inte är rätt avdelning att ställa frågan i, men kändes mest rimligt.

Jag ser på det här klippet: https://www.youtube.com/watch?v=O4xNJsjtN6E
Sen så läser jag: Introduction to Computer Security - Michael Goodrich, Roberto Tamassia.

Jag försöker lära mig hur Advanced Encryption System fungerar och har kört fast lite vad gäller "XOR-operationen" i hela processen.

Sen har jag nog kanske inte föstått det hela rätt med 128-, 192- samt 256-bitars nycklar. Som han säger i början av klippet så räcker det ju gott och väl med 128-bitars nyckel. Men blir inte 128 bitar 'bara' 16 tecken? T.ex bokstaven z är ju 8 bitar med decimalvärdet 122.

Han säger att i början av processen så tar man en del av nyckeln som då är i binär form (fattar jag det som) för att sedan ta 'plaintext' i ascii-kod som sedan görs om till binär form. Slutligen så jämför man par av bitar som genom XOR-operationen blir: 0 om båda är samma och 1 om båda är olika. Har jag förstått det rätt?

Försöker att koka ner det till 3 frågor:

1. Innebär 128-bitars nyckel att det är 16 tecken eller beror det på vilken typ av tecken det gäller? Ett tecken är väl alltid 8 bitar inkl. specialtecken?
2. Varför inte ta hela nyckeln och använda i XOR-operationen/-operationerna.
3. Hur fungerar förhållandet mellan 'plain text' och nyckeln i XOR-momentet? Texten kommer ju aldrig(sällan) vara lika många bitar som nyckeln?

Permalänk
Medlem

128 bitar är 16 bytes. Hur många bitar ett tecken är beror på. I många teckenuppsättningar så används 1 byte per tecken. I vissa äldre så användes bara 6 bitar per tecken. UTF-8, som är mycket vanligt nuförtiden, använder 1 till 4 bytes per tecken.

Vad gäller detaljer i hur AES fungerar så är det en komplicerad algoritm i många steg.
Jag tänker inte ens försöka förklara exakt hur den fungerar, för det skulle antagligen bli fel i något steg.

Permalänk
Medlem

1. Nyckeln presenteras som tecken som kan vara 1 till 16 bitar styck
2. Den gör det i 128 bit
3. AES har 128 bit blocks, därmed plaintext måste vara magnitud av 128 bits stor

Permalänk
Hedersmedlem

För att förtydliga ovan en aning.
AES har olika storlekar på nycklarna (128-bit, 192-bit, 256-bit), men en fast blockstorlek på 128 bitar. Den arbetar alltså alltid på 128 bitar data i taget. Vill man kryptera mer får man köra algoritmen flera gånger, vill man kryptera mindre får man lägga till padding-data som man sedan kastar bort vid dekryptering.

Ett av de första stegen är att expandera nyckeln till ett gäng (olika många beroende på nyckelns längd, men 11-16 st) 128-bitars nycklar som är de som faktiskt används under krypteringen. Därmed är nyckel och data båda alltid 128 bitar, vilket krävs för XOR. Steget att skapa dessa "round keys" från huvudnyckeln kallas "AES Key Schedule".

Kanske nämnvärt är att det i är måttligt till väldigt osäkert att bara dela upp datan i 128-bitars block och kryptera dem var för sig (detta kallas ECB). Man måste på ett av många andra sätt se till att varje block inte är helt fristående, annars blir mönster från originaldatan synliga i kryptotexten.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem
Skrivet av Thomas:

Kanske nämnvärt är att det i är måttligt till väldigt osäkert att bara dela upp datan i 128-bitars block och kryptera dem var för sig (detta kallas ECB). Man måste på ett av många andra sätt se till att varje block inte är helt fristående, annars blir mönster från originaldatan synliga i kryptotexten.

Hur det kan se ut.

Permalänk

Tack, nu förstår jag det mycket bättre!