ما الفرق بين التشفير وتسجيل الدخول بالتشفير غير المتماثل؟

StackOverflow https://stackoverflow.com/questions/454048

سؤال

ما الفرق بين تشفير بعض البيانات وتوقيع بعض البيانات (باستخدام RSA)؟

هل يؤدي ذلك ببساطة إلى عكس دور المفاتيح العامة والخاصة؟

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

هل التوقيع مفيد في هذا السيناريو؟

هل كانت مفيدة؟

المحلول

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

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

<اقتباس فقرة>   

وأريد استخدام المفتاح الخاص بي لإنشاء رسائل ذلك فقط يمكنني ربما يكون المرسل.

     

وأريد المفتاح العمومي بلدي لاستخدامها لقراءة الرسائل، وأنا لا يهمني من يقرأ لهم

وهذا هو التوقيع ، ويتم ذلك باستخدام المفتاح الخاص بك.

<اقتباس فقرة>   

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

     

وما يهمني هو أني أنا الوحيد الذي يمكن أن تولد هذه.

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

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

<اقتباس فقرة>   

وأود أن تشمل المفتاح العمومي في بلدي برنامج فك تشفير / قراءة التوقيع على المفتاح.

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

نصائح أخرى

في تشفير RSA، عندما تقوم بإنشاء زوج مفاتيح، يكون من العشوائي تمامًا اختيار أي منهما ليكون المفتاح العام وأيهما يكون المفتاح الخاص.إذا قمت بالتشفير باستخدام أحدهما، فيمكنك فك التشفير باستخدام الآخر - فهو يعمل في كلا الاتجاهين.

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

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

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

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

لذا:

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

نعم، فكر في التوقيع على البيانات كإعطائها ختمًا شمعيًا خاصًا بك لا يملكه أي شخص آخر.يتم ذلك لتحقيقه النزاهة وعدم الإنكار.التشفير هو بحيث لا يستطيع أي شخص آخر رؤية البيانات.يتم ذلك لتحقيقه سرية.انظر ويكيبيديا http://en.wikipedia.org/wiki/Information_security#Key_concepts

التوقيع هو تجزئة لرسالتك الموقعة باستخدام مفتاحك الخاص.

والتوقيع هو انتاج "تجزئة" مع المفتاح الخاص التي يمكن التحقق منها مع المفتاح العمومي الخاص بك. يتم إرسال النص في واضحة.

وتشفير يستخدم المفتاح العمومي المتلقي لتشفير البيانات؛ ويتم فك التشفير باستخدام المفتاح الخاص بهم.

وهكذا، لا يتم عكس استخدام المفاتيح (وإلا سيكون المفتاح الخاص لا يكون القطاع الخاص بعد الآن!).

هناك مشكلتان متميزتان ولكنهما مرتبطتان ارتباطًا وثيقًا في إنشاء اتصال آمن

  1. تشفير البيانات حتى يتمكن الأشخاص المصرح لهم فقط من فك تشفيرها وقراءتها.
  2. التحقق من هوية/مصادقة المرسل.

يمكن حل هاتين المشكلتين بشكل رائع باستخدام تشفير المفتاح العام.

أنا.تشفير وفك تشفير البيانات

تريد أليس إرسال رسالة إلى بوب لا ينبغي لأحد أن يتمكن من قراءتها.

  • تقوم أليس بتشفير الرسالة باستخدام المفتاح العام لبوب وترسلها.
  • يتلقى بوب الرسالة ويقوم بفك تشفيرها باستخدام مفتاحه الخاص.

لاحظ أنه إذا أراد A إرسال رسالة إلى B ، فاحتاج A إلى استخدام المفتاح العام لـ B (وهو متاح للجمهور لأي شخص) ولا يأتي المفتاح العام أو الخاص لـ A إلى الصورة هنا.

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

ثانيا. التحقق من هوية المرسل (المصادقة)

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

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

هل هناك طريقة يستطيع بها بوب التأكد من أن الرسائل التي يتلقاها مرسلة بالفعل بواسطة أليس؟

  • تقوم أليس بتوقيع الرسالة بمفتاحها الخاص وترسلها.(في الممارسة العملية، ما يتم التوقيع عليه هو عبارة عن تجزئة للرسالة، على سبيل المثال.SHA-256 أو SHA-512.)
  • يستلمها بوب ويتحقق منها باستخدام مفتاح أليس العام.وبما أن المفتاح العام لـ Alice قد نجح في التحقق من الرسالة، فيمكن لبوب أن يستنتج أن الرسالة قد تم توقيعها بواسطة Alice.

وتوقيع يشير أنت حقا مصدر أو يشهدوا على الكائن وقعت. يمكن لأي شخص أن يقرأ الكائن، وإن كان.

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

وأنت تصف بالضبط كيف ولماذا يستخدم التوقيع في التشفير بالمفتاح العمومي. لاحظ أن هذا أمر خطير جدا للتسجيل (أو تشفير) رسائل aritrary الموردة من قبل الآخرين - وهذا يسمح الهجمات على الخوارزميات التي يمكن أن تضر المفاتيح الخاصة بك

في السيناريو الخاص بك، فإنك لا تشفير في معنى التشفير غير المتناظر. فما استقاموا لكم فاستقيموا بدلا يطلق عليه "ترميز".

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

وظيفيا، يمكنك استخدام مفتاح التشفير العام / الخاص لجعل معينة فقط المتلقي يمكن قراءة الرسالة. يتم تشفير ثم تشفير الرسالة باستخدام المفتاح العمومي من المتلقي.

وتوقيع تستخدمه لترك المتلقي يعرف قمت بإنشائه الرسالة وأنه لم يتغير أثناء النقل. يتم توقيع الرسالة باستخدام المفتاح الخاص بنفسك.

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

<اقتباس فقرة>   

ما هو الفرق بين تشفير بعض البيانات مقابل توقيع بعض البيانات (باستخدام RSA)؟

والتشفير يحفظ سرية الرسالة ( "بعض البيانات")، في حين أن توقيع يوفر عدم التنصل: أي فقط الكيان الذي وقعت عليه قد وقعت عليه. هناك اختلافات وظيفية كذلك؛ على النحو التالي.

<اقتباس فقرة>   

هل ببساطة عكس دور المفاتيح القطاعين العام والخاص؟

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

لنفس الرسالة، يجب عليك استخدام المفتاح الخاص المرسلين للتوقيع واستقبال الوثوق المفتاح العام للتشفير. تسجيل الدخول آنذاك تشفير عادة يستخدم إلا عدو يمكن أن تحل محل التوقيع مع بلده. وبالمثل يجب عليك استخدام المفتاح الخاص من المتلقي لفك التشفير و<م> موثوق به المفتاح العمومي للمرسل للتحقق منها.

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

<اقتباس فقرة>   

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

وهذا هو الممتلكات غير التنصل، وهو ما يمكن تحقيقه من خلال التوقيع.

<اقتباس فقرة>   

وأريد المفتاح العمومي بلدي لاستخدامها لقراءة الرسائل، وأنا لا يهمني من يقرأ لهم.

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

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

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

<اقتباس فقرة>   

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

ويستخدم التشفير لتحقيق السرية. في الجيل توقيع RSA الماضي في كثير من الأحيان من حيث الفكر "التشفير باستخدام المفتاح الخاص". ومع ذلك، فإن عمليات مختلفة تماما كما هو موضح أعلاه، والمعايير في وقت لاحق أمس محاولة والتشفير والتوقيع جيل منفصل.

<اقتباس فقرة>   

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

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

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

وحفظ التعليمات البرمجية من يتم استنساخ / تغيير في كل هو أصعب بكثير، وتريد ان تكون بقوة في الأراضي DRM اذا ذهبت بهذه الطريقة.

<اقتباس فقرة>   

هل توقيع مفيدة في هذا السيناريو؟

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

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

  1. لا يمكن لأي طرف ثالث إنتاج مفتاح ترخيص من خلال إلغاء ترجمة التطبيق
  2. لا يلزم أن يكون محتوى مفتاح البرنامج آمنًا
  3. مفتاح البرنامج غير قابل للقراءة من قبل الإنسان

سيحل التوقيع الرقمي هذه المشكلة حيث يمكن توقيع البيانات الأولية التي تصنع المفتاح باستخدام مفتاح خاص مما يجعله غير قابل للقراءة من قبل الإنسان ولكن يمكن فك تشفيره إذا تمت هندسته بشكل عكسي.لكن المفتاح الخاص آمن مما يعني أنه لن يتمكن أحد من إصدار تراخيص لبرنامجك (وهذا هو بيت القصيد).

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

Python وثائق PynaCl لديها مثال على "التوقيع الرقمي" الذي سوف يناسب الغرض. http://pynacl.readthedocs.org/en/latest/signing/

ومن سبب مشروع NaCl إلى أمثلة C

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top