[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cryptography
Subject:    Re: [Cryptography] IPFS spin locks !
From:       Henry Baker <hbaker1 () pipeline ! com>
Date:       2021-05-10 22:36:21
Message-ID: E1lgEXa-000DTI-Nj () elasmtp-galgo ! atl ! sa ! earthlink ! net
[Download RAW message or body]

At 03:13 PM 5/10/2021, Jerry Leichter wrote:
> > The IPFS (Interplanetary File System) *addresses* blocks
> > that are 'stored' within it by producing a *hash* of the
> > (immutable) block itself as its 'address'.
> > 
> > Assuming that the hashing algorithm is publicly known,
> > anyone can now create a spin lock whose 'address' is the
> > hash of some not-yet-stored-in-IPFS random file, and this
> > random file is communicated to other processes who all
> > need to synchronize with one another....
> 
> Heh.  This was (is?) a standard technique in the Linda programming model.  In \
> Linda, communication occurs through tuple space, where tuple space is the holder of \
> a multi-set of tuples of data of arbitrary types.  You can use out() to put a tuple \
> into tuple space; in() to atomically pull a "matching" one out in an atomic \
> operation; and rd() to atomically read the values in a "matching" tuple while \
> leaving it alone.  in() and rd() have arguments that are tuples of values or \
> wildcards; the values must match a tuple in tuple space while the wildcards get \
> filled in and are available to the caller.  in() and rd() - in the basic definition \
> of the model - are fully synchronous, waiting indefinitely for a tuple they can \
> match to appear.  So a lock is just a pre-defined tuple that those wanting the lock \
> can in().  Since the field types and values are arbitrary, this can be done \
> securely by choosing an appropriate value - though security was not something \
> really considered in the design of 
the model, which was intended for implementing cooperating components of a \
parallel/distributed program.
> 
> One nice thing about the basic model is the symmetry of communication:  Programs \
> can be written in which components doing out() have no idea who does in() or rd(), \
> and vice-versa.  Further, the order in which these occur doesn't matter:  If in() \
> occurs first, it simply waits for the corresponding out().  This avoids some common \
> problems with locks that occur when you don't carefully ensure that the lock is \
> actually there before someone tries to use it. 
> There are extensions to the model that allow timeouts, which (in my opinion) \
> greatly complicate the semantics and end up forcing you to design loops and \
> fallbacks which often end up hurting more than they apparently help.

Supposing IPFS used SHA256 for 'addresses/hashes'; the following
address:

852dba5b321a0eb4800e4e2099faa2353e85ae4f3b181e4e7b4ee1dd161e0482

when finally read, yields "Climb Mount Niitaka\n".

_______________________________________________
The cryptography mailing list
cryptography@metzdowd.com
https://www.metzdowd.com/mailman/listinfo/cryptography


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic