Je beargumentering is niet geheel juist. Door cijfers en letters te gaan vervangen maak je het niet zo heel veel moeilijker om de codering te kraken. Het ligt namelijk zeer voor de hand om 'i''s te vervangen door '1'-s... Een beetje password-cracker zal dus naast alle woorden met 'i' ook dezelfde woorden proberen, maar dan met '1'. Het zou dus beter zijn om 'i' te vervangen door een veel willekeuriger karakter; bijv. '#'.
En dan werkt het alleen maar in geval van brute-force attacks, waar dus ALLE keys moeten worden 'uitgeprobeerd'. Moderne cryptanalytici gebruiken echter geen brute-force attacks. Die gebruiken eerst allerlei statistische analyses om het aantal te doorzoeken keys radicaal te verminderen. Daar helpt de 'vervang'-methode wel iets, als in: je maakt het niet MAKKELIJKER om te kraken... maar echt noemenswaardig complexer maak je 't ook niet.
Sleutelwoord bij encryptie en sterkte van keys is namelijk 'entropy'. Entropy is een maat voor informatiedichtheid: hoe hoger de entropy, hoe hoger de 'randomheid' van de informatie, en dus hoe moeilijker de informatie te achterhalen is (gecomprimeerde files hebben bijv. een hogere entropie dan ongecomprimeerde files; dit geeft aan dat de informatie uit een gecomprimeerd bestand moeilijker te herconstrueren is dan uit een niet gecomprimeerd bestand; en dat klopt ook: je hebt namelijk eerst een unzipper nodig).
Door het random vervangen van keykarakters door andere keykarakters neemt de entropy van je key niet of nauwelijks toe. Het is voor statistische analysers (tools die cryptanalytici gebruiken om de key van block-ciphers te achterhalen) een koekje om door deze vervangingen 'heen te kijken'.
Het enige wat echt goed werkt om je key 'onkraakbaar' te maken, is om bij het opstellen van je key al rekening te houden met potentiele statistische cryptanalyse. En dat houdt dus in dat wanneer je een 128 bits key hebt, je 128 random bits als key zult moeten nemen. Maar probeer zo'n key maar eens uit je hoofd te leren...
...een iets minder veilige, maar zeker veiliger dan de O=0 en i=1 (of andere) substituties werkt, is om een zgn. passphrase te kiezen (bijv. de eerste regel uit je favoriete boek). Zorg dat je passphrase ongeveer twee a drie keer zoveel bits beslaat als je key (voor 128 bits keys dus passphases van 32-48 karakters). Vervolgens bereken je een cryptografische hashwaarde dat bij deze phrase hoort (bijv. dmv. SHA1, of MD5). Dit levert een 160 bits hashwaarde op, en wanneer je van deze hash de eerste 128 bits gebruikt als key voor encryptie, heb je een redelijk veilig systeem. Brute force is natuurlijk nog steeds mogelijk, maar een stuk complexer, omdat voor iedere passphrase eerst een hash moet worden uitgerekend. Dat kost rekenkracht, en dus vertraagd het de brute-force attack flink. Nog belangrijker is dat een passphrase van 32 karakters natuurlijk veel moeilijker te brute-forcen is dan een password van bijv. 15 karakters.
Maar ook deze methode valt of staat met de complexiteit van de gekozen passphrase.
Enneh...als je je totale aantal mogelijkheden uitbreid met 7, neemt je complexiteit natuurlijk niet ook meteen met factor 7 toe; slechts met factor (totaal aantal nieuwe combos)/(totaal aantal oude combos). Als je dus (hypothetisch voorbeeld) van normaal 70 'voorkeur' karakters naar 77 gaat, neemt je complexiteit MAXIMAAL maar met factor 1,1 toe. Om factor 7 te halen, moet je in de nieuwe situatie 490 karakters hebben om uit te kiezen.