¿Tiene BouncyCastle un servicio SecureRandom?

Estoy tratando de generar números aleatorios criptográficamente seguros usando Java y usando la siguiente sección de código para crear un objeto SecureRandom para ver su proveedor y algoritmo:

Provider prov=new org.spongycastle.jce.provider.BouncyCastleProvider(); Security.insertProviderAt(prov, 1); SecureRandom sr=new SecureRandom(); srProvider=sr.getProvider().toString(); srAlgorithm=sr.getAlgorithm(); 

(Castillo esponjoso es equivalente al castillo inflable para android hecho por Roberto Tyley – https://github.com/rtyley )

Cuando se muestra el proveedor y el algoritmo, se muestra: Crypto versión 1.0 SHA1PRNG

Lo que me sorprende es que el proveedor no es Spongycastle, incluso si se instala como el primer proveedor en el código. Me gustaría preguntarle a) ¿No se implementa SecureRandom en Spongy Castle (o Bouncy Castle)? B) ¿Qué "Crypto versión 1.0" es exactamente (me refiero es Sun JCE proveedor o qué?)

Gracias…

Rubí

Asumiendo que usted está funcionando en Android (usted no lo dijo explícitamente). Bouncy Castle no proporciona una implementación SecureRandom . 'Crypto' es la armonía de Apache (en la que se basa la mayor parte del código Java básico de Android) proveedor JCE. No hay código Sun JCE en Android. BTW, el proveedor 'Crypto' sólo proporciona implementaciones SHA1PRNG (RNG), SHA-1 (hash) y SHA1withDSA (firma). Todo lo demás es proporcionado por Bouncy Castle o el proveedor basado en OpenSSL.

Pregunta: ¿Por qué crees que necesitas una implementación de SecureRandom desde Bouncy / Spongy Castle?

Bouncy Castle proporciona un conjunto de Generadores de Número Pseudo Aleatorio (PRNGs). Hay muchos nombres para PRNG; NIST los llama generadores de bits aleatorios deterministas (DRBGs). Sin embargo, sólo están disponibles en la API "ligera" de Bouncy Castle, en el paquete org.bouncycastle.crypto.prng .

Sin embargo, Bouncy Castle es una implementación sólo de software de algoritmos criptográficos. Esto significa que no contiene una fuente de entropía . La entropía no puede ser generada por el software solo ya que los propios algoritmos de software son deterministas. Así que incluso si el proveedor Bouncy Castle registrara algunos de los generadores en su proveedor "BC" (o proveedor de Spongy para Android), entonces todavía tendría que confiar en la misma fuente de entropía que la implementación de la plataforma SecureRandom .

Como la fuente de entropía es probablemente el culpable de la mayoría de los problemas de rendimiento, no debe esperar maravillas de Bouncy Castle con respecto a la eficiencia de generación de números aleatorios.

Actualmente (v1.54) el proveedor Bouncy Castle no registra ninguna implementación de SecureRandom en absoluto, así que hay eso.

  • "Regalo" en una aplicación en Android de compra
  • No se puede encontrar la clase de símbolo onClickListener
  • ¿Por qué estoy recibiendo la excepción HttpHostConnectException?
  • OutOfMemoryError ¿qué aumentar y cómo?
  • Guardando colecciones de niños con OrmLite en Android con objetos creados de Jackson
  • El inicio de sesión de Twitter de Android no funciona con Fabric SDK - La devolución de llamada no debe ser nula
  • Android JobScheduler se ejecuta varias veces
  • ¿Cómo depurar un complemento de Gradle?
  • Cómo configurar el color de resaltado para el elemento ListView?
  • Obtener coordenadas táctiles en relación con una vista (Equivalente a ScreenToClient?)
  • Cómo borrar las preferencias de SharedPreferences en Android, no solo Valores
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.