مِهان علوی مجد
مِهان علوی مجد
خواندن ۲ دقیقه·۲ سال پیش

لینوکس دقیقا چجوری پسورد ما رو نگه می داره؟

سلام. چند وقت پیش به ذهنم اومد که این لینوکس چجوری و کجا پسورد کاربر هایی مثل خودمون و root رو نگه می داره که دوباره می تونیم لاگین کنیم. اگه شما هم درباره این موضوع تعجب کردید، ادامه این مطلب رو بخونید.


خب تمام این دیتا های پسورد و یوزرنیم ها توی etc/shadow هستش. البته به صورت hash شده. hashing در واقع یه جور رمزنگاری هستش که شما نمی تونید رشته رمزنگاری شده، رشته اصلی رو در بیارید.

خب اول با دسترسی root میایم فایل etc/shadow رو نگاه می کنیم:

خب یه همچین چیزی میده که کلی یوزر هستش. پس بگذارید به جای دستی پیدا کردن یوزر خودمون بیایم با grep پسورد هش شده خودمون رو بگیریم:

خب حالا پسورد خودم رو که با اکانت mehan هستم گرفتیم. یه ذره توضیح بدم:

این پسورد از ۴ تا قسمت تشکیل شده:

قسمت اول که اینجا 6$ هستش. این میگه سبک رمز نگاری چیه. در کل اینا می تونن برای قسمت اول باشن:

  • $1 = MD5 hashing algorithm.
  • $2 =Blowfish Algorithm.
  • $2a=eksblowfish Algorithm
  • $5 =SHA-256 Algorithm
  • $6 =SHA-512 Algorithm

که معمولا اکثر لینوکس ها مثل مال من از sha-512 استفاده می کنن.

قسمت دوم که اینجا $PUlUgF9iZoN/QA4. هستش. این یه چیز به نام salt هستش که کاری نداریم چیه ولی باعث میشه رمزنگاری قوی تر شه.

قسمت سوم که اصلشه بعد اینه. اگه دقت کنید همه این قسمت ها با $ شروع می شن. خب قسمت سوم، هش شده salt به علاوه خود اصل پسورد تون هستش. الگوریتمش هم همون قسمت اولیه هستش.

قسمت چهارم هم که چند تا دونقطه داره، تاریخ تغییر پسورد به سبک یونیکس تایم هستش.


خب حالا ما تو لینوکس دقیقا چجوری لاگین می کنیم وقتی نمیشه رمز رو decrypt کرد؟ خیلی ساده. لینوکس برای ما میاد و پسورد ورودی رو encrypt می کنه و با اون چیزی که تو فایل هستش مقایسه می کنه. اگه اوکی بود که هیچی وگرنه نمی ذاره لاگین کنیم.

حالا چجوری رمز ورودی رو encrypt می کنه؟

می تونیم از دستور زیر استفاده کنیم:

میایم میگیم از ۶ که درواقع الگوریتم رمزنگاری هستش استفاده کن، salt مون رو می دیم، بعد اصل پسورد رو می دیم و اگه دقت کنید دقیقا همون هش قبلی رو میده.



خیلی ممنون که وقت گذاشتید و خواندید. لطفا لایک کنید و اگه سوالی دارید کامنت کنید.

نوشته های قبلی:

https://virgool.io/@mehan/%D8%A7%DB%8C-%D9%BE%DB%8C-%D8%A2%DB%8C-%D8%AF%DB%8C%D9%88%D8%A7%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%B4%D9%85%D8%A7%D8%B1%D9%87-%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84-jvht70aw2vp0
https://virgool.io/@mehan/%D8%AA%D9%86%D8%B8%DB%8C%D9%85-%DA%A9%D8%B1%D8%AF%D9%86-%D9%85%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%DA%A9%DB%8C%D8%A8%D9%88%D8%B1%D8%AF-%D8%AA%D9%88-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-btojqoz7pzsu
https://virgool.io/@mehan/%D8%AA%D8%B1%D9%81%D9%86%D8%AF-%D9%87%D8%A7%DB%8C-%DA%AF%DB%8C%D8%AA%D8%A8%D8%AE%D8%B4-%DB%B1-e8g6apdbuhgo


منبع:

https://www.slashroot.in/how-are-passwords-stored-linux-understanding-hashing-shadow-utils


لینوکسگنو لینوکسبرنامه نویسیپسوردامنیت
یه پسر که برنامه نویسی رو دوست داره
شاید از این پست‌ها خوشتان بیاید