Title: Question about a new ASIC-resistent (maybe) PoW based on PRNG Post by: The Non on October 30, 2020, 09:44:27 PM Hello guys. In my free time i created a new (i hope) PBKDF called NonHashpass (/NonHashpass][Suspicious link removed]/NonHashpass (http://[Suspicious link removed)), which based on PRNG and 14 hash-functions.
To complicate brute-forcing password can be passed through N iterations of one (or various) hash-functions, so attacker would need generate N hashes for one "crack-attempt" or fully brute-force hashfunc (which is truly nonsense even for md5). But this way algorithm come to problems with ASIC devices because of static chain of hash-functions. With algorithm i propose, order of hashfuncs dynamically changes for any change of password. So question is simple: is it ASIC-resistant? And if, can it be used in cryptocurrencies? Note: main 14 hash-functions is: Code: sha3_256, blake2b, sha3_512, shake_256, NonHashpass is very simple: It takes 3 arguments: passphrase (a.k.a master key / can be BIP39), unique_word (for creating different keys) and iterations count. In 1st step: function concatenates arguments you passed and creates sha512 (the initkey) from this data: Code: nonhashpass("phrase", "unique", 1000) -> sha512("phraseunique1000") -> 76f2f60da0cb2867ccb46e44bf3dd228a... <- initkey In 2nd step: function initializes PRNG with initkey, which shuffle order of hash_functions: Code: prng = PRNG(76f2f60da0cb2867ccb46e44bf3dd228a...) In 3rd: initkey goes through the cycled shuffled hash_funcs iteration times: Code: for _ in range(1000: iterations): In the end, initkey hashes with shake_256, which can produce endless amount of bytes (as much as needed for key): Code: return shake_256(initkey) As i see for now, the worst case in this algorithm will be exit-hash of 20bytes length or totally 2^160 variations of shake_256 (with unknown length), but there is 85% probability of another exit-hash, with much more byte length. For PoW we can reduce amount to "only-32bytes-exit-hash-:)". Any thoughts? Thanks. |