Betrachten Sie das folgende Ethereum-Konto, das ich bei MyEtherWallet erstellt habe :
{ version: 3,
id: '4447b704-e28c-4e93-8b1d-32f519b46692',
address: '115312fc0ab77a0fb15a66baf51f58baefcee1dd',
Crypto:
{ ciphertext: '299dd3b289bbfa049b42b9e8caff2a37ea9cc0606b33dad64afbb9b8aa5b2bc7',
cipherparams: { iv: 'ab6abe38032296123b16b029cfce8240' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams:
{ dklen: 32,
salt: '2605c6988ea0c68dd8c363e29f815bbabb329a74493abc6766cad31b85b6fa2a',
n: 1024,
r: 8,
p: 1 },
mac: 'f4425caa02c682c74ffe1ba546ddec1f7e85b573848b896ef1e80f09adbc5511' } }
Der n
Wert von kdfparams
ist 1024
. Bei anderen Implementierungen scheint die Anzahl der Hashing-Runden auf 262144
(bei keythereum erwähnt ) eingestellt zu sein. Sind diese Parameter weniger sicher? Wenn ja, in welchem Umfang? Wenn nein, warum nicht?
Nun, fangen wir an:
Erstens ist AES keine HASHING-Funktion, sondern eine Kryptografiefunktion. Es ist nicht dasselbe, also mischen Sie nicht beides.
Die Anzahl der Runden bedeutet natürlich mehr Sicherheit. Es ist eine grundlegende Verschlüsselung. Je höher die Anzahl der durchgeführten Transformationen, desto weniger anfällig für Entschlüsselungsangriffe und Analysen. Aber mehr Runden bedeuten auch mehr Ausführungszeit und mehr Ressourcen, also müssen Sie einen Mittelwert finden, an dem Sie die Sicherheit und Rechenressourcen optimieren. Für mich scheint 1024 eine faire Zahl zu sein.
In Ihrem Fall ist der schwächste Punkt die IV. Der IV darf niemals ein fester Wert sein, sondern ein zufälliger oder pseudozufälliger Wert, da die Verwendung eines festen IV Ihre Verschlüsselung schwächer und anfälliger für "Kryptoanalyse" -Angriffe macht.
Hoffe meine Antwort wird dir helfen.
Taywano
Sachen und Dinge
KanekiDev
Ajoy Bhatia