गंभीरता से, MySQL के aes_encrypt() का उपयोग न करें यह ब्लॉक सिफर का उपयोग करने का सबसे असुरक्षित तरीका है। यह ईसीबी मोड का उपयोग कर रहा है, और मैं एक सरल उदाहरण प्रदर्शन दे सकता हूं कि यह एक गंभीर गलती क्यों है।
सादा पाठ संदेश:
वही संदेश ईसीबी मोड के साथ एन्क्रिप्ट किया गया है (इससे कोई फर्क नहीं पड़ता कि आप किस सिफर का उपयोग करते हैं):
सीबीसी मोड का उपयोग कर एक ही संदेश (फिर से, इससे कोई फर्क नहीं पड़ता कि आप किस सिफर का उपयोग करते हैं):
और भी कारण हैं mysql के aes_encrypt का उपयोग नहीं करने के लिए, विशेष रूप से आपके द्वारा भेजी जाने वाली प्रत्येक क्वेरी में आपके द्वारा उपयोग की जाने वाली aes कुंजी भी होगी। यदि डेटाबेस से छेड़छाड़ की जाती है तो हमलावर लॉगिंग सक्षम करेगा और बस आपकी एईएस कुंजी प्राप्त करेगा और संपूर्ण डेटाबेस को डिक्रिप्ट करेगा। ।
तो क्या चाहिए आप उपयोग करते हैं? मुझे पसंद है यह वर्ग उतने समय के लिए। यह String2Key फ़ंक्शन और IV के साथ CBC मोड का उपयोग कर रहा है। आप अपने IV के रूप में प्राथमिक कुंजी का उपयोग कर सकते हैं, प्रत्येक संदेश में एक अद्वितीय IV होना चाहिए। ठीक है अगर हमलावर IV जानता है, और यदि वे अनुक्रमिक हैं, जब तक कि ब्लॉक सिफर कार्यान्वयन सुरक्षित है। IV के पुन:उपयोग से WEP बहुत कम सुरक्षित हो गया है। ।