Рассмотрим следующую учетную запись Ethereum, которую я создал в MyEtherWallet :
{ 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' } }
Значение равно . n
_ В других реализациях, по-видимому, установлено количество раундов хеширования (упомянутое в keythereum ). Являются ли эти параметры менее безопасными? Если да, то в какой степени? Если нет, то почему?kdfparams
1024
262144
Что ж, приступим:
Во-первых, AES — это не функция ХЕШИРОВАНИЯ, а функция криптографии. Это не то же самое, поэтому не смешивайте оба.
Количество раундов означает, очевидно, большую безопасность. Это основа шифрования. Чем больше выполнено преобразований, тем меньше уязвимость к атакам дешифрования и анализу. Но больше раундов означает также больше времени выполнения и ресурсов, поэтому вы должны найти среднюю точку, в которой вы оптимизируете безопасность и вычислительные ресурсы. Для меня 1024 кажется справедливым числом.
В вашем случае самым слабым местом является IV. IV никогда не должен быть фиксированным значением, а случайным или псевдослучайным, поскольку использование фиксированного IV делает ваше шифрование более слабым и более уязвимым для атак «криптоанализа».
Надеюсь, мой ответ поможет вам.
тайвано
StuffAndThings
КанекиДев
Аджой Бхатия