SaQura Crypto API · REST · v1

SaQura Crypto API

はじめに

SaQura Crypto API は、HTTPS 経由のポスト量子暗号のホスト型 REST インターフェースです。SDK 不要、どの言語からでも利用可能。SDK と同じ SaQura エンジン(1.0.11)を使用します。

  • Base URL: https://crypto.saqura.de
  • アルゴリズム: AES-256-GCM, RSA-4096 (OAEP/PSS), PBKDF2-SHA512, PQC-KEM (FrodoKEM / Classic-McEliece / X25519+ML-KEM FIPS 203), PQC署名 (ML-DSA FIPS 204 / SLH-DSA FIPS 205)
  • プライバシー: コンテンツはメモリ内で処理され保存されません。平文・鍵はレスポンスにもログにも残りません。

機能の確認 (キー不要): GET /v1/capabilities · GET /health

curl https://crypto.saqura.de/v1/capabilities

認証

すべての /v1 暗号エンドポイントは Authorization ヘッダーに API キー(Bearer、Stripe 形式)が必要です:

Authorization: Bearer sk_live_…
  • sk_live_… = 本番、 sk_test_… = テスト。
  • キーの取得: saqura.de/pricing (SaQura Crypto サブスクリプション).
  • キーなし/無効 → 401. プランに機能が含まれない → 403.

クイックスタート

AES-256-GCM

# Encrypt (key optional — omit and the API returns a fresh key)
curl -X POST https://crypto.saqura.de/v1/aes/encrypt \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"plaintext":"hello"}'
# -> {"ciphertext":"…","key":"…"}

# Decrypt
curl -X POST https://crypto.saqura.de/v1/aes/decrypt \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"ciphertext":"…","key":"…"}'
# -> {"plaintext":"hello"}

エンドポイント

すべてのパスは次を基準とします: https://crypto.saqura.de. JSON フィールドは camelCase。

メソッド & パスリクエストレスポンスプラン
GET /v1/usage{plan, period, used, includedPerMonth, remaining, rateLimitPerMinute, overage}全プラン
POST /v1/aes/encrypt{plaintext, key?}{ciphertext, key}Standard
POST /v1/aes/decrypt{ciphertext, key}{plaintext}Standard
POST /v1/password/hash{password}{hash}Basic
POST /v1/password/verify{password, hash}{valid}Basic
POST /v1/rsa/keypair{}{publicKey, privateKey}Basic
POST /v1/rsa/encrypt{plaintext, publicKey}{ciphertext}Basic
POST /v1/rsa/decrypt{ciphertext, privateKey}{plaintext}Basic
POST /v1/rsa/sign{data, privateKey}{signature}Basic
POST /v1/rsa/verify{data, signature, publicKey}{valid}Basic
POST /v1/quantum/keypair{strength?, generation?}{publicKey, privateKey, strength, generation}Pro
POST /v1/quantum/encrypt{plaintext, publicKey}{ciphertext, encapsulatedSecret}Pro
POST /v1/quantum/decrypt{ciphertext, privateKey, encapsulatedSecret}{plaintext}Pro
POST /v1/quantum/sign/keypair{strength?, algorithm?}{publicKey, privateKey, strength, algorithm}Pro
POST /v1/quantum/sign{data, privateKey, algorithm?}{signature}Pro
POST /v1/quantum/verify{data, signature, publicKey, algorithm?}{valid}Pro

自分の利用状況

GET /v1/usage は、当月における自分のAPIキーの利用状況(プラン、使用リクエスト数、プラン内枠、残り、制限、超過)を返します。他の /v1 と同様に認証が必要ですが、これ自体は課金されません。表示されるのは自分の数値のみです。

# Your own usage for the current month (authenticated, NOT billed)
curl https://crypto.saqura.de/v1/usage \
  -H "Authorization: Bearer sk_live_…"
# -> {"plan":"Pro","period":"2026-06","used":1234,
#     "includedPerMonth":2000000,"remaining":1998766,
#     "rateLimitPerMinute":1200,"overage":{"requests":null,"per1000":1,"note":"…"}}

ポスト量子(KEM + 署名)

KEM 暗号化(Pro+)。世代:Gen4〜7(BSI プロファイル)と Gen8(X25519 + ML-KEM、FIPS 203)。復号には ciphertext と encapsulatedSecret の両方が必要です。

# 1) key pair  (Gen4 default; Gen8 = X25519 + ML-KEM / FIPS 203)
curl -X POST https://crypto.saqura.de/v1/quantum/keypair \
  -H "Authorization: Bearer sk_live_…" -H "Content-Type: application/json" \
  -d '{"strength":"Highest","generation":"Gen8"}'
# -> {"publicKey":"…","privateKey":"…","strength":"Highest","generation":"Gen8"}

# 2) encrypt to the public key
curl -X POST https://crypto.saqura.de/v1/quantum/encrypt \
  -H "Authorization: Bearer sk_live_…" -H "Content-Type: application/json" \
  -d '{"plaintext":"secret","publicKey":"…"}'
# -> {"ciphertext":"…","encapsulatedSecret":"…"}

# 3) decrypt  (needs both ciphertext and encapsulatedSecret)
curl -X POST https://crypto.saqura.de/v1/quantum/decrypt \
  -H "Authorization: Bearer sk_live_…" -H "Content-Type: application/json" \
  -d '{"ciphertext":"…","privateKey":"…","encapsulatedSecret":"…"}'
# -> {"plaintext":"secret"}

署名(ML-DSA / SLH-DSA)

# ML-DSA (FIPS 204) — pass "SLH-DSA" for FIPS 205
curl -X POST https://crypto.saqura.de/v1/quantum/sign/keypair \
  -H "Authorization: Bearer sk_live_…" -H "Content-Type: application/json" \
  -d '{"strength":"Highest","algorithm":"ML-DSA"}'

curl -X POST https://crypto.saqura.de/v1/quantum/sign \
  -H "Authorization: Bearer sk_live_…" -H "Content-Type: application/json" \
  -d '{"data":"document","privateKey":"…","algorithm":"ML-DSA"}'
# -> {"signature":"…"}

curl -X POST https://crypto.saqura.de/v1/quantum/verify \
  -H "Authorization: Bearer sk_live_…" -H "Content-Type: application/json" \
  -d '{"data":"document","signature":"…","publicKey":"…","algorithm":"ML-DSA"}'
# -> {"valid":true}

プランとクォータ

機能はプランごとに解放されます。制限は2種類:1分あたりのスループット制限(APIキーごと、匿名はIPごと)と、月額プランの場合は月間のプラン内リクエスト数です。

プラン機能クォータ(req/分)込み/月
BasicRSA · Password30050.000
Standard+ AES600250.000
Pro+ Quantum (KEM · ML-DSA · SLH-DSA)1200200万
Scale+ Quantum(大容量)60001000万
Enterpriseすべて12000個別
キーなし/無効— (401)60

月額プランでは、月間のプラン内リクエスト数を超えた分は従量課金されます:1,000 リクエストあたり 1 €(選択した通貨で相当額)。年額プランは従量課金なし。値は初期クォータで、調整される場合があります。

注:計算負荷の高い鍵生成(RSA/ポスト量子鍵ペア、パスワードハッシュ)は、高負荷時の安定性のため同時実行数も制限されます。そのためスパイク時には、1分あたりのクォータ内でも 429(Retry-After ヘッダー)が返ることがあります。少し待って指数バックオフで再試行してください。

エラー

エラーは Problem Details 形式(RFC 7807)に従います:

  • 400無効な入力(例:"Invalid base64 input.")。ペイロードは返されません。
  • 401キーなし/無効。
  • 403プランに機能が含まれていません。
  • 429クォータ超過(Retry-After ヘッダー)。

ご質問は お問い合わせフォーム. 鍵・平文をチケットに含めないでください。