0
In the browser, I'm using AES-256-CBC with 128bit IV & PBKDF2 to encrypt the mnemonic
"tell file snow green proof evil six squeeze budget various orbit clock"
with a password
"s0mesuperl0ng!password@!"
with 30,000 rounds it's taking roughly 22 seconds. It feels too long, but I don't want to make it insecure.
Can I safely reduce the rounds to make it a bit faster? and if so what would be the minimum?
Could I get away with 10,000?
Why do you need multiple rounds of AES? Is this some form of key strengthening? Also 1400 rounds of AES is extremely slow, what software are you using? – Pieter Wuille – 2017-04-17T11:01:06.110
This is just with JavaScript in the browser, the reason for the multiple rounds is to slow down a brute force attack and the use of PBKDF2 is to strengthen the password. – Will-In-China – 2017-04-17T11:13:55.593
But the 30000 rounds is for PBDKF, not for AES, I assume? – Pieter Wuille – 2017-04-17T12:44:41.227
yes we are passing in the password, iv, rounds and key size to PBKDF2, sorry if I wasn't clear – Will-In-China – 2017-04-17T12:56:33.970
1I'm editing the title. – Pieter Wuille – 2017-04-17T13:12:53.230
I'm not an expert here, but AFAIK there isn't a bright line between "secure" and "insecure" and there's no well-defined minimum that is "safe". Increasing the number of rounds causes a proportional increase in the amount of work a brute-force attacker would have to do, but also means verification will take longer. It's simply a trade-off and you have to balance the patience of your users against the amount of resources you think an attacker might be willing to commit. – Nate Eldredge – 2017-04-17T13:46:23.983
Nate, I totally agree, I was looking for some opinion on this gray area, I found 10,000 rounds at about 8 seconds reasonable, but I was looking for a reaction, like "hell no" or "10k seems cool" or the lowest I'd go is "x" – Will-In-China – 2017-04-17T13:50:36.083