هل يمكنني استخدام Submilkey التجميعات لفك تشفير سلسلة مشفرة باستخدام PactKey المقابلة؟

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

سؤال

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

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

المستندات التي قرأتها حتى الآن (على سبيل المثال.

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

أنا قليلا في خسارة كيفية بدء هذا. هل لدى أي شخص مقتطف رمز؟

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

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

  1. تعرف من لديه برنامج مثبت (عنوان البريد الإلكتروني)
  2. دع البرنامج ينتهي بعد فترة معينة، وبعد ذلك سيتعين على المستخدم الحصول على رخصة جديدة
    • هذا سهل مثل ملء نموذج وانتظار بريد إلكتروني تلقائي مع المفتاح للوصول
    • نحاول تقليل احتشاء الإصدارات القديمة العائد لدغة سمعتنا / تطاردنا

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

تعديل: حسنا، لذلك ليس لدي كل الإجابات على سؤالي حتى الآن. ولكن يبدو أن .NET لن تجعل من السهل استخدام المفتاح الخاص للتشفير (إذا كان ذلك ممكنا على الإطلاق، فإن الإجابات لا توافق حقا على ذلك).

الطريق الذي سأأخذه هو (بناء على حالة استخدام بلدي):

  • سوف أستخدم المفتاح الخاص لتوقيع الترخيص.
  • سوف أستخدم المفتاح العمومي للتحقق من تم توقيع الترخيص من قبل المفتاح الخاص
  • سأقوم بنشر سؤال آخر يهدف إلى PHP Devs حول كيفية استخدام مفاتيح .NET (التي تنتجها sn.exe) لتوقيع بعض النص
  • أنا لست قلقا حقا بشأن رؤية المستخدم الترخيص، كما هو الحال على أي حال وحسبت من الأشياء التي يعرفها Allready. كل ما أريده هو جعله من الصعب للغاية أن أكون يستحق أي عناء من أجل مهندس المباني النموذجي لنسخ برنامجي دون معرفة (تذكر، سيكون البرنامج مجاني - كل ما أريده هو درب الورق الذي قام بتثبيته ... في

شكرا جزيلا لك على إجاباتك.

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

المحلول

ليس في .NET.

في العديد من خوارزمية تشفير المفتاح العام التقليدية، مثل RSA، يمكنك تشفير وفك تشفير كلا الاتجاهين، عادة ما تسمى طريقة واحدة "التشفير" والأخرى "التوقيع"، على الرغم من أنك في الواقع في نهاية المطاف مع نسخة مشفرة من شيء ما.

ومع ذلك، في .NET تم التنفيذ RSA، وعندما سيؤدي التوقيع فقط إلى إنتاج هضم المدخلات، وليس المعلومات المعالجة كاملة.

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

أنا أتحدث عن RSA Math، وليس أي تنفيذ RSA معين.

يتيح لك RSA Math لتشفير المعلومات إما من المفتاحين (خاص أو عام)، ولا يمكن فك تشفير البيانات المشفرة فقط مع الآخر من المفتاحين.

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

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

نصائح أخرى

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

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

يمكن القيام بذلك باستخدام SignedXML http://msdn.microsoft.com/en-us/library/ms229745.aspx.. وبعد بمستوى أقل، يمكنك استخدام RSAPKCS1SignatureDeformator و rsapkcs1signatormatformatformatfermator. هذه العمل من خلال تشفير تجزئة البيانات ثم مقارنة البيانات مع التجزئة (فك التشفير) الطرف الآخر. أعتقد أن يتم استخدام التجزئة لأن تشفير المفتاح الخاص يمكنه فقط التعامل مع البيانات الصغيرة. غير متأكد من إعادة استخدام المفتاح الجمهوري للتجميع، إذا كان يسبب مشاكل استخدام زوج رئيسي منفصل.

كلمة التحذير، تحقق من ذلك لأن هذه الفئات يمكن أن تؤدي إلى 20 ثانية تعليق! http://www.pcreview.co.uk/forums/thread-3428177.php.

هذا النهج عرضة لرمز التحقق من التوقيع يتم العبث به باستخدام Reflexil ولكن هذا أمر آخر.

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

يتم استخدام مفاتيح RSA العامة للتشفير، وتستخدم مفاتيح خاصة لفك التشفير. لا يمكنك استخدام مفتاح عام لفك تشفير أي شيء ...

في RSA الفرق الفعلي الوحيد بين المفتاح العمومي ومفتاح خاص هو الذي تبقي سريا.

لذلك يمكنك استخدام مفتاح عام كمفتاح تشفير وفك تشفير مع المفتاح الخاص، أو استخدم المفتاح الخاص كإشفاري ومفتاح تشفير مع المفتاح العام.

يتم استخدام تشفير المفتاح الخاص للتوقيعات الرقمية (يمكن لأي شخص فك شفرة المفتاح العام).

ولكن كما أشت Lasse V. Karlsen، قد يجعل .NET جعلها أكثر صعوبة مما ينبغي أن يكون ...

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

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

يمكن استخدام مفتاح عام إلى: -

  • تشفير شيء لا يمكن فك تشفيره فقط مع المفتاح الخاص
  • مصادقة شيء موقع مع المفتاح الخاص

لا يمكن استخدامه لفك تشفير شيء لتشفيره بمفتاح خاص. لهذا السبب أن نظام المفتاح العام / الخاص يشار إلى نظام غير متناظر.

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