Bitcoin Forum
November 11, 2024, 09:52:22 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Question about a new ASIC-resistent (maybe) PoW based on PRNG  (Read 139 times)
The Non (OP)
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
October 30, 2020, 09:44:27 PM
 #1

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.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!