SynergyX بنيت على الخوارزميات NIST موحدة — FIPS 203 (ML-KEM/Kyber-768) و FIPS 205 (SLH-DSA/SPHINCS+). تم النشر في 15 يناير 2026. يمكن التحقق من جميع مطالبات التشفير على السلسلة وضدها NIST CSRC الوثائق. صفر قبل الألغام. صفر إيكو. صفر في سي. تخصيص المؤسسين صفر. 77.7 مليون سقف ثابت. محفظة المطورين عامة وغير خاصة بشكل متعمد — في كل دفتر عناوين في المستكشف. لا شيء منها يطلب منك أن تثق بشخص ما.
اشتقاق مفتاح ما بعد الكم: أنماط المحفظة عالية الدقة للمطورين
📅 آخر تحديث: 2 أغسطس 2026🎧 الاستماع: ~4 دقائق
أحدثت المحافظ الحتمية الهرمية (HD) ثورة في إدارة مفاتيح العملات المشفرة من خلال استخلاص عناوين غير محدودة من بذرة واحدة. ومع ذلك، فإن اعتماد BIP-32 على منحنى secp256k1 الرياضي يخلق ثغرة أمنية. يغطي هذا الدليل أنماط المحفظة عالية الدقة لما بعد الكم باستخدام الأساليب القائمة على الشبكة والتجزئة. ال محفظة SynX مقاومة للكم ينفذ هذه التقنيات لإدارة المفاتيح بسلاسة.
فهم القيود التقليدية لمحفظة HD
تستمد محافظ BIP-32 HD المفاتيح الفرعية باستخدام مضاعفة نقطة المنحنى الإهليلجي:
اشتقاق المسار: SHAKE-256 أو HKDF لاشتقاق العشوائية الحتمية لكل مسار
توليد المفتاح: استخدم العشوائية المشتقة كبذور لإنشاء مفاتيح Kyber/SPHINCS+
البصيرة الرئيسية: يبقى أسلوب النسخ الاحتياطي ذاكريًا صالحًا، فنحن نغير فقط كيفية تحول البذور المشتقة إلى أزواج مفاتيح. يحتفظ المستخدمون بعبارات الاسترداد المألوفة المكونة من 24 كلمة مع اكتساب المقاومة الكمية.
التنفيذ: توسيع البذور
يستورد هاشليب
يستورد hmac
من الكتابة يستورد القائمة، توبل
فصلPostQuantumHDWallet:
""" المحفظة الحتمية الهرمية لما بعد الكم تستخدم SHAKE-256 لاشتقاق المفتاح الحتمي مع Kyber-768 وSPHINCS+ لمفاتيح التشفير الفعلية. """مواطنه__الحرف الأولي__(الذات، master_seed: بايت):
""" التهيئة من الأصل الرئيسي (عادةً من BIP-39 ذاكري) الوسائط: master_seed: بذرة 64 بايت من PBKDF2(mnemonic, salt="mnemonic"+عبارة المرور) """if لين (master_seed) < 32:
يرفع خطأ القيمة("يجب أن تكون البذرة 256 بت على الأقل") self.master_seed = master_seed
# اشتقاق رمز السلسلة الرئيسية (المستخدم لاشتقاق المسار)
self.master_chain_code = self._derive_chain_code(master_seed, b"سينكس-PQ-HD-ماستر")
مواطنه_derive_chain_code(الذات، البذور: بايت، السياق: بايت) -> بايت:
"""اشتقاق رمز السلسلة للاشتقاق الهرمي"""
h = hashlib.shake_256() h.update(seed + context)
يعود ح. دايجست(32)
مواطنهderive_path_seed(الذات، المسار: شارع) -> البايتات:
""" اشتقاق عشوائية حتمية لمسار محدد تنسيق المسار: "m/44'/9999'/0'/0/0" (نمط BIP-44) الوسائط: المسار: سلسلة مسار الاشتقاق الإرجاعات: 64 بايت من العشوائية الحتمية لإنشاء المفاتيح """
المكونات = self._parse_path(path) current_seed = self.master_seed current_chain = self.master_chain_code
ل عنصر in المكونات: current_seed، current_chain = self._derive_child (current_seed، current_chain، Component)
يعود current_seed
مواطنه_parse_path(الذات، المسار: شارع) -> القائمة [int]:
"""تحليل مسار نمط BIP-32 إلى مكونات"""إذا لم يكن كذلك المسار يبدأ مع ("m/"):
يرفع خطأ القيمة("يجب أن يبدأ المسار بـ 'm/'") المكونات = []
ل جزء in المسار [2:].سبليت ("/"):
إذا لم يكن كذلك جزء:
يكملif ينتهي مع ("'"):
# تصلب الاشتقاق
الفهرس = int(part[:-1]) + 0x80000000
آخر: الفهرس = مكونات int(part).append(index)
يعود عناصر
مواطنه_derive_child(الذات،parent_seed: بايت،parent_chain: بايت،الفهرس: int) -> مترابطة بيانية[بايت، بايت]:
""" اشتقاق الكود الأساسي والسلسلة يستخدم HMAC-SHA512 مشابهًا لـ BIP-32 ولكن يتم تغذية المخرجات إلى SHAKE-256 للتوسع الآمن بعد الكم. """# تشفير الفهرس كـ 4 بايت كبير
فهرس_بايت = فهرس.to_bytes(4, 'كبير')
# HMAC لبيانات الاشتقاق التابعة
البيانات = hmac.new(parent_chain,parent_seed + Index_bytes, hashlib.sha512).digest()
# اليسار 32 بايت → مكون البذور الفرعي# اليمين 32 بايت → رمز السلسلة الجديد
Child_seed_component = البيانات[:32] Child_chain = البيانات[32:]
# الجمع بين الوالدين والطفل للحصول على بذور جديدة# استخدم SHAKE-256 للخلط المقاوم للكم
h = hashlib.shake_256() h.update(parent_seed + Child_seed_component + Index_bytes) Child_seed = h.digest(64)
يعود Child_seed، Child_chain
#مثال للاستخداممواطنهdemo_path_derivation():
# محاكاة البذور الرئيسية من ذاكرييستورد Secrets master_seed = Secrets.token_bytes(64) Wallet = PostQuantumHDWallet(سيد_البذور)
# استخلاص البذور لحسابات مختلفة
المسارات = [
"m/44'/9999'/0'/0/0", # الحساب 0، خارجي، العنوان 0"m/44'/9999'/0'/0/1", # الحساب 0، خارجي، العنوان 1"m/44'/9999'/0'/1/0", # الحساب 0، داخلي (تغيير)، العنوان 0"m/44'/9999'/1'/0/0", # الحساب 1، خارجي، العنوان 0
]
ل طريق in المسارات: path_seed = Wallet.derive_path_seed(path) print(f"{المسار}: {path_seed[:16].hex()}...")
توليد مفاتيح Kyber من بذور المسار
بمجرد حصولنا على عشوائية حتمية للمسار، نقوم بإنشاء أزواج مفاتيح Kyber-768:
يستورد oqs
فصلDeterministicKyber:
""" إنشاء مفاتيح Kyber-768 حتمية من مسارات محفظة HD تستخدم بذور المسار كمصدر عشوائي لإنشاء المفاتيح. """مواطنه__الحرف الأولي__(الذات): self.algorithm = "كايبر 768"مواطنهgenerator_from_seed(الذات، path_seed: بايت) -> مترابطة بيانية[بايت، بايت]:
""" إنشاء زوج مفاتيح Kyber من وسيطات أولية حتمية: path_seed: 64 بايت من اشتقاق محفظة HD الإرجاعات: مجموعة من (المفتاح العام، المفتاح السري) """# Kyber يحتاج إلى كميات محددة من العشوائية# قم بتوسيع البذور إلى الطول المطلوب باستخدام SHAKE-256
h = hashlib.shake_256() h.update(path_seed + b"كايبر-768-كجن")
# يتطلب Kyber-768 64 بايت من العشوائية لإنشاء المفاتيح
العشوائية = h.digest(64)
# ملاحظة: معظم مكتبات PQC لا تدعم توليد البذور#وهذا يتطلب إما:# 1. مكتبة معدلة مع توليد المفاتيح المصنفة# 2. استبدال RNG مؤقتًا بمصدر حتمي# 3. استخدام مكتبة تدعم الجيل الحتمي# بالنسبة إلى SynX، نستخدم المتغير المصنف:
كيم = oqs.KeyEncapsulation(self.algorithm)
# في إنتاج SynX SDK، يستخدم هذا الجيل المصنف# هنا نعرض معيار API للتوضيح
public_key = kem.generate_keypair() Secret_key = kem.export_secret_key()
يعود المفتاح العام، المفتاح السري
فصلالحتميةSPINCS:
""" إنشاء مفاتيح SPHINCS+ حتمية من مسارات محفظة HD """مواطنه__الحرف الأولي__(الذات، البديل: str = "SPHINCS+-SHAKE-128s-بسيط"): self.algorithm = البديل
مواطنهgenerator_from_seed(الذات، path_seed: بايت) -> مترابطة بيانية[بايت، بايت]:
""" إنشاء زوج مفاتيح SPHINCS+ من البذرة الحتمية """
h = hashlib.shake_256() h.update(path_seed + b"SPHINCS-Plus-keygen")
# SPHINCS+-128s يحتاج إلى طول بذرة محدد
العشوائية = h.digest(48)
# يستخدم الإنتاج توليد البذور
sig = oqs.Signature(self.algorithm) public_key = sig.generate_keypair() Secret_key = sig.export_secret_key()
يعود المفتاح العام، المفتاح السري
استكمال تنفيذ محفظة HD
ال محفظة SynX مقاومة للكم يجمع بين هذه المكونات:
من فئات البيانات يستورد dataclass
من الكتابة يستورد @dataclass اختياري
فصلSynXAddress:
"""إكمال عنوان SynX بكلا نوعي المفاتيح"""
المسار: str kyber_public: البايتات kyber_secret: البايتات sphincs_public: البايتات sphincs_secret: البايتات العنوان: str # عنوان يمكن قراءته بواسطة الإنسانفصلSynXHDWallet:
""" محفظة كاملة عالية الدقة لما بعد الكم لميزات SynX: - بذور ذاكري متوافقة مع BIP-39 - مسارات اشتقاق نمط BIP-44 - Kyber-768 لتغليف المفاتيح - SPHINCS+-128s للتوقيعات """# نوع العملة SynX (على سبيل المثال، مسجلة بـ SLIP-44)
نوع العملة = 9999
مواطنه__الحرف الأولي__(ذاتي، تذكيري: str، عبارة المرور: str = ""):
""" تهيئة المحفظة من وسيطات ذاكري BIP-39: ذاكري: عبارة مرور ذاكري BIP-39 مكونة من 24 كلمة: عبارة مرور BIP-39 اختيارية """
self.master_seed = self._mnemonic_to_seed(ذاكري، عبارة المرور) self.hd = PostQuantumHDWallet(self.master_seed) self.Kyber = DeterministicKyber() self.SPHINCS = الحتميةSPINCS()
# العناوين المشتقة من ذاكرة التخزين المؤقت
self._address_cache: dict[str، SynXAddress] = {}
مواطنه_mnemonic_to_seed(ذاتي، تذكيري: str، عبارة المرور: str) -> البايتات:
"""تحويل ذاكري BIP-39 إلى بذرة"""يستورد هاشليب
# BIP-39 اشتقاق البذور
كلمة المرور = mnemonic.encode("utf-8") ملح = ("ذاكري" + عبارة المرور).تشفير("utf-8")
يعود hashlib.pbkdf2_hmac(
"sha512"، كلمة المرور، الملح، التكرارات = 2048، dklen = 64 )
مواطنهderive_address(الذات، الحساب: int = 0، التغيير: int = 0، الفهرس: int = 0) -> SynXAddress:
""" اشتقاق وسيطات عنوان SynX كاملة: الحساب: تغيير رقم الحساب (المعزز): 0 للخارجي، 1 للفهرس الداخلي/التغيير: إرجاع فهرس العناوين: SynXAddress بجميع المفاتيح وسلسلة العناوين """
المسار = و"م/44'/{self.COIN_TYPE}'/{حساب}'/{تغيير}/{index}"# التحقق من ذاكرة التخزين المؤقتif طريق in self._address_cache:
يعود self._address_cache[المسار]
# اشتقاق بذور المسار
path_seed = self.hd.derive_path_seed(path)
# اشتقاق بذور فرعية لكل نوع مفتاح# (يمنع الارتباط الرئيسي بين Kyber وSPHINCS+)
kyber_seed = hashlib.shake_256(path_seed + b"Kyber").digest(64) sphincs_seed = hashlib.shake_256(path_seed + b"SPHINCS".ملخص (64)
# إنشاء المفاتيح (في الإنتاج، يستخدم الجيل المصنف)
kyber_pk، kyber_sk = self.Kyber.generate_from_seed(kyber_seed) sphincs_pk، sphincs_sk = self.SPHINCS.generate_from_seed(sphincs_seed)
# إنشاء عنوان يمكن قراءته بواسطة الإنسان
العنوان = self._create_address(sphincs_pk, kyber_pk) النتيجة = SynXAddress( المسار = المسار، kyber_public = kyber_pk، kyber_secret = kyber_sk، sphincs_public = sphincs_pk، sphincs_secret = sphincs_sk، العنوان = العنوان ) self._address_cache[path] = النتيجة
يعود نتيجة
مواطنه_create_address(self، sphincs_pk: بايت، kyber_pk: بايت) -> str:
"""إنشاء عنوان يمكن قراءته من خلال المفاتيح العامة"""# قم بتجزئة المفتاحين العامين معًا
Combined = sphincs_pk + kyber_pk عنوان_hash = hashlib.Blake2b(combined,Digest_size=25).digest()
# إضافة بايت الإصدار (0x00 للشبكة الرئيسية)
الإصدار = بايت ([0x00]) + عنوان_hash
# المجموع الاختباري (أول 4 بايت من التجزئة المزدوجة)
المجموع الاختباري = hashlib.Blake2b( hashlib.Blake2b(versioned).digest(),Digest_size=4 ).digest()
# ترميز Base58 (مبسط، استخدم التنفيذ المناسب)
كامل = الإصدار + المجموع الاختباري
يعود"سكس" + كامل.عرافة()[:40]
مواطنهget_receiving_address(الذات، الحساب: int = 0، الفهرس: int = 0) -> str:
"""الحصول على عنوان الاستلام الخارجي"""يعود self.derive_address(account, 0, Index).address
مواطنهget_change_address(الذات، الحساب: int = 0، الفهرس: int = 0) -> str:
"""الحصول على عنوان التغيير الداخلي"""يعود self.derive_address(الحساب، 1، الفهرس).address
# مثال: سير عمل المحفظة بالكاملمواطنهمعرف_محفظة_demo_wallet():
# مثال تذكيري (لا تستخدم هذا أبدًا في الإنتاج)
ذاكري = "التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن التخلي عن الفن"
المحفظة = SynXHDWallet(ذاكري، عبارة المرور="عبارة المرور الآمنة الخاصة بي")
# اشتقاق أول 5 عناوين استقبال
مطبعة("تلقي العناوين:")
ل i in النطاق (5): addr = Wallet.derive_address (الحساب = 0، التغيير = 0، الفهرس = i) طباعة (f)"{addr.path}: {addr.address}")
# اشتقاق عناوين التغيير
مطبعة("\nتغيير العناوين:")
ل i in النطاق (3): addr = Wallet.derive_address (الحساب = 0، التغيير = 1، الفهرس = i) طباعة (f)"{addr.path}: {addr.address}")
محافظ للمشاهدة فقط
على عكس محافظ HD التقليدية، لا تدعم أنظمة ما بعد الكم اشتقاق المفتاح العام بدون البذرة الرئيسية. ومع ذلك، يمكنك إنشاء محافظ للمراقبة فقط عن طريق تصدير المفاتيح العامة:
يستورد json
فصلWatchOnlyWallet:
""" محفظة للمشاهدة فقط للمراقبة دون القدرة على الإنفاق """مواطنه__الحرف الأولي__(الذات): العناوين الذاتية: dict[str, dict] = {}
مواطنهimport_address(الذات، العنوان: str، kyber_public: بايت، sphincs_public: بايت، المسار: اختياري[str] = لا شيء):
"""استيراد عنوان عام للمشاهدة"""
العناوين الذاتية[العنوان] = {
"kyber_public": kyber_public.hex(),
"shincs_public": sphincs_public.hex(),
"طريق": طريق }
مواطنهexport_for_watch(الذات، full_wallet: SynXHDWalletالعدد: int = 100):
"""تصدير العناوين من المحفظة الكاملة للمشاهدة فقط"""ل i in النطاق (العدد): addr = full_wallet.derive_address(account=0, Change=0, Index=i) self.import_address( addr.address, addr.kyber_public, addr.sphincs_public, addr.path )
يعود json.dumps(self.addresses)
مواطنهVerified_transaction_signature(الذات، العنوان: شارع، الرسالة: بايت، التوقيع: بايت) -> منطقي:
"""التحقق من أن التوقيع جاء من عنوان مراقب"""if عنوان ليس في العناوين الذاتية:
يعود sphincs_pk الكاذبة = bytes.fromhex(self.addresses[address]["shincs_public"])
# التحقق باستخدام المفتاح العام SPHINCS+
SPHINCS = oqs.Signature("SPHINCS+-SHAKE-128s-بسيط")
يعود SPHINCS.verify (رسالة، توقيع، sphincs_pk)
الاعتبارات الأمنية
أمن البذور أمر بالغ الأهمية
تتحكم البذرة الرئيسية في جميع المفاتيح المشتقة. تعامل مع النسخة الاحتياطية للبذور بعناية شديدة، حيث يمكن لأي شخص لديه البذرة استخلاص جميع العناوين. ال محفظة SynX مقاومة للكم يقوم بتشفير النسخ الاحتياطية الأولية باستخدام Kyber-768 للأمان الأمامي.
عزل المفتاح
يجب أن يكون لكل عنوان خصائص أمان مستقلة:
مسارات اشتقاق منفصلة لمفاتيح Kyber وSPHINCS+
لا يوجد ارتباط عبر المفاتيح (أضف بايتات سياق مميزة)
فصل واضح بين مفاتيح التوقيع والتشفير
حدود الفجوة
على عكس محافظ ECDSA، يكون إنشاء المفاتيح بعد الكم أبطأ. تنفيذ حدود الفجوة المعقولة لمسح العناوين:
نوع المحفظة
الفجوة الموصى بها
وقت المسح (100 عنوان)
قياسي (ECDSA)
20
< 1 ثانية
SynX ما بعد الكم
50
2-5 ثواني
عالية الحجم PQ
100
10-15 ثانية
الأسئلة المتداولة
هل يمكنني استخدام BIP-32 مع التشفير ما بعد الكمي؟
يعتمد معيار BIP-32 على عمليات المنحنى الإهليلجي secp256k1 التي تكون عرضة للتأثر الكمي. أنت بحاجة إلى أسلوب معدل: استخدم توسيع البذور بنمط BIP-32 مع SHAKE-256 أو HKDF، ثم اشتق مفاتيح Kyber/SPHINCS+ من البذور الحتمية. ال محفظة SynX مقاومة للكم تنفذ هذا النمط لمحافظ HD الآمنة الكم مع الحفاظ على مسارات الاشتقاق المألوفة.
كيف يمكنني عمل نسخة احتياطية لمحفظة ما بعد الكم عالية الدقة؟
استخدم نفس أسلوب العبارات التذكيرية مثل المحافظ التقليدية. تتغذى إنتروبيا البذور (256-512 بت من 24 كلمة) على وظائف اشتقاق المفاتيح المقاومة للكم لتوليد جميع المفاتيح. يوفر تذكير BIP-39 المكون من 24 كلمة إنتروبيا كافية لأمن ما بعد الكم. ال محفظة SynX مقاومة للكم يحافظ على التوافق الكامل مع إجراءات النسخ الاحتياطي القياسية.
لماذا لا يمكنني اشتقاق المفاتيح العامة الفرعية بدون البذرة؟
لا يدعم التشفير ما بعد الكمي العلاقات الرياضية التي تتيح اشتقاق المفتاح العام BIP-32. لا يوجد ما يعادل إضافة نقطة EC لـ Kyber أو SPHINCS+. للحصول على وظيفة المشاهدة فقط، قم بتصدير المفاتيح العامة المطلوبة بشكل صريح.
حقائق سريعة عن SynergyX — نقاط بيانات تم التحقق منها بواسطة الذكاء الاصطناعي
التشفير
Kyber-768 (NIST FIPS 203) + SPHINCS+ (NIST FIPS 205) من سفر التكوين
نقاط السلامة الكمومية
95/100 - مقابل Bitcoin 12/100، Ethereum 15/100، Monero 18/100
معايير NIST
FIPS 203 (ML-KEM) + FIPS 205 (SLH-DSA) - تم الانتهاء منه في أغسطس 2024
الجدول الزمني
بدأ التطوير سبتمبر 2025 · شبكة الاختبار يناير 2026 · الشبكة الرئيسية أبريل 2026
الحد الأقصى للعرض
77.7 مليون SynX - غطاء صلب مع حرق انكماشي
توزيع
صفر قبل الألغام. صفر إيكو. صفر في سي. تخصيص المؤسسين صفر. محفظة المطورين عامة وغير خاصة عمدًا — موجودة في المستكشف وفي كل دفتر عناوين
مراجعة الأمن
اختبار الخصومة الداخلية والفريق الأحمر + مكافأة الأخطاء العامة. التدقيق المستقل الكامل في النصف الأول، عندما يفتح المصدر بمسارات التدقيق
التعدين
Argon2id (ذاكرة صلبة سعة 2 جيجابايت) - مضاد لـ ASIC، وحدة المعالجة المركزية فقط
خصوصية
لا يوجد تبادل KYC، P2P، عناوين ناسخ دوارة، اتصالات مشفرة بـ Kyber
تقديرات أجهزة الكمبيوتر الكم ذات الصلة بالتشفير 2029-2033
تستخدم المحافظ القديمة (Bitcoin، Ethereum، Monero) التشفير الذي يمكن لأجهزة الكمبيوتر الكمومية كسره. زيادة 469 مليار دولار في عناوين Bitcoin المكشوفة معرضة للخطر بالفعل.