What is a "set synchronized CSPRNG"? I'm looking to implement a performant revocation method for JWTs. I'm reading a paper, in which the following section's second paragraph states:


  If we use the client hashing approach described previously, we have a greater volume of keys to deal with. One possible approach would be to generate the secret using a set synchronized cryptographically secure pseudorandom number generators, creating a kind of rolling code for each group of clients. This would mean that only the key change events have to propagate, not the actual keys themselves, greatly reducing the associated performance cost.


What is a set synchronised cryptographically secure pseudorandom number generator (CSPRNG)? 

I know what a CSPRNG is, in that it is a random number generator with an acceptable degree of randomness. But what is the set synchronised part? Does it relate to synchronised sets in Java? What does being set synchronous achieve in this context?
A CSPRNG is really just a name for an algorithm that, given a specific seed (where the seed has a certain amount of entropy) generates a pseudo random stream from that. A stream cipher that generates a key stream independent from the plaintext can be thought of as a CSPRNG in that sense.

So say you have a fully random 128 bit seed, then you can use that seed to generate an almost endless amount of key stream. This key stream can then be split up into separate keys.



In practice you should not confuse this with a CSPRNG or random number generator that is supplied by the system itself. The problem is that the internal operation and reseeding-strategy may introduce changes between different streams: generally such algorithms are only used to generate random values after all.

To be honest this seems more a good application for a ratchet scheme than one for a random number generator as you know it. Of course, if you take the theoretic approach, somebody could argue that - from a theoretical standpoint - the ratchet scheme constitutes CSPRNG.



Directly related to this is also the notion of KDF's, key derivation functions, which can calculate multiple keys from one specific master keys. However, in this case the key not dependent on the previous keys. It could be that a key management scheme requires one or the other, or both.