PDA

نسخه کامل مشاهده نسخه کامل : مفاهيم و اصطلاحات پايه اي در مبحث رمزنگاري اطلاعات (Hashing)



Saeid.Online
01-09-2006, 20:38
كدگذاري (Encryption) :

• به پروسه ي تبديل يك پيغام كاملا عادي (Plaintext) به داده هايي كه كاملا تغيير يافته و بدون معني (ciphertext) به نظر مي رسند ، گفته مي شود.

رمزگشايي (decryption) :

• به پروسه ي تبديل ciphertext به plaintext گفته مي شود.

Cryptography

• علم ايجاد ارتباطات امن در دنياي داده ها.

Cryptanalysis

• به روش هاي شكستن ciphertext گفته مي شود ( يعني بدست آوردن plaintext بدون دانستن كليد اصلي ).

Cryptology

• شاخه اي از رياضيات كه سروكارش با cryptography and cryptanalysis است.

Cryptographic algorithm

• كه به آن cipher هم گفته مي شود ، تابعي رياضي است كه انجام عمليات كدگذاري و برعكس را انجام مي دهد.

الگوريتم هاي متقارن (Symmetric algorithms)

• از يك كليد براي رمزگذاري و رمزگشايي استفاده مي كنند (در ادامه بعنوان Private Key Systems معرفي مي شوند).


الگوريتم هاي نامتقارن (asymmetric algorithms) :

• از يك جفت كليد براي كدگذاري و رمزگشايي استفاده مي كنند. اين دو كليد با روابط رياضي به هم مربوط مي شوند اما توليد يكي از ديگري بسيار مشكل است (در ادامه بعنوان Public Key Algorithms معرفي مي شوند).

Block Ciphers

• الگوريتم هاي كدگذاري اطلاعات كه بر روي قطعاتي از داده ها با طول 64-bit كار مي كنند ( مانند DES و RC2 ).


Stream Ciphers

• اين الگوريتم ها تنها يك بيت از داده ها را در هر لحظه كدگذاري مي كنند (مانند RC4).

سيستم هاي كدگذاري بر مبناي روش هاي كليد خصوصي (Private Key Systems) :

• مثالها: DES, AES, IDEA, RC5, RC6, Blowfish, Twofish
• در اين سيستم ها يك كليد براي هر دو حالت كدگذاري و رمزگشايي بكار برده مي شود.
• تنها با تكه هاي ثابتي از قطعات داده ها كار مي كنند (عموما 64 تا 256 بيت) ، بدين معنا كه داده ها بايد به قطعاتي با طول ثابت تبديل و سپس كدگذاري شوند. در اين حالت عموما طول خروجي با طول ورودي يكسان است.
• در اين روش ها از ابزارهايي مانند : عمليات جبري (جمع و ضرب و غيره) ، عمليات بيتي (XOR ، چرخش و غيره ) و table lookups (sBoxes) ، براي اختلاط كليد و داده ها استفاده مي كنند.
• در اين روش ها تنها با تغيير يك بيت از داده ها و يا كليد ، بيت هاي خروجي تا 50 تغيير خواهند كرد.

حملات گزارش شده به سيستم هاي كدگذاري بر مبناي كليد خصوصي :

• Brute force : امتحان كردن تك تك كليدهاي ممكن.
• اگر اختلاط داده ها با كليد به اندازه ي كافي پيچيده و يا كامل نباشد ، الگوريتم بكار گرفته شده ممكن است سبب درز اطلاعاتي درباره ي كليد شود و اين حالت باعث مي شود كه بتوان حدس هاي دقيق تري را براي روش Brute force زد.

مزاياي الگوريتم هاي كدگذاري بر مبناي كليد خصوصي :

• بسيار سريع هستند (تنها به 20 clock cycles/byte or less براي انجام محاسبات نيازمند هستند).
• كليدهايي با طول كوچك براي حفظ امنيت آنها كافي هستند. براي مثال كليدهايي با طول 128 bits تا 100 سال آينده مطمئن هستند (تنها روش quantum cryptography مي تواند آنرا بشكند) و كليدهايي با طول 256 bits حتي در برابر quantum cryptography نيز مقاوم هستند.


سيستم هاي كدگذاري اطلاعات بر مبناي روش هاي كليد عمومي (Public Key Algorithms) :

• مثالها : RSA, Elliptic Curve, Diffie-Helman
• در اينگونه روش ها كليدها با صورت يك جفت ارائه مي شوند. اطلاعاتي كه با يك كليد كد گذاري شده است تنها با جفت كليد ديگر قابل رمزگشايي است و برعكس. (اين دو كليد با روابط رياضي به هم وابسته و مربوط هستند)
• اين روشها به شما اجازه مي دهند تا يك كليد را آزادانه منتشر كنيد (the "public" key) و كليد ديگر را نزد خود محفوظ نگه داريد. ( اين كليد مخفي عموما در كارتهاي هوشمند و يا وب سرورها و .... ذخيره مي شود ).
• در اين روش ها هر كسي مي تواند اطلاعات را با كليد عمومي منتشر شده كدگذاري نمايد اما تنها شما هستيد كه مي توانيد با استفاده از كليد خصوصي خود ، اين داده ها را رمزگشايي نماييد.
• بر عكس ، شما مي توانيد پيغامي را با كليد مخفي خود كدگذاري نماييد و سپس همگاني كه دسترسي به كليد عمومي دارند ، آنرا رمزگشايي كنند.


مثالي از يك سيستم گذاري با كليد عمومي : RSA

• دو عدد اول بزرگ مانند p و q را پيدا نموده و سپس r = p * q را محاسبه نماييد.
• عدد اتفاقي مانند x را انتخاب كرده و سپس y ايي را بيابيد كه به ازاي تمام m هاي كوچكتر از r داشته باشيم : m^xy % r = m
• اينكار با دانستن p و q ساده مي باشد اما تنها با دانستن r بسيار مشكل است و همچنين تجزيه ي r به p و q نيز بسيار مشكل است.
• p و q را فراموش كنيد. كليد عمومي x و r خواهد بود و كليد خصوصي y مي باشد.
• براي كدگذاري اطلاعات با كليد عمومي ، تمام اطلاعات به قطعاتي بيتي با اندازه ي كوچكتر از r شكسته مي شوند.
• فرستنده تنها كافي است e = m^x % r را محاسبه نمايد . در اينجا e قطعه ي گذاري شده است.
• براي رمزگشايي اين قطعه تنها كافي است e^y % r = m محاسبه شود.
• به همين ترتيب داده ي كدگذاري شده با كليد خصوصي (f = m^y % r) را مي توان با كليد عمومي رمزگشايي كرد (f^x % r = m) .
• بايد به خاطر داشت : m^xx != m . بنابراين داده هاي گذاري شده با كليد عمومي را نمي توان با همان كليد عمومي رمزگشايي كرد.



حملات گزارش شده به سيستم هاي كدگذاري با كليد عمومي :

• براي شكستن RSA تنها كافي است كه r به p و q تجزيه شود. تجزيه كردن اعداد بسيار سريعتر از روش brute force است. سختي تجزيه ي يك عدد 512-bit به اندازه ي محاسبه ي 2^64 حالت مختلف كدها در سيستم كدگذاري با كليد خصوصي (روش brute force) است.
• هر چقدر روش هاي سريعتري براي تجزيه ي اعداد ميسر شود ، شكستن RSA نيز به همان نسبت ساده تر خواهد شد.

هش كردن اطلاعات (Hashing) :


• مثالها : MD2, MD5, SHA
• checksum (مجموع مقابله اي(!)) يك پيغام را توليد مي كنند.
• همانند روش هاي كدگذاري بر مبناي كليد خصوصي از عمليات جبري و بيتي پيچيده اي براي تركيب بيت ها و توليد خروجي استفاده مي كنند.
• به اين الگوريتم ها message digest, fingerprint or compression function نيز گفته مي شود.
• اين الگوريتم ها يك طرفه هستند و عمدا طوري طراحي شده اند كه مهندسي معكوس آنها تقريبا غيرممكن باشد.

موارد استفاده از الگوريتم هاي Hash :

• توليد امضاي ديجيتال پيغام ها كه همراه با سيستم هاي كدگذاري كليد عمومي بكار گرفته مي شود. در اين حالت ، پيغام هش شده و سپس اين هش با كليد خصوصي رمزگذاري مي شود. سپس هر كسي كه كليد عمومي را داشته باشد بايد دو كار را انجام دهد تا از اين كه پيغام رسيده پيغام شما مي باشد و يا اينكه تغيير داده شده است ، اطمينان حاصل نمايد : 1- هش فرستاده شده را رمزگشايي كند ( با كليد عمومي ). 2- با استفاده از كليد عمومي ، مقدار هش پيغام را محاسبه كند. اين دو را با هم مقايسه نمايد.
• الگوريتم هاي كدگذاري با كليدهاي عمومي عموما كند مي باشند( عموما هزار بار كندتر از سيستم هاي كدگذاري با كليد خصوصي ). بنابراين تركيب الگوريتم هاي هش كردن اطلاعات با اين روشها بسيار ايده آل هستند زيرا نياز به كدگذاري كل پيغام را با كليد خصوصي منتفي مي كنند. تنها كافي است كه مقدار هش شده ي كل اطلاعات را در اين ميان به بازي گرفت.
• ايجاد يك مقدار با طول ثابت از منبعي از داده ها با طول بسيار زياد. ( لازم به ذكر است كه هش توليد شده منحصر بفرد است. براي مثال اگر كلمه ي Vahid را با الگوريتم MD5 هش كنيم حاصل E5EDE944EBEE46D553DFE88EAB5168CE خواهد شدو يا با استفاده از الگوريتم SHA1 خروجي C6014B4E1596B58399DEEB1B25317FA7A7B29A6D مي باشد. هيچ داده ي ديگري را نمي توان هش كرد كه اين خروجي را توليد كند).
• براي بالاتر بردن امنيت ديتابيس حاوي پسوردهاي كاربران بكار گرفته مي شوند.


حملات گزارش شده در مورد الگوريتم هاي hashing :

• تصادم (Collisions) ، يافتن دو منبع اطلاعات كه يك hash را توليد كنند.
• درز اطلاعاتي در مورد منبع داده ها ( آيا مي توان از مقدار هش ، اطلاعاتي را در مورد منبع آن حدس زد؟! )

منبع مقاله : [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]