رمز و رمزنگاری

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

چکیده[ویرایش]

امروزه در دنیای دیجیتال حفاظت از اطلاعات رکن اساسی و مهمی در تبادلات پیام‌ها ومبادلات تجاری ایفا می‌نماید. برای تامین نیازهای امنیتی تراکنش امن، از رمز نگاری استفاده می‌شود. با توجه به اهمیت این موضوع و گذار از مرحله سنتی به مرحله دیجیتال آشنایی با روش‌های رمز گذاری ضروری به نظر می‌رسد. در این مطالب ضمن بررسی الگوریتم‌های رمز نگاری کلید عمومی(نامتقارن) و کلید خصوصی(متقارن)، جنبه‌های گوناگون کلید عمومی مورد بررسی قرار می‌گیرد و ویژگی‌های هر کدام بیان می‌گردد.

مقدمه[ویرایش]

رشد و گسترش روزافزون شبکه‌های کامپیوتری، خصوصاً" اینترنت باعث ایجاد تغییرات گسترده در نحوه زندگی و فعالیت شغلی افراد، سازمانها و موسسات شده‌است. از این رو امنیت اطلاعات یکی از مسائل ضروری ومهم در این چرخه گردیده‌است. با اتصال شبکه داخلی سازمانها به شبکه جهانی، داده‌های سازمان‌ها در معرض دسترسی افراد و میزبان‌های خارجی قرار می‌گیرد. اطمینان از عدم دستیابی افراد غیر مجاز به اطلاعات حساس از مهمترین چالش‌های امنیتی در رابطه با توزیع اطلاعات در اینترنت است. راه حل‌های مختلفی نظیر محدود کردن استفاده از اینترنت، رمزنگاری داده‌ها، واستفاده از ابزار امنیتی برای میزبان‌های داخلی و برقراری امنیت شبکه داخلی ارایه شده‌است. یکی از متداولترین روشهای حفاظت اطلاعات، رمز نمودن آنها است. دستیابی به اطلاعات رمز شده برای افراد غیر مجاز امکان پذیر نبوده و صرفاً" افرادیکه دارای کلید رمز می‌باشند، قادر به بازنمودن رمز و استفاده از اطلاعات هستند. رمز نمودن اطلاعات کامپیوتر مبتنی بر علوم رمز نگاری است. استفاده از علم رمز نگاری دارای یک سابقه طولانی و تاریخی می‌باشد. قبل از عصر اطلاعات، بیشترین کاربران رمزنگاری اطلاعات، دولت‌ها و مخصوصا" کاربران نظامی بوده‌اند. سابقه رمز نمودن اطلاعات به دوران امپراطوری روم بر می‌گردد. امروزه اغلب روش‌ها و مدل‌های رمزنگاری اطلاعات در رابطه با کامپیوتر به خدمت گرفته می‌شود. کشف و تشخیص اطلاعاتی که بصورت معمولی در کامپیوتر ذخیره و فاقد هر گونه روش علمی رمزنگاری باشند، براحتی و بدون نیاز به تخصصی خاص انجام خواهد یافت. از این روست که رمزنگاری داده‌ها با توجه به پیشرفت‌های اخیر تحول یافته والگوریتم‌های نوینی به همین منظور طراحی گردیده‌است.

  1. تغییر_مسیر [[

]]

تعریف رمزنگاری[ویرایش]

رمزنگاری عبارت است از بهم ریختگی اطلاعات به طوری که برای کسی قابل فهم نباشد. فناوری رمزنگاری امکان مشاهده، مطالعه و تفسیر پیام‌های ارسالی توسط افراد غیر مجاز را سلب می‌نماید. از رمزنگاری به منظور حفاظت داده‌ها در شبکه‌های عمومی نظیر اینترنت استفاده می‌گردد. در این رابطه از الگوریتم‌های پیشرفته ریاضی به منظور رمزنمودن پیام‌ها و ضمائم مربوطه، استفاده می‌شود.

الگوریتم‌های رمزنگاری[ویرایش]

انتقال اطلاعات حساس بر روی یک شبکه مستلزم بکارگیری مکانیزمی است که سه ویژگی زیر را تضمین نماید:

  • امنیت : داده ارسالی نمی‌بایست توسط افراد غیر مجاز، استفاده( خوانده ) گردد.
  • هویت : افراد شرکت کننده در ارتباط همان افرادی می‌باشند که ادعا می‌نمایند .
  • غیرجعلی بودن اطلاعات : داده دریافت شده در مقصد با داده ارسال شده در مبداء یکسان بوده و اطلاعات دستکاری نشده باشد.

تکنولوژی هائی که یک ارتباط ایمن را ارائه می‌نمایند، می‌بایست مبتنی بر مکانیزمی باشند که سه ویژگی فوق را تضمین نمایند . اینگونه تکنولوژی‌ها، عموماً" از الگوریتم‌های رمزنگاری استفاده نموده و با رمز نمودن اطلاعات، عملاً" امکان رمزگشائی و دستیابی به داده اولیه توسط افراد غیر مجاز را سلب می‌نمایند. الگوریتم‌های رمزنگاری به دو گروه عمده تقسیم می‌گردند :

  • الگوریتم‌های محدود : در این نوع الگوریتم‌ها، محور امنیت اطلاعات بر محرمانه نگه داشتن الگوریتم استفاده شده در فرایند رمزنگاری استوار است.
  • الگوریتم‌های مبتنی بر کلید: در این نوع الگوریتم‌ها، کلید محرمانه تلقی شده و الگوریتم می‌تواند در دسترس عموم باشد.

در این رابطه از دو مدل رمزنگاری عمده استفاده می‌گردد: کلید خصوصی ( متقارن ) : فرستنده و گیرنده از یک کلید یکسان به منظور رمزنگاری و رمزگشائی استفاده می‌نمایند . کلید عمومی ( نامتقارن ) : به ازای هر کاربر از دو کلید استفاده می‌شود. یکی از کلیدها عمومی بوده و در دسترس همگان قرار داشته و کلید دوم بصورت محرمانه می‌باشد.

رمزنگاری کلید عمومی(نامتقارن) Public Key[ویرایش]

رمزنگاری کلید عمومی که از آن با نام رمزنگاری نامتقارن نیز یاد می‌گردد، از دو کلید متفاوت برای رمزنگاری استفاده می‌نماید : یک کلید برای رمزنگاری و کلیدی دیگر برای رمزگشائی. در رمزنگاری کلید عمومی، با استفاده از یک روش کاملاً" ایمن یک کلید برای ارسال کننده اطلاعات ایجاد و وی با استفاده از کلید فوق، اقدام به رمزنگاری و ارسال پیام رمز شده برای گیرنده می‌نماید. امکان رمزگشائی پیام رمز شده صرفاً" توسط دریافت کننده، امکان پذیر خواهد بود. در رمزنگاری کلید عمومی، سیستم یک زوج کلید خصوصی و عمومی ایجاد می‌نماید. کلید عمومی برای شخصی که از آن به منظور رمزنگاری یک پیام استفاده می‌نماید، ارسال می‌گردد. وی پس از رمزنگاری پیام با استفاده از کلید عمومی، پیام رمز شده را ارسال می‌نماید. دریافت کننده با استفاده از کلید خصوصی، اقدام به رمزگشائی پیام می‌نماید.( ماهیت کلید خصوصی استفاده شده در رمزنگاری کلید عمومی، مشابه کلید خصوصی استفاده شده در رمزنگاری کلید خصوصی نمی‌باشد). حتی اگر یک فرد متخلف، به کلید عمومی دستیابی پیدا نماید وی نمی‌تواند با استفاده از آن اقدام به رمزگشائی پیام رمز شده نماید، چراکه رمزگشائی پیام صرفاً" با استفاده از کلید خصوصی امکان پذیر می‌باشد. برخلاف رمزنگاری کلید خصوصی، کلیدهای استفاده شده در رمزنگاری کلید عمومی چیزی بمراتب بیشتر از رشته‌های ساده می‌باشند. کلید در این نوع رمزنگاری دارای یک ساختار خاص با هشت فیلد اطلاعاتی است که دو فیلد آن به منظور رمزنگاری با استفاده از کلید عمومی استفاده می‌گردد و شش فیلد دیگر به منظور رمزگشائی پیام با استفاده از کلید خصوصی مورد استفاده قرار می‌گیرد. در سیستم رمزنگاری کلید عمومی با توجه به عدم ضرورت مبادله رمز مشترک، اولین مسئله در مدیریت کلید برطرف می‌گردد. معمولترین سیستم نامتقارن، سیستم رمزنگاری کلید عمومی بنام RSA می‌باشد(حروف اول پدیدآورندگان آن یعنی Rivest ، Shamir و Adlemen). می‌توان از یک سیستم نامتقارن برای نشان دادن اینکه فرستنده پیام همان شخصی است که ادعا می‌کند، استفاده کرد. این عمل اصطلاحاً امضاء نام دارد. RSA شامل دو تبدیل است:

۱- امضاء، برای اینکار متن اصلی با استفاده از کلید اختصاصی رمز می‌شود.

۲- رمزگشایی، در این مرحله، عملیات مشابه‌ای روی متن رمزشده صورت می‌گیرد ولی اینکار با استفاده از کلید عمومی است.

برای تایید امضاء بررسی می‌کنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه‌است، امضاء توسط کلید اختصاصی متناظر رمزشده‌است. به بیان ساده‌تر چنانچه متنی از شخصی برای دیگران منتشر شود، آن متن شامل متن اصلی و متن رمز شده متن اصلی توسط کلید اختصاصی همان شخص می‌باشد. حال اگر متن رمزشده توسط کلید عمومی آن شخص که شما از آن مطلعید رمزگشایی شود، مطابقت متن حاصل و متن اصلی نشاندهنده صحت فرد فرستنده‌است، به این ترتیب امضای فرد تایید می‌شود. اساس سیستم RSA فرمول زیر است: X = Y^k (mod r)

که X متن کد شده، Y متن اصلی، k کلید اختصاصی و r حاصلضرب دو عدد اولیه بزرگ است که با دقت انتخاب شده‌اند. این شکل محاسبات، روی پردازنده‌های بایتی بخصوص روی ۸ بیتی‌ها که در کارتهای هوشمند استفاده می‌شود بسیار کند است. بنابراین، اگرچه RSA هم تصدیق هویت و هم رمزنگاری را ممکن می‌سازد، درواقع برای تایید هویت منبع پیام است که از این الگوریتم در کارتهای هوشمند استفاده می‌شود و برای نشان دادن عدم تغییر پیام در طول ارسال و رمزنگاری کلیدهای آتی استفاده می‌گردد. سایر سیستمهای کلید نامتقارن شامل سیستمهای لگاریتم گسسته می‌باشند مانند Diffie-Hellman، ElGamal و سایر طرحهای چندجمله‌ای و منحنی‌های بیضوی. بسیاری از این طرحها عملکردهای یک طرفه‌ای دارند که اجازه تایید هویت را می‌دهند اما رمزنگاری ندارند. معموماً سیستمی امن محسوب می‌شود که هزینه شکستن آن بیشتر از ارزش دیتایی باشد که نگهداری می‌کند.

شکل زیر، فرایند رمزنگاری مبتنی بر کلید عمومی بین دو کاربر را نشان می‌دهد:

Publickey-1.jpg

Publickey-2.jpg

انواع مدل رمزنگاری کلید عمومی[ویرایش]

۱. رمزنگاری کلید عمومی و امنیت

۲. رمزنگاری کلید عمومی و تشخیص هویت

۳. رمزنگاری کلید عمومی و غیرجعلی بودن اطلاعات

۴. رمزنگاری کلید عمومی و گواهینامه دیجیتالی

ویژگی مدل رمزنگاری کلید عمومی[ویرایش]

  • عدم استفاده از کلیدهای مشابه (در رمزنگاری ورمزگشایی)
  • هر کاربر دارای یک زوج کلید ( عمومی، خصوصی) می‌باشد. از کلید عمومی به منظور رمزنگاری داده و از کلید خصوصی به منظور رمزگشائی داده استفاده می‌گردد.
  • این مدل رمزنگاری تقریباً" ۵۰۰ مرتبه کندتر از رمزنگاری کلید خصوصی ( متقارن ) است .
  • از مدل رمزنگاری عمومی به منظور مبادله کلید خصوصی و امضای دیجیتال استفاده می‌شود.

رمزنگاری کلید خصوصی(Private Key )[ویرایش]

منداولترین نوع رمزنگاری مبتنی بر کلید، رمزنگاری "کلید خصوصی" است. به این نوع رمزنگاری، متقارن، سنتی، رمز مشترک، کلید رمز نیز گفته می‌شود. در این نوع رمزنگاری، فرستنده و گیرنده از کلید استفاده شده به منظور رمزنگاری اطلاعات آگاهی دارند. رمزنگاری کلیدخصوصی، گزینه‌ای مناسب به منظور مبادله اطلاعات بر روی اینترنت و یا ذخیره سازی اطلاعات حساس در یک بانک اطلاعاتی و یا یک فایل می‌باشد. از روش فوق، به منظورایمن سازی ارسال اطلاعات در شبکه‌های عمومی استفاده می‌گردد( از گذشته تا کنون ). ایده اولیه و اساسی در چنین سیستم هائی، "اشتراک یک رمز" بوده و دو گروه شرکت کننده در مبادله اطلاعات، بر روی یک "کلید رمزمشترک "، با یکدیگر توافق می‌نمایند. بدین ترتیب امکان رمزنگاری و رمزگشائی پیام‌ها برای هر یک از آنان با توجه به آگاهی از "کلید رمز "، فراهم می‌گردد.

PrivateKey.jpg

رمزنگاری متقارن(کلید خصوصی) چندین نقطه ضعف دارد. مبادله کلیدهای رمز در شبکه‌های بزرگ امری دشوار و مشکل است. علاوه بر این، اشتراک کلیدهای رمز، مستلزم این واقعیت است که فرستندگان و گیرندگان می‌بایست معتبر بوده و قبل از برقراری ارتباط، آشنائی لازم را نسبت به یکدیگر داشته باشند( با تمام افرادیکه قصد ارتباط ایمن با آنان وجود دارد ). همچنین، این نوع سیستم‌های رمزنگاری، نیازمند استفاده از یک کانال ایمن به منظور توزیع کلیدهای " رمز" می‌باشند. الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده می‌کند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد Data Encryption Algorithm یا DEA است که بیشتر بعنوان DES شناخته می‌شود. DES محصول دولت ایالات متحده‌است که امروزه بطور وسیعی بعنوان یک استاندارد بین‌المللی شناخته می‌شود. بلوکهای ۶۴بیتی دیتا توسط یک کلید، که معمولاً ۵۶بیت طول دارد، رمزنگاری و رمزگشایی می‌شوند. DES از نظر محاسباتی ساده‌است و براحتی می‌تواند توسط پردازنده‌های کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) بکار گرفته شوند. این روش بستگی به مخفی‌بودن کلید دارد. بنابراین استفاده از این روش در دو وضعیت زیر مناسب است:

۱- هنگامی که کلیدها می‌توانند با یک روش قابل اعتماد و امن توزیع و ذخیره شوند.

۲- زمانی که کلید بین دو سیستم مبادله می‌شود، قبلاً هویت همدیگر را تایید کرده باشند.

عمر کلیدها بیشتر از مدت تراکنش آنها طول نمی‌کشد. رمزنگاری DES عموماً برای حفاظت دیتا از شنود در طول انتقال استفاده می‌شود. کلیدهای DES ۴۰بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته می‌شوند و بنابراین نباید برای محافظت از اطلاعات مهم و جهت اعتبار طولانی مدت از آنها استفاده شود. کلید ۵۶بیتی عموماً توسط سخت‌افزار یا شبکه‌های بخصوصی شکسته می‌شوند. رمزنگاری DESسه‌تایی عبارتست از کد کردن دیتای اصلی با استفاده از الگوریتم DES که در سه مرتبه انجام می‌گیرد(دو مرتبه با استفاده از یک کلید به سمت جلو (رمزنگاری) و یک مرتبه به سمت عقب (رمزگشایی) با کلید دیگر). در زمینه رمزنگاری متقارن الگوریتمهای استاندارد مختلفی وجود دارد. الگوریتمهایی مانند Blowfish و IDEA در موارد مختلف مورد استفاده قرار گرفته‌اند اما هیچکدام پیاده‌سازی سخت‌افزاری نشدند. بنابراین بعنوان رقیبی برای DES جهت استفاده در کاربردهای میکروکنترلی مطرح نبوده‌اند. استاندارد رمزنگاری پیشرفته دولت ایالات متحده امریکا (AES) الگوریتم Rijndael را برای جایگزینی DES بعنوان الگوریتم رمزنگاری اولیه انتخاب کرده‌است. همچنین الگوریتم Twofish مشخصا برای پیاده‌سازی در پردازنده‌های توان‌پایین مثلاً در کارتهای هوشمند طراحی شد. در ۱۹۹۸ وزارت دفاع امریکا تصمیم گرفت که الگوریتمها Skipjack و مبادله کلید را که در کارتهای Fortezza استفاده شده بود، از محرمانگی خارج سازد. یکی از دلایل این امر تشویق برای پیاده‌سازی بیشتر کارتهای هوشمند برپایه این الگوریتمها بود. برای رمزنگاری جریانی (streaming encryption) (که شامل رمزنگاری دیتا در حین ارسال می‌باشد، یعنی بجای اینکه دیتای کد شده و در یک فایل مجزا قرار گیرد، در هنگام ارسال رمزنگاری صورت می‌گیرد.) الگوریتم DES معمولاً از کلیدهای ۶۴ بیتی برای رمزنگاری و رمزگشایی استفاده می‌کند. این الگوریتم، متن اولیه را به بلوکهای ۶۴ بیتی می‌شکند و آنها را یکی‌یکی رمز می‌کند. الگوریتم پیشرفته‌تر ۳DES است که در آن الگوریتم DES سه بار اعمال می‌شود. نسخه دیگری از این الگوریتم (پایدارتر از قبلی‌ها) از کلیدهای ۵۶بیتی و کلیدهای ۱۶۸بیتی استفاده می‌کند و سه بار عملیات رمزنگاری را انجام می‌دهد.

ویژگی مدل رمزنگاری کلید خصوصی[ویرایش]

  • رمزنگاری و رمزگشائی داده با استفاده از کلید یکسانی انجام می‌شود .
  • تمامی کاربرانی که در یک گروه عضویت داشته و قصد اشتراک داده را بین خود دارند، می‌بایست دارای کلید یکسانی باشند .
  • در صورتیکه یک کلید د چار مشکل گردد ( لورفتن )، تمامی کلیدها می‌بایست تعویض و با کلیدی جدید جایگزین گردند .
  • مهمترین مسئله در ارتباط با این مدل رمزنگاری، عدم وجود امنیت لازم به منظور توزیع کلید است.

موارد کاربرد رمزنگاری[ویرایش]

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

اطلاعات کارت اعتباری

شماره‌های عضویت در انجمن‌ها

اطلاعات خصوصی

جزئیات اطلاعات شخصی

اطلاعات حساس در یک سازمان

اطلاعات مربوط به حساب‌های بانکی

منابع[ویرایش]

۱- Stallings, William. (۲۰۰۵) Cryptography and Network Security, Fourth Edition, Prentice Hall.

۲- Man Young Rhee. (۲۰۰۳) Internet Security_ Cryptographic Principles, Algorithms and Protocols, John Wiley & Sons Ltd.

۳- A. Menezes, P. Van Oorschot, and S. Vanstone (۱۹۹۶) Handbook of Applied Cryptography, CRC Press.

۴- امنیت وب-سایت اطلاع رسانی امنیت اطلاعات ایران

۵- سایت اطلاع رسانی فناوری اطلاعات سخاروش

۶- محمود جاوید-درس امنیت اطلاعات دکتر یزدیان

جستارهای وابسته[ویرایش]

امنیت اطلاعات

رمزنگاری رمزگذاری

رمزگشایی( decryption )

احراز هویت(authentication )

گواهی نامه دیجیتال(certificate authority )