مثل العديد من المهووسين ، لدي مصلحة في التشفير المتجذرة في مآثر زمن الحرب من الكود Breaker و أورالعلماء الحاسوبية آلان تورينج. لذلك تابعت باهتمام IEEE Spectrum الإبلاغ عن مجال تشفير ما بعد البورصة. تم تصميم هذه التقنيات لإحباط حتى الإمكانات الهائلة للحوسبة الكمومية ، وهي سنوات ضوئية تقنية تتجاوز bombe الكهروميكانيكية التي استخدمها Turing لكسر الشفرات اللغوية الألمانية. أنا متأكد من أن أساليب التشفير الجديدة ستعمل بشكل جيد. ولكن هناك مخطط تشفير واحد ، معروف حتى في وقت Turing ، وهو آمن رياضيا ضد ليس فقط أجهزة الكمبيوتر الكمومية ولكن أي الكمبيوتر الذي سيتم اختراعه على الإطلاق: لوحة لمرة واحدة.
لوحة لمرة واحدة هي سلسلة من الحروف أو الأرقام العشوائية-250 رقمًا. يحتوي كل من المرسل والمستقبل على نسخة من اللوحة ، والتي يتم استخدامها لكل من التشفير والتشفير ، بعد بعض القواعد البسيطة ولكن الصارمة للقلم والورق. إنه تشفير يتغير فيه المفتاح بطريقة لا يمكن التنبؤ بها تمامًا بعد كل حرف. بدون القدرة على التنبؤ ، لا يوجد شيء لجهاز كمبيوتر مهاجم لدخول أسنانه.
ومع ذلك ، فإن أكثر الكود المبتدئين في حيازة رسالتين مشفرتين بنفس اللوحة سيكون قادرًا على تجريد التشفير وقراءة كليهما. لذلك من الأهمية بمكان تدمير كل وسادة بعد استخدامها. إنها فكرة سيئة لتخزين الوسادة على محرك إبهام أو شيء مشابه ، لأن أجهزة الكمبيوتر وأجهزة التخزين لديها عادة ترك بقايا البيانات حولها ، حتى بعد حذف البيانات رسميًا.
تأتي وسادة لمرة واحدة مع بعض القيود المهمة الأخرى. يجب أن تكون الأرقام حقا عشوائي-الأرقام التي تم إنشاؤها بواسطة خوارزميات العشوائية الزائفة التي تستخدمها عادةً من قبل أجهزة الكمبيوتر لن تقطعها. ولأنك يمكنك استخدام وسادة معينة مرة واحدة فقط ، فأنت بحاجة إلى مجموعة كاملة منها إذا كنت ترغب في إرسال أكثر من رسالة واحدة. بالإضافة إلى ذلك ، يجب أن تتم طباعة وسادات جسديًا ومشاركتها باليد – لا يمكنك إرسالها عبر الشبكة.
يستخدم مولد العدد العشوائي مجموعة من رقائق المنطق 74HC-Series [top right] لرقمنة الضوضاء الكهربائية وتقديمها كبايت عشوائي إلى Arduino Uno Minima [top left]. يمكن للمولد أن ينتج ما يقرب من بايت واحد كل 200 ميكروثانية ، ويقوم UNO بتحويل هذا إلى رقم واحد ويقوم ببناء سلسلة من 50 وسادة مع 250 رقمًا لكل منهما ، يرسله إلى الطابعة [bottom].جيمس بروفوست
قررت بناء آلة تجعل التعامل مع هذه المشكلات أسهل قليلاً. تم تصميم Pad-O-Matic حول طابعة إيصال حرارية CSN-A2 التي اشتريتها في نزوة قبل بضع سنوات. تتصل الطابعة بمكدس التكنولوجيا الأكثر شفافية التي يمكن أن أجدها: ترانزستور معذب ، وبعض رقائق المنطق ، وموكان صغير مع حوالي 200 سطر من الكود الخاص بي. لا يفعل هذا الرمز أي شيء أكثر تعقيدًا من التقسيم ، لأنه إذا تعلمت شيئًا واحدًا عن التشفير ، فهذا ما لم تكن تعرف حقًا ما تفعله ، فإن محاولة أن تكون قبضًا ذكيًا هي وصفة للفشل. Pad-O-Matic مستقل تمامًا.
تتيح لي طابعة الإيصال الحراري في Pad-O-Matic طباعة سلسلة كاملة من الوسادات. لا يزال يتعين علي مشاركة الوسادات جسديًا ، لكن على الأقل في لفة مدمجة. مراسلتي هي بعد ذلك ، يمكن أن تمزق وتدمير كل وسادة بعد استخدامها.
بدون القدرة على التنبؤ ، لا يوجد شيء لجهاز كمبيوتر مهاجم لدخول أسنانه.
ما زلت بحاجة إلى مصدر جيد للعشوائية – بعض عملية مادية لا يمكن التنبؤ بها بشكل أساسي للتحويل إلى أجزاء غير متوقعة على قدم المساواة. لحسن الحظ ، تم حل هذه المشكلة بالفعل بالنسبة لي. لقد وجدت دائرة صغيرة تعمل بالبطارية من يصنع: المجلة التي تعتمد على الضوضاء الكهربائية الناتجة عن إجبار الإلكترونات على الطريق الخطأ عبر قاعدة الترانزستور ومحطات باعث مع ترك محطة جامع غير متصلة. يصنع:مولد S هو نسخة مبسطة من الدائرة بواسطة Aaron Logue ، ولكن يصنع: لحسن الحظ لديه نسخة من التخطيطي الأصلي. يستخدم هذا 12 و 5 فولت بدلاً من 18 و 5 فولت المستخدمة بواسطة يصنع:إصدار ، حتى أتمكن من استخدام مصدر طاقة قديم كان لديّ أيضًا تيار إضافي كافي لقيادة الطابعة الحرارية. تحتوي الدائرة الأصلية أيضًا على ميزتين إضافيتين لطيفتين لتكلفة بعض الرقائق الإضافية.
الميزة الأولى هي واجهة متحكم نظيفة. يرسل بايت واحد في وقت واحد بالتوازي ، وتنبيه متحكم في كل مرة يتوفر فيها بايت جديد. هناك حاجة إلى تنبيه لأن طول الوقت اللازم لإنشاء بايت عشوائي يختلف قليلاً بسبب الميزة اللطيفة الأخرى: تلقائي التنسيقباستخدام أربعة flip-flops وبوابة XOR. يعني الإنصاف أنه حتى لو كان مولد الضوضاء الكهربائية يميل نحو ، على سبيل المثال ، أكثر من 1s ، فإن الناتج النهائي سيكون متوازنًا من الناحية الإحصائية.
عينات pad-o-matic الضوضاء الكهربائية على فترات منتظمة لإنشاء تيار من البتات. لمنع الأرقام النهائية من التحيز تجاه أولئك الذين لديهم العديد من 0s أو 1s ، تتم مقارنة أزواج من البتات. فقط إذا اختلفوا ، فهي فحصها أكثر ، مع تمرير الرقم الرائد. يتم تعبئة ثمانية من هذه البتات المنقوشة في بايت ، والتي تتعرض بعد ذلك إلى التقسيم المعياري لإنتاج رقم عشوائي بين 0 و 9.جيمس بروفوست
بالنسبة إلى متحكم الخاص بي ، حصلت أخيرًا على استخدام Arduino Uno R4 Minima. على الرغم من أن هذا الإصدار الأخير من UNO المحبوب خرج منذ حوالي 18 شهرًا ، إلا أنني لم أجد مشروعًا يحتاج إليه – حتى الآن. إن ذاكرتها الأكبر-32 كيلوغرامات من ذاكرة الوصول العشوائي مقابل 2 كيلو بايت في Rev3-ضرورية ، لأن Pad-O-Matic يجب أن يولد سلسلة كاملة من الوسادات-50 في حالتي-وتمسكها في الذاكرة. مع 250 رقمًا لكل وسادة ، يتطلب ذلك أكثر من 12 كيلو بايت. نظرًا لأن الأرقام تعيش فقط في ذاكرة الوصول العشوائي ، لا يوجد خطر من ترك أي أثر لأنفسهم.
ينتج Microcontroller أرقامًا من البايتات العشوائية الواردة عن طريق رمي أي بايت أولاً بقيمة تزيد عن 250. ثم يقوم بتقسيم معياري بمقدار 10 على كل بايت المتبقية ، تاركًا أرقامًا في حدود 0 إلى 9.
لقد اخترت 50 وسادة لكل سلسلة ، على الرغم من أنني حصلت على الذاكرة للمزيد ، لأنني مضطر فعليًا طباعة سلسلة واحدة للاحتفاظ بها ونسخة لمشاركتها ، ثم إنشاء وطباعة سلسلة أخرى ونسخها: السلسلة الأولى هي إرسال الرسائل مني إلى مراسلي السري ، والسلسلة الثانية هي أن يرسلوا رسائل إلي. هذا يلغي خطر استخدام نفس الوسادة بطريق الخطأ عندما تعبر الرسائل بعضها البعض. ما مجموعه 100 وسادة حول ما يقرب من لفة واحدة من الورق الحراري.
أضع كل شيء في حاوية خشبية ، ومعزوفة! عند الضغط على زر واحد ، فإن Pad-o-matic في الحياة ، حيث يبصقون بشكل مثالي-وأصبح الآن أكثر ملاءمة بشكل هامشي!
من مقالات موقعك
المقالات ذات الصلة حول الويب