hash password - هل من الممكن لفك تجزئة md5؟




found (20)

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

هل هذا ممكن؟ اعتقدت أنه من غير الممكن (عمليا) لفك تجزئات MD5.

أعرف أن هناك قواميس MD5 ، ولكن هل هناك خوارزمية فعلية لفك التشفير؟


Answers

فك التشفير (الحصول مباشرة على النص العادي من القيمة المجزأة ، بطريقة حسابية) ، لا.

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


خوارزمية تجزئة MD5 غير قابلة للانعكاس ، لذلك فك MD5 غير ممكن ، ولكن بعض مواقع الويب لديها مجموعة كبيرة من تطابق كلمة المرور ، لذلك يمكنك تجربة الانترنت لفك تجزئة MD5.

جرب على الانترنت:

MD5 فك تشفير

md5online

md5decrypter


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

لكن هذا لا يعني ذلك

  • قابل للحياة
    أو
  • آمنة

أنت لا تريد "عكس" تجزئة MD5 . باستخدام الطرق الموضحة أدناه ، لن تحتاج أبدًا إلى ذلك. يعتبر برنامج "Reversing" MD5 خبيثًا - حيث توفر بعض المواقع الإلكترونية القدرة على "تشقّق" و تجزئ تجزئة MD5 - ولكن جميع هذه القواعد عبارة عن قواعد بيانات ضخمة تحتوي على كلمات معجم ، والتي سبق إرسال كلمات المرور وكلمات أخرى. هناك فرصة صغيرة جدا أن يكون لها تجزئة MD5 تحتاج إلى عكسه. وإذا قمت بتمليح تجزئة MD5 - فلن ينجح هذا أيضًا! :)

يجب أن تعمل طريقة تسجيل الدخول باستخدام تجزئة MD5:

خلال التسجيل:
يقوم المستخدم بإنشاء كلمة المرور -> تجزئة كلمة المرور باستخدام MD5 -> التجزئة المخزن في قاعدة البيانات

أثناء تسجيل الدخول:
يقوم المستخدم بإدخال اسم المستخدم وكلمة المرور -> (تم اختيار اسم المستخدم) تم تجزئة كلمة المرور باستخدام MD5 -> مقارنة التجزئة مع التجزئة المخزنة في قاعدة البيانات

عند الحاجة إلى "كلمة المرور المفقودة":

2 خيارات:

  • أرسل المستخدم كلمة مرور عشوائية لتسجيل الدخول ، ثم تم التنصت عليه لتغييره عند تسجيل الدخول لأول مرة.

أو

  • يتم إرسال رابط للمستخدم لتغيير كلمة المرور الخاصة به (مع تحقق إضافي إذا كان لديك سؤال أمان / الخ) ثم يتم تجزئة كلمة المرور الجديدة واستبدالها بكلمة المرور القديمة في قاعدة البيانات

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

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

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


ليس هناك طريقة سهلة للقيام بذلك. هذا هو نوع من تجزئة كلمة المرور في المقام الأول. :)

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

أتردد في ذكر ذلك لأنها فكرة سيئة (وليس من المضمون العمل على أي حال) ، ولكن يمكنك محاولة البحث عن التجزئة في جدول قوس قزح مثل milw0rm لمعرفة ما إذا كان يمكنك استعادة كلمة المرور القديمة بهذه الطريقة.


يمكنك العثور على أدوات عبر الإنترنت تستخدم قاموسًا لاسترداد الرسالة الأصلية.
في بعض الحالات ، قد تكون طريقة القاموس عديمة الفائدة فقط:
- إذا كانت الرسالة مجزأة باستخدام رسالة SALT
- إذا كانت الرسالة تجزئة أكثر من مرة
على سبيل المثال ، هنا هو أداة واحدة على الانترنت md5 ديكريبتر !
ديفيد


غير ممكن ، على الأقل ليس في فترة زمنية معقولة.

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


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


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


يمكنك القيام بذلك بطريقة واحدة ، جرب md5decrypter على الإنترنت.


لا يمكنك التراجع عن كلمة مرور md5 (بأي لغة)

ولكن يمكنك:

تعطي للمستخدم واحدة جديدة.

تحقق في بعض جدول قوس قزح ربما لاسترداد القديمة.


MD5 هو خوارزمية التجزئة ، لا يمكنك التراجع عن قيمة التجزئة.

يجب أن تضيف "ميزة تغيير كلمة المرور" ، حيث يعطي المستخدم كلمة مرور أخرى ، ويحسب التجزئة وتخزينها ككلمة مرور جديدة.


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

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

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

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


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

هذا هو السبيل الوحيد ، دون الخوض في تحليل الكريبت.


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

  1. Bruteforcing : جميع خوارزميات أمن الكمبيوتر تعاني من bruteforcing . وبناءً على هذه الفكرة ، تستخدم GPU اليوم فكرة البرمجة المتوازية التي يمكن من خلالها استعادة النص العادي عن طريق تثبيته بشكل كبير باستخدام أي معالج رسومات. هذه الأداة hashcat تقوم بهذا العمل. آخر مرة راجعت نسخة cuda منه ، وكنت قادرا على بطء شخصية 7 أحرف طويلة في غضون ست دقائق.
  2. ما عليك سوى نسخ ولصق التجزئة على google ومعرفة ما إذا كان بإمكانك العثور على النص العادي المقابل هناك. هذا ليس حلا عندما كنت تتدرب على شيء ولكن بالتأكيد يستحق المحاولة. تحتفظ بعض مواقع الويب بتجزئة جميع الكلمات تقريبًا في القاموس.

لا ، لا بد أنه كان مرتبكًا حول قواميس MD5.

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


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

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

أيضا ، وهذا لن يعمل على تجزئة المملحة. يوصى Salting قبل العديد من خبراء الأمن.


لا مباشرة. بسبب مبدأ pigeonhole ، هناك (مرجّح) أكثر من قيمة واحدة تجزأ إلى أي إخراج MD5 معطى. على هذا النحو ، لا يمكنك عكس ذلك بشكل مؤكد. علاوة على ذلك ، يتم إجراء MD5 لجعل من الصعب العثور على أي تجزئة معكوسة (على الرغم من وجود هجمات تنتج visualization - أي ، تنتج قيمتين تجزئة لنفس النتيجة ، ولكن لا يمكنك التحكم في ما سوف تكون قيمة MD5 الناتجة يكون).

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


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


يجب ألا تشفر كلمات المرور ، بدلاً من ذلك يجب عليك تجزئة باستخدام خوارزمية مثل bcrypt. تشرح هذه الإجابة كيفية تنفيذ تجزئة كلمة المرور بشكل صحيح في PHP . مع ذلك ، إليك كيفية تشفير / فك تشفير:

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted '; // note the spaces

لتشفير:

$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);

لفك تشفير:

$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    "\0"
);

تحذير : يقوم المثال أعلاه بتشفير المعلومات ، ولكنه لا يقوم بتوثيق النص المشفر لمنع التلاعب. يجب ألا تعتمد على تشفير غير مصادق للأمان ، خاصةً أن الكود كما هو متوفر عرضة لهجمات oracle padding.

أنظر أيضا:

  • https://.com/a/30189841/2224584
  • https://.com/a/30166085/2224584
  • https://.com/a/30159120/2224584

أيضا ، لا مجرد استخدام "كلمة المرور" لمفتاح التشفير. مفاتيح التشفير هي سلاسل عشوائية.

عرض على 3v4l.org :

echo 'Encrypted:' . "\n";
var_dump($encrypted); // "m1DSXVlAKJnLm7k3WrVd51omGL/05JJrPluBonO9W+9ohkNuw8rWdJW6NeLNc688="

echo "\n";

echo 'Decrypted:' . "\n";
var_dump($decrypted); // " string to be encrypted "




hash cryptography md5 encryption