sry tobse ... aber deine antwort auf meine ist leider mal sowas von dermaßen falsch ... das ich das hier einfach mal grade stellen muss
Du hast einges, gefährliches Halbwissen. Lass mich das auch nochmal richtigstellen:
1) PKCS#5 und PKCS#7 sind padding-schemata ... schreiben also vor unter welchen regeln ein input variabler länge auf einen output konstanter länger (bzw korrekterweise einem vielfachen der blocklänge) gebracht
ERGO : da durch weil es ein festes muster ist KANN es schon mal gar keine zufälligen daten enthalten
Ich weiss, was Padding Schemata sind. AES bietet 16 byte input bröße. Mindestens ein Byte geht drauf, weil man irgendwo die länge des Plaintext markieren muss bleiben also 15 byte für den Plaintext. Ein byte hat aber einen Wertebereich von 0 bis 255, notiert werden müssen aber wie gesagt maximal 15. Da bleiben ein paar bits die man zufällig setzen kann. Und nichts spricht dagegen einen weiteren byte zu reservieren um ihn mit zufallsdaten zu füllen. Schau dir PKCS7 für Siganturen und für asymmetrische Kryptographie an, da sind zufällige bytes vorgeschrieben.
2) PKCS#5 ist nur 64bit = 8 Byte ... daher ist ein padding-wert größer 0x08 unzulässig ... und 0x08 würde auch nur dann kommen wenn ein ganzer block, also volle 64bit gepadded werden
[...]
ergo : das von dir gepostete muster " | 0xXX 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F | 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F | " kann gar kein PKCS#5 sein ... sondern ist eben, wie ich es auch korrekt erklärt habe , PKCS#7
So die Spezifikation. In der Praxis wird das aber oft so gemacht, wie ich geschrieben hatte. AES braucht 16 bytes. Man kann es nicht mit 9 betreiben. Und wenn man den Rest mit 0en auffüllt, wie soll der entschlüsselnde wissen ob die nicht teil des Plaintext waren? Sprich: wenn du java sagst AES/.../PKCS5Padding dann muss es ja irgendwas machen um auf die 16 bytes zu kommen. Und das ist eben genau das, was ich schrieb.
hier muss ich jetzt erlich gesagt gestehen das ich jetzt nicht aus dem kopf weis ob bei PKCS-padding nur gepadded wird wenn nötig oder wie z.b. bei MDx oder SHAx grundsätzlich immer .. auch wenn der input bereits passende länge hat
Es ist immer mindestens ein Byte fürs paddinng sonst würden bytes des plaintext für informationen aus dem padding gehalten.
3) mir ist durchaus bewusst das sich padding für known-plain-text-attacks nutzen lässt ... vor allem im zusammenhang mit ECB ... aber man kann AES auch im NO-PADDING verfahren laufen lassen ... so das man durchaus eine mögliche operation AES/ECB/NoPadding erhält ...
klar ist diese variante schon alleine auf grund ECB selbst sehr anfällig ... eleminiert aber den möglichen plain-angriff übers PKCS-padding
Ich sagte ja auch: Wenn der Plaintext 16 vorhersehbare bytes enthält (und bei schlampig oder nicht dafür ausgeleten Protokollen kommt das schonmal vor) dann ist ein AES/ECB/NoPadding so ziemlich das schlechteste, was du machen kannst. Padding
muss zum einsatz kommen (alleine der fehlenden Garantie wegen, dass der plaintext immer ein vielfaches der Blockgröße ist).
4) auch bei CBC hat man darauf zu achten das man die kombination Key1+IV1 nur genau ein mal nutzt um so halt einen reply-attack zu verhindern ... es spielt keine rolle ob das mit CBC, CTR oder OFB gemacht wird und hat mit dem padding auch schon mal überhaupt nichts mehr zu tun
Du weisst, wie CTR funktioniert? Schau das mal nach. Klar, bei gleichem Key und IV kann ich imme rein reply machen. Bei gleichem Key und IV mit CTR kann ich das XOR von immer zwei plaintext-blöcken erhalten. Das ist suboptimal.
Und nochwas: Bei einem nicht-randomisierten Padding kann ich im CTR modus mehr von dem output des AES-Ciphers herausfinden als mit einem randomisierten. Hilft zwar nur mit sehr vielen Daten etwas aber gut ist es deswegen trotzdem nicht.
das aber ein bestimmtes padding-schema einfluss auf die sicherheit eines crypto-algos haben soll ... da müssen schon ne ganze menge unglücklicher umstände zusammen kommen bis man wirklich soweit ist
Da stimme ich dir zu. Mir geht es hier wie bereits gesagt aber nicht um die Praxis sondern ums Prinzip. Und wenn eine Schwachstelle, sei sie auch noch so unbedeutend und klein, korrigiert werden kann sollte das passieren. Denn wenn von solchen Schwachstellen mal 10 oder 20 zusammenkommen dann kann das ausreichen, um als "ne ganze menge unglücklicher umstände" durchzugehen.
du hast einen so dermaßen absoluten bullshit geschrieben ... was mir zeigt das du von dem wo von du da gesprochen hast mal sowas von überhaupt gar keine ahnung hast ... das ich mich echt fragen muss warum ich überhaupt nachgefragt habe
Lass mich mal die Forenregeln zusammenfassen: Wer sich derart äußert und hofft, ernst genommen zu werden, sollte in Zukunft die Fresse halten. Du hast weniger Ahnung von der Thematik als ich, was alleine deine Aussage "Padding kann garnicht randomisiert sein" belegt. Tu bitte in Zukunft nicht so, als hättest du die Weisheit mit Löffeln gefressen.