Pseudorandomness and Random Number Generation

  1. Practical Implementation and Considerations
    1. Seeding and Entropy
      1. Importance of High-Quality Seeds
        1. Entropy Sources in Operating Systems
          1. /dev/random
            1. /dev/urandom
              1. Windows CryptGenRandom
              2. Entropy Pooling and Conditioning
                1. Reseeding Strategies
                  1. Entropy Estimation
                  2. Common Implementation Flaws
                    1. Insufficient Seed Entropy
                      1. Using Non-Cryptographic PRNGs for Security
                        1. Predictable Seeding
                          1. Time-based Seeds
                            1. Process ID Seeds
                              1. Reused Seeds
                              2. Modulo Bias
                                1. State Exposure and Leakage
                                  1. Improper Reseeding
                                  2. Random Number Generation in Programming Languages
                                    1. Standard Library Functions
                                      1. C's rand() Function
                                        1. Python's random Module
                                          1. Java's Random and SecureRandom
                                            1. JavaScript's Math.random()
                                            2. Access to Cryptographically Secure Sources
                                              1. Operating System APIs
                                                1. Language-Specific Libraries
                                                  1. Third-Party Libraries
                                                  2. Best Practices for Developers
                                                    1. Choosing Appropriate Generators
                                                      1. Proper Seeding Techniques
                                                        1. Avoiding Common Pitfalls
                                                      2. Hardware Random Number Generators
                                                        1. On-chip Implementations
                                                          1. Intel RDRAND Instruction
                                                            1. AMD RdSeed Instruction
                                                              1. ARM TrustZone RNG
                                                              2. Interfacing with Software
                                                                1. Security and Reliability Considerations
                                                                  1. Validation and Testing
                                                                  2. Quantum Random Number Generators
                                                                    1. Principles of Quantum Mechanics
                                                                      1. Device Architectures
                                                                        1. Photonic QRNGs
                                                                          1. Electronic QRNGs
                                                                          2. Commercial Availability
                                                                            1. Use Cases and Limitations
                                                                              1. Certification and Standards