The Quantum Entropy Appliance (QEA) is a server that comes equipped with Qrypt’s quantum random number generator cards. These cards continuously measure quantum phenomena to generate streams of truly random bytes.
The QEA can be installed on-prem, or in a data center, and it does not require any external network access. It exposes a REST API that can be called by clients in the same network to request arbitrary amounts of true random bytes.
The entropy generated by the QEA is continuously tested using the NIST SP800-22 entropy source validation test suite. If any of the tests fail, then that entropy source is cut off until its output passes tests again.
The appliance also includes an extensive set of hardware health monitors that shut down the entropy source at the card level in the event of any hardware failure or anomaly.
Due to the high overhead cost of making HTTP requests, the amount of entropy that can be retrieved from the API depends on how much entropy the client asks for with each request. In other words, it’s significantly faster to make 1 request for 512 keys than it is to make 512 requests for 1 key.
Max API throughput:
256 bit keys per request | Requests per second |
---|---|
512 | ~4,800 |
1 | ~8,000 |
Max Entropy card output: ~1,500 Mb/s
The QEA comes with Ubuntu Server v22.04 installed. Users will receive login credentials which they can use to perform any necessary admin tasks.
The QEA can be installed on-prem or in a datacenter rack. Once the appliance is connected to the network interface, the user must log in and configure its network interface (see the Ubuntu docs for a detailed guide on how to set up networking on Ubuntu Server).
The QEA listens for incoming requests on port 80.
The root path (“/”) returns a UI that displays various metrics, and health reports. This UI can also be used to download application log files for troubleshooting purposes.
Client applications can request a configurable amount of entropy from the entropy API, which is served from the “/api/v1/” route. The complete spec for the API can be found below.
openapi: 3.0.0
info:
title: Entropy API Schema
description: Entropy API Schema
version: 1.0.0
paths:
/api/v1/get_entropy:
post:
summary: Get entropy
description: Returns blocks of quantum entropy.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
block_size:
type: integer
description: Size of each entropy block in bytes.
format: byte
minimum: 1
maximum: 1024
block_count:
type: integer
description: Number of entropy blocks. Defaults to 1.
default: 1
minimum: 1
maximum: 512
responses:
'200':
description: Entropy successfully generated.
content:
application/json:
schema:
type: object
properties:
entropy:
type: array
items:
type: string
format: byte
description: Base64 encoded byte string representing the generated entropy.
extensions:
type: array
items:
type: object
description: Optional array of JSON objects representing extensions.
example:
entropy: ["dWLmTxePnl5l9bnwb1qAAQ==",
"DnDqtrbysUoRwr9Meko+ug==",
"b//8fWTqpGWOFwbNNcQORQ==",
"9LhJWGYXQjt7x8/V1QBarw=="]
extensions: []
'503':
description: Entropy capability source unavailable.
/api/v1/get_capabilities:
get:
summary: Retrieve Entropy Capabilities
description: This endpoint retrieves the capabilities of the entropy source.
responses:
'200':
description: Capabilities successfully retrieved.
content:
application/json:
schema:
type: object
properties:
entropy:
type: object
properties:
min_block_size:
type: integer
description: Minimum block size in bytes.
max_block_size:
type: integer
description: Maximum block size in bytes.
min_block_count:
type: integer
description: Minimum block count.
max_block_count:
type: integer
description: Maximum block count.
entropy_types:
type: array
items:
type: string
description: Optional array of strings describing possible entropy source variations
example: ["quantum"]
extensions:
type: array
items:
type: object
description: Optional array of JSON objects representing extensions.
healthtest:
type: object
properties:
test_threshold:
type: array
items:
type: object
properties:
test_type:
type: string
description: Test performed, e.g., nist_90b, dieharder, vendor_test1, etc.
good:
type: number
format: float
description: Test value for good quality entropy range, e.g., 0.95.
warning:
type: number
format: float
description: Test value for low quality entropy range, e.g., 0.90.
error:
type: number
format: float
description: Test value for bad quality entropy range, e.g., 0.85.
extensions:
type: array
items:
type: object
description: Optional array of JSON objects representing extensions.
Dimensions | 17" x 21.3" x 1.75" |
Processor | One Intel® Xeon® Processor E-2300 (Rocket Lake) Product Family |
Supports CPU TDP up to 95W | |
System Memory | 2 channels DDR4 / 2 DPC UDIMM ECC Up to 3200 MT/s. |
Total 4 memory slots; up to 128GB | |
Drive Bays | 3.5" 1 (SATA) |
2.5" 2 (1 x shared with 3.5") | |
M.2 2 x M.2(NGFF)/M-Key/22110 | |
Expansion Slots | 2 x PCIe Gen4 x8 slots |
1 x PCIe Gen3 x8 slot (with x4 link) | |
On-board Devices | 6x SATA 6G ports (4x in miniSAS HD + 2x 7pin + 2x M.2) |
Aspeed AST2500 Advanced PCIe Graphics & Remote Management Processor | |
Baseboard Management Controller | |
Intelligent Platform Interface 2.0 (IPMI 2.0) | |
iKVM, Media Redirection, IPMI over LAN, Serial over LAN | |
Intel® I350 AM4/AM2 co-design to support 2/4 x GbE (SKU option) | |
Realtek RTL8211EL for BMC dedicated management port | |
2D Video Graphic Adapter with PCIe bus interface | |
Rear I/O | LAN: 3 x GbE RJ45 (2 x shared, 1 x dedicated) |
USB: 2 x USB 3.0 Type A | |
Graphic: Mini-display port (enabled with specified CPU) | |
Serial Port: 1 x COM by 3.5mm audio jack | |
Power Supply | 300W 1+1 redundant power supply 80+ Gold |
System Cooling | 3 x 40x56mm hot swap fans |