HL 2018. ملخص التقرير "اجعل كلمات المرور رائعة مرة أخرى! كيفية التغلب على القوة الغاشمة وترك المتسللين بلا شيء "

كلمات المرور تشبه الملابس الداخلية


مرحبا يا هبر! اسمي اخميديف رينات ، أنا الأب. مطور PHP.


أقدم لكم ملخص التقرير اجعل كلمات المرور رائعة مرة أخرى! كيفية التغلب على bruteforce وترك المتسللين بدون أي شيء من Alexey Ermishkin من Virgil Security مع HighLoad ++ 2018 .


عندما ذهبت إلى التقرير ، كنت متشائمًا. لكن منذ ذلك الحين نظرًا لأنه Virgil Security ، ما زلت قررت الذهاب. في البداية ، بدا التقرير كابتنًا بالفعل ، وبدأت حتى أفقد الاهتمام ، لكن بعد ذلك ، كما اكتشفت ، اكتشفت العديد من طرق حماية كلمة المرور الجديدة ، بخلاف طرق الملح المعتادة.


يناقش التقرير طرق حماية كلمات المرور من التجزئة إلى الأساليب الأكثر حداثة ، مثل كلمة مرور Facebook Onion و Sphinx و Pythia. في النهاية ، تم تقديم خدمات تشفير كلمة مرور بسيطة جديدة (PHE).


أعجبتني التقرير لدرجة أنني أعددت خلاصة. أوصي الجميع بالتعرف على نفسك.


شارك Alexey Ermishkin الشرائح وتقرير الفيديو في التعليقات:



مجردة


الدخول


الشريحة 0. اجعل كلمات المرور رائعة مرة أخرى


مرحبا بالجميع ، صباح الخير للجميع! يسعدني أن أراكم جميعًا في مؤتمر Highload. اسمي Alexey Ermishkin ، أعمل لدى Virgil Security.


الأمن الفيروسي


نحن منخرطون في تطوير منتجات تشفير مختلفة لكل من المطورين الأفراد والشركات. نركز على الحلول الشاملة ، وهذا عندما لا تحتاج إلى الوثوق بالخدمة من أجل القيام بأي إجراءات مثل نقل البيانات ، المصادقة ، إلخ. أدوات تطوير البرامج الخاصة بنا مفتوحة ومتاحة للجميع.


الشريحة 7. الأداء والراحة والأمن


منذ فترة طويلة تستخدم كلمات المرور كوسيلة للمصادقة ، كوسيلة للوصول إلى مكان ما. كان ذلك قبل وقت طويل من ظهور أجهزة الكمبيوتر. ولكن مع ظهور أجهزة الكمبيوتر ، ومع ظهور أنظمة تكنولوجيا المعلومات ، لم يتخل الناس عن عادة استخدام كلمات المرور. أصبحت هذه مشكلة كبيرة جدًا للمطورين ، لأنهم واجهوا مشكلة كيفية جعل الأنظمة مريحة وسريعة وآمنة. في كثير من الأحيان ، عندما يحاول اثنان من هذه الجوانب القيام بعمل جيد ، لا ينجح الثالث جيدًا. إذا جعلت النظام منتجًا وآمنًا ، فقد يكون غير مريح وغير ذلك.


شريحة 8. ماذا نحمي أنفسنا من؟


إذن ، ما الذي سنتحدث عنه اليوم؟


سأتحدث عن الحماية ضد الهجمات غير المتصلة بالإنترنت. عندما تدخل كلمات المرور إلى قواعد البيانات الخاصة بك ، فإن المستخدم لا يتحكم فيها. إذا تم اختراق قاعدة البيانات الخاصة بك ، فإنها تتسرب إلى مكان ما ، وبعد ذلك يمكن للمتسللين أن يفعلوا أي شيء معها. حتى إذا قمت بحماية كلمات المرور بطريقة أو بأخرى ، فيمكنهم البدء في فرزها ولا يحتاجون إلى التفاعل مع أي شخص لذلك ، فإن لديهم بالفعل كل شيء لذلك. أيضًا ، لا يتوقف المستخدمون عن استخدام كلمات مرور ضعيفة. تعد سياسات كلمة المرور شيئًا مفيدًا ، ولكنها ليست مريحة دائمًا ، أي عندما يدخل الأشخاص حتى أنها كلمة مرور قوية ، لا تزال السياسة تقول إنك بحاجة إلى إضافة حرف أو رقم ، وبالتالي فهي ليست مريحة. من الواضح أيضًا أن المشكلة تكمن في الحاجة إلى مقارنة ما أدخله المستخدم بما لديك في قاعدة البيانات. كيف نفعل ذلك بطريقة آمنة؟ حسنًا ، دعونا لا ننسى أنه يوجد داخل الشركة أشخاص ليسوا ودودين تمامًا ويرغبون في حماية أنفسهم منهم.


قش


شريحة 9. ما هو الخطأ في كلمات المرور؟


من حيث المبدأ ، لماذا تعد كلمات المرور موضوعًا مؤلمًا ، لماذا يستحق العمل معهم بمزيد من الدقة؟ المشكلة هي أن كلمة المرور لديها إنتروبيا صغيرة. ما هو الانتروبيا؟ هذا هو مقدار المعلومات الموجودة في البيانات ، أي على سبيل المثال ، في الحروف Highload word 8 هي 8 بايت ، ولكن إذا عدنا إنتروبيا ، فلن يكون 64 بت مثل الكلمة بأكملها ، ولكن أقل من 30 بت. عندما يتحدثون اليوم عن كسر كلمة المرور ، يقولون إن من الممكن تكسير كلمات المرور مع الإنتروبيا في مثل هذا الوقت ، لا يوجد أكثر من ذلك أو لا يقل عن الكثير من البتات. أي حتى عدد كلمات المرور لا يؤخذ بعين الاعتبار.


الشريحة 10.1.  قش


كيف بدأ الناس في أمان كلمة المرور؟ أول ما يتبادر إلى الذهن هو استخدام تجزئة التشفير أحادي الاتجاه.


الشريحة 10.2.  قش


ميزتهم الرائعة هي أنه لا يمكن إرجاعهم. أي إذا قمت بنقل بعض المعلومات إلى هذا التجزئة ، وحصلت على قيمة في الإخراج ، فلن تتمكن من الحصول على هذه المعلومات مرة أخرى من هذه القيمة. ولكن ، لسوء الحظ ، يتم حسابها بسرعة كبيرة. على سبيل المثال ، يمكن لمجموعة حديثة من 4 بطاقات رسومات NVidia معالجة عدة مليارات من كلمات المرور في الثانية. أي إذا كانت إنتروب كلمة المرور الخاصة بك أقل من 40 بت ، فإن مجموعة من 4 بطاقات فيديو ستلتقطها هناك في دقيقة واحدة ، أو حتى أقل من ذلك.


قوس قزح الجداول


الشريحة 11.1.  قوس قزح الجداول


بالإضافة إلى ذلك ، كل تجزئة صعبة لديها طاولة قوس قزح الخاصة بها. ما هو هذا الجدول وكيف يتم صنعها؟


الشريحة 11.2.  قوس قزح الجداول


أي يأخذون كلمات المرور الأكثر شيوعًا ومجموعات الأحرف التي يمكن وضعها على القرص الصلب ، والنظر في تجزئاتها ووضعها على مساحة تخزينية أكثر لعدة تيرابايت. عندما يكون هناك نوع من التجزئة ، لا يمكنك حسابه ، ولكن يمكنك العثور عليه بسرعة كبيرة من هذه الجداول ومقارنته بكلمة المرور التي تم حسابها مسبقًا. أي تتمثل مزايا الجداول في أنها تعمل بسرعة كبيرة ، لكنك تحتاج إلى مساحة كبيرة لتخزينها. ومع ذلك ، هناك جداول للتجزئة الأكثر شعبية على الإنترنت ، ويمكن تنزيلها ، أو حتى شراؤها.


ملاحظة لمؤلف الملخص: لا توافق ويكيبيديا مع المتحدث: "قوس قزح هو إصدار خاص من جداول البحث لعكس وظائف تجزئة التشفير باستخدام آلية التسوية المعقولة بين وقت البحث في الجدول والذاكرة المشغولة." أي لا تخزن تجزئات كلمات المرور الأكثر شيوعًا التي ستوضع على القرص ، ولكن ببساطة تجزئة بعض كلمات المرور ، يتم حساب الباقي على أساس تلك الموجودة - توجد عدة كلمات مرور لكل سجل في الجدول.


ملح


الشريحة 12.1.  ملح


ولكن مرة أخرى ، كل طاولة قوس قزح لها ملحها الخاص. ما هو الملح؟ هذه مجموعة عشوائية من البايتات ، والتي يتم إلحاقها بكلمة المرور. يتم تخزينه في جدول في مكان ما بالقرب من التجزئة ويحمي من طاولات قوس قزح.


الشريحة 12.2.  ملح


أي لا يزال يتعين على الأشخاص الذين يضعون أيديهم على قاعدة بها تجزئة مملحة حساب هذه التجزئة. لكن المشكلة هي أن هذه التجزئة يتم حسابها بسرعة كبيرة ، ولا يساعد الملح هنا كثيرًا.


كيفية إبطاء البحث؟


الشريحة 13.1.  كيف إبطاء البحث؟


طريقة طبيعية للخروج من هذا يمكن أن يكون إبطاء فرز التجزئة بطريقة ما. كيف يمكن القيام بذلك؟


الشريحة 13.2.  كيف إبطاء البحث؟


النهج الأكثر سذاجة هو أننا نأخذ نوعًا من دالة التجزئة ، على سبيل المثال sha256 ، ونحسبها بشكل متكرر ، أي حساب التجزئة ، من هذا التجزئة التجزئة مرة أخرى ، الخ يمكنك القيام بذلك عدة آلاف وحتى ملايين المرات. المشكلة هي أنه إذا كتبت مثل هذا التطبيق بنفسك ، فمن المرجح أن يكون أبطأ من تنفيذ الأشخاص الذين يشاركون بشكل احترافي في تخمين كلمة المرور.


الشريحة 14. وظائف تجزئة كلمة المرور
تشفير ، Bcrypt ، Argon2


وبالتالي ، توصل مصممو التشفير إلى العديد من الوظائف المصممة خصيصًا لإبطاء البحث عن كلمة المرور - فهم يستخدمون كمية كبيرة من الذاكرة وجميع تعليمات المعالج الحديثة الممكنة. إذا وقعت كلمة المرور المحمية بواسطة هذه الوظيفة في أيدي المهاجمين ، فسيتعين عليهم استخدام أجهزة قوية للغاية.


الشريحة 15. Argon2


على سبيل المثال ، تعمل وظيفة Argon2 الأكثر حداثة كما يلي: في المخطط ، يمكنك أن ترى أن هناك الكثير من كتل الذاكرة المختلفة التي يتم من خلالها تشغيل التجزئة. يفعل هذا بطرق مختلفة ذهابا وإيابا ، يتم استخدام الذاكرة بشكل مكثف للغاية ، يتم استخدام الذاكرة بأكملها. من الصعب إلى حد ما تحسين هذه الوظيفة (سرعة البحث).


الشريحة 16. وظائف تجزئة كلمة المرور


ولكن هذه النهج لها أيضا عيوبها. يتم إجراء هذه المهام ببطء خاص ، ولكنها بطيئة بشكل خاص ليس فقط للمهاجمين ، بل ستكون بطيئة بشكل خاص لك أيضًا. سوف تحميل الحديد الخاص بك. هذه الوظائف قابلة للتخصيص ، أي يمكنك اختيار مقدار الذاكرة التي سيتم استخدامها لحساب تجزئة كلمة مرور واحدة ، وحتى عدة غيغا بايت ، وعدد مرات تمرير هذه الذاكرة. إذا قمت بلف هذه المعلمات على محمل الجد ، فسوف تعاني أجهزتك الخاصة ، وإذا كان لديك الكثير من الأشخاص الذين يسجلون الدخول إلى النظام ، فعليك فقط تخصيص موارد كبيرة لحماية كلمة المرور وكلمات المرور البسيطة ، حسنًا ، لا يزال من الممكن التقاط كلمات مرور بسيطة للغاية .


كلمة مرور Facebook


شريحة 17. ولا يمكنك تحميل الخلفية؟


فكر الناس في هذا الأمر وطرحوا السؤال التالي: هل من الممكن تحقيق نفس الخصائص دون تحميل الواجهة الخلفية ، دون تحميل الخوادم الخاصة بهم؟


الشريحة 18. كلمة مرور Facebook


أحد رواد هذا الموقع كان Facebook . هذه الأسطر التي تراها هي المراحل التاريخية لفيسبوك ، وكيفية حمايتها لكلمات المرور ، في البداية كانت مجرد كلمات مرور ، ثم أخذوا وظيفة md5 القديمة ، التي تم تكسيرها لفترة طويلة ، ثم أضافوا الملح وأخذوا شاش التجزئة 1 ، ثم حدث ذلك الشيء المثير للاهتمام ، أنهم أحضروا حساب وظيفة همك (هذا هو التجزئة مع مفتاح) إلى الخدمة عن بعد.


الشريحة 19. Facebook


كيف يعمل؟ هناك خلفية ، هناك خدمة عن بعد. هناك نوع من المفتاح السري في هذه الخدمة. شخص يدخل الخلفية ، يدخل كلمة المرور الخاصة به. يتم خلط كلمة المرور هذه مع الملح الموجود في قاعدة البيانات ، ويتم تشغيله عبر علامة تجزئة وإرسالها إلى الخدمة. تأخذ الخدمة مفتاحها الخاص وتحسب وظيفة hmac وترسلها مرة أخرى. على الخلفية ، يتم وضعها في القاعدة.


الشريحة 20. الفيسبوك


ماذا يعطي؟ إذا كان لدى Facebook قاعدة بيانات مستخدم ، فلا يستحق الأمر فرز كلمات المرور فيها ، لأنها لا تحتوي على مفتاح سر بعيد. لكن المشكلة في طريقة Facebook هي أنه إذا حدث شيء ما للمفتاح الخاص البعيد ، فسيكونون في مشكلة كبيرة. لا يمكنهم فعل أي شيء حيال ذلك لأنهم يستخدمون التجزئة ، ويستخدمون hmac. ليس لديهم أي طريقة لحل هذا الموقف بطريقة ما بحيث لا يلاحظ المستخدمون أي شيء وهذا سيؤدي بهم إلى الزاوية.


ابو الهول


شريحة 21. هل هي أفضل؟


نظرت Cryptographers في كل شيء. لقد أحبوا فكرة استخدام الخدمات عن بُعد وقرروا التفكير: هل من الممكن القيام بعمل أفضل؟ هل من الممكن إنشاء نظام مشابه ، لكن بدون السلبيات التي منحها فيسبوك؟


شريحة 22. هل كلمة المرور رقم؟


وقرروا التعامل مع هذه المشكلة على النحو التالي: ماذا لو تم تمثيل كلمة المرور أو تجزئة كلمة المرور كرقم؟ إذا كانت لدينا كلمة passw0rd ، فهي تتكون من 8 بايت. في جميع لغات البرمجة تقريبًا ، هناك أنواع عدد صحيح من ثمانية بايت ، أي من حيث المبدأ ، هذا هو نفسه. أي 8 بايت ، كلمة passw0rd ويمكننا تمثيلها كرقم عشري منتظم. ماذا يعطينا هذا؟ هذا يعطينا حرية مختلفة تماما للعمل. يمكننا إضافة كلمات مرور أو علامات تجزئة منها ، وضربها ، وتحويلها إلى بعض الأرقام الأخرى. يمكننا القيام بعمليات رياضية حقيقية خطيرة معهم.


الشريحة 23.1. أبو الهول - مدير كلمات المرور


واحدة من النظم الأولى التي استخدمت هذه التكنولوجيا كان Sphinx . ظهرت قبل عامين. هذا هو مدير كلمة السر الحتمية. هناك العديد من البرامج المختلفة مثل keepass ، حيث لديك كلمة مرور رئيسية ولكل موقع يقوم بإنشاء كلمة مرور عشوائية. ولكن هناك أيضًا أشياء محددة حيث تقوم بإدخال كلمة المرور الرئيسية الخاصة بك ، والموقع الذي تريد الانتقال إليه ويحسب شيئًا ما هناك ويصدر كلمة مرور فريدة لكل موقع. ولكن من الواضح أنه إذا كانت كلمة المرور الرئيسية هذه تذهب إلى مكان ما ، فسيتم اختراق جميع كلمات المرور من مواقعك نهائيًا.


الشريحة 23.2. أبو الهول - مدير كلمات المرور


كيف تعامل أبو الهول مع هذه المشكلة؟ يأخذ كلمة المرور الرئيسية ، ويأخذ المجال الذي تريد تسجيل الدخول إليه ، ويدير كل شيء من خلال التجزئة ويحولها إلى رقم. ولكن في الواقع ، يتم استخدام التشفير الإهليلجي هناك ، من أجل البساطة سأشرح كل هذا على الأرقام العادية مع الرياضيات العادية. إنه يحولها إلى رقم (دعنا نسميها a ) وماذا يفعل بعد ذلك؟


الشريحة 24. أبو الهول - "مدير" كلمات المرور ، تمويه!


شيء رائع للغاية ، في كل مرة يمكننا توليد عدد عشوائي كبير r . إذا قمنا برفع الرقم a إلى قوة r ، وفي وقتٍ ما في وقت لاحق ، قمنا برفع هذا الرقم إلى القوة العكسية للرقم r ، ثم نعود إلى نفس الرقم a ، أليس كذلك؟ أي يمكننا إخفاء شيء ما من البداية ، ثم كشفه.


الشريحة 25.1. أبو الهول - مدير كلمات المرور


وماذا يفعل أبو الهول؟ مرة أخرى هناك مستخدم ، هناك خدمة عن بعد. يتم إرسال عدد ملثمين إلى هذه الخدمة عن بعد. على الخدمة عن بعد ، هناك مفتاح خاص b . ماذا يفعل؟ يقوم بضرب الرقم المرسل a^r بواسطة مفتاحه السري b ويعيده. ( ملاحظة مؤلف الملخص: في الشريحة ، لا يتم ضرب الرقم المرسل بالمفتاح الخاص ، بل يتم رفعه إلى درجة المفتاح الخاص ، ولكن النقطة الرئيسية هي ). نظرًا لأن الرقم r مختلف في كل مرة ، فإن الخدمة عن بُعد لا يمكنها أن تقول أي شيء عن كلمة المرور والنطاق اللذين تم إخفاؤهما ، أي في كل مرة يرى بعض الأرقام العشوائية المختلفة. وهو ببساطة يضاعف مفتاحه الخاص ( b ويرسله.


الشريحة 25.2. أبو الهول - مدير كلمات المرور


يكشف المستخدم عما أرسله الخادم له ويحصل على رقم - كلمة مروره الرئيسية مع المجال مضروبة بالمفتاح السري للخادم a^b . اتضح أنه لا يعرف المفتاح السري للخادم ، فالخادم لا يعرف ما أرسله له المستخدم ، لكنه في النهاية يحصل أيضًا على رقم حاسم. في كل مرة تقوم فيها بتنفيذ هذا البروتوكول ، سيكون التنكر مختلفًا ، ولكن النتيجة ستكون دائمًا كما هي ويمكن إرجاع هذه النتيجة مرة أخرى إلى نوع من كلمة المرور واستخدامها لإدخال مواقع مختلفة.


شريحة 26. أبو الهول - "مدير" كلمات المرور


تكنولوجيا رائعة حقا. أولاً ، يمكنك إنشاء كلمات مرور كبيرة ، أي لأنه يحمي من خرق. ثانياً ، إذا تمكن أحد المتطفلين من الوصول إلى عدة كلمات مرور ، فلن يكون قادرًا على قول أي شيء عن البقية ، لأن يتم إنشاؤها بشكل مستقل عن بعضها البعض. ثالثًا ، إذا اختفت كلمة مرور المستخدم في مكان ما ، فلن يعطي هذا أيضًا أي شيء ، لأن المتسللين لن يكون لديهم مفتاح سري. رابعا ، إنه يعمل بسرعة كبيرة ، لأنه ليست هناك حاجة إلى تجزئات كبيرة تكرارية هنا ، أي حرفيا 2-3 يتم تنفيذ الضرب وكل شيء يعمل على الفور.


لكن هذا النظام له عيوبه. الخادم الذي يتحدث معه المستخدم لا يعرف شيئًا عنه. إنه ببساطة يتلقى بعض الأرقام العشوائية كمدخلات ، يضاعفها بشيء ويعيدها. لا يعرف العميل أيضًا أي شيء عن الخادم ، فهو يرسل شيئًا ما في مكان ما ، ويتلقى النتيجة ، ويعمل - جيدًا. ولكن إذا حدث شيء ما للخدمة ، فلن يتمكن المستخدم من قول أي شيء بشأنه ، وليس لديه معلومات عن ذلك. لا يمكن تغيير المفتاح السري أيضًا ؛ لا يمكن فعل شيء به.


بيثيا


شريحة 27. هل يمكن أن يكون أفضل؟


هل يمكن أن يكون أفضل؟


الشريحة 28. من النهاية إلى النهاية!


نظر المشرفون على هذا النظام وفكروا فيه ، هل من الممكن تحسين النظام وإضافته بخصائص تتيح لنا أن نقول أنه يتوافق مع المبادئ الشاملة؟ أي يمكن للعميل التواصل مع الخادم ، ولكن في الوقت نفسه ، يمكنه أيضًا المصادقة عليه ويمكن الوثوق به إلى حد ما.


الشريحة 29.1. بيثيا


وتوصلوا إلى بروتوكول يسمى بيثيا .


الشريحة 29.2. بيثيا


تم صنعه من قبل الرجل الرائع آدم إيفرسبو مع زملائه. ما الذي يجعلها فريدة من نوعها؟ أولاً ، تعرف الخدمة من يقوم بإدخال كلمة المرور ، أي يتم تمرير معرف المستخدم إلى الخادم بعد كلمة المرور. يمكن أن يكون هناك مربع معرف عشوائي يقع بجواره ، أو مجرد اسم مستخدم. لا يهم لكن الخدمة تعرف عن ذلك. لكن الخادم لا يعرف سوى القليل من هذا ، بل يمكن أن يثبت بدقة أنه هو.


الشريحة 30.1. بيثيا


كيف يعمل؟ هناك خلفية (نوع من خدمات الويب ، الموقع) وهناك خدمة Pythia. ماذا تفعل الواجهة الخلفية وماذا تفعل الخدمة؟ يوجد مفتاح k خاص بالخدمة ، ولكنه أيضًا ينقل المفتاح العمومي إلى الواجهة الخلفية. لا تقوم الواجهة الخلفية للخدمة بإرسال العدد المقنع فقط a^r ، كما هو الحال في بروتوكول Sphinx ، ولكن أيضًا يرسل نوعًا من معرف UserID ( UserID ). تضاعف الخدمة معرف المستخدم وكلمة المرور بواسطة المفتاح الخاص والنتيجة (UserID, a)^(r*k) ترسل الواجهة الخلفية. كما يرسل أيضًا إثباتًا معينًا ، يمكن استخدامه بواسطة الواجهة الخلفية للتحقق من الخادم أنه لم يتم اختراقه ، وأنه يستجيب كما ينبغي.


الشريحة 30.2. بيثيا


ثم هناك كشف غير صحيح ويتم وضع الرقم y الذي يظهر كنتيجة في قاعدة بيانات. في قاعدة البيانات ، ليس لدينا مجرد تجزئة ، بل رقم ، نقطة منحنى إهليلجي.


شريحة 31. بيثيا


هناك بعض النقاط المثيرة للاهتمام هنا:


  • قدرة الخادم على الجمع بين معرف المستخدم وكلمة المرور في رقم واحد. وهذا ما يسمى عملية خطية أو قرن خطي. هذا هو الرياضيات الجديدة نسبيا ، والتي بدأت في الآونة الأخيرة لاستخدامها. لديها كل خصائص علماء الرياضيات الجدد في تلك السنوات الثلاثين لم تنته حتى يكون الجميع مقتنعين بأن كل شيء طبيعي مع هذا.
  • لكن Proof الذي يرسل الخدمة هو تقنية قديمة إلى حد ما. وهذا ما يسمى بروتوكول شنور . توليد المفتاح العام هو ضرب نقطة أساسية بواسطة مفتاح سري. يثبت بروتوكول Schnorr أن المفتاح السري الذي تم استخدامه لإنشاء المفتاح العمومي تم استخدامه لمضاعفة كلمة مرور المستخدم بنفس الرقم. هذا البروتوكول موجود منذ فترة طويلة ، ويتم استخدامه كثيرًا حيث يتيح لك إثبات ذلك. يسمى هذا برهانًا خالٍ من الصحة - لا يعرض الخادم المفتاح العمومي الخاص به ، لكنه يقول أن العملية التي أجريتها تم تنفيذها بواسطة المفتاح الخاص ، الذي وافقنا عليه في الأصل.

الشريحة 32.1. إيجابيات بيثيا


ما هي مزايا هذا النظام؟


الشريحة 32.2. إيجابيات بيثيا


وليس لديها الكثير منهم.


  • لا يقوم النظام بتحميل الواجهة الخلفية. لأن الخلفية تعمل كل شيء ، فإنها تحول كلمة المرور إلى رقم ، وتخفيها ، وترسلها ، ثم تكشف عن النتيجة أيضًا.
  • إذا سُرقت منك قاعدة بيانات تحتوي على هذه الأرقام ، فإن فرز كلمات المرور لا معنى له أيضًا بدون مفتاح خاص.
  • يمكن لخدمة Pythia منع محاولات القوة الغاشمة ، مما يعني أن الواجهة الخلفية لا يتعين عليها القيام بذلك. إذا رأى أنه تحت نفس معرف المستخدم يحاولون إجراء عملية التحويل هذه عدة مرات ، فيمكنه ببساطة إيقافها وحظرها عند حد السعر.
  • بفضل التنكر ، لا تعرف الخدمة أي شيء عن كلمة المرور. في كل مرة يتم إرسال رقم عشوائي جديد له. معرف المستخدم فقط هو الثابت.
  • بفضل ZKP (دليل المعرفة الصفرية) ، تعرف الخلفية دائمًا أنها الخدمة التي اتصل بها ذات مرة.
  • إذا كان لديك قاعدة بيانات تحتوي على تجزئات وملح على سبيل المثال ، فيمكنك الانتقال إلى هذا الحل بسهولة للمستخدمين. قد لا تلاحظ أي شيء. بدلاً من كلمة مرور المستخدم ، يمكنك أخذ التجزئة الخاص به ، ودفعه إلى Pythia وفي المستقبل فقط استخدم هذا البروتوكول ، واحصل على الرقم y ، ثم ضعه مرة أخرى في قاعدة البيانات الخاصة بك. ثم يمكن حذف التجزئة. في كل مرة يسجل فيها مستخدم الدخول إلى نظامك ، سيتم تنفيذ هذا البروتوكول ، وسيتم الحصول على بعض الأرقام كنتيجة لذلك ، ستقارن مع ما هو موجود في قاعدة البيانات. سيبقى نظام المصادقة نفسه كما هو سوف يقوم المستخدمون بتسجيل الدخول في وقت مبكر وتسجيل الدخول ، باستخدام نفس كلمات المرور ، وحتى كلمات المرور الضعيفة. في هذه الحالة ، سيكون النظام أكثر أمانًا.

الشريحة 33.1. هذا ليس كل شيء


ولكن هذه ليست كل الأشياء الجيدة.


الشريحة 33.2. هذا ليس كل شيء


واحدة من الميزات الرئيسية هي أنه حتى لو تم اختراق خدمة Pythia ، فمن الممكن إنشاء مفتاح خاص جديد. في قاعدة البيانات الخاصة بنا ، يتم تخزين الرقم ، وليس التجزئة. إذا كنا نمثل المفتاح القديم كرقم ، والرقم الجديد كرقم k' ، فيمكننا حساب عدد يسمى تحديث الرمز المميز. للقيام بذلك ، نقوم بضرب الرقم الجديد بالرقم المقلوب للرقم القديم. ومع رمز التحديث هذا ، يمكنك الانتقال إلى قاعدة البيانات لكل مستخدم ومضاعفة هذا الرقم y حسب الرمز المميز للتحديث. بعد القيام بذلك ، يواصل النظام الخاص بك العمل مع المفتاح الخاص الجديد على الخدمة عن بُعد. كل هذا يحدث على الفور. في حالة وقوع كارثة ، يتم سرقة قاعدة البيانات الخاصة بك بكلمات المرور منك ، يمكنك إصدار رمز التحديث في نقرة واحدة من إصبع وحقيقة أن المتسللين سرق منك تصبح عديمة الفائدة على الفور. يمكنك فقط السير بهدوء في جميع السجلات الموجودة في الخلفية وتحديثها ويعملون باستخدام المفتاح السري الجديد من أجلك. عمومًا لا يلاحظ المستخدمون أي شيء. أي يعد التحديث السلس وإبطال قاعدة بيانات كلمة المرور من أهم الميزات المبتكرة لهذا النظام.


الشريحة 34.1. مكافأة


لكن هذا ليس كل شيء.


الشريحة 34.2. مكافأة


الرقم الموجود في القاعدة كبير y ، وهو كبير بشكل أساسي ويبدو عشوائيًا إلى حد ما ، على سبيل المثال من السهل جدًا عدم استلامه. إذا قمنا بنقل الوظائف التي لدينا على الواجهة الخلفية ، على سبيل المثال ، إلى الأجهزة العميلة ، إلى الهواتف ، فيمكننا استخدام هذا y لإنشاء المفاتيح. أطلقنا على هذا الشيء BrainKey. هذا يعني أن المستخدم يدخل كلمة المرور في مكان ما على الهاتف ، كما يخفيها ، ويرسلها إلى الخدمة عن بُعد. تقوم الخدمة بإرجاع رقم معين y ثم يمكنك استخدام هذا y لإنشاء بعض المفاتيح غير المتماثلة. وبالتالي ، يمكن للمستخدم من كلمة المرور الخاصة به الحصول على زوج المفاتيح. يستخدم هذا في جميع أنواع BrainWallets . هذا هو عند إدخال كلمة المرور والحصول على محفظة bitcoin التي تم إنشاؤها من أجلها. لكن هذا التطبيق لا يقتصر على العملات المشفرة ، بل هو توقيع رقمي ، وبعض النسخ الاحتياطية ، واسترداد الحساب ، أي حيثما يتم استخدام التشفير غير المتماثل ، حيث تكون هناك حاجة مفاتيح غير المتماثلة. يمكن استخدام كل هذا ، ولكن في نفس الوقت يمكن إنشاء زوج مفاتيح ، وبناءً على الحاجة ، قدر ما تريد. لذلك سيعتمدون جميعًا على كلمة مرور المستخدم ، وهذا مناسب جدًا.


الشريحة 35.1. سلبيات؟


في برميل من العسل ، لا يخلو المرهم من ذبابة.


الشريحة 35.2. سلبيات؟


وميزات هذه التكنولوجيا هي أنها جديدة جدًا. يستخدم منحنى إهليلجي ، وهو لعمليات خطية ( BLS12-381 ). لقد كانت الرياضيات نفسها موجودة لبعض الوقت ، لكن هذا المنحنى الخاص ، والذي يستخدم بشكل خاص في تطبيقنا ، يستخدم فقط في ZCash باستثناءنا. وفقًا لذلك ، يمكن حساب المكتبات التي تستخدم هذه الرياضيات الجديدة على أصابع يد واحدة. لتحقيق ذلك في حالة الإنتاج ، تحتاج إلى قضاء بعض الوقت والجهد. ومع ذلك ، فإن الصناعة لا تقف مكتوفة الأيدي وجميع هذه العيوب مؤقتة. كنتيجة للخصيتين الأوليين ، لا تتسق سرعة هذه العمليات الثنائية مع الرياضيات الحديثة ، خاصة الإهليلجية ، والتي نستخدمها جميعًا الآن ، عندما نستخدم بروتوكول TLS ، عندما نستخدم بعض المواقع. هذا في مكان ما حول عدة مئات من العمليات على خدمة على جوهر واحد. في الواقع ، هذا لم يمنعنا وفي الربيع قمنا بتنفيذ هذا البروتوكول ، وأصدرناه في الإنتاج وترجمنا جميع سجلاتنا ، وقمنا بحمايتهم باستخدام هذا البروتوكول. من حيث المبدأ ، نحن راضون عن أداء مهامنا الحالية ، وإذا لزم الأمر ، سنرفع عقدة أخرى مع خدمة Pythia ، ومن حيث المبدأ ، يمكنك بالفعل اللعب بكل هذا.


PHE


شريحة 36. هل هو أفضل؟


لكننا فكرنا فيما إذا كان بإمكاننا أن نفعل ما هو أفضل؟ هل من الممكن تحقيق الخصائص التي توفرها بيثيا باستخدام رياضيات الأمس؟ ليس غدًا ، وليس اليوم ، بل حتى الأمس ، والذي تم استخدامه لسنوات عديدة.


الشريحة 37.1. خدمات تشفير كلمة مرور بسيطة (PHE)


وفي يوليو من هذا العام ، أصدر العلماء حرفيًا بروتوكولًا جديدًا يسمى خدمات تشفير كلمة المرور البسيطة ، أو PHE لفترة قصيرة.


الشريحة 37.2. خدمات تشفير كلمة مرور بسيطة (PHE)


هذا هو راسل لاي ، عالم من أوروبا.


ما هي ميزة هذه الخدمة؟ أولاً ، يستخدم منحنى P-256 القياسي ، والذي يستخدم في كل مكان ، في جميع المتصفحات ، والمنتجات ، في كل مكان ، المنحنى الافتراضي ، الذي كان موجودًا منذ سنوات عديدة. ثانياً ، يعمل هذا الشيء بمعدل 10 أضعاف سرعة عمل Pythia ويستخدم بدايات قياسية. إنه أمر صعب ، ولكن يمكنك تنفيذه بيديك دون استخدام أي مكتبات غامضة. يمكنك استخدام OpenSSL ، أو Bouncy Castle ، أي شيء.


شريحة 38. خدمات تشفير كلمة المرور البسيطة (PHE)


لكنه يعمل بشكل مختلف قليلا. مرة أخرى هناك خلفية ، هناك خدمة PHE. الخلفية لديها مفتاح عمومي ، الخدمة لديها مفتاح خاص y . على عكس Pythia ، تختلف عملية التسجيل وعملية التحقق من كلمة المرور قليلاً. عندما يأتي مستخدم جديد إلى الخدمة ويريد التسجيل ، ماذا تفعل الواجهة الخلفية؟ منذ البداية ، طلب خدمة PHE ، من فضلك أعطني بعض البيانات التي يمكنني استخدامها للتسجيل ، نوع من سجل التسجيل. الخدمة تقول "موافق" وتجيب على الواجهة الخلفية بالأشياء التالية. يولد بعض الملح العشوائي 32 بايت ( sNonce ). استنادًا إلى هذا الملح والمفتاح y الخاص به ، يقوم بإنشاء رقمين ، دعنا C0 و C1 . كما أنه يولد أدلة ( Proof ) على أن هذين الرقمين أو النقطتين تم إنشاؤها بدقة باستخدام المفتاح الخاص y ، باستخدام بروتوكول Schnorr (كما في البروتوكولات السابقة). الخلفية الشيكات Proof . لا توجد كلمة مرور هنا حتى الآن. ماذا تفعل الخلفية؟ من جانبه ، لديه أيضًا مفتاحه الشخصي الخاص بعميله الشخصي x ، وبعد تلقي كلمة المرور من المستخدم ، فإنه يفعل الشيء نفسه كما فعلت الخدمة ، ويضيف فقط كلمة المرور هناك. يستغرق cNonce عشوائي (ملح عميل عشوائي) ، كلمة مرور ، ويولد مرة أخرى رقمين HC0 و HC1 . لماذا 2؟ نظرًا لأنه HC0 استخدام HC0 الأول HC0 الرقم الثاني HC1 ببعض الأرقام العشوائية M مضروبة في المفتاح الخاص x ( MC ). يبلغ حجم M أيضًا 32 بايت ويمكن استخدامه فيما بعد لتشفير بيانات المستخدم (لدينا خدمات التشفير) ( ملاحظة من مؤلف الملاحظة: مفتاح التشفير في هذه الحالة سيكون MC ). لن يتوفر رقم MC كمفتاح إلا بعد قيام المستخدم بإدخال كلمة المرور الصحيحة. اتضح أنه في مرحلة التسجيل ، لا يمكنك إنشاء سجل ترخيص فقط ، ولكن أيضًا مفتاح تشفير فريد لكل مستخدم ، حيث يمكنك تشفير ملف التعريف الخاص به وبعض البيانات وشيء آخر. ثم تضيف الخلفية ببساطة ما أرسلته الخدمة وماذا فعلت - تضيف هذه النقاط وتحصل على T0 و T1 . في الحالة الأولى ، تضيف اثنين ( C0 + HC0 ) ، والثانية ( C1 + HC1 + MC ). ويضع في الأملاح 2 الأساسية ( sNonce ، cNonce ) ، بمساعدة التي تم الحصول على هذه الأرقام cNonce ( T0 و T1 ) ، والتي تحولت نتيجة للمجموع.


الشريحة 39. تسجيل دخول PHE


وفقًا لذلك ، تحدث عملية مصادقة المستخدم بالترتيب العكسي. يقوم المستخدم بإدخال كلمة المرور الخاصة به على الواجهة الخلفية. تحسب الواجهة الخلفية HC0 ومن ما لديها في قاعدة البيانات ، وتطرح HC0 من T0 وترسل C0 الناتج إلى الخدمة مع ملح الخادم. الخدمة ، بمعرفة ملح الخادم ، تحسب نفس النقطة في حد ذاتها وتبدو ، وتتزامن مع حقيقة أنها أرسلت الواجهة الخلفية أم لا ، إذا كانت مطابقة ، فكلمة المرور صحيحة ويمكنك الإجابة عليها بالرقم الثاني C1 ، الذي سيتم طرحه مع الرقم HC1 من الرقم T1 واحصل على مفتاح التشفير. وبالتالي ، لا تختفي كلمة مرور خدمة PHE. إنه حتى لا يترك الخلفية. وهو في شكل بعض النقاط مضروبة بالمفتاح الخاص للخلفية. إنه غير موجود على هذا النحو ، لكن في الوقت نفسه ، يمكن للخدمة عن بعد أن تتوصل إلى استنتاج صارم حول ما إذا كانت كلمة المرور هذه صحيحة أم لا ، وعلاوة على ذلك ، تثبت أنه قام بجميع العمليات الحسابية باستخدام مفتاحه الخاص y .


الشريحة 40.1. PHE الميزات


ما هي الميزات لا هذا النظام؟


الشريحة 40.2. PHE الميزات


كلمة المرور ، كما قلت ، لا تترك الواجهة الخلفية. ولكن على عكس Pythia ، فأنت بحاجة إلى مفتاح خاص على الواجهة الخلفية. حسنًا ، نحتاج ونحتاج ، نوفر مكانًا ما. PHE لديه كل الوظائف الأساسية ل Pythia:


  • يمكنك أيضًا إصدار الرمز المميز للتحديث في حالة حدوث شيء لك باستخدام المفتاح الخاص ؛
  • يمكنك أيضًا الاطلاع على قاعدة البيانات بالكامل والتحديث وكل شيء سيكون كما كان ؛
  • حماية البحث ؛
  • الخدمة لا تعرف أي شيء عن كلمة المرور ؛
  • (Pythia , , , , PHE );
  • .

41. ...


...


42. passw0rd.io


… . . passw0rd.io . password , 18- , , zero trust, .. . , , .. Let's encrypt . , . CLI , . 2 SDK , GO .Net, .


43. Passwords are like underwear


:


  1. .
  2. .
  3. .

44.



, .


?


37. ?


45. ?


.


Q: , ! . , Pythia update token, ? private key . update token? أم لا؟
A: , update token- .
Q: . - update token-, Private key ?
A: , update token-, , - , , , update token. , .. .
Q: , , , .
A: .. .


Q: , , , - Pythia - , , , ?
A: .
Q: ?
A: , Pythia . أي , .
Q: ( ) bcrypt ?
A: , , , .


Q: , . ? , …
A: password
Q: password ? النار! عموما.
A: 123456 , 12345, 123456.
Q: . Pythia , PHE .
A: , .
Q: . . ? production ?
A: . ! Pythia.
Q: Pythia, , ?
A: .
Q: , ?
A: .
Q: , , !
A: SDK, .


Q: , , , , .. - , ? ? ?
A: , , , .. PHE, , 5 2 , 2 5 . , . PHE ( , ), , 10 , .
Q: .. - , - ? ?
A: . rate limiting, , .
Q: .. , ?
A: .


Q: . , .. Pythia (), , ? ?
A: , , .
Q: , update ?
A: , Pythia , , - - , , , )


A: ? ! . , , PHE, , .


الاستنتاجات


PHE ( ) + — ( , , ) ( ). PHE , .


:


  • ( ) ;
  • ( ).

, .


Scratch Virgil Security , , !


( )?


UPD : Scratch . . , . .

Source: https://habr.com/ru/post/ar434708/


All Articles