मैं एक शुरुआती जावा प्रोग्रामर हूं। मैं ऐसे एप्लिकेशन पर काम कर रहा हूं जो कुछ डेटा को डिक्रिप्ट करता है। डिक्रिप्शन कुंजी सॉफ़्टवेयर में हार्डकोड की गई है और इस प्रकार बाइटकोड का विश्लेषण करके देखा जा सकता है।डिक्रिप्शन से डिक्रिप्शन कुंजी की रक्षा कैसे करें?
मुझे पता है कि रिवर्स इंजीनियरिंग पूरी तरह से रोका नहीं जा सकता है, इसलिए मैं प्रक्रिया को जितना संभव हो सके उतना कठिन बनाने के लिए प्रयास कर रहा हूं।
मेरा विचार सीधे मेरे कोड में कुंजी डालना नहीं है, लेकिन इसे किसी प्रकार के परिवर्तन के माध्यम से जाना है। उदाहरण के लिए, मैं लिख सकता है -
private static final byte[] HC256A = Hex
.decode("8589075b0df3f6d82fc0c5425179b6a6"
+ "3465f053f2891f808b24744e18480b72"
+ "ec2792cdbf4dcfeb7769bf8dfa14aee4"
+ "7b4c50e8eaf3a9c8f506016c81697e32");
इस तरह किसी को बाईटकोड को देखकर यह सीधे नहीं पढ़ सकता। लेकिन तर्क का पालन करना होगा और इसमें परिवर्तन लागू करना होगा, जो बाइट स्तर पर इतना आसान नहीं होगा।
तो आप लोग क्या सोचते हैं? क्या यह उपयोगी है? हेक्स डिकोडिंग के अलावा सबसे अच्छा परिवर्तन क्या हो सकता है? क्या हार्डकोडेड डिक्रिप्शन कुंजी की सुरक्षा के लिए कोई अन्य विधियां उपलब्ध हैं?
आपके सभी सुझावों के लिए धन्यवाद।
आप डीबगर कनेक्टिंग (सी ++ में काम करते हैं, यह सुनिश्चित नहीं करते कि जावा में ऐसा कैसे करें) के लिए सुन सकते हैं, और यदि ऐसा है, तो स्मृति से मान हटाएं। –
डीकोड किए जाने वाले डेटा की संवेदनशीलता क्या है? यह उस डेटा की सुरक्षा में कितना प्रयास करने के लिए एक गाइड के रूप में कार्य करने में मदद करेगा। बाइटकोड में कुंजी छिपाने का कोई भी रूप हारने के लिए अपेक्षाकृत आसान है। इसके अतिरिक्त यह आवश्यक होगा कि सॉफ़्टवेयर के प्रत्येक उपयोगकर्ता की एक ही कुंजी हो और कुंजी में बदलने के लिए पुन: संकलन की आवश्यकता हो। –
डेटा काफी संवेदनशील है। यह एक डिजिटल मीडिया प्रिंट है जो लीक होने पर कंपनी के लिए गंभीर समस्याएं पैदा करेगा। –