Door wim-bart: Dit is dus een verkeerd toegepaste AES encryptie waarbij er twee constanten zijn, de sleutel en het plaatje. Wat dit plaatje weergeeft is een weergave van het versleuteld resultaat waardoor je het plaatje uit het grote geheel kan herleiden.
Mijn punt is dat uitsluitend "AES-versleuteld" nog niets zegt over hoe wordt voorkomen dat onbevoegden iets over de data te weten kunnen komen en/of dat bytes (met onzinnige) waardes worden overschreven (zonder dat dit door de techniek wordt gedetecteerd). Bovendien, gegeven een versleuteld bestand en een bijpassende sleutel hoeft dit niets te zeggen over wie inhoudelijk verantwoordelijk is of was voor de data voordat deze versleuteld werd.
Wat er bij het plaatje van de penguin fout gaat is dat voor
elk blok van 8 bytes (128 bits) effectief en uitsluitend dezelfde encryptiesleutel wordt gebruikt.
Stel dat de eerste byte van dat plaatje de waarde 23 heeft, en stel dat deze byte versleuteld de waarde 69 heeft (bij 23 kan dit elke waarde van 0 t/m 255 zijn, inclusief 23). Wat er dan gebeurt is dat van elk blok van 8 bytes waarbij de waarde 23 is, de versleutelde waarde 69 zal zijn (elke andere waarde dan 23 zal waarschijnlijk een andere waarde dan 69 opleveren, maar voor elke eerste byte van 8 geldt dezelfde "vertaalslag"). Dat lijdt dan tot een zichtbaar patroon.
Om dat te voorkómen is het belangrijk om elk te versleutelen blok met niet alleen de sleutel, maar ook met een zo willekeurig mogelijk gekozen
initialisatie-vector (IV) te "vermengen".
Als het geen probleem is dat het versleutelde bestand
langer wordt dan het origineel, dan kun je (per blok van 8 bytes) één of meer bytes als IV voor dat blok tussenvoegen (die IV-bytes zijn en worden
niet versleuteld; dat is geen probleem, mits ze maar zo willekeurig mogelijk gekozen zijn).
Bij bijvoorbeeld FDE (Full Disk Encryption) is daar geen ruimte voor (mensen willen niet dat hun schijf veel minded opslagruimte heeft t.g.v. versleuteling). Ook wil je niet
alle voorafgaande "sectors" (blokken van 512 bytes of een veelvoud daarvan) ontsleutelen om als IV telkens een (tussen-) resultaat van het vorige blok te kunnen gebruiken. Dus wordt bij FDE de IV voor elke sector afgeleid van het sectornummer (vaak met wat trucs daaromheen). Dat levert niet de allersterkste versleuteling op.
Kortom, kreten als "military grade encryption", indien AES wordt gebruikt, hoeven helemaal niets te zeggen over hoe het met de vertrouwelijkheid, integriteit en authenticiteit van informatie gesteld is.