منبع اصلی نوشتار زیر در این لینک قرار دارد

نیم نگاهی به GPG و کرک passphrase کلید خصوصی !

سلام دوستان . در این مقاله به کرک passphrase کلید خصوصی با استفاده از زبان برنامه نوسی bash می پردازیم . اما قبل از آن لازم است تا نیم نگاهی به GPG و کلید های آن داشته باشیم . به اندازه ی کافی در مورد دستورات و … مقاله به زبان فارسی وجود دارد اما شاید مفهوم نحوه ی کار هنوز برای گروهی از دوستان مشخص نباشد لذا از باز گویی دستوارت خودداری کرده و به مفاهیم می پردازیم . در ابتدا باید گفت که با دو لفظ کلید عمومی و کلید خصوصی بسیار سر و کار داریم و در مباحث آموزشی GPG به شدت با این دو کلمه برخورد می کنیم . دلیل استفاده از این مکانیزم از اون جایی است که فرضا می خواهیم پیغامی ( فایل / عکس و … ) رمزگذاری شده را برای دوستانمان ارسال کنیم . و یا دوستانمان یک ایمیل رمزگذاری شده برای ما ارسال کنند .

این موضوع خودش رو اون جایی نشون میده که ایمیل و پیغام ها و … ما و دوستانمان از میان روتر ها و سرور ها و gateway های زیادی عبور می کند و امکان شنود این کانال های ارتباطی توسط افراد خرابکار وجود دارد . پس لازم است که برای محافظت از اطلاعات رد و بدل شده چاری ای اندیشید و از روشی ( روش هایی ) استفاده کرد که امکان شنود اطلاعات را به حداقل برساند .

یکی از این روش ها , استفاده از کلید های GPG است یعنی کلید عمومی و یا کلید خصوصی . اما :

1. نحوه ی کار این دو کلید به چه شکل است ؟

2. برای رمزگذاری فایل ها و … باید از کدام کلید استفاده کرد ؟

3. از کدام کلید باید محافظت کرد ؟

سوال اول :

همان طور که از اسم این دو کلید می توان حدس زد , کلید خصوصی , کلیدی شخصی می باشد که باید در اختیار سازنده باشد و کلید عمومی کلیدی است که هر کسی می تواند آن را داشته باشد ( مثلا گروهی از دوستان )

نحوه ی کار این دو کلید به این صورت است که دوستان ما , فایل ها و متن ها و … خود را با کلید عمومی ما ( که در اختیارشون گذاشته ایم ) رمزگذاری می کنند و آن را برای ما می فرستند . سپس ما آن فایل رمز گذاری شده با کلید عمومی را با کلید خصوصی خود رمزگشایی می کنیم . پس اگر در وسط ارتباط , اطلاعات ارسالی از سوی دوستان ما , توسط شخصی دیگر ضبط شود , نمی تواند آن را بخواند و به فایل ها و … ما دسترسی داشته باشید . چرا که اطلاعات توسط کلید عمومی رمز شده است و تنها با کلید خصوصی که نزد سازنده ی کلید ( یعنی ما ) است قابل بازگشایی است .

عکس روند بالا نیز امکان پذیر است البته با کمی تغییر ! به این صورت که ما می توانیم با استفاده از کلید خصوصی خودمان یک فایل را رمز کنیم . حال هر کسی که کلید عمومی ما را داشته باشد , می تواند فایل رمزشده ی ما را رمزگشایی و باز کند .

پس می توان این طور جمع بندی کرد که :

الف ) فایل رمز شده با کلید عمومی , تنها با استفاده از کلید خصوصی قابل رمزگشایی است .

ب ) فایل رمز شده با کلید خصوصی , با استفاده از هر کلید عمومی قابل رمزگشایی است .

توجه : منظور از هر کلید عمومی و کلید خصوصی , کلید هایی هستند که توسط یک شخص ساخته شده است و هر فرد کلید منحصر به فرد خود را دارد .

سوال دوم :

جواب این سوال کاملا بستگی به استفاده ی ما دارد . به عنوان مثال به 3 حالت زیر توجه کنید :

الف ) من می توانم برای ارسال فایل به دوست و یا دوستانم از کلید خصوصی خود استفاده کنم و فایل های خود را با کلید خصوصی خود که نزد خودم است رمز کنم و در نهایت آن را ارسال کنم , حال دوستانم می توانند این فایل رمز شده را با استفاده از کلید عمومی من که نزد خودشان است , رمزگشایی کنند .

ب ) من می توانم برای ارسال فایل به دوستم از کلید عمومی دوستم ( که به من داده است ) استفاده کنم و فایل های خود را با استفاده از کلید عمومی دوستم رمز کنم و در نهایت آن را ارسال کنم . حال دوست من می تواند این فایل رمز شده را با استفاده از کلید خصوصی خود , رمزگشایی کند .

ج ) من می توانم کلید عمومی خودم را در اختیار هیچ کسی قرار ندهم و فقط آن را نزد خودم نگه دارم . حال می توانم اطلاعات و فایل ها و … خودم را با یکی از کلید هایم رمز کنم و هر موقع که لازم داشتم آن ها را رمزگشایی کنم .

سوال سوم :

در درجه ی اول باید از کلید خصوصی و passphrase آن محافظت کرد و فقط آن را نزد خود نگه داشت . در مرحله بعد باید از کلید عمومی محافظت کرد یعنی آن را فقط دست افرادی قرار داد که می خواهیم اطلاعات به دست آنان برسد .

با توجه به این که فایل های رمز شده توسط کلید خصوصی , قابل رمزگشایی توسط کلید (های) عمومی است , ذکر این مورد که کلید عمومی فقط باید در اختبار دوستان و … قرار بگیرد , مهم است .

 

اما یکی از موارد امنیتی رعایت شده در کلید های خصوصی ( که در بالا در 2 جا به آن اشاره شد ) پسوردی است که بر روی این کلید قرار گرفته است . یعنی برای رمزگشایی یک پیام با استفاده از کلید خصوصی , علاوه بر این که باید کلید خصوصی را داشته باشیم , باید passphrase آن را نیز داشته باشیم . این در حالی است که کلید های عمومی فاقد passphrase می باشند و passphrase متعلق به کلید خصوصی می باشد و فقط سازنده از آن با خبر است و باید از آن مراقبت شود .

حال فرض کنید که کلید خصوصی شخصی را در اختیار دارید و یا passphrase کلید خصوصی خود را فراموش کرده اید . یکی از روش ها برای بدست آوردن passphrase موجود بر روی کلید خصوصی , تست کردن تمامی پسورد های احتمالی بر روی کلید خصوصی است که در ادامه این روند را قالب یک برنامه ی کوچیک به زبان bash دنبال خواهیم کرد .

در ابتدا باید گفت که هسته ی اصلی اسکریپت ما رو خط زیر تشکل خواهد داد :

echo "${word}" | gpg --passphrase-fd 0 --no-tty --decrypt file.asc &> /dev/null

حال کافیست این تیکه کد را داخل یک حلقه قرار دهیم و تمامی پسورد های احتمالی را بر روی کلید خصوصی خود آزمایش کنیم .

حال به کامل شده ی اسکریپت توجه کنید :

#!/bin/bash
# sample of GPG passphrase secret key cracker
# http://OSLearn.ir
reset
i=1
for word in $(cat words.txt); do

        echo "$i@passwd : ${word} : tested";
        i=$[$i + 1]
        echo "${word}" | gpg --passphrase-fd 0 --no-tty --decrypt file.asc &> /dev/null

        if [ $? -eq 0 ]; then
           echo "=================================";
           echo "[#] GPG passphrase is : ${word}";
           echo "=================================";
           exit 0;
        fi
done;
exit 1;

توجه : تمامی پسورد های احتمالی را در فایلی به نام words.txt قرار داده ایم .

توجه : file.asc فایل رمز شده ی ما می باشد که قابل رمزگشایی با استفاده از این کلید خصوصی است .

نکته : قبل از اجرای این اسکریپت لازم است که کلید خصوصی مربوطه را import کنیم .

نکته : فرض بر آن شده که دو فایل words.txt و file.asc در دایرکتوری اسکریپت قرار دارند . لذا از درج آدرس کامل آن ها خودداری شده است .

حال کافیست به عنوان نمونه این اسکریپت را اجرا کنیم :

chmod +x GPSC.sh
./GPSC.sh

GPSC

توجه :‌ برنامه ی بالا یک اسکریپت کوچیک است که از ضعف های بالایی و سرعت کمی برخوردار است چرا که این ارسال صرفا یک نمونه برای آشنایی با زبان برنامه نویسی bash و کلید خصوصی GPG است .

منبع : او اس لرن | http://OSLearn.ir
نویسنده : E2MA3N

 

برای بحث در انجمن مربوطه کلیک کنید



برچسب ها : , , ,