مقدمه
وقتی اطلاعات مهمی روی اينترنت رد و بدل میکنيد، مثلاً شمارهی کارت اعتباری را به سايتی میفرستيد يا صورت وضعيت بانکی خودتان را دريافت میکنيد، چه چيزی امنيت اطلاعات شما را تضمين میکند؟
هر قطعه از اطلاعات روی اينترنت قبل از ارسال به هزاران پاکت
[1] کوچک تجزيه میشود که هر يک قبل از اين که به مقصد مورد نظر برسند احتمالاً از چندين مسيرياب
[2] میگذرند. هر يک از اين مسيريابها میتوانند قبل از فرستادن هر پاکت، محتويات آن را کاملاً بخوانند! ظاهراً هيچ امنيتی در فرستادن و دريافت اطلاعات حساس روی اينترنت وجود ندارد، با اين حال بازار تجارت الکترونيکی
[3] روی اينترنت روز به روز در حال گسترش است و تنها در ايالات متحده به حجم 130 ميليارد دلار در سال
رسيدهاست.
به نظر میرسد اينجا تناقضی وجود دارد. چه امنيتی برای اطلاعات مالی ميليونها نفر که روی اينترنت خريد میکنند وجود دارد؟ آيا تقلب و دزدیهای گسترده روی اينترنت در انتظار مشتريان است؟
در واقع چنين نيست. به لطف روشهای مؤثر رمزيدن اطلاعات
[4]برای کسانی که بخواهند اطلاعاتشان را با امنيت کامل منتقل کنند تضمينهای محکمی وجود دارد؛ و با آن که آمار دو سال پيش
نشان میدهد حجم تقلبها و دزدیهای اينترنتی حدود يک درصد حجم تجارت اينترنتی است، اما تقريباً تمام اين تقلبها از رعايت نکردن يا بیاطلاعی از نکات امنيتی ناشی میشود.
رمزيدن و رمزگشايی
در رياضيات ثابت میشود که هيچ رمزی غيرقابل گشودن نيست؛ اما میتوان زمان رمزگشايی
[5] و توان محاسباتی مورد نياز برای آن را بسيار بالا برد. در واقع رمزيدن مؤثر بر پايهی عملهايی در رياضيات است که به نوعی يکطرفه و «معکوسناپذير» ناميده میشوند: يعنی انجام آنها از يک طرف نياز به توان محاسباتی بالايی ندارد، اما انجام آنها از طرف عکس، يعنی پس از انجام عمليات، بدون داشتن مفروضات اوليه تقريباً غيرممکن است.
در قضيهای که پايهی نظريهی اعداد به شمار میرود ثابت میشود که هر عدد صحيح به شکل حاصلضربی از اعداد اول نوشته میشود. يافتن چند عدد اول و ضرب کردن آنها کار آسانی است، اما وقتی که حاصلضرب تشکيل شود برای تجزيهی آن به عاملهايش راهحل سريعی وجود ندارد و به خصوص اگر عوامل بزرگ باشند، تقريباً غيرممکن است. بنابراين ضرب کردن دو عدد اول مثالی است از يک عمل معکوسناپذير. با توجه به اين که در کامپيوترها همه چيز، حتی فايلهای بزرگ تصويری و ويدئويی، در واقع عددهايی بزرگ هستند، میتوان از اين نکته در نظريهی اعداد برای رمزيدن تمام اطلاعات استفاده کرد.
انواع رمزيدنها را میتوان به دو دستهی متقارن
[6] و نامتقارن
[7] تقسيم کرد. در رمزيدن متقارن، اطلاعات با همان کليدی که رمز میشود گشوده هم میشود. مثال ساده از رمزيدن متقارن يک جدول است که هر حرف الفبا را با يک حرف ديگر جابجا کند، در اين صورت هرکس با داشتن اين جدول (که کليد رمزيدن به شمار میرود) قادر به رمزگشايی هم هست.
در رمزيدن نامتقارن، دو کليد وجود دارد: کليد رمزيدن (که کليد عمومی
[8] هم ناميده میشود) و کليد رمزگشايی (يا کليد خصوصی
[9]). در واقع در اين نوع از رمزيدن نمیتوان با همان کليدی که اطلاعات را رمز میکند رمز را هم گشود. هر فرد میتواند «کليد عمومی» و «خصوصی» منحصر به فرد خودش را داشته باشد و کليد عمومی را در اختيار همه قرار دهد، اما پيامهايی که با کليد عمومی آن شخص رمز شدهاند تنها برای برای خود او و با کليد خصوصی خود او قابل بازگشايی خواهند بود. به رمزيدن نامتقارن، رمزيدن با کليد عمومی
[10] هم گفته میشود.
بر خلاف رمزيدن متقارن، مثال سادهای از رمزيدن نامتقارن وجود ندارد، اما بنيان رمزيدن نامتقارن بر همان تجزيه به عوامل اول در نظريهی اعداد است. «کليد عمومی» اغلب شامل عددی بسيار بزرگ مثل n است که از حاصلضرب دو عدد اول بزرگ مثل p و q تشکيل شدهاست، اما دو عدد p و q تنها در کليد خصوصی ذکر میشوند. يافتن دو عدد p و q فقط با داشتن n غيرممکن نيست اما نياز به صرف توان محاسباتی بسيار بالايی دارد. در واقع با داشتن بهترين روشها حدود نيم قرن فعاليت بیوقفهی يک کامپيوتر خانگی امروزی مورد نياز است تا يک رمز نامتقارن رايج بدون داشتن کليد خصوصی آن شکسته شود، و البته میتوان با بزرگ کردن n به دلخواه اين رمز را همچنان پيچيدهتر کرد و زمان شکسته شدن آن را افزايش داد.
در واقع پيچيدگی يک روش رمزيدن نامتقارن با طول عدد کليد عمومی آن سنجيده میشود. مؤسسهی RSA که از ابداعکنندگان يکی از معروفترين روشهای رمزيدن نامتقارن است، برای شکستن رمزهای بزرگ جوايزی قرار دادهاست. رمزی با کليد عمومی 640 بيتی (193 رقمی) در نوامبر سال 2005 پس از صرف 3 ماه کار بیوقفه و همزمان 80 کامپيوتر شکسته شد و جايزهی بيست هزار دلاری RSA را دريافت کرد. (خبر و فهرست بقيهی جوايز را
اينجا ببينيد) کليدهای عمومی معمول روی اينترنت در حال حاضر اغلب 1024 بيتی (معادل 308 رقم) هستند که کسی که بدون داشتن کليد خصوصی آنها را بشکند جايزهی صدهزار دلاری RSA را خواهد بُرد!
اصالت اسناد و امضای ديجيتال
اصالت اسناد کاغذی با مهر و موم و امضا اثبات میشود. اما وقتی اسناد ديجيتال (مثل سند سفارش و خريد و فروش يا انتقال پول) روی اينترنت ثبت میشود، اصالت آن چگونه بررسی میشود؟ با توجه به اين که رمزيدن معمولی فقط «امنيت» سند را تضمين میکند اما اصالت آن را تضمين نمیکند. نخست، معلوم نيست يک سند اينترنتی را واقعاً همان شخصی که نوشته باشد که ادعا میکند؛ و دوم آن که معلوم نيست سند بعد از درست شدن خدشهدار نشده باشد.
در اينجا يک خصوصيت ديگر رمزيدن نامتقارن به کمک میآيد: همانطور که اطلاعاتی که با کليد عمومی رمز شوند تنها با کليد خصوصی مربوط به آن قابل رمزگشايی هستند، اطلاعات رمزيده با کليد خصوصی هر فرد هم تنها با کليد عمومی همان فرد قابل بازگشايی خواهند بود. چون کليد عمومی هر فرد در دسترس همه قرار دارد، بنابراين همه میتوانند اطلاعات رمز شده با کليد خصوصی را بخوانند، اما تنها دارندهی کليد خصوصی میتواند اطلاعات را به آن شکل رمز کند. به اين ترتيب رمز کردن با کليد خصوصی نوعی امضای ديجيتال
[11] برای افراد خواهد بود.
اغلب برای جلوگيری از خدشهدار شدن اسناد يک لُبّ پيام
[12] از سند تهيه میشود و با کليد خصوصی رمز میشود. به اين ترتيب اگر سند به طور عمدی يا به دلايل فنی خدشهدار شود پس از رمزگشايی لب پيام تطابق نداشتن سند با خلاصهی آن باعث میشود اشکال آن مشخص شود، و جعل امضا و سند ديجيتال تقريباً غيرممکن میشود.
اگر قرار باشد هر فرد با کليد عمومی خودش در دنيای ديجيتال شناخته شود، نکتهای که بلافاصله مورد سوآل قرار میگيرد اين است که: چه کسی ربط يک کليد عمومی را به يک فرد يا يک سازمان تضمين میکند؟ همانطور که هر کس که مدتی با اينترنت کار کرده باشد میداند، هر فرد بسيار راحت میتواند خودش را به جای ديگران جا بزند. يک فرد میتواند کليد عمومی خودش را به جای کليد عمومی يک بانک معتبر جا بزند. آيا در اين صورت اسناد امضا شدهی او اعتبار اسناد بانک را پيدا میکند؟ چه کسی دروغ يا راست بودن چنين ادعاهايی را بررسی میکند؟
برای حل اين مشکل، راه حل موجود آن است که هر کليد عمومی توسط افراد و سازمانهايی که قبلاً مورد اطمينان قرار گرفتهاند تأييد شود و به صورت يک سند امضا شده توسط آن افراد روی اينترنت قرار گيرد. چنين سندهای امضاشدهای به عنوان تأييديهی ديجيتال
[13] شناخته میشوند. دو شکل رايج از اين نوع سيستمهای تاييديه وجود دارد:
شکل اول. در اين سيستم شرکتهای بزرگ و مطمئنی وجود دارند که کارشان ثبت کليد عمومی افراد و سازمانها در قبال دريافت هزينه و بررسیهای قانونی است. اين شرکتهای مطمئن که اغلب به عنوان مرجع تأييديه
[15] شناخته میشوند، کارشان مثل محضرهای دادگستری يا نظام پزشکی در ايران است که تأييد امضا و مهر میکنند. هر فرد يا شرکت يا سازمانی میتواند در قبال پرداخت هزينهی ساليانه و بررسیهای قانونی، از اين شرکتها برای کليد عمومی خودش تأييديه بگيرد. امضای خود مراجع تأييديه هم دارای تأييديه است که به اسم تأييديهی پايه شناخته میشود. تأييديههای پايه در web browserها نصب میشود و اگر سايت شرکت و سازمانی دارای تأييديه از مراجع تأييديه باشد، اصالت آن سايت و ربطش به شرکت مورد نظر تأييد شدهاست، بنابراين هم ارتباط و هم طرف ارتباط به شکل تضمينشده هستند. مراجع تأييديه معروف شرکتهايی مثل
VeriSign و
thawte هستند. بعضی بانکها و شرکتهای پستی هم مرجع تأييديهی خودشان را راه انداختهاند.
به اين سيستم زيرساخت کليدهای عمومی
[14] يا اختصاراً PKI گفته میشود.
پروتکلی که برای امنيت وب از آن استفاده میشود، يعنی SSLَـ
[16] معمولاً از سيستم PKI استفاده میکند، و تمام اين مراحل را به طور خودکار انجام میدهد، يعنی ابتدا تأييديهی سايت مقابل را بررسی میکند و اگر تأييديه منقضی شده باشد يا جعلی باشد با پيغام خطا کاربر را متوجه میکند. اگر مشکلی در تأييديه نباشد، دريافت و فرستادن اطلاعات رمز شده با استفاده از کليد عمومی سايت مقابل و رمزهای اضافه آغاز میشود و اطلاعات رد و بدل شده برای واسطهها قابل خواندن نخواهد بود. در سايتهای امن (مثل سايت بانکها، اغلب سايتهای خريد اينترنتی، سايتهای ايميل مثل
ايميل ياهو،
جیميل و
اورکات) معمولاً يک علامت قفل
در گوشهی پايين و سمت راست بروزر ديده میشود؛ اگر روی اين علامت در يک سايت امن کليک کنيد، تأييديهی سايت و اطلاعات مربوط به آن ( مثل مرجع صادرکنندهی تأييديه، تاريخ شروع تأييديه، تاريخ انقضا و کليد عمومی) را خواهيد ديد.
شکل دوم. در اين شکل هر فرد خودش تعيين میکند که به کدام کليد عمومی و اصالت آن اطمينان دارد. اين اطمينان به صورت عمومی اعلام میشود و به اين ترتيب کليدهای عمومی که توانستهاند از اعتماد همگانی بهرهمند شوند به عنوان کليدهای مطمئن شناخته میشوند، اگر چه باز هم به اختيار فرد است که به يک کليد عمومی اطمينان کند يا خير. اين سيستم که به اسم شبکهی اعتماد
[17] شناخته میشود، معمولاً برای افراد مناسبتر است و در کاربردهايی مثل ايميل و يا رمزيدن فايلهای شخصی از آن استفاده میشود. يکی از رايجترين برنامههای رمزيدن به اسم PGPـ
[18] از این روش استفاده میکند. آخرين شکلهای PGP اکنون به شکل رايگان و open source به نام
GnuPG عرضه میشود و هر کس میتواند با دانلود و نصب آن، از يک کليد عمومی و امضای ديجيتال برای ايميل و فايلهای شخصی بهرهمند شود. البته بعد از دانلود
نسخهی مخصوص ويندوز و نصب آن میبينيد که استفاده از آن که مبتنی بر خط فرمان است و رابط گرافيکی کاربر ندارد چندان آسان نيست، ولی میتوانيد يک
رابط گرافيکی برای آن
از اينجا دانلود کنيد. بعد از نصب رابط گرافيکی میتوانيد يک جفت کليد عمومی و خصوصی برای خودتان بسازيد و کليد عمومی را ثبت کنيد. بعد از آن میتوانيد هر فايلی را با کليک راست روی آن، امضا يا رمز کنيد.
هر کدام از اين دو روش معايب خودشان را دارند. در شکل اول، ممکن است يک مرجع تأييديه ورشکست شود (چيزی که در سال 2001 با ترکيدن حباب
داتکامها در بورس اتفاق افتاد) در اين صورت تأييديههای صادر شده از آن بايد بالکل بیاعتبار شوند چون ديگر نظارتی بر آنها وجود ندارد. اشکال ديگر آن است که در سيستم PKI هر چه را مراجع تأييديه تأييد کنند کورکورانه پذيرفته میشود، در حالی که در شبکهی اعتماد خود فرد حق گزينش برای فرد مورد اطمينان خود را دارد. به علاوه هزينهبر بودن سيستم PKI باعث شده بيشتر از سوی سازمانها و شرکتها مورد استقبال قرار بگيرد و افراد از آن استقبال نکنند.
اما شبکههای اعتماد هم خالی از اشکال نيستند. مشکل اغلب وقتی شروع میشود که يک فرد تازه برای خودش کليد عمومی تهيه میکند، و چون هيچکس او را نمیشناسد بنابراين کليد عمومی او مورد تأييد هيچکس قرار نمیگيرد. اين مشکل فنی نيست و بيشتر اجتماعی است، و برای حل آن هم يک راه اجتماعی به اسم
مهمانیهای امضای کليد پيشنهاد شدهاست! در اين مهمانیها افراد با هم آشنا میشوند و کليد عمومی همديگر را تأييد میکنند. به اين ترتيب شبکهی اعتماد گسترش میيابد.
تاريخچهی رمزيدن اطلاعات
استفاده از رمز و رمزگشايی شايد به قدمت استفاده از الفبا باشد. اما با گسترش مخابرات و انتقال اطلاعات اهميت آن بسيار افزايش يافت، تا جايی که در جنگ جهانی دوم يکی از عوامل مهم پيروزی متفقين بر نيروهای رايش سوم گشودن رمز پيامهای آنان بود. در بريتانيا ايستگاه ايکس (که بعدها معلوم شد در
Bletchley Park قرار دارد) محلی بود که پيامهای راديويی رمزی آلمانها ذخيره میشد و با گشودن رمز معروف به Enigma در اين مرکز بود که نيروهای متفقين توانستند همواره قدم بعدی آلمانها را پيشبينی کنند و نهايتاً آنان را شکست دهند، که شايد ماجرای آن را در فيلم
Enigma ديده باشيد.
در دوران جنگ سرد به دليل اهميت فراوان رمزيدن و رمزگشايی فنون آن جزو اسرار نظامی تلقی میشدند و تحقيقات رياضیدانان در اين زمينه مانند تحقيقات هستهای کاملاً محرمانه تلقی میشد.
در سال 1973 رياضیدانی انگليسی به نام Clifford Cocks اولين الگوريتم (روش رياضی) برای رمزيدن نامتقارن را که از دو کليد عمومی و خصوصی استفاده میکرد در مقر فرماندهی مخابرات دولتی
[19] بريتانيا اختراع کرد. اين اختراع محرمانه ماند اما در سال 1977 MIT تحقيقی را منتشر کرد که در آن سه نفر رياضیدان، يعنی Ron Rivest به همراه Adi Shamir و Len Adleman الگوريتمی مشابه را توضيح داده بودند. اين الگوريتم با استفاده از ترکيب حروف اول اسم اين سه نفر RSA ناميده شد و به عنوان يک اختراع در امريکا به ثبت رسيد؛ اما الگوريتمی که Cocks کشف کرده بود تا سال 1997 محرمانه ماند! به اين ترتيب RSA به يکی از گستردهترين و پراستفادهترين الگوريتمهای رمزيدن نامتقارن تبديل شد.
به دنبال اختراع RSA در امريکا قانونی تصويب شد که صادرات اين گونه الگوريتمهای رمزيدن را مشمول قوانين صادرات اسلحه میکرد و عملاً صادرات رمزيدنهايی با کليد عمومی بزرگتر از 40 بيت (معادل 12 رقم) به کل ممنوع شد. با آن که شکستن رمز RSA با کليد عمومی 40 بيتی هم برای يک کامپيوتر معمولی چند هفته زمان میبرد اما ابرکامپيوترهای آژانس امنيت ملی
[20] امريکا میتوانستند چنين رمزهايی را در عرض چند ثانيه بشکنند، بنابراين فرض میشد که با ممنوع کردن صادرات رمزيدنهای پيچيده، همچنان امريکا بتواند دست بالا را در جنگ رمزگشايی داشته باشد.
اما در سال 1991، Phil Zimmermann که يک فعال ضدهستهای محسوب میشد برنامهی PGP را برای رمزيدن پيامهای خودش و دوستانش روی BBS معرفی کرد. اين برنامه که میتوانست برای رمزيدن همه جور فايل و ايميل استفاده شود با سورس برنامهاش به رايگان در دسترس همه بود. چون الگوريتم مورد استفادهی آن RSA با کليد عمومی بزرگتر از 128 بيت بود در سال 1993 زيمرمان به اتهام «صادرات غيرقانونی اسلحه» مورد بازجويی جنايی دولت فدرال امريکا قرار گرفت! البته در اين مورد زيمرمان نهايتاً مقصر شناخته نشد اما اتهام ديگری به دليل نقض حق اختراع RSA به او وارد شد. چون RSA تنها در امريکا به عنوان اختراع به ثبت رسيده بود اين شکايت باعث شد دو نسخهی بينالمللی و امريکايی از اين نرمافزار توليد شود. در سالهای اخير اين تفکيک از بين رفته چون RSA ديگر مثل گذشته روی حق اختراعاش پافشاری نمیکند، و PGP با رفع اشکالات و افزايش قدرت رمزيدن به شکل يک استاندارد همگانی به نام OpenPGP درآمده که مبنای نرمافزارهايی چون GnuPG است و حتی در بعضی سايتهای اينترنتی امن از آن استفاده میشود.
بعد از گسترش وب، در سال 1996 شرکت Netscape يک پروتکل رمزيدن برای امنيت روی وب اختراع کرد که به نام SSL شناخته میشود. چون SSL هم در ابتدا از کليدهای عمومی 128 بيتی استفاده میکرد طبق قانون منع صادرات رمزيدن، مجبور شد از بروزر خودش دو نسخه منتشر کند: يک نسخهی امريکايی با توان کامل 128 بيتی و نسخهی بينالمللی با توان 40 بيتی؛ و البته دريافت نسخهی آمريکايی آن قدر دردسر داشت که حتی داخل امريکا هم اغلب از نسخهی 40 بيتی استفاده میشد.
محدوديتهای قانون منع صادرات روشهای رمزيدن به قدری دستوپاگير بود که نهايتاً در سال 1995، Daniel J. Bernstein دولت آمريکا را برای لغو اين محدوديتها به دادگاه کشيد. برنستين که دانشجوی دانشگاه برکلی بود در انتشار تحقيقات خودش در مورد رمزيدن با اين محدوديت روبرو شده بود. در سال 2000، برنستاين نهايتاً در دادگاه پيروز شد و قوانين دولتی قبلی در زمينهی ممنوعيت صادرات رمزيدن مخالف متمم اول قانون اساسی ايالات متحدهی امريکا شناخته شد و دولت فدرال مجبور به اصلاح آن شد. به همين دليل اکنون استفاده از کليدهای عمومی بزرگ منع قانونی ندارد و کليدهای رايج امروزه 1024 بيتی هستند. هنوز کسی ادعايی در مورد امکان شکستن اين رمزها با کليد 1024 بيتی نداشته اما به دليل افزايش قدرت پردازش کامپيوترها روز به روز کليدهای بزرگتری توصيه میشوند.
از جنبهی امنيتی رمزهای نامتقارن تا حد زيادی به اين فرض متکی است که تاکنون الگوريتم سريع و مؤثری برای کامپيوترهای معمولی اختراع نشده که بتواند اعداد بزرگ را به عاملهای اولشان تجزيه کند. اين فرض ممکن است درست نباشد: احتمال آن هست که سازمانهای امنيتی و دولتی بزرگ مثل NSA و GCHQ چنين الگوريتمی را به صورت محرمانه در دست داشته باشند. با اين حال اگر افراد و مؤسسات تحقيقاتی مستقل چنين الگوريتمی را کشف کنند جايزههای بزرگ RSA آنان را ترغيب میکند که وجود آن را اعلام کنند.
با آن که کامپيوترهای معمولی از تجزيهی اعداد بزرگ در زمان کوتاه ناتوان هستند اما نوع ديگری از کامپيوترها، يعنی کامپيوترهای کوانتومی، به صورت تئوريک قادر به اين کار هستند و در صورت توليد انبوه آنها، امنيت رمزيدنهای نامتقارن مبتنی بر تجزيهی اعداد از بين خواهد رفت.در سال 1994، Peter Shor رياضیدان امريکايی يک الگوريتم مؤثر برای تجزيهی اعداد روی کامپيوترهای کوانتومی ارائه داد. الگوريتم شور يک الگوريتم بر مبنای حساب احتمالات است و به دليل خصوصيات منحصر به فرد کامپيوترهای کوانتومی فقط بر روی اين نوع کامپيوترها قابليت اجرايی دارد؛ و چون کامپيوترهای کوانتومی به شکل عملی هنوز به وجود نيامدهاند (و يا شايد به دلايل امنيتی وجودشان اعلام نشدهاست) هنوز روشهای موجود از امنيت برخوردارند.
عملی بودن الگوريتم شور در سال 2001 به اثبات رسيد: در آزمايشگاههای IBM يک کامپيوتر کوانتومی با 7 بيت (که فقط میتواند در حد اعداد دو رقمی محاسبه کند) ساخته شد و توانست عدد 15 را با الگوريتم شور به دو عامل اولاش، يعنی 5 و 3 تجزيه کند. با اين حال چشمانداز کامپيوترهای کوانتومی باعث تغيير در روشهای رمزيدن خواهد شد.
شعری از پيتر شور اين وضعيت را به طنز توصيف میکند.