۱۳۹۰ شهریور ۱۶, چهارشنبه

رمزنگاري داده و ايميل







رمزنگاري نه تنها ارتباطات اينترنتي شما را از طريق ارائه قابليت امضا كردن پيام‌ها و رمزكردن متن‌ها، امن‌تر مي‌كند، بلكه حفاظت از حريم شخصي شما را نيز تضمين مي‌كند. شايد اطلاع داشته باشيد که اتحاديه اروپا درباره حفظ و نگهداري از اطلاعات ارتباطي توسط ارائه دهند‌گان خدمات اينترنتي و  شركت‌هاي موبايل قوانين ويژه‌اي تنظيم کرده‌است. با توجه به اطلاعات كارت‌هاي نقدي و اعتباري و ساير اطلاعات مشابه، مي‌توان يك پروفايل كامل از اطلاعات شخصي ايجاد كرد. منبع اطلاعاتي مورد استفاده براي اين پروفايل نه تنها از طريق داده‌هاي فوق بلكه از طريق ساير داده‌هايي كه با استفاده از الگوريتم‌هاي داده‌كاوي به دست مي‌آيند، تأمين مي‌شود. به‌احتمال، آن‌ها تاكنون نيز اطلاعات بسيار زيادي را درباره شما و عادت‌هايتان جمع‌آوري كرده‌اند، اما اكنون وقت آن است كه براي مقابله با اين مسئله كاري انجام دهيد.

رمزنگاري‌‌هاي متقارن و نامتقارن
ريشه عبارت رمزنگاري (Cryptography)، يك عبارت يوناني به نام Kriptós  است كه به معني نوشتن به صورت مخفي و به اصطلاح Gráphein است. به‌طوركلي ما رمزنگاري (Cipher) را به دو گروه متقارن و نامتقارن، تقسيم مي‌كنيم. عبارت‌هاي متقارن و نامتقارن نيز به ساختار كليد مورد استفاده براي رمزنگاري و رمزگشايي داده‌ها اشاره دارد. براي رمزگذاري داده و پيغام به ترتيب به اطلاعاتي درباره چگونگي رمزگذاري و رمزگشايي داده(رمزنگاري)  و يک کليد نياز است.  كليد مورد اشاره، عنصر محرمانه فرآيند رمزنگاري است و دانستن آن به شما امكان مي‌دهد تا داده‌هاي رمزشده با آن كليد را رمزگشايي كنيد. هر كليد را براي يك دوره طولاني مي‌توان مورد استفاده قرار داد يا آن‌که به ازاي هر پيغام از يك كليد مجزا استفاده كرد.


ويژگي كليدهاي رمزنگاري متقارن در اين است كه براي رمزنگاري داده و همچنين رمزگشايي اطلاعات رمز‌شده، در هر دو مورد از يك كليد يكسان استفاده مي‌شود (يا آن‌که كليدهاي مورد استفاده براي رمزنگاري و رمزگشايي با يكديگر ارتباط داشته و مي‌توان با داشتن يكي، ديگري را از طريق محاسباتي به دست آورد). به عبارت ديگر، فرستنده و گيرنده پيام مبادله‌شده، بايد هر دو يك كليد را در اختيار داشته‌باشند و بايد آن كليد را قبل از ارسال پيام با يكديگر مبادله كنند و همين مسئله مبادله كليد قبل از ارسال پيام، هميشه به عنوان نقص اصلي روش‌هاي متقارن شناخته‌شده است.يكي از نخستين روش‌هاي رمزنگاري با نام Caesar Cipher شناخته شده‌است. جوليوس سزار براي رمزنگاري نامه‌ها، به اين ترتيب عمل مي‌كرد كه هر حرف نامه اصلي را با سومين حرف بعد از آن در فهرست حروف الفبا، جانشين مي‌كرد.


به اين ترتيب، A به D و B به E و به همين ترتيب Z به C تبديل مي‌شد. روش كار الگوريتم به اين ترتيب بود، هر يك از كلمات نامه با حرفي كه در ترتيب حروف الفبا با حرف كنوني به اندازه مشخصي جلوتر يا عقب‌تر بود، جانشين مي‌شد كه در اين مورد تعداد مشخص عدد 3 است.الگوي جانشيني و نگاشت كلمات براي ايجاد متن رمزشده، در طول سال‌ها تكامل يافت و بعضي از روش‌هاي جديد حتي در ابزارهاي مكانيكي رمزنگاري، مورد استفاده قرار گرفت. يكي از مثال‌هاي معروف، به ماشين معروفي به نام ENIGMA مربوط مي‌شود كه در طول جنگ جهاني دوم نيروهاي آلماني از آن استفاده کردند (در سايت ويكي‌پديا، مقاله بسيار خوب و كاملي وجود دارد كه روش تحليلي مورد استفاده توسط اين ماشين را براي رمزنگاري نامه‌ها شرح مي‌دهد). بيش از دويست‌هزار عدد از اين ماشين‌ها توليد شده و مورد استفاده بودند و هر يك از اپراتورها فهرستي از كدها داشتند كه به آن CodeBooks مي‌گفتند و اين فهرست به طور ماهيانه تغيير مي‌كرد.


در نهايت، روش مورد استفاده براي اين رمزنگاري در سال 1930 در انگليس توسط گروهي از محققان از جمله رياضيدان لهستاني ماريان‌راجوسکي و آلِن‌تورينگ از Bletchley Park  و تحليل و شناسايي (شکسته)شد، اما عموم مردم در دهه 1970 از آن مطلع شدند، زيرا اين مسئله از لحاظ اهميت در سطح فوق‌سري طبقه‌بندي شده‌بود.امروزه، به كمك كامپيوترهاي مدرن، روش‌هاي متقارن بسيار زيادي وجود دارد كه مي‌توان آن‌ها را در سطح امنيتي مناسبي ارزيابي كرد. به‌عنوان مثال، روش AES (استاندارد پيشرفته رمزنگاري يا Rijndael كه توسط جون‌ديمين و وينسنت‌ريجمنت ارائه شد)، روش 3DES  (يا Data Encryption Standardسه لايه يا استاندارد سه لايه رمزنگاري كه براساس كارهاي Horst Feistel ارائه شده) يا روش IDEA (سرنامData Encryption Algorithm International)، ازجمله الگوريتم‌هايي هستند كه مي‌توان به آن‌ها اشاره كرد. همه اين روش‌هاي رمزنگاري متقارن و پيشرفته بعد از دهه 1950 توسعه داده شده و پياده‌سازي شدند. روش‌هاي رمزنگاري قبل از اين زمان به طور كلي به عنوان روش‌هاي كلاسيك شناخته مي‌شدند. اما تا سال 1970 طول كشيد تا متخصصان رمزنگاري راه‌حلي را براي مسئله مبادله كليد رمزنگاري، پيدا كنند (اين كار توسط ويتفيلد‌ديفي، مارتين‌هلمن و رالف‌مرکل پياده‌سازي شد). همچنين بر اساس همين ايده، مفهوم جديدي به نام كليدهاي نامتقارن توسط ادي‌شمير، ران‌رايوست و لئونارد‌ ادل‌من در سال 1977 ارائه شد.

آنچه خواهيد آموخت
- چگونگي استفاده از کليدهاي Gnu PG
- چگونگي رمزگذاري داده در سطح سيستم‌فايلي
 آنچه بايد بدانيد
- اصول رمزنگاري متقارن و غيرمتقارن
- اصول الگوريتم


الگوريتم‌ها يا متدهاي رمزنگاري نامتقارن، براي رمزنگاري و رمزگشايي داده‌ها يا پيام‌ها، از كليدهاي متفاوتي استفاده مي‌كنند. به تركيب اين دو كليد با يكديگر يك جفت‌كليد مي‌گويند كه گاهي از نام كليد يا كليد نامتقارن نيز براي آن استفاده مي‌شود. يكي از دو قسمت اين جفت كليد بعد از ايجاد شدن، به صورت كاملاً محرمانه حفظ مي‌شود كه به اين قسمت از كليد، كليد محرمانه يا Private key مي‌گويند. قسمت دوم مرتبط با كليد محرمانه را كليد عمومي يا Public key مي‌گويند كه به صورت آزادانه در اختيار همگان قرار مي‌گيرد. از يك كليد براي رمزنگاري پيام‌ها استفاده مي‌كنند و به علت ماهيت و ساختار الگوريتم رياضي ايجاد كننده اين دو كليد، تنها راه رمزگشايي رمز حاصل و دستيابي به اصل پيام، استفاده از كليد دوم است.


از لحاظ عملي نيز توليد كليد محرمانه از روي كليد عمومي يا بالعكس غيرممكن است. همچنين امكان رمزگشايي از پيام رمز شده با استفاده از كليدهاي مختلف غيرممكن است. به مورد دوم كه سعي در استفاده از رمزهاي تصادفي فراوان دارد، به اصطلاح حمله به روش Brute force مي‌گويند. استفاده از اين روش حتي در صورت استفاده از اطلاعات پيش‌فرض، به ميلياردها سال‌ زمان نياز دارد تا رمز محرمانه شناسايي شود.

كليدهاي محرمانه و عمومي
مفهوم كليدهاي محرمانه و عمومي دو كاربرد مهم دارد: كاربرد اول، رمزنگاري و رمزگشايي داده و كاربرد دوم، توليد امضاهاي ديجيتال و تأييد آن‌ها است.


رمزنگاري و رمزگشايي
دو نفر را در نظر بگيريد كه نام يكي آليس و ديگري باب است. آليس يك جفت كليد توليد مي‌كند (او اين كار را يك بار انجام مي‌دهد و بارها از نتيجه آن استفاده مي‌كند)، سپس كليد عمومي را منتشر مي‌كند تا باب نيز به آن دسترسي داشته‌باشد.باب از اين كليد عمومي براي رمزنگاري پيام‌هايي كه بايد براي آليس ارسال شوند، استفاده مي‌كند. به اين ترتيب، با توجه به ماهيت كليدهاي محرمانه و عمومي، اكنون تنها كليد محرمانه آليس است كه پيام ارسالي توسط باب را رمزگشايي مي‌كند و به عبارتي تنها كسي  است كه نامه را مي‌خواند و مالك كليد محرمانه فوق است. به اين ترتيب، هر كسي كه كليد عمومي آليس را در اختيار داشته‌باشد مي‌تواند پيام رمزشده‌اي ارسال كند كه تنها آليس بتواند آن‌را رمزگشايي كند. به همين ترتيب، اگر آليس بخواهد پيام محرمانه‌اي را به باب ارسال كند، از كليد عمومي كه توسط باب توليد و منتشر شده‌باشد، استفاده مي‌كند.

شكل 1- در برنامه Enigmail با استفاده از دكمه OpenPGP امكان امضا يا رمزنگاري پيام‌ها يا هر دو كار را به صورت همزمان دارد.



امضا
كاربرد دوم از همان كليد آليس، اما به روش معكوس استفاده مي‌كند. تصور كنيد، آليس پيامي را توليد كرده و آن‌را توسط كليد محرمانه خود رمزنگاري مي‌كند. در اين صورت هر كسي كه به كليد عمومي آليس دسترسي داشته‌باشد مي‌تواند اين پيام رمز‌شده را دريافت كرده و رمزگشايي كند تا به محتويات اصلي پيام دسترسي داشته‌‌‌‌‌‌‌‌‌‌‌‌‌باشد. به اين ترتيب، دريافت كننده پيام مي‌تواند اطمينان حاصل كند كه پيام حتماً توسط آليس رمزنگاري شده‌ و نويسنده پيغام آليس بوده است، زيرا طبق تعريف، تنها آليس است كه به كليد محرمانه خود دسترسي دارد. به اين فرآيند كه به احراز هويت و اطمينان از مبدأ پيام منجر مي‌شود، به اصطلاح امضا كردن پيام مي‌گويند.


به‌طورکلي دو روش اصلي نامتقارن وجود دارد كه روش‌هاي امني به‌شمار مي‌روند و شما از آن‌ها مي‌توانيد استفاده كنيد. اين دو روش عبارتند از: RSA (سه حرف اول نام مخترعان آن، يعني Rivest ،Shamir ،Adleman) و روش ElGamal كه توسط طاهر الگمل ارائه‌شده است. علاوه‌بر اين براي امضاي ديجيتال، الگوريتم ديگري به نام DSA يا الگوريتم امضاي ديجيتال وجود دارد.

PGP ،OpenPGP و S/MIME
به‌طوركلي روش‌هاي RSA ،ElGamal و DSA مهم‌ترين الگوريتم‌هاي نامتقارن به‌شمار مي‌روند و روش‌هاي AED ، 3DES يا IEDA (که اين نيز به‌عنوان اختراع به ثبت رسيده‌است) نيز الگوريتم‌‌هاي متقارن اصلي هستند و مي‌توانيد به سادگي از آن‌ها براي رمزنگاري يا رمزگشايي يا امضاي ديجيتال داده‌ها استفاده كنيد. اما براي استفاده عملي از آن‌ها در دنياي واقعي، شما بايد مطالب فراوان ديگري را نيز بياموزيد. از جمله اين موارد مي‌توان به نحوه مديريت داده، انتخاب الگوريتم مناسب براي ايجاد جفت كليدها، نحوه رمزنگاري يا رمزگشايي پيام‌ها و ساير موارد اشاره كرد.براي آن‌که قضيه كمي پيچيده‌تر و واقعي‌تر شود، بايد بدانيد كه در برنامه‌هاي مدرن، براي رمزنگاري كل يك پيام از روش‌هاي نامتقارن استفاده نمي‌كنند. رمزنگاري حجم بزرگي از داده به روش‌هاي نامتقارن، به زمان زيادي نياز دارد، كه با زمان مورد نياز در الگوريتم‌هاي متقارن، قابل مقايسه نيست. در نتيجه، به دليل آن‌که امكان استفاده عملي از يك روش، اهميت بالايي دارد، به ازاي هر پيام مبادله شده يك كليد متقارن براي رمزنگاري آن پيام ايجاد مي‌شود. سپس همين كليد متقارن، با استفاده از قسمت كليد عمومي در جفت كليد نامتقارن مربوط به گيرنده پيام رمزنگاري مي‌شود. اين فرآيند در نهايت دو  خروجي توليد مي‌كند.


اولي يك بلاك داده است كه به روش متقارن رمزنگاري شده‌ و دومي كليد متقارن مرتبط با بلاك داده مذكور است كه خود اين كليد به يكي از روش‌هاي نامتقارن (با استفاده ازكليد عمومي گيرنده پيام) رمزنگاري شده‌است. به‌اين ترتيب، گيرنده اين دو خروجي ابتدا با استفاده از كليد محرمانه خود رمز متقارن مربوط به پيام را رمزگشايي و استخراج مي‌كند، سپس از كليد استخراج‌شده براي رمزگشايي داده ارسالي استفاده مي‌كند.بعد از اين‌كه همه اين الگوريتم‌ها در اختيار عموم قرار گرفت، نخستين موردي كه اين تركيب از الگوريتم‌ها را پياده‌سازي كرده، برنامه‌اي به نام PGP (سرنام Pretty Good Privacy) بوده كه در سال 1991 توسط فيل زيمر من ارائه شد و استفاده از آن به مرور گسترش يافت و به يك ابزار تجاري تبديل شد. همه برنامه‌هاي PGP به همراه كد مرجع خود ارائه نمي‌شوند. به علاوه اجازه خروج برنامه PGP به‌صورت برنامه كامپيوتري، از ايالات متحده صادر نشد (يك نسخه بين‌المللي از اين برنامه با نام نسخه 5.0i وجود دارد).


 در نهايت اين برنامه به صورت پرينت‌شده و در قالب كتاب به صورت قانوني از امريكا خارج شد. سپس اين كد در خارج از امريكا اسكن و به متن تبديل شد و بخشي از كد به نام مخترع آن به  ثبت‌رسيد. به‌طور خلاصه، چون امكان بررسي همه قسمت‌هاي كد اين برنامه فراهم نشد، در نتيجه، اين دسته از برنامه‌ها به‌طوركامل قابل اعتماد نيستند. به‌عنوان مثال، ممكن است راه‌هاي نفوذ مخفي يا الگوريتم‌هاي خاصي در اين برنامه‌ها وجود داشته باشد كه كاربران هيچ نوع اطلاعاتي در مورد آن‌ها ندارند.استفاده از كدهاي رمزنگاري، به ميزان اعتماد شما به آن‌ها بستگي دارد. براي رفع مشكلات مربوط به مجوز بهره‌برداري و مسائل مرتبط با حق اختراعات انحصاري برنامه‌ها، ايده پياده‌سازي برنامه‌اي به نام GnuPG توسط ورنر کورچ ارائه شد.


 اين برنامه، استاندارد OpenPGP را پياده‌سازي مي‌كند (RFC 2440 كه با نام PGP/MIME شناخته شده‌است). براساس روش PGP كه توسط فيل زيمرمن پياده‌سازي شده، ايجاد شده‌است.اما اگر فقط يك استاندارد وجود داشت، كارها بسيار راحت‌تر مي‌شد. همچنين نسخه‌اي تحت عنوان S/MIME وجود دارد (MIME امن با شماره RFC 2822) که براي رمزنگاري از روش‌هايي استفاده مي‌كند كه در OpenPGP نيز استفاده مي‌شوند. اما هر دو استاندارد، كليد و ساختار پيام متفاوتي دارند. در نتيجه، با يكديگر ناسازگارند. به علاوه، مدل اعتمادسازي اين دو استاندارد نيز متفاوت است. در حالي كه OpenPGP امكان اعتمادسازي حجم گسترده‌اي از اطلاعات محيط وب را (web of trust) فراهم مي‌كند،  در طرف مقابل روش S/MIME از X.509  نسخه سوم استفاده مي‌كند و مبتني بر تأييدنامه‌هايي است كه به صورت كامل و دقيق براساس ساختار سلسله مراتبي، توليد مي‌شوند (استاندارد X.509، فرمت‌هاي استاندارد را براي كليدهاي عمومي و الگوريتم تأييد و اعتبارسنجي مسير و منبع آن كليد فراهم مي‌كند. براي اطلاعات بيشتر درباره اين استاندارد به سايت ويکي‌پديا مراجعه كنيد).

الگوريتم‌هاي Hash
پروتكل‌هاي رمزنگاري از الگوريتم‌هايي استفاده مي‌كنند كه مفهومي به نام اثرانگشت يا مقدار Hash را براي داده‌ها توليد مي‌كنند. خروجي توليدشده با نام Hash معمولاً حجم بسيار كمي دارد و نمي‌توان از آن براي بازسازي دوباره داده اصلي استفاده كرد (اگر امكان توليد دوباره داده اصلي فراهم بود، در اين صورت الگوريتم‌هاي Hash بهترين مكانيزم قابل تصور براي فشرده‌سازي داده‌ها به شمار مي‌آمدند). اين مقدار Hash بايد حجم مشخص و محدودي داشته‌باشد. همچنين اين الگوريتم بايد طوري باشد كه توليد مقدار Hash يكسان براي دو سند متفاوت، غيرممكن يا تقريباً غيرممكن باشد. اين مورد را توليد تصادف يا Generation  Of   Collistions مي‌گويند.ممكن است شما در گذشته با مفاهيم مرتبط با Hash، قبل از به كاربردن بسته‌هاي نرم‌افزاري فوق نيز آشنا باشيد (به‌عنوان مثال، تجربه استفاده از الگوريتم‌هاي md5sum يا sha1sum). در رمزنگاري، به ويژه در توليد امضاهاي ديجيتال، از الگوريتم‌هاي SHA1 و MD5 به‌طور گسترده استفاده مي‌شود. البته، محققان روش‌هايي را پيدا كرده‌اند تا تعداد كنترل‌هايي را كه براي پيدا كردن خروجي مشابه وجود دارد، كاهش دهند. به‌عنوان مثال، در مورد MD5 دو فايل را در نظر گرفتند كه مقدار Hash مربوط به آن‌ها مشابه بود. اين دو مورد يكي نامه‌اي از پيشنهادها بود كه به آليس تعلق داشت و ديگري Hash دستوري بود كه جوليوس سزار امپراتور روم آن را نوشته بود.

"براي رمزگذاري داده و پيغام به ترتيب به اطلاعاتي درباره چگونگي رمز‌گذاري و رمزگشايي داده(رمزنگاري) و يک کليد نياز است."


هر چند كه به‌اين ترتيب، بايد MD5 و SHA1 را بايد يك روش ناامن به حساب آورد، اما از آنجا كه اين دو مورد، بخشي از الگوريتم‌هاي DSS هستند، در نتيجه استفاده از آن‌ها ادامه دارد و تا زماني كه اين مسئله تداوم داشته‌باشد، در برنامه‌هايي نظير GnuPG از الگوريتم‌هاي SHA1 و MD5 استفاده خواهدشد. الگوريتم‌هاي بهتري وجود دارد كه در GnuPGP  پياده‌سازي شده‌اند. اما به‌عنوان مثال، SHA256 به جاي DSS از RSA استفاده مي‌كند. متأسفانه به نظر مي‌رسد تا زماني كه يك رويكرد مشخص و جامع در اين مورد در نظر گرفته نشده‌باشد، مجبور هستيم تا با اين مشكل كنار بياييم. البته، مي‌توانيد كليدهاي GnuPG را طوري تنظيم کنيد كه از الگوريتم MD5 استفاده نكند. اما SHA-1 در استاندارد OpenPGP حالت اجباري دارد كه مي‌توان با كم كردن اولويت استفاده از الگوريتم‌هاي Hash متعدد احتمال استفاده از اين الگوريتم را كاهش داد. 


منبع: هكينگ نويسنده: لارس‌پَکس‌کيس ترجمه: امين كلانتري 

ماهنامه شبکه -