
क्वांटम-पश्चात संकर एन्क्रिप्शन लाइब्रेरी जो X25519 + ML-KEM-768 को AES-256-GCM के साथ जोड़ती है
पोस्ट-क्वांटम हाइब्रिड एन्क्रिप्शन और कुंजी प्रबंधन सर्वर।
Citadel X25519 + ML-KEM-768 को कुंजी एनकैप्सुलेशन के लिए और AES-256-GCM को डेटा एन्क्रिप्शन के लिए संयोजित करता है, जो पोस्ट-क्वांटम संक्रमण के लिए NIST के हाइब्रिड दृष्टिकोण का अनुसरण करता है। एप्लिकेशन REST API के माध्यम से डेटा को एन्क्रिप्ट और डिक्रिप्ट करते हैं। Citadel कुंजियों का प्रबंधन करता है — निर्माण, रोटेशन, रिवोकेशन, एक्सेस नियंत्रण और ऑडिट लॉगिंग।
स्थिति: कार्यान्वित कार्यान्वयन। ऑडिट नहीं किया गया। कोई उत्पादन परिनियोजन नहीं। नीचे सुरक्षा देखें।
Your Application Citadel Database
| | |
|-- POST /encrypt ------->| |
| |-- hybrid KEM (X25519+ML-KEM) |
| |-- derive AES-256 key (HKDF) |
| |-- encrypt with AES-256-GCM |
|<-- encrypted blob ------| |
| |
|-- store blob ------------------------------------------>|
आपका एप्लिकेशन कभी भी कच्ची कुंजी सामग्री को स्पर्श नहीं करता है। एन्क्रिप्टेड ब्लॉब स्व-निहित है — इसमें लिपटी हुई कुंजी, एल्गोरिदम पहचानकर्ता और सिफरटेक्स्ट शामिल है। इसे किसी भी डेटाबेस में संग्रहीत करें। इसे वापस Citadel को उसी AAD और संदर्भ के साथ भेजकर डिक्रिप्ट करें।
citadel-envelope Hybrid encryption core (X25519 + ML-KEM-768 + AES-256-GCM)
citadel-keystore Key lifecycle management, 4-level hierarchy, threat-adaptive policies
citadel-api HTTP server, scoped API key auth, rate limiting, real-time dashboard
# Clone
git clone https://github.com/mrcord77/rust_citadel.git
cd rust_citadel
# Set your admin API key
echo -n "your-secret-key" | sha256sum | cut -d' ' -f1
# Copy the hash
# Start
CITADEL_API_KEY_HASH=<paste-hash> docker compose up -d
# Verify
curl http://localhost:3000/health
# {"status":"ok","version":"0.2.0"}
डैशबोर्ड: http://localhost:3000
Rust 1.75+ की आवश्यकता है।
cargo build --release -p citadel-api
CITADEL_API_KEY="your-secret-key" CITADEL_SEED_DEMO=true ./target/release/citadel-api
import requests
api = "http://localhost:3000"
headers = {"Authorization": "Bearer your-secret-key"}
# Encrypt
r = requests.post(f"{api}/api/keys/{dek_id}/encrypt", headers=headers, json={
"plaintext": "sensitive data",
"aad": "record-001", # binds ciphertext to this record
"context": "patient-records" # domain separation
})
blob = r.json()
# Decrypt
r = requests.post(f"{api}/api/decrypt", headers=headers, json={
"blob": blob,
"aad": "record-001",
"context": "patient-records"
})
plaintext = r.json()["plaintext"]
पूर्ण कार्यशील उदाहरण के लिए citadel_example.py देखें जिसमें AAD बाइंडिंग, कुंजी रोटेशन और खतरे-जागरूक एप्लिकेशन व्यवहार शामिल है।
# Status
curl http://localhost:3000/api/status -H "Authorization: Bearer $KEY"
# List keys
curl http://localhost:3000/api/keys -H "Authorization: Bearer $KEY"
# Encrypt
curl -X POST http://localhost:3000/api/keys/$DEK_ID/encrypt \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"plaintext":"hello","aad":"test","context":"demo"}'
| एंडपॉइंट | विधि | दायरा | विवरण |
|---|---|---|---|
/health | GET | — | स्वास्थ्य जांच |
/api/status | GET | read | खतरा स्तर, कुंजी संख्या |
/api/metrics | GET | read | सुरक्षा मीट्रिक्स |
/api/keys | GET | read | सभी कुंजियाँ सूचीबद्ध करें |
/api/keys | POST | manage | नई कुंजी उत्पन्न करें |
/api/keys/:id | GET | read | कुंजी विवरण प्राप्त करें |
/api/keys/:id/activate | POST | manage | लंबित कुंजी सक्रिय करें |
/api/keys/:id/rotate | POST | manage | कुंजी घुमाएँ (नया संस्करण) |
/api/keys/:id/revoke | POST | manage | स्थायी रूप से रद्द करें |
/api/keys/:id/destroy | POST | manage | कुंजी सामग्री नष्ट करें |
/api/keys/:id/encrypt | POST | encrypt | डेटा एन्क्रिप्ट करें |
/api/decrypt | POST | encrypt | डेटा डिक्रिप्ट करें |
/api/threat | GET | read | खतरा खुफिया विवरण |
/api/policies | GET | read | सक्रिय कुंजी नीतियाँ |
/api/auth/whoami | GET | read | वर्तमान API कुंजी जानकारी |
/api/auth/keys | GET | admin | API कुंजियाँ सूचीबद्ध करें |
/api/auth/keys | POST | admin | API कुंजी बनाएँ |
/api/auth/keys/:id | DELETE | admin | API कुंजी रद्द करें |
Root Key
└── Domain Key (per environment / business unit)
└── KEK — Key Encrypting Key (wraps DEKs)
└── DEK — Data Encrypting Key (encrypts application data)
NIST SP 800-57 का अनुसरण करता है। प्रत्येक स्तर समझौते के विस्फोट त्रिज्या को सीमित करता है — लीक हुआ DEK अन्य DEK को उजागर नहीं करता क्योंकि KEK अलग है।
| दायरा | अनुमतियाँ |
|---|---|
read | कुंजियाँ, स्थिति, मीट्रिक्स, खतरा स्तर देखें |
encrypt | डेटा एन्क्रिप्ट और डिक्रिप्ट करें |
manage | कुंजियाँ बनाएँ, घुमाएँ, रद्द करें, नष्ट करें |
admin | उपरोक्त सभी + API कुंजियाँ प्रबंधित करें |
admin अन्य सभी दायरों को शामिल करता है। न्यूनतम विशेषाधिकार का सिद्धांत: मॉनिटरिंग डैशबोर्ड को read, एप्लिकेशन सेवाओं को read + encrypt, प्रशासनिक उपकरणों को admin दें।
Citadel सुरक्षा घटनाओं की निगरानी करता है और स्वचालित रूप से कुंजी नीतियों को समायोजित करता है:
| स्तर | ट्रिगर | प्रतिक्रिया |
|---|---|---|
| LOW | सामान्य संचालन | मानक क्रिप्टो-अवधि |
| GUARDED | मामूली विसंगतियाँ | थोड़ा सख्त रोटेशन |
| ELEVATED | संदिग्ध पैटर्न | संकुचित रोटेशन शेड्यूल |
| HIGH | सक्रिय खतरे के संकेतक | बलात् रोटेशन, कम उपयोग सीमाएँ |
| CRITICAL | हमला हो रहा है | अधिकतम प्रतिबंध |
खतरे के स्तर को बढ़ाने वाली घटनाएँ: असफल प्रमाणीकरण, डिक्रिप्शन विफलताएँ, तीव्र पहुँच पैटर्न, मैन्युअल एस्केलेशन। स्कोर समय के साथ क्षय होता है।
| घटक | एल्गोरिदम | मानक |
|---|---|---|
| कुंजी एनकैप्सुलेशन (शास्त्रीय) | X25519 ECDH | RFC 7748 |
| कुंजी एनकैप्सुलेशन (पोस्ट-क्वांटम) | ML-KEM-768 | FIPS 203 |
| डेटा एन्क्रिप्शन | AES-256-GCM | NIST SP 800-38D |
| कुंजी व्युत्पत्ति | HKDF-SHA256 | NIST SP 800-56C |
हाइब्रिड निर्माण: दोनों साझा रहस्यों को जोड़ा जाता है और HKDF के माध्यम से फीड किया जाता है। सुरक्षा तब भी बनी रहती है जब या तो X25519 या ML-KEM-768 सुरक्षित रहे।
version[1] || suite_kem[1] || suite_aead[1] || flags[1] || kem_ct_len[2] ||
x25519_ephemeral_pk[32] || mlkem768_ct[1088] || nonce[12] || aead_ct[variable]
स्व-वर्णनात्मक, संस्करणित, कोई बातचीत नहीं (डाउनग्रेड हमलों को रोकता है)। पूर्ण विनिर्देश के लिए SPEC.md देखें।
subtle क्रेट के माध्यम से API कुंजी सत्यापन टाइमिंग हमलों को रोकता हैZeroizing<T> में लपेटी जाती हैं, ड्रॉप पर शून्य हो जाती हैंCitadel ऑडिट न किया गया सॉफ़्टवेयर है।
कार्यान्वयन स्थापित Rust क्रेट्स (ml-kem, x25519-dalek, aes-gcm, hkdf) के माध्यम से NIST-मानकीकृत प्रिमिटिव का उपयोग करता है। यह कोई क्रिप्टोग्राफ़िक एल्गोरिदम लागू नहीं करता है। मूल्य सही संयोजन में है, न कि नए गणित में।
क्या किया गया है: