تخزين كلمات السر في صندوق البريد عادةٌ سيئةٌ

by

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

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

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

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

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

طريقة الإستعمال

ملاحظة: يوجد فيديو عن إستعمال المخطوطة في الأسفل

الطريقة السهلة: إضغط على الوصلة ثم قم بإختيار و تنزيل احدث ملف المضغوطة. بعد ذلك باشر بإستخراج الملفات منه.
الطريقة المعقدة: إفتح ملف و قم بنسخ المخطوطة (موجودة في الأسفل) اليه و سجله بإسم gpg-get. ثم بإستخدام الطرفية، اضف خاصية الـexecutable للملف من خلال الأمر chmod +x gpg-get في نفس الدليل الذي قمة بتخزين المخطوطة فيه.
بعد الفراغ احدى الطرق، ستكون المخطوطة جاهزة للإستخدام.

إنشاء ملف اسرار جديد:

./gpg-get init

إضافة سطر جديد لملف الأسرار:

./gpg-get add

قراءة الملف:

./gpg-get get

او (للبحث عن سطر معين)

./gpg-get get السطر

هناك العديد من الخصائص الأخرى لهذه المخطوطة ولا يسعني ذكرها بأكملها هنا. لمزيدٍ من المعلومات:

./gpg-get help

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

./gpg-get clean
#! /bin/bash
#Y                          بسم الله الرحمن الرحيم
#Y gpg-get version 0.1
echo "
********************************************************************************
Warning! While runung, this script stores the passwords as clear text in a 
temporary file and then removes it before terminating. If the script was 
terminated midway, the file will not be removed! 
Use the \`clean' option to remove it.
********************************************************************************
"
if [ $1 == "get" ]; then
	gpg access.gpg
	# testing for errors from gpg
	if [ $? -ne 0 ]; then
		echo "* An error accured in gpg! aborting"
		exit 1
	fi
	#testing if access file exists
	if [ -f access ]; then
		if [ -z $2 ]; then
			less access
		else
			grep -i $2 access | less		
		fi
		rm access
		echo "* Removed temporary password file. have a nice day.
		"
	else
		echo "* password file was not found!"
	fi	
	
#adding passwords
elif [ $1 == "add" ]; then
	gpg access.gpg
	# testing for errors from gpg
	if [ $? -ne 0 ]; then
		echo "* An error occurred in gpg! aborting"
		exit 1
	fi
	#testing if access file exists
	if [ -f access ]; then
		cp access.gpg access.gpg.bkup
		echo "enter the new line to append to the access file"
		read passline
		echo $passline >> access
		echo "* re-encrypting gpg file. enter a new (or the same) password;"
		gpg -c access
		if [ $? -ne 0 ]; then
			echo "* An error occurred in gpg! aborting"
			exit 1
		fi
		echo "* Added new entry!"
		rm access
		echo "* Removed temporary password file. have a nice day.
		"
	else
		echo "* password file was not found!"
	fi	

elif [ $1 == "clean" ]; then
	echo "removing passwords file..."
	if [ -f access ]; then
		rm access
		echo "done! bye
		"
	else
		echo "There is nothing to remove, bye.
		"
	fi

elif [ $1 == "init" ]; then
	echo "creating new access file..."
	if [ -f access.gpg ]; then
		echo "encrypted access file already exists! bye
		"
		exit 1
	else
		touch access
		gpg -c access
		if [ $? -ne 0 ]; then
			echo "* An error occurred in gpg! aborting"
			exit 1
		fi
		echo "* Added new entry!"
		rm access
		echo "new access file created!
		"
	fi

else 
	echo "Usage:
   gpg-get ACTION ARGUMENT

ACTION is substitute with:

	init:   creates a new empty password file. only one password file can exist 
           per directory
   get:    To grep a line from the password file. ARGUMENT is the string to 
           search for and is optional.
   add:    Append a string at the end of the password file. can also be used to 
           change encryption phrase. a backup file is automatically created with
           the extension \`bkup'.
   clean:  To remove the clear text file.


Written by Sulaiman A. Mustafa  and 
is provided under the gpl version 3 or (at your option) later.

Post bugs/improvements on our mailing list at:
http://groups.google.com.kw/group/gatog?hl=en

__________
GATOG Team
Adnan Alliance Foundation
http://gatog.adnanalliance.org
"
fi


إليكم فيديو مثال على تثبيت و إستخدام المخطوطة…


المصدر: http://gatog.adnanalliance.org/script-center/gpg-get/media/gpg-get.ogg
لا تتردد في الإستفسار عن اي جانب من هذا الموضوع و لن نبخل عليك بالإجابة إنشاء الله.

Tags: , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: