Esta é uma pergunta muito boa. Não acredito que tenha sido considerado adequadamente na pressa de usar UUIDs em todos os lugares. Não encontrei nenhuma pesquisa sólida.
Uma sugestão: pise com muito cuidado aqui e conheça bem sua criptografia. Se você usar um UUID de 128 bits, o 'efeito de aniversário' nos informa que é provável que ocorra uma colisão após a geração de cerca de 2 ^ 64 chaves, desde que você tenha 128 bits de entropia em cada chave .
Na verdade, é bastante difícil garantir que esse seja o caso. A verdadeira aleatoriedade pode ser gerada a partir de (a) decaimento radioativo (b) ruído aleatório do rádio de fundo, muitas vezes contaminado, a menos que você tenha cuidado (c) ruído eletrônico adequadamente escolhido, por exemplo, retirado de um diodo Zener com polaridade inversa. (Eu joguei com o último, e funciona como um encanto, BTW).
Eu não confiava em pronunciamentos como "eu não vejo isso há um ano de uso", a menos que o usuário tenha gerado algo parecido com 2 ^ 64 (ou seja, cerca de 10 ^ 19) chaves e verificado todos eles um contra o outro, um exercício não trivial.
O problema é esse. Digamos que você tenha apenas 100 bits de entropia, ao comparar suas chaves com todas as outras chaves que todos os outros estão gerando em um espaço de chaves comum. Você começará a ver colisões em cerca de 2 ^ 50 ou seja. cerca de 10 ^ 15 chaves. Suas chances de encontrar uma colisão se você tiver preenchido seu banco de dados com apenas 1000 bilhões de chaves ainda são desprezíveis. E se você não verificar, mais tarde você receberá erros inesperados que se infiltram no banco de dados do tamanho de uma linhaeta. Isso pode morder muito.
O próprio fato de haver várias abordagens para gerar esses UUIDs deve causar um espasmo momentâneo de preocupação. Quando você perceber que poucos geradores usam processos 'verdadeiramente aleatórios' com entropia suficiente para um UUID do tipo 4, você deve estar excessivamente preocupado, a menos que tenha examinado cuidadosamente o conteúdo de entropia do gerador. (A maioria das pessoas não faz isso, ou mesmo sabe como fazer; você pode começar com o pacote DieHarder). NÃO confunda geração de números aleatórios pseudo-aleatórios com geração de números aleatórios verdadeira.
É fundamental que você perceba que a entropia inserida é a entropia que possui e simplesmente perturbar a chave aplicando uma função criptográfica não altera a entropia. Pode não ser intuitivamente óbvio que, se todo o meu espaço compreender os dígitos 0 e 1, o conteúdo da entropia será o mesmo das duas seqüências a seguir, desde que sejam as únicas duas opções: "Essa é uma sequência realmente muito complexa 293290729382832 * ! @@ # & ^% $$), m} "e" E AGORA PARA ALGO COMPLETAMENTE DIFERENTE ". Ainda existem apenas duas opções.
A aleatoriedade é complicada de acertar, e simplesmente acreditar que "os especialistas analisaram, portanto está tudo bem" pode não ser suficiente. Criptografistas especialistas (e alguns deles são realmente proficientes) são os primeiros a admitir que muitas vezes entendem errado. Confiamos em heartbleed, DigiNotar, etc.
Eu acho que Paul Tomblin está exercendo a devida cautela. Meu 2c.