Java/C# Kerberos inter-op ممكن؟
سؤال
لقد قمت بتطبيق خادم/عميل Kerberos باستخدام Sockets في Java ، حيث يرسل العميل خدمة TGT إلى الخادم ، ويعرف الخادم أن العميل أصيل.
شاغلي الرئيسي هو الهجوم "Man-in-Middle". يمكن لشخص ما التقاط TGT ، ويتظاهر بأنه العميل.
في تطبيق Java الخالص ، لا توجد مشكلة ، حيث يتم تشفير المزيد من التواصل مع مفاتيح جلسة الخدمة (GSSContext.wrap ()/GSSContext.unwrap ()) ، والتي لا يوجد بها Snooper.
ولكن يجب إعادة كتابة تطبيق العميل في C#.
أعتقد أن خياريين للحفاظ على التواصل المشفر هما:
- اكتب أساليب WRAP () و UNFER () في C#
- استخدام SSL/TLS.
هل الخيار 1 ممكن ، قبل أن أنظر إلى SSL كخيار؟
المحلول
يتضمن الخيار 1 بعض عمليات نقل التعليمات البرمجية الثقيلة التي قد يكون لديك أو لا يكون لديك وقت للقيام به. الخيار 2 يبدو جيدا.
هناك خيار 3 يعتمد على قيودك ، استخدم قناة TCP مشفرة خاصة ، والتي يجب أن تكون أسرع من SSL/TLS ، ولكن كما قلت قد لا تكون قابلة للتطبيق. يمكن أن يستخدم التشفير المتماثل ، بعد تهيئته بواسطة مفاتيح الجلسة (السرية)