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?

  • 3
    $\begingroup$ Maybe it should be "a set of synchronized ..." $\endgroup$ – user253751 Mar 9 at 14:43

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.

| improve this answer | |
  • $\begingroup$ Maarten! Great information on CSPRNGs, but I'm not sure this answers the question - what is a set synchronised CSPRNG? $\endgroup$ – Nick Bull Mar 9 at 10:38
  • 1
    $\begingroup$ Ah sorry, yeah, I've never heard of the term. The word "of" seems to be missing. If you use synchronized CSPRNG you need to have the same algorithm at each entity within the protocol, so you need a set of synchronized CSPRNG's so that each participant creates the same keys from the same seed (when a specific key is required). Note that if I fill in the term set-synced CSPRNG into google, your question comes up first. Sorry, I'm afraid that that's just a typo. $\endgroup$ – Maarten Bodewes Mar 9 at 11:20
  • $\begingroup$ thank you so much! I hope that that is the case. I guess the only people who can clarify will be the authors, so I'll give them a message :) Once again, thanks for the help! $\endgroup$ – Nick Bull Mar 9 at 11:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.