Sunday, August 14, 2011

Cryptography


Cryptography چيست ؟

رمزگذاري عملياتي است كه طي آن اطلاعات اوليه (که به آن متن آشکار گفته مي‌شود) با استفاده از يک الگوريتم (که الگوريتم رمز ناميده مي‌شود) و يك کميت محرمانه (که به آن كليد رمز گفته مي‌شود) به متن غير قابل فهم ديگري (که به آن متن رمز گفته مي‌شود) تبديل مي‌شود به نحوي که بدون دسترسي به کليد رمز، دستيابي به اطلاعات اوليه از روي متن رمز شده غيرممكن باشد.

روشهاي cryptography

· روشهاي سنتي (Traditional)

o الگوريتم Transposition : در اين حالت هنگام رمز نگاري توافق مي شود كه جاي حروف ، بيت ها ، بايتها و ... عوض شود مثلا هميشه جاي بيت 3 و 6 را عوض كند.

o الگوريتم Substitution : به جاي عوض كردن جاي حروف ، بيتها ، بايتها و ... ؛ يك چيزي را با چيز ديگر جايگزين مي كند.

· روشهاي Modern: از پروتكل هاي پيشرفته براي رمز نگاري استفاده مي كند

فرهنگ واژگان ‍Cryptography

· واژه Plain Text: به dataاي گفته مي شود كه مي خواهيد رمز نگاري كنيد.

· واژه Cipher Text : به data اي گفته مي شود كه رمز نگاري شده است.

· واژه Encryption

· واژه Algorithm : چگونه رمز نگاري مي شود (استاندارد است و همه آن را مي شناسند)

· واژه Secret Key : با چه چيزي رمز نگاري مي شود (مخفي است و همه از آن اطلاع ندارند)

· واژه Decryption : چگونه اطلاعات رمزنگاري شده باز مي شود.

· واژه Hashing : اطمينان از دست نخوردن اطلاعات در مسير

تفاوت Hashing و Encryption در اين است كه اطلاعاتي را كه Encrypt مي كنيد ، مي خواهيد رمزنگاري شود و در مسير قابل خواندن نباشد ؛ در عوض در مقصد با كليدي كه دارد (Secret Key) ، بتوان آن را باز كرد و خواند.

اما Hashing فقط براي اطمينان از اين مطلب است كه اطلاعات در طول مسير دست نخورده باقي بماند (Integrity) . در Encryption طول داده ورودي با داده رمز نگاري شده مطابق است . به عنوان مثال اگر يك كتاب را به الگوريتم رمز نگاري بدهيد در قبال آن يك كتاب رمزنگاري شده دريافت مي كنيد. اما در Hashing سايز خروجي هميشه يكسان است زيرا قرار نيست از اطلاعات Hash شده به اصل داده دسترسي پيدا شود . به عنوان مثال چه يك كتاب به الگوريتم Hash بدهيد و چه يك جمله ، خروجي رمزنگاري شده در هر دو حالت سايز يكساني (مثلا يك جمله) خواهد داشت.

پس با در نظر گرفتن كاربرد ما دو نوع Cryptography خواهيم داشت :

· رمزنگاري با هدف رمز نگاري و غير قابل خواندن نمودن اطلاعات

· الگوريتمهاي Symmetric Cryptography

· الگوريتمهاي Asymmetric Cryptography

· رمزنگاري با هدف حصول اطمينان از عدم تغيير ديتا در طول مسير

· الگوريتمهاي Hashing

بررسي كاربردهاي الگوريتمهاي مذكور :

· الگوريتمهاي Symmetric

· براي رمز نگاري اطلاعات استفاده مي گردد.

· الگوريتمهاي Asymmetric

· براي رمز نگاري كليد (Secret Key) استفاده مي شود.

· امضاء ديجيتالي (Digital Signature) : از طريق رمزنگاريValue HASH باعث مي شود اطلاعاتي كه از كسي درياقت مي گردد بعدها آن فرد نتواند مدعي شود كه او اين اطلاعات را نفرستاده است. (Non-Repudiation)

· الگوريتمهاي Hash

· حصول اطمينان از عدم تغيير ديتا در طول مسير (Data Integrity)

· امضاء ديجيتالي (Digital Signature) : از طريق Hmac (ساختار توسعه يافته Hash) صورت مي گيرد كه به تفصيل در ادامه بررسي خواهد شد.

Symmetric Key Cryptography:



همانطور كه در شكل مي بينيد اطلاعات توسط يك كليد (كه اين كليد قبلا با الگوريتمهاي Asymmetric بين دوطرف ردوبدل شده است)، با استفاده از الگوريتمهاي Symmetric رمزنگاري مي شود . در مقصد با استفاده از همان الگوريتمها و از طريق كليد ، اطلاعات رمز گشائي مي گردد.

دومدل كلي براي رمزنگاري Symmetric در نظر گرفته مي شود:

· مدل Stream Cipher

· مدل Block Cipher

در حالت Stream Cipher بدون وقفه با ورود اطلاعات رمز نگاري نيز صورت مي پذيرد . RC4 معروفترين الگوريتم در اين رسته حساب مي شود. به عنوان مثال Wi-Fi در WEP Mode از اين الگوريتم استفاده مي كند.

در حالت Block Cipher ، ديتا را تحويل گرفته ، رمز نگاري مي كند و سپس تحويل مي دهد.DES,3DES&AES معروفترين الگوريتمهاي اين رسته مي باشند.

در عمل بيشتر از Block Cipher استفاده مي شود.

خصوصيتي كه Stream Cipher دارد و شايد بتوان به عنوان حسن اين مدل از آن نام برد، اين است كه اگر داده اي را در دو زمان مختلف جهت رمز نگاري تحويل بگيرد ، خروجي آن متفاوت است . ولي در Block Cipher هر زمان كه اطلاعات ثابتي را دوباره جهت رمز نگاري تحويل دهيد ، خروجي رمز نگاري شده ، همواره يكسان است.

الگوريتمهاي Asymmetric از لحاظ محاسباتي بسيار سنگين است و براي همين در رمزنگاري اطلاعات استفاده نمي شود . ولي چون كليد ها عموما سبك اند ، الگوريتمهاي Asymmetric براي كليدها بسيار مناسب است.

انواع الگوريتمهاي Symmetric

· الگوريتم DES (Data Encryption Standard)

كليدي كه استفاده مي شود 56 بيتي است

ورودي و خروجي Block هاي ديتا ، 64 بيتي است

خيلي امن نيست و در كمتز از 24 ساعت رمزگشائي مي شود.

· الگوريتم 3DES (Triple-DES)

از سه كليد 56 بيتي استفاده مي كند .(كليد 168 بيتي)

ورودي و خروجي Block هاي ديتا ، 64 بيتي است

· الگوريتم AES (Advanced Encryption Standard)

امروزه بهترين نوع رمزنگاري Symmetric است.

سايز ورودي و خروجي block هاي ديتاي آن متغيير است.

سايز كليدش نيز متغيير است (128،192و256 بيتي)

· الگوريتمهاي Others : CAST-128/256,IDEA,RC4&Blowfish

Asymmetric Key Cryptography:

قبل از هرچيز ياد آوري مي گردد كه موارد زير ،كاربردهاي الگوريتم Asymmetric است:

· مديريت كليد (Key Management)

· امضاء ديجيتالي (Digital Signature)

همانطور كه مشاهده مي كنيد ، همه به جاي يك كليد ، دو كليد دارند كه هردو متعلق به خودشان است (يعني Shared نيست). از اين دو كليد ،يكي محرمانه است (Private Key) و ديگري محرمانه نيست (Public Key) يعني اگر لازم باشد مي توانيد Public Key را به طرف مقابل بدهيد . هر آنچه كه با Public Key رمزنگاري مي شود فقط با معادل Private Key آن باز مي شود و بلعكس.

پس بطور كلي اطلاعاتي را با الگوريتم هاي Symmetric و با استفاده از Shared key ، رمز نگاري مي كنيم. Shared key را با استفاده از الگوريتمهاي Asymmetric رد و بدل مي كنيم. به اينصورت كه Shared Key را با استفاده از Public Key طرف مقابل رمز مي كنيم و در مقصد با استفاده از Private Key خودش ، Shared Key را رمز گشائي مي كند. براي اينكه مطمئن شويم اطلاعات در طول مسير تغيير نكرده به موارد فوق Hash را اضافه مي كنيم.

امضاء ديجيتالي (Digital Signature) :Hash را نيز موقع ارسال با Private Key خودمان رمزنگاري مي كنيم. اين Hash در مقصد فقط با Public Key مي تواند باز شود. پس اگر Hash اي را بتوانيد با Public key كسي باز كنيد اين بدين معنا است كه اين Hash حتما با Private Key آن فرد رمزنگاري شده است و از آنجا كه Private Key آن فرد را كسي جز خودش ندارد ، نمي تواند ادعا كند كه اطلاعات را او ارسال نكرده است.(None-Repudiation)

نكته : به Hash اي كه با Private Key رمز شده باشد Digital Signature (امضاء ديجيتالي ) مي گويند.

الگوريتم Hash ,Hmac اي است كه با Private Key رمز نگاري مي شود و براي امضاي ديجيتالي استفاده مي گردد.

انواع الگوريتمهاي Asymmetric

· الگوريتم RSA

سايز Block ديتاي ورودي و سايز كليد ، متغيير است

كاربرد آن امضاي ديجيتالي و مديريت كليد است

· الگوريتم DH (Diffie-Hellman)

كاربرد آن فقط مديريت كليد است

· الگوريتم DSA (Digital Signature Algorithm)

فقط در امضاي ديجيتالي كاربرد دارد

· الگوريتم PKCS (Public Key Cryptography Standard)

مجموعه 15 استاندارد كه موارد بالا را پوشش داده است

· الگوريتمهاي غيره

ECC(Elliptic Curve Cryptography),EKE(Encrypted Key Exchange),ELGAMAL

Hash Algorithm:

اصطلاحا به آن Message Digest ، One-way Encryption و Digital Fingerprint نيز مي گويند.

از اين رو Hash را One-way Encryption مي نامند كه قرار نيست اطلاعاتي كه Hash شد قابليت رمز گشائي داشته باشد.

تفاوت Digital Signature و Digital Fingerprint

· اگر به اطلاعاتي ، Hash بچسبانيد انگار به آن اطلاعات اثر انگشت زده ايد (Digital Fingerprint)

· اگر به اطلاعاتي ، Hash بچسبانيد و آن Hash را نيز با Private Key خودتان رمز نگاري كنيد انگار آن اطلاعات را امضاء كرده ايد (Digital Signiture)

هدف از Hash اين است كه مطمئن شويد اطلاعات در طول مسير دستخوش تغيير نشده است (Data Integrity)


نحوه Hashing به اينصورت است كه وقتي داده اي را مي خواهيم به مقصدي بفرستيم ، ابتدا داده را وارد الگوريتم Hashing مي كند و از روي داده يك Hash Value مي سازد. در قدم بعدي داده و Hash Value را با هم ارسال مي كند . در مقصد وقتي داده را دريافت كرد يك بار خودش داده را وارد الگوريتم Hashing مي كند و براي خودش يك Hash Value مستقل درست مي كند . اگر Value اي كه مجددا ساخته شده با Value دريافتي برابري كند اين بدان معنا است كه اطلاعات در طول مسير دستخوش تغيير نشده است.

انواع الگوريتمهاي Hashing

· الگوريتم MD (Message Digest)

· الگوريتمهاي MD2,MD4

· الگوريتم MD5

يكي از معروفترين الگوريتمهاي Hash است

خروجي آن 32 رقمي است (128 بيتي)

خيلي امن نيست و كمتر از يكساعت رمزگشائي مي شود.

· الگوريتم SHA0&SHA1(Secure Hash Algorithm)

يكي از معروفترين و از بهترين الگوريتمهاي HASH است

خروجي آن 40 رقم است (160بيتي)

· الگوريتم SHA2 (224/256/384/512)


نویسنده : علی شریعتی

مدرس دوره های شبکه

1 comment:

  1. outstanding, thanks again for this amazing post, i was wondering if you could write a post about SSL Interception and using one-time Pad to avoid ssl interception and related attacks.

    ReplyDelete