Back
Quside Blog

​​How to establish an Entropy Connection through the Equinix Fabric™ and the new QRNG Open API​


18/02/2025
Contact

In today’s rapidly evolving digital landscape, the demand for high-quality entropy sources is more critical than ever. The Quantum Entropy Working Group has recently unveiled its ​​QRNG Open API for Quantum Entropy-as-a-Service (EaaS). This pioneering initiative is set to become an industry benchmark for distributing quantum entropy, providing enhanced security and randomness for a wide array of applications. 

Led by Palo Alto​ Networks and supported by innovative QRNG providers, the initiative has greatly benefited from Quside’s expertise since its inception. As a leading innovator in quantum technologies, Quside has fully embraced QRNG Open API, and now offers the API through our Managed Entropy Core service , available via Equinix Fabric.  This enables customers to ​thoroughly ​​​integrate quantum entropy capabilities into their systems using a standardized and straightforward API. 

Establishing an Entropy Connection from your application is remarkably simple using the Quside’s Managed Entropy Core and the QRNG Open API —it can be done through a standard REST HTTP API call. 

The Quantum Random Number Generator (QRNG) Open API provides a unified mechanism to: 

  • Obtain Platform Capabilities: Access detailed information about the QRNG platform’s features. If using Quside’s extension for Level 4 RNGs, you can also know the information you can access on key performance metrics of the QRNG. 
  • Retrieve Quantum Entropy: Securely fetch high-quality quantum entropy for your applications. 
  • Monitor Entropy Health: Check the health of the entropy provided. When using Quside’s extension for Level 4 RNGs  online status and integrity information are also available. 

 

For a comprehensive understanding of the API specifications and the various mechanisms involved, please visit the QRNG Open API GitHub Repository. 

Once you are connected to Quside’s Managed Entropy Core through Equinix Fabric™, you can acces the API and also leverage the optional extensions implemented by Quside—follow the following examples using the cURL and python tools: 

cURL example 

Capabilities GET 

This call provides information on the capabilities offered by the service 

curl "https://entropycore.int.quside.com/capabilities"   

The response in JSON format gives information on the possible options to retrieve entropy and the information that will be provided as a response to the healthtest primitive 

{ 
  "entropy": { 
    "entropy_types": [ 
      "processed", 
      "raw" 
    ], 
    "extensions": [ 
      { 
      "Quside QRNG Entropy Quality Extension": [ 
        "Q-Factor", 
        "H-min", 
        "QES-ID", 
        "timestamp" 
        ] 
      } 
    ], 
    "max_block_count": 16, 
    "max_block_size": 524288, 
    "min_block_count": 1, 
    "min_block_size": 32 
  }, 
  "healthtest": { 
    "extensions": [ 
      { 
         "Quside QRNG Entropy Test Extension": [ 
           "Q-Factor", 
           "H-min", 
           "QES-ID", 
           "test-detail" 
         ] 
      } 
    ], 
    "test_threshold": [ 
      { 
         "error": 0.93, 
         "good": 0.98, 
         "test_type": "NIST SP 800-22 Rev. 1 - Frequency Monobit", 
         "warning": 0.96 
      } 
    ] 
  } 
} 

This response includes the information on the optional extension implemented by Quside. 

Entropy POST  

This method returns entropy bytes from the service that can be used for cryptographic applications. 

curl "https://entropycore.int.quside.com/entropy" -X POST -d '{"block_size": 32, "block_count": 4, "entropy_type": "processed"}' -H "Content-Type: application/json" 

Where you specify the desired format (“processed” in the example), the block size in bytes (32), and the block count (4). The response in JSON format is shown below, including the Quside extensions that inform on the quality of the entropy bytes obtained (Q-factor) and unpredictability measured of the entropy source (Hmin) among other data as the Quantum Entropy Source ID that provided the entropy bytes and the timestamp in ISO8601 format:  

{ 
  "entropy": [ 
    "osiEy9lfAwKncEclR1kr+GEKizg4l/iltCVZIrSTxOg=", 
    "GpF/1tSTCFZXyyZY5Cw8bt8IyCIN79gSnLLSIrkgVmM=", 
    "xwUg5w1eGRctRA05Glug9IFrfAZ6i1ivtJgRdHvHI5A=", 
    "jGJA0FA14wIzJtncNM0sDHmgf14bez8dOujcZTU5IXw=" 
  ], 
  "extensions": [ 
    { 
       "H-min": 0.98, 
       "Q-factor": 0.99786, 
       "QES-ID": "df353697", 
       "timestamp": "2024-11-12T17:08:54.175727Z" 
    } 
  ] 
} 

 

Healthtest GET 

The healthtest method returns the results of the Statistical Test run against the QRNG processed random bytes and when the last tests were executed. 

curl "https://entropycore.int.quside.com/healthtest" 

The response, in addition to the Statistical test result, includes the Quside extension providing information on the quality of the entropy bytes generated, the unpredictability measure of the entropy source, and the detail of the tests: 

{ 
  "extensions": [ 
    { 
       "H-min": 0.98, 
       "Q-factor": 0.99613, 
       "QES-ID": "df353697", 
       "test-detail": "------------------------------------------------------------------------------ 
RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES 
------------------------------------------------------------------------------ 
   generator is </tmp/random.bin> 
------------------------------------------------------------------------------ 
 C1  C2  C3  C4  C5  C6  C7  C8  C9 C10  P-VALUE  PROPORTION  STATISTICAL TEST 
------------------------------------------------------------------------------ 
 92 109  85 114  95  94 112 115  81 103  0.134944    994/1000    Frequency 
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
The minimum pass rate for each statistical test with the exception of the 
random excursion (variant) test is approximately = 980 for a 
sample size = 1000 binary sequences. 
 
For further guidelines construct a probability table using the MAPLE program 
provided in the addendum section of the documentation. 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
" 
  } 
], 
  "test_result": [ 
    { 
       "test_result": 0.994, 
       "test_type": "NIST SP 800-22 Rev. 1 - Frequency Monobit", 
       "time_stamp": "2024-11-12 09:31:03.837084" 
    } 
  ] 
} 

Python example 

Another easy and useful usage example would be using Python as the programming language. If your application is Python-based, you can establish an Entropy Connection to Quside’s Entropy Core through Equinix Fabric™ by simply using the requests and JSON packages. 

 

import requests 
import json 

# Define the base URL 
base_url = "https://entropycore.int.quside.com" 

# Function to perform a GET request 
def get_request(endpoint): 
    url = f"{base_url}/{endpoint}" 
    response = requests.get(url) 
    return response.json() 

# Function to perform a POST request 
def post_request(endpoint, data): 
    url = f"{base_url}/{endpoint}" 
    headers = {'Content-Type': 'application/json'} 
    response = requests.post(url, data=json.dumps(data), headers=headers) 
    return response.json() 

def print_response(response): 
    print(json.dumps(response, indent=2)) 
 
# Call 1: POST request to /entropy with JSON data 
data2 = {"block_size": 32, "block_count": 1, "entropy_type": "processed"} 
response1 = post_request("entropy", data2) 
print("\nPOST request to /entropy\n") 
print_response(response1) 

# Call 2: GET request to /capabilities 
print("\nGET request to /capabilities\n") 
response2 = get_request("capabilities") 
print_response(response2) 

# Call 3: GET request to /healthtest 
print("\nGET request to /healthtest\n") 
response3 = get_request("healthtest") 
print_response(response3) 

 

You can find the complete Entropy Connection User Guide, including both Open API and Quside’s proprietary implementations,  at ​https://quside.com/wp-content/uploads/2024/02/Entropy-Connection-User-Guide.pdf