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

چکیده
امروزه در دنیای دیجیتال حفاظت از اطلاعات رکن اساسی و مهمی در تبادلات پیام‌ها ومبادلات تجاری ایفا می‌نماید. برای تامین نیازهای امنیتی تراکنش امن، از رمز نگاری استفاده می‌شود. با توجه به اهمیت این موضوع و گذار از مرحله سنتی به مرحله دیجیتال آشنایی با روش‌های رمز گذاری ضروری به نظر می‌رسد. در این مطالب ضمن بررسی الگوریتم‌های رمز نگاری کلید عمومی (نامتقارن) و کلید خصوصی (متقارن)، جنبه‌های گوناگون کلید عمومی مورد بررسی قرار می‌گیرد و ویژگی‌های هر کدام بیان می‌گردد.
مقدمه
رشد و گسترش روزافزون شبکه‌های کامپیوتری، خصوصا اینترنت باعث ایجاد تغییرات گسترده در نحوه زندگی و فعالیت شغلی افراد، سازمان‌ها و موسسات شده‌است. از این رو امنیت اطلاعات یکی از مسائل ضروری و مهم در این چرخه گردیده‌است. با اتصال شبکه داخلی سازمان‌ها به شبکه جهانی، داده‌های سازمان‌ها در معرض دسترسی افراد و میزبان‌های خارجی قرار می‌گیرد. اطمینان از عدم دستیابی افراد غیرمجاز به اطلاعات حساس از مهم‌ترین چالش‌های امنیتی در رابطه با توزیع اطلاعات در اینترنت است. راه حل‌های مختلفی نظیر محدود کردن استفاده از اینترنت، رمزنگاری داده‌ها، واستفاده از ابزار امنیتی برای میزبان‌های داخلی و برقراری امنیت شبکه داخلی ارائه شده‌است.
یکی از متداول‌ترین روش‌های حفاظت اطلاعات، رمز نمودن آن‌ها است. دستیابی به اطلاعات رمز شده برای افراد غیرمجاز امکان‌پذیر نبوده و صرفا افرادیکه دارای کلید رمز می‌باشند، قادر به بازنمودن رمز و استفاده از اطلاعات هستند.
رمز نمودن اطلاعات کامپیوتر مبتنی بر علوم رمز نگاری است. استفاده از علم رمز نگاری دارای یک سابقه طولانی و تاریخی می‌باشد. قبل از عصر اطلاعات، بیشترین کاربران رمزنگاری اطلاعات، دولت‌ها و مخصوصا کاربران نظامی بوده‌اند. سابقه رمز نمودن اطلاعات به دوران امپراطوری روم بر می‌گردد. امروزه اغلب روش‌ها و مدل‌های رمزنگاری اطلاعات در رابطه با کامپیوتر به خدمت گرفته می‌شود. کشف و تشخیص اطلاعاتی که به صورت معمولی در کامپیوتر ذخیره و فاقد هر گونه روش علمی رمزنگاری باشند، براحتی و بدون نیاز به تخصصی خاص انجام خواهد یافت. از این روست که رمزنگاری داده‌ها با توجه به پیشرفت‌های اخیر تحول یافته والگوریتم‌های نوینی به همین منظور طراحی گردیده‌است.
تعریف رمزنگاری
رمزنگاری عبارت است از بهم ریختگی اطلاعات به‌طوری‌که برای کسی قابل فهم نباشد. فناوری رمزنگاری امکان مشاهده، مطالعه و تفسیر پیام‌های ارسالی توسط افراد غیرمجاز را سلب می‌نماید. از رمزنگاری به منظور حفاظت داده‌ها در شبکه‌های عمومی نظیر اینترنت استفاده می‌گردد. در این رابطه از الگوریتم‌های پیشرفته ریاضی به منظور رمزنمودن پیام‌ها و ضمائم مربوطه، استفاده می‌شود.
الگوریتم‌های رمزنگاری
انتقال اطلاعات حساس بر روی یک شبکه مستلزم بکارگیری مکانیزمی است که سه ویژگی زیر را تضمین نماید:
امنیت: داده ارسالی نمی‌بایست توسط افراد غیرمجاز، استفاده (خوانده) گردد.
هویت: افراد شرکت‌کننده در ارتباط همان افرادی می‌باشند که ادعا می‌نمایند.
غیرجعلی بودن اطلاعات: داده دریافت شده در مقصد با داده ارسال شده در مبدا یکسان بوده و اطلاعات دستکاری نشده باشد.
تکنولوژی هائی که یک ارتباط ایمن را ارائه می‌نمایند، می‌بایست مبتنی بر مکانیزمی‌باشند که سه ویژگی فوق را تضمین نمایند. این‌گونه تکنولوژی‌ها، عموما «از الگوریتم‌های رمزنگاری استفاده نموده و با رمز نمودن اطلاعات، عملا» امکان رمزگشائی و دستیابی به داده اولیه توسط افراد غیرمجاز را سلب می‌نمایند.
الگوریتم‌های رمزنگاری به دو گروه عمده تقسیم می‌گردند:
الگوریتم‌های محدود: در این نوع الگوریتم‌ها، محور امنیت اطلاعات بر محرمانه نگه داشتن الگوریتم استفاده شده در فرایند رمزنگاری استوار است.
الگوریتم‌های مبتنی بر کلید: در این نوع الگوریتم‌ها، کلید محرمانه تلقی شده و الگوریتم می‌تواند در دسترس عموم باشد.
در این رابطه از دو مدل رمزنگاری عمده استفاده می‌گردد:
کلید خصوصی (متقارن): فرستنده و گیرنده از یک کلید یکسان به منظور رمزنگاری و رمزگشائی استفاده می‌نمایند.
کلید عمومی (نامتقارن): به ازای هر کاربر از دو کلید استفاده می‌شود. یکی از کلیدها عمومی بوده و در دسترس همگان قرار داشته و کلید دوم به صورت محرمانه می‌باشد.
رمزنگاری کلید عمومی (نامتقارن) 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 سه بار اعمال می‌شود. نسخه دیگری از این الگوریتم (پایدارتر از قبلی‌ها) از کلیدهای ۵۶بیتی و کلیدهای ۱۶۸بیتی استفاده می‌کند و سه بار عملیات رمزنگاری را انجام می‌دهد.
ویژگی مدل رمزنگاری کلید خصوصی
رمزنگاری و رمزگشائی داده با استفاده از کلید یکسانی انجام می‌شود.
تمامی کاربرانی که در یک گروه عضویت داشته و قصد اشتراک داده را بین خود دارند، می‌بایست دارای کلید یکسانی باشند.
در صورتی‌که یک کلید د چار مشکل گردد (لورفتن)، تمامی کلیدها می‌بایست تعویض و با کلیدی جدید جایگزین گردند.
مهم‌ترین مسئله در ارتباط با این مدل رمزنگاری، عدم وجود امنیت لازم به منظور توزیع کلید است.
موارد کاربرد رمزنگاری
موارد متعددی از اطلاعات حساس که نباید در دسترس دیگران قرار گیرد، وجود دارند. این‌گونه اطلاعات جهت حفاظت باید رمزنگاری گردند. این اطلاعات شامل:
اطلاعات کارت اعتباری
شماره‌های عضویت در انجمن‌ها
اطلاعات خصوصی
جزئیات اطلاعات شخصی
اطلاعات حساس در یک سازمان
اطلاعات مربوط به حساب‌های بانکی