Random Number Generator Buffering for High-Speed IV Production
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional random number generators face performance bottlenecks when producing random values in rapid succession, leading to throughput limitations in applications that require high-speed random number generation, such as IPsec protocols for data packet encryption.
Innovation Solution
Implementing a system with a random number generator that accepts unspecified-length random data requests, allowing it to produce multiple random numbers at once, which are then stored in a buffer for later use, enabling faster retrieval and reducing the need for individual requests, thus increasing the rate of random value production.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If a conventional random number generator produces random values one at a time through multiple hashing operations, then each random value is generated with sufficient cryptographic security, but the production rate is slow and creates a performance bottleneck for applications requiring rapid random value generation
Solution Approach 1:
The system pre-generates multiple random values by asserting an unspecified-length random data request, producing a batch of random numbers that are then stored in a data structure. This preliminary action allows subsequent random value requests to be fulfilled quickly from the pre-generated pool, eliminating the need to perform time-consuming hashing operations for each individual request.
Solution Approach 2:
The random value production process is segmented into two distinct modes: a bulk generation phase where multiple random values are produced at once using an unspecified-length request, and a retrieval phase where individual values are quickly extracted from the data structure. This segmentation allows the system to optimize for both cryptographic security (in bulk generation) and high-speed delivery (in retrieval).
2Reliability
If the random number generator performs multiple hashing operations to produce each random value, then cryptographic security is maintained, but the processing time increases significantly, taking upwards of 200 clock cycles per random value
Solution Approach 1:
The system performs the time-consuming cryptographic hashing operations in advance by generating an unspecified length of random data in a single batch operation. This preliminary cryptographic processing ensures security requirements are met while the results are cached, allowing rapid subsequent access without repeating the expensive hashing operations.
Solution Approach 2:
Instead of regenerating random values through repeated hashing operations for each request, the system creates copies of pre-generated random values from the data structure. This copying approach maintains cryptographic security (since the original batch was securely generated) while dramatically reducing processing time for individual requests.
3Productivity
If applications request random values in rapid sequence, then the application's throughput requirements are met, but the random number generator becomes a performance bottleneck because it cannot produce values fast enough
Solution Approach 1:
The random number generator proactively generates and stores multiple random values in advance by processing an unspecified-length request. This creates a ready pool of values that can quickly satisfy subsequent application requests, enabling the system to meet high throughput requirements without proportionally increasing the generator's operational complexity.
Solution Approach 2:
A data structure acts as an intermediary buffer between the random number generator and the application. The generator fills this buffer in bulk operations, and the application draws from it during rapid sequence requests. This intermediary decouples the generator's production rate from the application's consumption rate, allowing the application to achieve high throughput without requiring the generator to continuously operate at maximum speed.
Data Source
AI summary
Embodiments of methods and systems (100) for producing random values include a first module (120) that provides (406) a random data request (e.g., a request for an unspecified length of random data) to a random number generator (112). The random number generator generates (408) random data in response to the random data request, and multiple random values derived from the random data are stored (408) in a buffer (122). In response to receiving (414) a request for a random value (e.g., an initialization vector), the first module produces (418) the random value based on the multiple random values stored in the buffer. The system also may be configured to receive requests for other types of random values, and to fulfill (426) those requests using random data that is not buffered (e.g., random data that is received (424) directly from the random number generator in response to a request (422) for a specified length of random data).


