إن استخدام آليات وخوارزميات التشفير في مراحل مختلفة من العملية الانتخابية يمنح نظام التصويت عن بُعد الخصائص الضرورية. دعنا نلقي نظرة فاحصة وننظر في مراحل التصويت الموضحة في مقالة النظرة العامة .
تهيئة النظام. في مرحلة بدء التصويت ، يتم إجراء عمليات التشفير التالية:
- تطوير زوج من مفاتيح المدقق لإصدار التوقيع الأعمى والتحقق منه ، باعتباره الأكثر ثباتًا والموصى به من قبل المجتمع الأكاديمي لإجراء إخفاء الهوية في أنظمة التصويت الإلكتروني. في الوقت الحالي ، يدعم النظام خوارزميات التوقيع الأعمى على المنحنيات الإهليلجية وعلى أساس خوارزمية تشفير RSA. تم إجراء التصويت باستخدام خوارزمية لإصدار توقيع أعمى والتحقق منه بناءً على خوارزمية تشفير RSA بطول مفتاح 4096 بت.
- إنشاء مفتاح تشفير عام مشترك. لمزيد من الأمان ، يتم استخدام خوارزميتين للتشفير في عملية إنشاء المفاتيح في وقت واحد: بروتوكول إنشاء المفتاح الموزع DKG Pedersen 91 وبروتوكول مشاركة مفتاح Shamir. يتم تنفيذ إنشاء المفاتيح من قبل كل من المشاركين الذين لديهم الوسائل التقنية للتحكم مباشرة في عقد الشبكة وخادم العد ، ومن قبل المشاركين الذين هم حراس المفاتيح المسجلة على الوسائط الخارجية. نتيجة عمل هاتين الخوارزميتين هي مفتاح عام شائع لتشفير أوراق الاقتراع. بعد ذلك ، سوف نلقي نظرة فاحصة على الإجراء الخاص بإنشاء هذا المفتاح.
توفير الوصول إلى النشرة الإخبارية . في هذه المرحلة ، تعمل الآليات التالية:
- إنشاء زوج من المفاتيح لتوقيع إلكتروني على جهاز ناخب وفقًا لـ GOST R 34.10-2012
- توليد توقيع أعمى لمفتاح عام للناخب المقنع للمصادقة عليه والتحقق اللاحق من حقه في التصويت. تعتمد الآلية حاليًا على خوارزمية تشفير RSA. تمت مناقشة آلية إخفاء الهوية بالتفصيل في مقال منفصل.
تعبئة النشرة وإرسالها . في هذه المرحلة ، يتم استخدام المجموعة التالية من خوارزميات التشفير:
- تشفير منحنى إهليلجي للنشرة الإخبارية حسب مخطط الجمل. يتم استخدام هذا المخطط في البروتوكول ، حيث أنه يتمتع بخاصية كونه متماثل الشكل بالإضافة إلى ذلك ، مما يجعل من الممكن الحصول على نتائج التصويت دون فك تشفير كل بطاقة اقتراع.
- يتم استخدام دليل نطاق Chaum-Pedersen المنفصل لإثبات صحة محتوى ورقة الاقتراع دون فك تشفيرها. سنقوم بتحليل هذه الآلية بالتفصيل في المقالة التالية.
- التوقيع الإلكتروني للنشرة المشفرة وفقًا لـ GOST R 34.10-2012.
عد المجاميع. في مرحلة التلخيص ، يتم تنفيذ ما يلي:
- إضافة متجانسة لأوراق الاقتراع المشفرة.
- فك التشفير الجزئي الأولي للاقتراع الملخص النهائي بأجزاء من المفتاح الخاص من قبل المشاركين الذين يتحكمون في العقد الفردية وعد الخوادم مع تلقي النصوص المشفرة من كل مشارك ؛
- تجميع المفتاح الخاص في لجنة الانتخابات وفك التشفير الجزئي للاقتراع النهائي الموجز باستخدام المفتاح الذي تم جمعه.
- التجميع النهائي للنصوص المشفرة واستلام نتائج العد.
- توليد والتحقق من إثبات المعرفة صفر تشوم بيدرسن. تستخدم لإثبات صحة فك تشفير الاقتراع النهائي الموجز. سنقوم بتحليل هذه الآلية بالتفصيل في المقالة التالية.
التدقيق . في هذه المرحلة ، يمكن إجراء عمليات التحقق من صحة جميع مراحل البروتوكول ، وفي هذه المقالة سنلقي نظرة فاحصة على الفحوصات الممكنة.
دعونا نلقي نظرة فاحصة على آليات التشفير.
منصة Blockchain
قبل الحديث عن إجراء إنشاء المفاتيح ، تحتاج إلى تقديم مقدمة حول تنفيذ منصة blockchain.
يوضح الشكل أدناه تخطيطًا مستهدفًا مبسطًا لمنصة blockchain.
يتم وضع وحجز عقد blockchain في مراكز البيانات الموزعة جغرافيًا لشركة PJSC Rostelecom. في هذه الحالة ، يمكن إسناد مسؤولية المجموعة "الذرية" من المكونات المتضمنة في تخزين جميع بيانات التصويت إلى لجنة الانتخابات أو مختلف مؤسسات المراقبة العامة.
يتم ذلك من أجل تزويد المشاركين بفرصة التحكم في المكونات الرئيسية للنظام وعقد الشبكة ، وفي نفس الوقت عدم التعامل مع حل المشكلات المتعلقة بأمن المعلومات ونشر وتشغيل الوسائل التقنية ، فضلاً عن ضمان قابلية النظام للتوسع.
يمكن أن تتغير قائمة المشاركين بمرور الوقت - من الحد الأدنى في مرحلة بدء تشغيل النظام إلى التشغيل التجاري ، إلى قائمة واسعة إلى حد ما ولا مركزية تمامًا مع تطور النظام. في هذه الحالة ، هناك دائمًا إمكانية وضع مجموعة من المكونات خارج مركز البيانات.
يتم استخدام الحل المحلي Waves Enterprise كمنصة blockchain. يتم توقيع المعاملات والكتل وفقًا لـ GOST R 34.10-2012.
توليد مفاتيح التشفير
يتم إنشاء المفتاح العام لتشفير بطاقة الاقتراع باستخدام خوارزميتين تشفير: DKG Pedersen 91 Distributed Key Generation Protocol و Shamir Key Sharing Protocol. على أساس كل من هذه الخوارزميات ، يتم إنشاء مفتاح عام "وسيط". ثم يتم دمج هذين المفتاحين في مفتاح واحد مشترك.
يظهر مخطط تجميع المفاتيح أدناه في الشكل.
بشكل عام ، قد يبدو مثل هذا المخطط لا لزوم له ، ولكن هذه هي الطريقة التي يمكننا بها الحصول على أقصى قدر من السرية للتصويت قبل أن ينتهي. هذا يرجع إلى حقيقة أن المفتاح الخاص الذي تم إنشاؤه باستخدام بروتوكول DKG لا يوجد أبدًا في مكان واحد في النموذج المجمع ولا يمكن سرقته بشكل ضار قبل أو بعد التوليد ، وأجزائه مملوكة لأطراف مستقلة تتفاعل مع بعضها البعض فقط من خلال blockchain.
ولكن إذا لم تتمكن من تجميع النصاب القانوني للمشاركين المستقلين ، يبدأ روتين شبكة blokcheyn في فصل المفتاح بين الأحزاب المستقلة ، والذين هم الأوصياء على الأجزاء الفردية من المفتاح الذي سيتم تسجيله في وسائل الإعلام الخارجية (مفتاح اللجنة)
يبدأ إجراء تشفير المفتاح العام المشترك عشية التصويت ، مما يجعل الإجراء مفتوحًا أمام اللجنة... في وقت معين قبل بدء التصويت ، في وجود مراقبين وصحفيين على جهاز كمبيوتر محمول آمن غير متصل بالشبكة المحلية أو الإنترنت ، باستخدام أداة خاصة ، يتم إنشاء زوج مفاتيح ، يليه تقسيم المفتاح الخاص إلى أجزاء n1 وتسجيلها على وسائط خاصة. تحدد مفوضية الانتخابات بقرارها حاملي أجزاء المفتاح الخاص. في مرحلة إنشاء التصويت وتهيئته ، سيتم تسجيل المفتاح العام للهيئة في blockchain.
ثم يتم البدء في إنشاء التصويت في شبكة blockchain. بعد إنشاء تصويت على خوادم الفرز ، يبدأ إجراء إنشاء مفتاح DKG العمومي تلقائيًا .
المشاركون في إجراء توليد المفاتيح الموزعة هم خوادم لعد الأصوات ، والتي كتبنا عنها سابقًا في مقالة المراجعة . يتم تسجيل جميع عمليات التفاعل بين خوادم الجرد ، سواء الوسيطة أو النهائية ، في blockchain ، وبالتالي فهي شفافة ويمكن التحقق منها. يقوم النظام بتنفيذ مخطط العتبة "k out of n" ، أي عند فك تشفير البيانات ، فإن مشاركة جميع الأطراف n التي شكلت المفتاح العام DKG غير مطلوبة ، وعدد أقل من المشاركين k يكفي. هذا يسمح بفك تشفير نتائج التصويت حتى إذا كانت خوادم عد nk غير متوفرة أو فقدت مفاتيحها الخاصة.
لإنشاء المفتاح العام ، يتم استخدام خوارزمية DKG (إنشاء المفتاح الموزع) ، الموضحة في المقالة "نظام تشفير عتبة بدون طرف موثوق به" بواسطة Torben Pryds Pedersen ، تم نقله إلى منحنيات بيضاوية. من المفترض أن يكون لكل خادم زوج مفاتيح Diffie-Hellman ثابت (مسجل بواسطة المسجل في المحاسب) يستخدم لنقل البيانات بشكل آمن إلى هذا الخادم (تصدير / استيراد مشاركات المفاتيح).
معلمات البروتوكول
- منحنى إهليلجي E ومولد P لمجموعة فرعية من هذا المنحنى ذو الترتيب الأولي الكبير q. يستخدم التطبيق الحالي منحنى secp256k1 .
- مولد آخر Q من نفس المجموعة الفرعية التي القيمة غير معروف لأي شخص.
- (ك ، ن) ، حيث n هو العدد الإجمالي للمشاركين الذين أنشأوا أزواج المفاتيح ، و k هو الحد الأدنى لعدد المشاركين الضروري لاستعادة السر المشترك ، بينما ... وهذا يعني أنه في حالة اختراق مشاركي k-1 أو سرقت مفاتيحهم ، فلن يؤثر ذلك على أمان السر المشترك بأي شكل من الأشكال.
بشكل عام ، تكون خوارزمية الحصول على النقطة Q كما يلي: يتم أخذ أي تسلسل من البايت ، على سبيل المثال السلسلة "Hello، World!" ، ويتم حساب التجزئة h = Hash ("Hello ، World!") منها ، وبعد ذلك نقوم بتحويل تسلسل البايت h إلى رقم و يعتبر ، حيث p هو مقياس المنحنى ، نعوض به في معادلة المنحنى: ومحاولة حلها بالنسبة إلى y. في حالة عدم وجود حل ، نزيد x0 ونحاول مرة أخرى حل المعادلة للحصول على قيمة جديدة لـ x0 ، وهكذا.
الخطوة 0.
يتم تعيين رقم تسلسل فريد لكل من الخوادم n من 1 إلى n. هذا ضروري لأن معامل لاغرانج يعتمد على الرقم التسلسلي للخادم.
الخطوة 1 - إنشاء مفتاح عمومي DKG.
كل خادم j -th ، j = 1 ، ... ، n:
1. يولد زوجًا من المفاتيح الخاصة 〖priv〗 _j ومفتاح عام
2. يقدم التزام Pedersen للمفتاح العام:
يُنشئ رقمًا عشوائيًا r_j
يحسب نقطة
يتم نشره باستخدام عداد
3. بعد أن تنشر جميع الخوادم قيم C_i الخاصة بها ، يتم نشر الحجمي r_j.
باستخدام scalars ، يمكن لأي شخص استرداد المفاتيح العامة لكل خادم وحساب المفتاح العمومي DKG ...
يتم كتابة المفتاح العام DKG إلى blockchain.
الخطوة 2 - توليد كثيرات الحدود وتوزيع الظلال.
كل خادم j -th ، j = 1 ، ... ، n:
1. يولد متعدد الحدود عشوائيًا من الدرجة k-1:
حيث المعامل ، والباقي عناصر عشوائية للحقل GF (q).
2. تحسب قيم كثير الحدود
3. يشفر القيمة باستخدام مفتاح التصدير / الاستيراد العام ، الخادم i -th لكل i ونشر نتائج التشفير باستخدام العداد.
الخطوة 3 - فحص معاملات كثيرات الحدود.
كل خادم j -th ، j = 1 ، ... ، n:
1. ينشر كل معامل من كثير الحدود ، مضروبًا في المولد P.
2. يفك كل المعاني ويتحقق من صحتها:
يحسب
لحساب المجموع
إذا كان A = B ، ثم يتم قبول النتيجة ، وإلا يتم نشر شكوى ضد الخادم i ، ويبدأ البروتوكول من البداية - انتقل إلى الخطوة 0.
3. إذا لم يكن لدى أي شخص شكوى ،
فسيحسب مفتاحه الخاص. يمكن استرداد المفتاح العام DKG والتحقق من البيانات التي تكتبها خوادم الجرد إلى blockchain في مرحلة بدء التصويت. من الضروري أخذ النقاط الرئيسية العامة لجميع عمليات فك التشفير وإضافتها. ستكون النتيجة هي نفس القيمة التي يتم تسجيلها في blockchain مثل DKG للمفتاح العام.
علاوة على ذلك ، بناءً على المفتاح العام الخاص بالعمولة ، والذي يتم تحميله في النظام ، والمفاتيح العامة لخوادم العد ، يتم إنشاء مفتاح تشفير عام وفقًا للصيغة التالية:
MainPubKey = Hash (PubDKG، PubCommission) * PubDKG + Hash (PubCommission، PubDKG) * PubCommission
جميع المفاتيح العامة مكتوبة في blockchain جنبًا إلى جنب مع الحسابات الوسيطة لسهولة الفحص من قبل المراقبين. تتم قراءة مفتاح التشفير العام المشترك من blockchain ونقله إلى أجهزة المستخدمين عند عرض الرسالة الإخبارية.
وصف نظام تشفير النشرة
فيما يلي وصف لإجراءات تشفير أوراق الاقتراع باستخدام مخطط الجمل على المنحنيات الإهليلجية.
يسمح نظام تشفير الجمل على المنحنيات البيضاوية للمرء بتنفيذ تشفير متماثل الشكل فيما يتعلق بالإضافة ، حيث يتم الحصول على مجموع مشفر من القيم الأصلية نتيجة لعملية الإضافة على نص التشفير.
مشفر (أ) + مشفر (ب) = مشفر (أ + ب).
لاستخدام خاصية الخوارزمية هذه ، يتم تمثيل بطاقة الاقتراع الإلكترونية المكتملة كسلسلة من الأصفار والآحاد. يتوافق عدد الأحرف مع عدد الخيارات ، بينما يتم تمثيل الشخص المحدد بواحد ، ويتم تمثيل الخيارات الأخرى بالأصفار.
يتم تحديد طول المفتاح الخاص عند استخدام خوارزمية ElGamal على منحنيات ناقصة لتكون 256 بت ، في حين أن المفتاح العام هو نقطة على منحنى ناقص. هذا يتوافق مع مستوى أمان 128 بت (2 ^ 128 عمليات نقطة منحنى مطلوبة للتصدع). يعتبر هذا المستوى الأمثل لمعظم الأنظمة الصناعية والمالية الحديثة ، بما في ذلك المعيار الروسي GOST 34.10-2018 “تكنولوجيا المعلومات. حماية المعلومات المشفرة. عمليات تكوين التواقيع الرقمية الإلكترونية والتحقق منها "(إصدار 256 بت).
يتم استخدام Secp256k1 كمنحنى بيضاوي.
لنفترض أن لدينا زوج مفاتيح priv ، Pub:
Number priv: 0 <priv <q
Point Pub = priv * Base
Encryption:
- هناك رسالة m ، رقم صغير نريد تشفيره على مفتاح Pub.
- احسب النقطة م = م * القاعدة
- قم بإنشاء رقم عشوائي r: 0 <r <q
- احسب النقطة R = r * Base والنقطة C = M + r * Pub
- نص مجفر: (R، C)
فك التشفير:
- يحتوي على مفتاح خاص ونص مشفر (R ، C)
- احسب النقطة M = C - priv * Base
- إعادة بناء م: حل ECDLP بالقوة الغاشمة للنسبة M = م * القاعدة
مخطط تشابه الشكل.
نرى ذلك إذا قمنا بتشفير رسالتين و على مفتاح Pub:
ثم مجموعهم يطابق الرسالة المشفرة ...
وبالتالي ، يمكن تشفير جميع أوراق الاقتراع وطيها "كل مرشح على حدة". على سبيل المثال ، دع نشرة مفتوحة تبدو كما يلي:
Ivanov Petrov Sidorov
0 1 0
ثم ، بتحويلها إلى نقاط ، نحصل على:
Ivanov Petrov
Sidorov ZeroPoint Base ZeroPoint
حيث ZeroPoint هي نقطة في اللانهاية.
وأخيرًا ، قمنا بتشفير الرسالة الإخبارية على مفتاح الحانة:
إيفانوف بيتروف سيدوروف
لنفترض أننا أجرينا مثل هذا التصويت مع ناخبين. إذا قمنا بإضافة نصوص مشفرة من أوراق اقتراع مختلفة لإيفانوف وبيتروف وسيدوروف ، فسنحصل على بطاقة اقتراع موجزة تحتوي على مبالغ مشفرة لكل من المرشحين. يمكن فك تشفير بطاقة الاقتراع الموجز هذه باستخدام مفتاح فك التشفير ويمكن العثور على نتائج التصويت لكل من المرشحين.
يوضح الشكل أدناه مخططًا لتكديس أوراق الاقتراع متجانسة الشكل والتحقق من صحتها استنادًا إلى براهين معرفية صفرية.
كما نرى من الرسم التخطيطي ، لا يملك المهاجم المحتمل أي طريقة "لإلقاء" أصوات إضافية عن طريق تشفير رقم غير صحيح على مستوى بروتوكول التشفير. يتم تحقيق ذلك باستخدام براهين معرفية صفرية ، والتي سيتم مناقشتها لاحقًا في المقالة. بالإضافة إلى ذلك ، يتم أيضًا تنفيذ الفحوصات اللازمة في تطبيق الويب الخاص بالناخب.
وصف إجراء فك التشفير
يتم فرز الأصوات بدون فك تشفير بسبب التشفير المتماثل وفقًا لنظام الجمل ، والذي يسمح بالحفاظ على سرية إجراءات التصويت بأكملها وكل صوت فردي. أيضًا ، لا يمتلك أي من الخوادم القدرة على فك تشفير نتائج التصويت بشكل مستقل وسري.
لفك تشفير النص المشفر (R ، C) ، من الضروري أن يقوم أي k من n خوادم بحساب القيمة ونشرها وإثبات صحة فك تشفير Chaum-Pedersen (دليل على أن الحساب هي بالضبط النقطة R مضروبة في دون الكشف عن المعنى ). أيضًا ، لهذا ، من الضروري جمع المفتاح الخاص للعمولة من k1 على الأقل من أجزاء t1 وبمساعدتها أيضًا إجراء الحسابمع النشر على blockchain.
يحدث فك التشفير على عدة مراحل ، يتم تسجيل نتائج كل منها في blockchain.
الخطوة الأولى- فك التشفير الجزئي. يضيف كل K من خوادم N للنظام النصوص المشفرة للأصوات ، ويتلقى الاقتراع الموجز ، ويفك تشفير مفتاح التصويت الخاص من جانبه. ستكون نتيجة هذه العملية نصًا مشفرًا ، والذي يجمعه مع النصوص المشفرة التي تم الحصول عليها نتيجة لنفس العمليات التي يتم إجراؤها على خوادم العد الأخرى ، وكذلك مع النص المشفر الذي تم الحصول عليه على المفتاح الخاص بالعمولة ، سيعطي نتيجة نهائية غير مشفرة. من المهم ملاحظة أنه إذا لم يكن هناك نص مشفر تم الحصول عليه من فك التشفير على المفتاح الخاص للجنة ، فإن جميع النصوص المشفرة الأخرى تصبح عديمة الفائدة. من المستحيل الحصول على أي نتائج منها.
يتم نشر نتائج العملية على blockchain.
المرحلة الثانية- تجميع المفتاح الخاص للجنة وفك التشفير الجزئي للاقتراع الموجز. يتم تنفيذ هذه العملية على جهاز كمبيوتر خاص بدون اتصال بالإنترنت. بعد تجميع المفتاح ، تتم العملية الموضحة في الفقرة السابقة لتشكيل النص المشفر على مفتاح العمولة. يتم تسجيل نتائج هذه العملية أيضًا في blockchain.
المرحلة الثالثة هي فك التشفير النهائي. تقوم خوادم عد التصويت بتجميع النتائج K من خوادم N ، ونتيجة فك التشفير على المفتاح الخاص للهيئة ، وتنتج فك التشفير النهائي ، ثم تنشر نتائج التصويت.
يرجى ملاحظة أن وجود النص المشفر الذي تم إنشاؤه على المفتاح الخاص للعمولة هو شرط أساسي. بدونها ، لن يتم حساب النتائج.
بناءً على النتائج المنشورة لفك التشفير الجزئي ، يمكن لأي طرف مهتم تكرار العملية والتحقق من عد النتائج بشكل صحيح.
إثبات المعرفة الصفرية
على الرغم من أن نظام DEG محمي من المتطفلين وأخطاء المستخدم على مستوى البرامج والبنية التحتية ، فقد تم توفير أدلة وفحوصات رياضية إضافية على مستوى بروتوكول التشفير ، والتي لا تسمح بنقل المعلومات الخاطئة إلى النظام. لهذا ، تم تطوير العديد من الآليات على أساس إثبات عدم المعرفة غير التفاعلي (NIZK).
النوع الأول من ZKP (إثبات عدم المعرفة) المطبق في النظام هو براهين النطاق. يتم استخدام بيانات ZKP عند نشر بطاقة اقتراع مشفرة بحيث ، في حالة عدم وجود معلومات حول كيفية تصويت الناخب ، سيكون من الممكن التأكد من أن الناخب لم يفسد الاقتراع على جهازه بإحدى الطرق التالية:
- لم يقم المشارك بتشفير قيمة أكبر من واحد في الاقتراع لخيار تصويت منفصل ، مما قد يؤثر على نتيجة التصويت في حالة "الإضافة المشفرة" ؛
- لم يختر المشارك أكثر من خيار واحد لكل سؤال في الاقتراع ، ما لم ينص عليه الإجراء الخاص بملء الاقتراع.
سيتم مناقشة وصف أكثر تفصيلاً لتطبيق NIZK ، بالإضافة إلى التحقق منها ، في مقال منفصل.
هيكل السجلات في blockchain
يتم تسجيل جميع المعلومات في blockchain من خلال ثلاثة أنواع من المعاملات:
- CreateContract - لإنشاء عقد ذكي لتصويت محدد. علاوة على ذلك ، في هذا العقد الذكي ، سيتم تجميع جميع المعلومات المتعلقة بالتصويت. إذا تم إجراء صوتين (أو أكثر) في وقت واحد ، فسيتم إنشاء نسختين (أو أكثر) من العقد ، على التوالي.
- CallContract - للتفاعل مع عقد ذكي لعمليات مختلفة ، ترد قائمة به أدناه.
- معاملة البيانات - لتسجيل قائمة الناخبين بعد إنشاء مثيل لعقد التصويت الذكي وقبل بدء التصويت نفسه.
يتم تنفيذ التفاعل مع العقد الذكي من خلال العمليات التالية:
- كتابة البيانات الأساسية في عقد ذكي. يتم هنا تخزين المفاتيح العامة لخوادم الجرد التي ستشارك في بروتوكول التشفير ونظام العتبة ومفاتيح التحقق من التوقيع الأعمى والبيانات الأخرى اللازمة لتنظيم البروتوكول والتصويت بشكل عام.
- dkgScalar ، dkgCommit ، dkgShadows - البيانات المطلوبة لبناء مفتاح عمومي لتشفير أوراق الاقتراع وتنفيذ عتبة k من مخططات n. سنتحدث أكثر عن هذا لاحقًا في المقالة.
- addMainKey – .
- blindSigIssue – .
- vote – .
- finishVoting – . .
- Decryption – . .
- ComissionDecryption – .
- Results – . , .
تتضمن معاملة تصويت الناخبين عنوان blockchain الخاص بالناخب والمفتاح العام ، وبطاقة الاقتراع المشفرة ، والتوقيع الأعمى ، والتوقيع الإلكتروني الذي تم إنشاؤه على المفتاح الخاص للناخب المجهول (راجع المقالة المنشورة مسبقًا حول إخفاء الهوية).
توضح الأشكال أدناه عرض معاملة بصوت في عميل blockchain.
يتم تجميع جميع المعلومات المتعلقة بالتصويت في عقد ذكي وستكون متاحة من خلال عميل blockchain للمراقبين أو في شكل ملف csv لأي شخص.
يوضح الشكل أدناه عرض المعلومات المجمعة في عقد ذكي.
* بيانات من خادم الاختبار.
تتيح لك ميزات نظام Waves Enterprise الأساسي تنفيذ منطق معقد إلى حد ما باستخدام نموذج الحالة والتحقق من التوقيع الأعمى وإحصاء بطاقات الاقتراع الصحيحة والفاسدة.
فحص بروتوكول التشفير وعملية التصويت
الفحص الأساسي الأول الذي يمكن إجراؤه باستخدام منصة blockchain وعميل blockchain هو التحقق مما إذا كان عدد الناخبين في قائمة الناخبين يطابق عدد بطاقات الاقتراع الصادرة وعدد الأصوات المسجلة.
يتم التحقق من صحة العد من خلال تكرار عمل خادم الفرز من قبل المراقب لتلخيص أوراق الاقتراع المشفرة حسب المرشح. يتم ذلك عن طريق إضافة نقاط المنحنى الإهليلجي المقابلة لكل مرشح بالتتابع.
بعد ذلك ، باستخدام نشرة الملخص المشفرة المستلمة وإثبات فك التشفير ، اللذين يتم نشرهما على blockchain ، يمكن التحقق من صحة التجميع وفك التشفير الجزئي الذي يقوم به كل خادم عد.
في هذه المرحلة ، من الواضح ما إذا كانت الكمية المشفرة التي يتلقاها المراقب تتوافق مع ما سجله كل خادم من خوادم الجرد.
بعد ذلك ، يمكنك التحقق من صحة فك تشفير نتائج التصويت. للقيام بذلك ، تحتاج إلى أخذ نصوص مشفرة من المعاملات بنوع عمليات فك التشفير وفك التشفير ، وقياسًا على بطاقات الاقتراع ، قم بإضافة نقاط المنحنى البيضاوي لكل مرشح.
يتوفر رمز المصدر لعمليات التشفير في مستودع GitHub هذا .