Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add onprem appliance page #83

Merged
merged 3 commits into from
Sep 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion content/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ We believe that documentation benefits from sharing and collaborative improvemen

Below is a list of the products that Qrypt offers with links to their supporting documentation.

### [Quantum Entropy](/eaas/)
### [Quantum Entropy Appliance (on-prem)](eaas/appliance/)
Qrypt's on-prem quantum entropy appliance is a server that is intentended for on-prem deployments. It exposes a REST API that clients can call to retrieve quantum entropy from the QRNG card installed on the server.

### [Quantum Entropy as a Service](/eaas/)

Qrypt's Quantum Entropy service measures quantum effects and converts those measurements into pure random numbers. The service leverages multiple Quantum Random Number Generators (QRNGs) developed by national and international research labs to ensure the highest quality random.

Expand Down
202 changes: 202 additions & 0 deletions content/eaas/appliance/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
+++
menuTitle = "On-Prem Appliance"
date = 2024-09-23T19:11:17-04:00
weight = 1
disableToc = "false"
+++

# Introduction

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.

---
# How do we ensure true randomness?

The entropy generated by the QEA  is continuously tested using the [NIST SP800-22](https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-22r1a.pdf) 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.

---
# Performance

**Max API throughput:** ~2,500,000 256-bit keys per second

**Max Entropy card output:** ~1,500 Mb/s

---
# Installation

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](https://ubuntu.com/server/docs/configuring-networks) for a detailed guide on how to set up networking on Ubuntu Server).

---
# Interacting with the appliance

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 spec

```yaml
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.
```
---
# Server Specs

|||
|:---|:---|
| **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
16 changes: 8 additions & 8 deletions docs/404.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
<title>404 Page not found</title>


<link href="./css/nucleus.css?1717109285" rel="stylesheet">
<link href="./css/fontawesome-all.min.css?1717109285" rel="stylesheet">
<link href="./css/hybrid.css?1717109285" rel="stylesheet">
<link href="./css/featherlight.min.css?1717109285" rel="stylesheet">
<link href="./css/perfect-scrollbar.min.css?1717109285" rel="stylesheet">
<link href="./css/theme.css?1717109285" rel="stylesheet">
<link href="./css/hugo-theme.css?1717109285" rel="stylesheet">
<link href="./css/nucleus.css?1727138081" rel="stylesheet">
<link href="./css/fontawesome-all.min.css?1727138081" rel="stylesheet">
<link href="./css/hybrid.css?1727138081" rel="stylesheet">
<link href="./css/featherlight.min.css?1727138081" rel="stylesheet">
<link href="./css/perfect-scrollbar.min.css?1727138081" rel="stylesheet">
<link href="./css/theme.css?1727138081" rel="stylesheet">
<link href="./css/hugo-theme.css?1727138081" rel="stylesheet">

<link href="./css/theme-mine.css?1717109285" rel="stylesheet">
<link href="./css/theme-mine.css?1727138081" rel="stylesheet">

<style>
:root #header + #content > #left > #rlblock_left {
Expand Down
78 changes: 55 additions & 23 deletions docs/categories/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Hugo 0.125.0">
<meta name="generator" content="Hugo 0.105.0">
<meta name="description" content="">


Expand All @@ -12,22 +12,22 @@
<title>Categories :: Qrypt</title>


<link href="../css/nucleus.css?1717109285" rel="stylesheet">
<link href="../css/fontawesome-all.min.css?1717109285" rel="stylesheet">
<link href="../css/hybrid.css?1717109285" rel="stylesheet">
<link href="../css/featherlight.min.css?1717109285" rel="stylesheet">
<link href="../css/perfect-scrollbar.min.css?1717109285" rel="stylesheet">
<link href="../css/auto-complete.css?1717109285" rel="stylesheet">
<link href="../css/atom-one-dark-reasonable.css?1717109285" rel="stylesheet">
<link href="../css/theme.css?1717109285" rel="stylesheet">
<link href="../css/tabs.css?1717109285" rel="stylesheet">
<link href="../css/hugo-theme.css?1717109285" rel="stylesheet">
<link href="../css/nucleus.css?1727138081" rel="stylesheet">
<link href="../css/fontawesome-all.min.css?1727138081" rel="stylesheet">
<link href="../css/hybrid.css?1727138081" rel="stylesheet">
<link href="../css/featherlight.min.css?1727138081" rel="stylesheet">
<link href="../css/perfect-scrollbar.min.css?1727138081" rel="stylesheet">
<link href="../css/auto-complete.css?1727138081" rel="stylesheet">
<link href="../css/atom-one-dark-reasonable.css?1727138081" rel="stylesheet">
<link href="../css/theme.css?1727138081" rel="stylesheet">
<link href="../css/tabs.css?1727138081" rel="stylesheet">
<link href="../css/hugo-theme.css?1727138081" rel="stylesheet">

<link href="../css/theme-mine.css?1717109285" rel="stylesheet">
<link href="../css/theme-mine.css?1727138081" rel="stylesheet">



<script src="../js/jquery-3.3.1.min.js?1717109285"></script>
<script src="../js/jquery-3.3.1.min.js?1727138081"></script>


</head>
Expand Down Expand Up @@ -80,6 +80,22 @@
<ul>


<li
data-nav-id="/eaas/appliance/"
title=""
class="dd-item



"
>
<a href="../eaas/appliance/">
On-Prem Appliance
</a>

</li>


<li
data-nav-id="/eaas/rngd/"
title="RNG Tools"
Expand Down Expand Up @@ -566,6 +582,22 @@ <h1>






















Expand Down Expand Up @@ -800,19 +832,19 @@ <h1>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="../js/clipboard.min.js?1717109285"></script>
<script src="../js/perfect-scrollbar.min.js?1717109285"></script>
<script src="../js/perfect-scrollbar.jquery.min.js?1717109285"></script>
<script src="../js/jquery.sticky.js?1717109285"></script>
<script src="../js/featherlight.min.js?1717109285"></script>
<script src="../js/highlight.pack.js?1717109285"></script>
<script src="../js/clipboard.min.js?1727138081"></script>
<script src="../js/perfect-scrollbar.min.js?1727138081"></script>
<script src="../js/perfect-scrollbar.jquery.min.js?1727138081"></script>
<script src="../js/jquery.sticky.js?1727138081"></script>
<script src="../js/featherlight.min.js?1727138081"></script>
<script src="../js/highlight.pack.js?1727138081"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="../js/modernizr.custom-3.6.0.js?1717109285"></script>
<script src="../js/learn.js?1717109285"></script>
<script src="../js/hugo-learn.js?1717109285"></script>
<script src="../js/modernizr.custom-3.6.0.js?1727138081"></script>
<script src="../js/learn.js?1727138081"></script>
<script src="../js/hugo-learn.js?1727138081"></script>


<script src="../mermaid/mermaid.js?1717109285"></script>
<script src="../mermaid/mermaid.js?1727138081"></script>

<script>
mermaid.initialize({ startOnLoad: true });
Expand Down
5 changes: 2 additions & 3 deletions docs/categories/index.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
<title>Categories on Qrypt</title>
<link>https://QryptInc.github.io/categories/</link>
<description>Recent content in Categories on Qrypt</description>
<generator>Hugo 0.125.0</generator>
<language>en-us</language>
<atom:link href="https://QryptInc.github.io/categories/index.xml" rel="self" type="application/rss+xml" />
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language><atom:link href="https://QryptInc.github.io/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>
Loading
Loading