No final do dia, o que o urandom oferece pode ser específico da implementação, mas a página do manual diz que usará a entropia disponível se estiver lá, e só retornará ao PRNG quando ficar sem entropia. Então, se você tem entropia suficiente, você deve obter um resultado tão bom como se tivesse usado random .
Mas , e isso é grande, mas: Você deve assumir que está obtendo um valor puramente gerado por pseudo sem nenhuma entropia genuína, porque o pool de entropia pode estar vazio. Portanto, você deve tratar urandom como um PRNG, mesmo que isso possa ser melhor do que em qualquer situação. Se isso é não determinístico (dentro dos limites do seu código) e você tem que esperar que o pior caso se aplique. Afinal, se você tivesse certeza de haver entropia suficiente no pool, usaria random , certo? Então, o ato de usar urandom significa que você está bem com um PRNG, e isso significa um resultado potencialmente, teoricamente, quebrável.