- معرفی و اصطلاحات
رمزنگاری علم کدها و رمزهاست. یک هنر قدیمی است و برای قرنها بمنظور محافظت از پیغامهایی که بین فرماندهان، جاسوسان، عشاق و دیگران ردوبدل میشده، استفاده شده است تا پیغامهای آنها محرمانه بماند.
هنگامی که با امنیت دیتا سروکار داریم، نیاز به اثبات هویت فرستنده و گیرنده پیغام داریم و در ضمن باید از عدم تغییر محتوای پیغام مطمئن شویم. این سه موضوع یعنی محرمانگی، تصدیق هویت و جامعیت در قلب امنیت ارتباطات دیتای مدرن قرار دارند و میتوانند از رمزنگاری استفاده کنند.
اغلب این مساله باید تضمین شود که یک پیغام فقط میتواند توسط کسانی خوانده شود که پیغام برای آنها ارسال شده است و دیگران این اجازه را ندارند. روشی که تامین کننده این مساله باشد "رمزنگاری" نام دارد. رمزنگاری هنر نوشتن بصورت رمز است بطوریکه هیچکس بغیر از دریافت کننده موردنظر نتواند محتوای پیغام را بخواند.
کدگذاری یا رمزنگاری مخففها و اصطلاحات مخصوص به خود را دارد. برای درک عمیقتر به مقداری از دانش ریاضیات نیاز است. برای محافظت از دیتای اصلی ( که بعنوان plaintext شناخته میشود)، آن را با استفاده از یک کلید (رشتهای محدود از بیتها) بصورت رمز در میآوریم تا کسی که دیتای حاصله را میخواند قادر به درک آن نباشد.
دیتای رمزشده (که بعنوان ciphertext شناخته میشود) بصورت یک سری بیمعنی از بیتها بدون داشتن رابطه مشخصی با دیتای اصلی بنظر میرسد. برای حصول متن اولیه دریافتکننده آن را رمزگشایی یا دیکد میکند. یک شخص ثالت (مثلا یک هکر) میتواند برای اینکه بدون دانستن کلید به دیتای اصلی دست یابد، کشف رمزنوشته (cryptanalysis) کند. بخاطرداشتن وجود این شخص ثالث بسیار مهم است.
رمزنگاری دو جزء اصلی دارد، یک الگوریتم و یک کلید. الگوریتم یک مبدل یا فرمول ریاضی است. تعداد کمی الگوریتم قدرتمند وجود دارد که بیشتر آنها بعنوان استانداردها یا مقالات ریاضی منتشر شدهاند. کلید، یک رشته از ارقام دودویی (صفر و یک) است که بخودیخود بیمعنی است. رمزنگاری مدرن فرض میکند که الگوریتم شناخته شده است یا میتواند کشف شود. کلید است که باید مخفی نگاه داشته شود و کلید است که در هر مرحله پیادهسازی تغییر میکند. رمزگشایی ممکن است از همان جفت الگوریتم و کلید یا جفت متفاوتی استفاده کند.
دیتای اولیه اغلب قبل از کدشدن بازچینی میشود؛ این عمل عموما بعنوان رمز کردن scrambling شناخته میشود. بصورت مشخصتر، hash functionها بلوکی از دیتا را (که میتواند هر اندازهای داشته باشد) به طول از پیش مشخصشده کاهش میدهد. البته دیتای اولیه نمیتواند از hashed value بازسازی شود. Hash functionها اغلب بعنوان بخشی از یک سیستم تایید هویت مورد نیاز هستند؛ خلاصهای از پیام (شامل مهمترین قسمتها مانند شماره پیام، تاریخ و ساعت، و نواحی مهم دیتا) قبل از رمزنگاری خود پیام، ساخته و hash میشود.
یک چک تایید پیام (Message Authentication Check) یا MAC یک الگوریتم ثابت با تولید یک امضاء برروی پیام با استفاده از یک کلید متقارن است. هدف آن نشان دادن این مطلب است که پیام بین ارسال و دریافت تغییر نکرده است. هنگامی که رمزنگاری توسط کلید عمومی برای تایید هویت فرستنده پیام استفاده میشود، منجر به ایجاد امضای دیجیتال (digital signature) میشود.
۲- الگوریتمها
طراحی الگوریتمهای رمزنگاری مقولهای برای متخصصان ریاضی است. طراحان سیستمهایی که در آنها از رمزنگاری استفاده میشود، باید از نقاط قوت و ضعف الگوریتمهای موجود مطلع باشند و برای تعیین الگوریتم مناسب قدرت تصمیمگیری داشته باشند. اگرچه رمزنگاری از اولین کارهای شانون (Shannon) در اواخر دهه ۴۰ و اوایل دهه ۵۰ بشدت پیشرفت کرده است، اما کشف رمز نیز پابهپای رمزنگاری به پیش آمده است و الگوریتمهای کمی هنوز با گذشت زمان ارزش خود را حفظ کردهاند. بنابراین تعداد الگوریتمهای استفاده شده در سیستمهای کامپیوتری عملی و در سیستمهای برپایه کارت هوشمند بسیار کم است.
۱-۲ سیستمهای کلید متقارن
یک الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده میکند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد data encryption algorithm یا DEA است که بیشتر بعنوان DES شناخته میشود. DES یک محصول دولت ایالات متحده است که امروزه بطور وسیعی بعنوان یک استاندارد بینالمللی شناخته میشود. بلوکهای ۶۴بیتی دیتا توسط یک کلید تنها که معمولا ۵۶ بیت طول دارد، رمزنگاری و رمزگشایی میشوند. DES از نظر محاسباتی ساده است و براحتی میتواند توسط پردازندههای کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد.
این روش بستگی به مخفیبودن کلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است: هنگامی که کلیدها میتوانند به یک روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی که کلید بین دو سیستم مبادله میشوند که قبلا هویت یکدیگر را تایید کردهاند عمر کلیدها بیشتر از مدت تراکنش طول نمیکشد. رمزنگاری DES عموما برای حفاظت دیتا از شنود در طول انتقال استفاده میشود.
کلیدهای DES ۴۰ بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته میشوند و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت طولانی اعتبار استفاده شود. کلید ۵۶ بیتی عموما توسط سختافزار یا شبکههای بخصوصی شکسته میشوند. رمزنگاری DES سهتایی عبارتست از کدکردن دیتای اصلی با استفاده از الگوریتم DES که در سه مرتبه انجام میگیرد. (دو مرتبه با استفاده از یک کلید به سمت جلو (رمزنگاری) و یک مرتبه به سمت عقب (رمزگشایی) با یک کلید دیگر. این عمل تاثیر دوبرابر کردن طول مؤثر کلید را دارد؛ که این یک عامل مهم در قدرت رمزکنندگی است.
الگوریتمهای استاندارد جدیدتر مختلفی پیشنهاد شدهاند. الگوریتمهایی مانند Blowfish و IDEA برای زمانی مورد استفاده قرار گرفتهاند اما هیچکدام پیادهسازی سختافزاری نشدند بنابراین بعنوان رقیبی برای DES برای استفاده در کاربردهای میکروکنترلی مطرح نبودهاند. پروژه استاندارد رمزنگاری پیشرفته دولتی ایالات متحده (AES) الگوریتم Rijndael را برای جایگزیتی DES بعنوان الگوریتم رمزنگاری اولیه انتخاب کرده است. الگوریتم Twofish مشخصا برای پیادهسازی در پردازندههای توانـپایین مثلا در کارتهای هوشمند طراحی شد.
در ۱۹۹۸ وزارت دفاع ایالات متحده تصمیم گرفت که الگوریتمها Skipjack و مبادله کلید را که در کارتهای Fortezza استفاده شده بود، از محرمانگی خارج سازد. یکی از دلایل این امر تشویق برای پیادهسازی بیشتر کارتهای هوشمند برپایه این الگوریتمها بود.
برای رمزنگاری جریانی (streaming encryption) (که رمزنگاری دیتا در حین ارسال صورت میگیرد بجای اینکه دیتای کدشده در یک فایل مجزا قرار گیرد) الگوریتم RC4 سرعت بالا و دامنهای از طول کلیدها از ۴۰ تا ۲۵۶ بیت فراهم میکند. RC4 که متعلق به امنیت دیتای RSA است، بصورت عادی برای رمزنگاری ارتباطات دوطرفه امن در اینترنت استفاده میشود.