I understand that PRNG are Random Number Generators that uses a deterministic algorithm based off of a seed.
I also understand that CSRNG are PRNG that are cryptographic-ally safe to use for generating random numbers.
And by cryptographic-ally safe, I believe this means that even if an attacker knows the deterministic algorithm and the seed, they would not be able to predict the next random number. I understand this is due to CSRNG also making use of some internal states.
If there are any errors in the above, I will appreciate a clarification because my questions depends on them being accurate.
So my main question is, when do you need a PRNG? and when must you use a CSPRNG?
My initial answer to that was that CSPRNG should be used when generating keys, but when I searched for "what are prng used for", one of the pages I found was this which states that:
In cryptography, PRNG’s are used to construct session keys and stream ciphers
Which leaves me a bit confused, why should PRNG, that is not cryptographically strong be that is used for keys? I would expect CSPRNG to be used instead.
This makes me realise that perhaps I do not fully understand PRNG's and CSPRNG's yet and how they are used. Hence this question: In Cryptography, When exactly are PRNG used and when are CSPRNG used?