Author

Topic: Question about a new ASIC-resistent (maybe) PoW based on PRNG (Read 144 times)

newbie
Activity: 1
Merit: 0
Hello guys. In my free time i created a new (i hope) PBKDF called NonHashpass (/NonHashpass][Suspicious link removed]/NonHashpass), 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,
    sha1, shake_128, sha384, sha512, sha224,
    blake2s, sha3_224, sha256, md5, sha3_384

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...)
prng.shuffle(hash_functions)

In 3rd: initkey goes through the cycled shuffled hash_funcs iteration times:

Code:
for _ in range(1000: iterations):
    hashfunc = next(hash_functions)
    initkey = hashfunc(initkey)

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.
Jump to: