
PGP एन्क्रिप्शन, डिक्रिप्शन और साइनिंग के लिए ओपन-सोर्स ब्राउज़र एक्सटेंशन। Rust/WASM इंजन WebAuthn PRF अनलॉक, Argon2id पासवर्ड सुरक्षा और शून्यीकृत मेमोरी के साथ।
PGP एन्क्रिप्शन, डिक्रिप्शन और हस्ताक्षर के लिए ओपन-सोर्स ब्राउज़र एक्सटेंशन।
Rust/WebAssembly के साथ निर्मित। जब तक आवश्यक न हो, निजी कुंजियाँ कभी JS हीप को स्पर्श नहीं करतीं।
ओपन सोर्स और पारदर्शी। अधिकांश PGP ब्राउज़र एक्सटेंशन बंद स्रोत हैं। आपको अपने रहस्यों के लिए एक ब्लैक बॉक्स पर भरोसा नहीं करना चाहिए।
क्रिप्टो WASM में चलता है, JavaScript में नहीं। सभी PGP संचालन Rust/Sequoia-PGP WebAssembly सैंडबॉक्स में चलते हैं। JS आपकी कुंजी के लिए केवल एक अपारदर्शी पूर्णांक हैंडल रखता है – वास्तविक बाइट्स WASM लीनियर मेमोरी में रहते हैं और ड्रॉप पर शून्यीकृत हो जाते हैं। निजी कुंजियाँ जनरेशन और आयात के दौरान संक्षेप में JS से गुज़रती हैं, फिर एन्क्रिप्ट और संग्रहीत होने से पहले।
पासकी अनलॉक। WebAuthn PRF के साथ कुंजियों की सुरक्षा – पासवर्ड के बजाय Touch ID, Face ID, Windows Hello या YubiKey से अनलॉक करें। PRF आउटपुट को HKDF-SHA256 के माध्यम से संग्रहीत गुप्त के साथ जोड़ा जाता है, और पूरा अनलॉक प्रवाह WASM में चलता है।
पासवर्ड के लिए Argon2id। 64 MB मेमोरी, 3 पुनरावृत्तियाँ – GPU ब्रूट-फोर्स प्रतिरोधी। KDF, डिक्रिप्शन और कुंजी भंडारण सभी WASM में होते हैं। पासवर्ड बाइट्स उपयोग के तुरंत बाद दोनों ओर शून्यीकृत हो जाते हैं।
परमाणु डिक्रिप्ट + सत्यापन। सादा पाठ और हस्ताक्षर परिणाम एक एकल पैक्ड प्रतिक्रिया में एक साथ लौटाए जाते हैं। खराब हस्ताक्षर = कोई सादा पाठ नहीं लौटाया जाता। कोई TOCTOU विंडो नहीं।
हर जगह शून्यीकरण। सभी संग्रहीत कुंजियों और मध्यवर्ती (Rust) पर zeroize क्रेट। पासवर्ड, PRF आउटपुट और व्युत्पन्न कुंजियों (JS) पर Uint8Array.fill(0)। WASM मेमोरी GC'd नहीं है, इसलिए शून्यीकरण नियतात्मक है।
प्रति-कुंजी AAD। प्रत्येक निजी कुंजी को AES-256-GCM के साथ एन्क्रिप्ट किया जाता है, जिसमें इसके फिंगरप्रिंट से जुड़ा अतिरिक्त प्रमाणित डेटा (AAD) होता है। कुंजी स्लॉट के बीच ब्लॉब्स की अदला-बदली विफल होती है।
.crx) पर हस्ताक्षर करें और सत्यापित करें (वैकल्पिक; डिफ़ॉल्ट रूप से बंद)pnpm install
pnpm dev # हॉट रीलोड के साथ डेव सर्वर
pnpm test # यूनिट टेस्ट (vitest); Rust इंजन टेस्ट: apps/pgp/gpg-wasm में cargo test
pnpm build # प्रोडक्शन बिल्ड (स्वचालित रूप से WASM बनाता है)
pnpm zip # Chrome Web Store / Firefox Add-ons के लिए पैकेज
WASM मॉड्यूल को स्रोत से बनाया जाना चाहिए। मैन्युअल रूप से पुनर्निर्माण के लिए:
cd apps/pgp && pnpm build:wasm
apps/pgp/ एक्सटेंशन स्रोत
components/ React UI
entrypoints/ background + sidepanel
hooks/ keyring, sessions, contacts
lib/pgp/ WASM रैपर + संचालन
lib/protection/ WebAuthn PRF, Argon2id, AES-256-GCM
lib/storage/ म्यूटेक्स के साथ chrome.storage
gpg-wasm/ Rust/WASM इंजन (sequoia-openpgp)
packages/ui/ shadcn/ui घटक
tooling/ eslint, prettier, tailwind, tsconfig
महत्वपूर्ण AI सहायता (Claude) के साथ निर्मित। UI, React प्लंबिंग, भंडारण और एक्सटेंशन वायरिंग अधिकतर AI-जनरेटेड थे।
क्रिप्टोग्राफ़िक कार्यान्वयन - Rust/WASM इंजन, कुंजी सुरक्षा, WebAuthn PRF, Argon2id कॉन्फ़िगरेशन - मानव-डिज़ाइन और मानव-समीक्षित थे। हम वाइब्स-आधारित क्रिप्टो पर भरोसा नहीं करते।
MIT
| परत | तंत्र |
|---|
| क्रिप्टो इंजन | WASM में Sequoia-PGP (कुंजियाँ JS में केवल जनन/आयात के दौरान) |
| कुंजी अनलॉक | WebAuthn PRF (पासकी) या Argon2id 64 MB (पासवर्ड) |
| कुंजी भंडारण | प्रति-कुंजी AAD के साथ AES-256-GCM |
| मेमोरी | zeroize क्रेट (Rust) + मैन्युअल शून्यीकरण (JS) |
| हस्ताक्षर | परमाणु डिक्रिप्ट+सत्यापन (कोई TOCTOU नहीं) |
| सत्र | निष्क्रियता, पैनल बंद होने या प्रति-ऑप पर ऑटो-लॉक |
| ब्रूट-फोर्स | असफल अनलॉक पर एक्सपोनेंशियल बैकऑफ़ |
| दायरा | कोई सामग्री स्क्रिप्ट नहीं - केवल एक्सटेंशन सैंडबॉक्स |