Nem sou especialista nisso mas no pouco que já estudei de numeros e criptografia em javascript , todo lugar fala pra não usar essa função. Daí uma lib enorme, que todo software de carteiras de bitcoin utiliza, esta la usando essa funcao ,
Olha o alerta bem no começo da página
Nota: Math.random() não gera números criptograficamente seguros. Não a use para nada relacionado a segurança. Use a API Web Crypto, mais precisamente o método window.crypto.getRandomValues()