زیرساخت کلید عمومی (Public Key Infrastructure به اختصار PKI) به توزیع و تعیین هویت کلیدهای رمزنگاری عمومی کمک میکند و به این ترتیب کاربران و کامپیوترها را قادر میسازد که دادهها را به صورت امن از طریق شبکههایی مثل اینترنت ارسال کرده و هویت طرف مقابل را بررسی و تائید کنند.
بدون وجود PKI هم، امکان رمزگذاری اطلاعات حساس (که محرمانگی دادهها را تضمین میکند) و تبادل آنها وجود دارد اما هیچ تضمینی برای تعیین هویت طرف مقابل (احراز هویت یا authentication) نیست. هر نوع اطلاعات حساسی که از طریق اینترنت تبادل میشوند، برای حفظ امنیت به PKI متکی است.
مسئله PKI یا زیرساخت کلید عمومی در دنیای امنیت و شبکه همواره موضوع مهمی است. در این مقاله از فراست قرار در مورد هر آن چیزی که در مورد زیر ساخت کلید عمومی باید بدانید صحبتی داشته باشیم. Certificate Services مخصوصا مبحثی همچون مایکروسافت که به نام Active Directory Certificate Services هم شناخته میشود، میپردازیم.
PKI چیست؟
PKI در زمینه امنیت اطلاعات به نام رمزنگاری کلید عمومی یا Public Key Infrastructure شناخته میشود. برای درک بهتر ساختار کلی مفهوم PKI، یک داستان جذاب و ساده برایتان تعریف میکنیم. این داستان را بر اساس رویه ITPRO تدوین شده است.
Jackson با دو دوست خود Alice و Bob، به سرزمین امنیت اطلاعات سفر کردند. هر کدام از این دوستان یک جفت کلید – یک کلید عمومی و یک کلید خصوصی در اختیار داشتند.
Alice، کلید عمومی خود را در یک صندوق عمومی گذاشت تا هر کسی بتواند پیامهایی که با کلید خصوصی او رمزنگاری شده بودند، با استفاده از کلید عمومی او را باز کند. این صندوق عمومی نقش یک Certificate Authority (CA) یا مؤسسه صدور گواهینامه را بازی میکرد.
Bob هم که اهل امنیت بود، از کلید خصوصی خود برای رمزنگاری پیامهایش استفاده میکرد. او همچنین کلید عمومی خود را در صندوق عمومی گذاشت.
حالا، هر کسی که میخواست با Alice یا Bob ارتباط برقرار کند، میتوانست از کلید عمومی آن ها استفاده کند تا پیامها را باز کند. اینجاست که PKI به کمک میآید. با تبادل کلیدهای عمومی، امنیت ارتباطات تضمین می شود و همه در دهکده با خیال راحت میتوانستند با هم ارتباط برقرار کنند.
حالا بیایید مکانیزم جالبی را که در پشت صدور گواهینامه رانندگی وجود دارد، به زبانی جذاب و ساده بازنویسی کنیم.
مثالی ساده در مفهوم ساده کلید عمومی چیست؟
بیاید مفهوم PKI را با گواهینامه رانندگی برایتان بگوییم. با یک سوال شروع می کنیم. چرا شما نیاز دارید گواهینامه رانندگی بگیرید؟ طبیعتا برای اینکه بهصورت قانونی رانندگی کنید و هرکسی که گواهینامه رانندگی شما را میبیند، بفهمد که شما رانندگی را بهخوبی آموخته اید.
حالا سؤال دیگر، آیا میتوانید خودتان گواهینامه رانندگیتان را صادر کنید؟ جواب می تواند مثبت باشد! شما میتوانید یک گواهینامه رانندگی برای خودتان بسازید، اما مهمترین نکته این است که تنها شما اعتبار این گواهینامه را قبول دارید و هیچکس دیگر ندارد.
پس تصمیمگیری برای گرفتن گواهینامه رانندگی، اولین سؤالی که برای شما پیش میآید این است: چه کسی باید برایم گواهینامه رانندگی را صادر کند؟ خب، طبیعی است که این مسئله به عهده پلیس راهنماییورانندگی نیروی انتظامی ستاد کل است. این مرکز رسماً بهعنوان “مرکز صدور گواهینامه” شناخته میشود، جایی که تنها مجاز به صدور گواهینامه برای رانندگی است.
حالا نکته جالب اینجاست: برای دریافت گواهینامه راهنماییورانندگی، شما به ستاد کل راهنماییورانندگی کشور مراجعه نمیکنید! حتی به ستادهای استانی هم نمیروید. شما به مراکز پلیس و یا آموزشگاههای مجاز مراجعه میکنید که این مؤسسات نهتنها میتوانند گواهینامه را صادر کنند، بلکه باید مجوز و گواهینامهای داشته باشند که از مراجع مربوطه صادر میشود تا اجازه دهند به مردم گواهینامه صادر کنند.
مکانیزم pki در صدور گواهی رانندگی و گواهی Certificate
ما قرار است مثال خودمان را با روش صدور گواهینامه رانندگی مثال بزنیم ، اولین سئوالی که پیش می آید این است که شما چرا گواهینامه رانندگی دریافت می کنید ؟ طبیعتا برای اینکه بتوانید بصورت مجاز رانندگی کنید و کسی که گواهینامه رانندگی شما را می بیند متوجه می شود
که شما رانندگی را بصورت اصولی یاد گرفته اید. خوب این گواهینامه رانندگی را خودمان هم می توانیم صادر کنیم ؟ جواب بله است ، شما برای خودتان می توانید گواهینامه رانندگی صادر کنید اما طبیعتا فقط خودتان هم این گواهینامه را قبول دارید و هیچکس دیگر این گواهینامه را قبول نخواهد داشت.
گواهینامه را چه کسی باید برای شما صادر کند ؟ طبیعی است که گواهینامه رانندگی را باید پلیس راهنمایی و رانندگی نیروی انتظامی ستاد کل صادر کند ، به این مرکز در اصطلاح مرکز صدور گواهینامه گفته می شود یعنی تنها جاییکه مجاز است برای رانندگی کردن ما گواهینامه صادر کند.
اما نکته در اینجاست که شما قرار نیست برای گرفتن گواهینامه راهنمایی و رانندگی یک راست به سراغ ستاد کل راهنمایی و رانندگی کشور نمی روید و برای اینکار حتی به ستادهای استانی راهنمایی و رانندگی نیز مراجعه نمی کند و فقط به مراکز پلیس بعلاوه ده یا آموزشگاه های مجازی که می توانند گواهینامه رانندگی صادر کنند مراجعه خواهید کرد.
دقت کنید که خود این آموزشگاه ها و مراکز پلیس بعلاوه ده نیز نمی توانند به تنهایی و خودسرانه اقدام به صدور گواهینامه کنند و بایستی مجوز و گواهینامه ای برای خودشان نیز داشته باشند که از مراجع بالاتر صادر می شود تا به آنها مجوز صدور گواهینامه برای مردم را بدهند.
اما شما چگونه گواهینامه رانندگی دریافت می کنید ؟ جواب ساده است ، شما ابتدا تمامی مدارک احراز هویت خود را ارائه می کنید ، آزمون های لازم برای تشخیص صلاحیت را پاس می کنید و در نهایت برای شما مجوز یا گواهینامه رانندگی صادر می شود که این اطمینان را به دیگران می دهد که شما یک راننده شده اید خوب سوال دیگر اینکه آیا من با گرفتن گواهینامه لودر می توانم خودروهای سبک را هم رانندگی کنم یا خیر ؟ آیا من می توانم با گواهینامه رانندگی موتور سیکلت یک تریلی را رانندگی کنم یا خیر ؟
طبیعتا خیر ، گواهینامه ها نیز بر اساس صلاحیت ها و درجه بندی نوع کاربر متفاوت هستند ، برای دریافت هر گواهینامه رانندگی آزمون ها و مشکلات متفاوت است . نکته دیگر اینکه فرض کنید که خودتان برای خودتان یک گواهینامه صادر کرده اید و این گواهینامه از نظر شخص شما معتبر است اما طبیعتا از نظر پلیس این گواهینامه معتبر نیست ، پلیس با بررسی کردن گواهینامه شما به یک اخطار قرمز برمیخورد که شما از نظر آنها مجاز به رانندگی نیستید و گواهینامه شما نامعتبر تلقی می شود.
تا اینجا دقت کنید که مردم به پلیس راهنمایی و رانندگی اعتماد دارند اما به شخص شما اعتماد ندارند ، برای صدور گواهینامه باید یک مرجع قابل اعتماد این تاییدیه ها را صادر کند. فراموش نکنید که در ساختار گواهینامه راهنمایی و رانندگی یک نام و نام خانوادگی وجود دارد که هر کسی می تواند از آن اطلاع پیدا کند اما درون این کارت گواهینامه راهنمایی و رانندگی اطلاعات محرمانه ای نیز وجود دارد که صرفا مختص همان شخص است ، اگر کسی گواهینامه راهنمایی و رانندگی شما را به سرقت ببرد ممکن است از این اطلاعات محرمانه سوء استفاده کند.
حالا فرض کنید که شما با موفقیت توانسته اید گواهینامه راهنمایی و رانندگی دریافت کنید و اینکار بصورت مجاز انجام شده است. یک روز که در حال رانندگی هستید پلیس خودروی شما را متوقف می کند و از شما درخواست گواهینامه راهنمایی و رانندگی می کند ، گواهینامه شما معتبر است اما افسر پلیس چگونه باید این را تشخیص بدهد ؟ در ابتدا توجه کنید که گواهینامه های رانندگی صادر می شوند ، تمدید می شوند
و منقضی می شود و حتی باطل می شوند و این لیست از گواهینامه ها برای استعلام بایستی در اختیار افسر پلیس قرار بگیرد. خوب برای این مورد لیست گواهینامه ها برای افسر پلیس قابل استعلام است. دقت کنید که گواهینامه راهنمایی و رانندگی شما باید همیشه همراه شما باشد تا احراز هویت شما به درستی انجام شود. خوب برویم وارد بحث فنی تر بشویم و این مسئله را بازتر کنیم.
خوب حالا می رویم سراغ بحث فنی ، همان مثال قبلی را دائما در ذهن داشته باشید تا واژه های فنی ای که به کار می بریم برای شما قابل درکتر باشند. خوب اولین سئوالی که پیش می آید این است که چرا ما باید گواهینامه دیجیتال یا Digital Certificate بگیریم ؟ پاسخ بسیار ساده است ، برای اینکه بتوانیم اطلاعات خودمان را در حین انتقال در شبکه رمزنگاری کنیم و کاربران ما با مشاهده کردن این گواهینامه دیجیتال متوجه می شوند که اطلاعات انها نیز در حالت امنی در شبکه منتقل خوهد شد.
با داشتن گواهینامه دیجیتال کاربران وب سایت ما یا کاربران سرویس ها و خدمات ما متوجه می شوند که ما امنیت را در کارهایمان رعایت کرده ایم و طبیعتا اعتماد بیشتری به خدمات ما پیدا خواهند کرد. خوب آیا ما می توانیم این Digital Certificate را خودمان برای خودمان صادر کنیم ؟
پاسخ بله است ، ما می توانیم برای خودمان Certificate صادر کنیم اما نکته در اینجاست که فقط و فقط این Certificate را خودمان قبول داریم و برای دیگران که غیرمعتبر است ، صدور گواهینامه دیجیتال را باید مرجعی انجام دهد که از دید همگان مورد اعتماد است و در اینترنت یک امین به حساب می آید.
اما از Certificate های من درآوردی خیلی استفاده می شود و در اصطلاح فنی به آن Self-Signed Certificate یا Certificate خود تایید شده اطلاق می شود. اگر سیستم گلستان دانشگاه پیام نور را به خاطر داشته باشید بعد از ورود به صفحه Login با یک پیام خطای قرمز رنگ مواجه می شدیم ، این خطای قرمز رنگ یعنی سیستم جامع گلستان از یک گواهینامه خود امضا شده داخلی استفاده می کند که فقط برای همان دانشگاه معتبر است و در اینترنت اعتباری ندارد و اگر کسی با این سیستم تعامل کند خودش ریسک از دست رفتن محرمانگی اطلاعاتش را بر عهده می گیرد.
گواهینامه های دیجیتال را چه کسی صادر می کند ؟ گواهینامه های دیجیتال را مراکز صدور گواهینامه دیجیتال صادر می کنند که در اصطلاح فنی ما به آنها Certificate Authority می گوییم ، دقت کنید که این مراکز صدور گواهی دیجیتال می توانند هم بصورت عمومی معتبر باشند و هم بصورت خصوصی برای مثال شما می توانید Certificate Authority راه اندازی کنید که درون شرکت ملی نفت ایران باشد
و گواهینامه هایی که صادر می کند فقط در این شرکت معتبر هستند اما برای مثال این گواهینامه های دیجیتال برای مرکز آمار ایران غیر معتبر هستند و از طرفی شما می توانید Certificate Authority داشته باشید که در سطح کل کشور کار کند و برای مثال گواهینامه رانندگی شما که قطعا خود این گواهینامه نیز دارای کلیدهای رمزنگاری است در کل کشور اعتبار دارد .
بنابراین، ما Certificate Authorityها را از این به بعد CA مینامیم و به دودسته کلی Public CA و Private CA دستهبندی میکنیم که Public CAها مراکزی هستند که در سطح دنیا معتبر و مجاز هستند و به شما گواهینامه دیجیتال ارائه میدهند، از نمونه این Public CAها که همه به آنها در محیط اینترنت اعتماد دارند میتوانیم به VeriSign و GeoTrust اشاره کنیم.
و از نمونههای Private CA میتوانیم به CA ای که در شرکت ITPRO است اشاره کنیم و برای سرویسدهی به کارکنان این شرکت استفاده میشود، اما نکته بعدی اینجاست که شما قرار نیست مستقیماً به مرکز اصلی یا همان ستاد اصلی صادرکننده گواهینامه دیجیتال مراجعه کنید؛ بلکه باید از مراکز زیردستی یا میانی برای دریافت این Certificateها استفاده کنید.
در اصطلاح فنی ما به CA ای که در مرکز ریشه این سلسلهمراتب قرار دارد Root CA میگوییم؛ یعنی تنها جایی که خودش برای خودش مجوز فعالیت صادر کرده است، طبیعتاً ستاد کل راهنماییورانندگی کشور از جای دیگر گواهینامه رانندگی دریافت نمیکند.
هر گواهینامه شامل دو بخش است. یک بخش بهصورت عمومی است که هر کسی میتواند آن را مشاهده کند که در گواهینامه رانندگی نام و نام خانوادگی و شماره ملی و… است و یک بخش خصوصی هم دارد که داخل کارت قرار گرفته است و برای احراز هویت از آن قسمت استفاده میشود.
انواع کلیدهای امنیتی pki
ما در Certificateهای دیجیتال به بخشی که در اختیار همگان است در اصطلاح Public Key و به بخشی که فقط و فقط مالک Certificate در دست دارد Private Key یا کلید خصوصی میگوییم. Root CAها به CAهای دیگری مجوز فعالیت میدهند و به این CAهای میانی در اصطلاح فنی Intermediate CA یا Subordinate CA گفته میشود.
و الزاماً برای صدور گواهینامه یا Certificate استفاده نمیشوند و لایههای زیرینی هم دارند، لایهای که گواهینامه را صادر میکند برای کاربر لایه صادرکننده یا Issuing CA گفته میشود که طبیعتاً Certificate یا مجوز خودش را باید از لایه بالاتر دریافت کرده باشد. شما هیچوقت از یک Root CA درخواست Certificate نمیدهید.
خاطرتان هست که گفتیم ساختار مجوز یا گواهینامهای که به ستاد استانی داده میشود با مراکز پلیس بعلاوه 10 متفاوت است ، در Certificate نیز به همین شکل است ، ساختار Certificate ای که برای وب سرور استفاده می شود با ساختار Certificate ای که برای IPsec استفاده می شود متفاوت است و در اصطلاح Certificate Template ها یا قالب های Certificate متفاوتی داریم.
چگونه Certificate را دریافت کنیم؟
طبیعتاً دریافت Certificate بسته به نوع Certificate متفاوت است، ولی در حالت عادی وبسایت یا سرویس شما باید مدارک یا مستنداتی ارائه کند که خدمات مشخصی ارائه میکند، برای مثال خدمات پرداخت الکترونیک اگر دارید در Certificate ای که صادر میشود توسط Public CA مشخصات شرکت شما باید ارائه شود.
البته این الزامی نیست؛ اما در حالت حرفهای به این شکل است، روش دوم Certificateهای داخلی هستند که معمولاً مدیر شبکه بایستی آنها را Issue یا صادر کند و معمولاً این Certificateها در محیطهای Domain بهصورت خودکار صادر میشوند.
دقت کنید که صادرشدن خودکار Certificate در محیطهای مایکروسافتی را در اصطلاح Auto Enrollment میگویند و Enroll به فرایند صدور گواهینامه و مراحل کاری آن گفته میشود. اگر یک بانک درخواست Certificate از یک شرکت معتبر اینترنتی مثل GeoTrust یا TurkTrust بکند حتماً در کنار علامت https آن اطلاعات مربوط به آن Certificate آورده میشود.
توجه کنید که نوع Certificate ای که برای وب سرور صادر میشود با نوع Certificate ای که برای IPsec صادر میشود متفاوت است و قبلاً هم گفتهایم که شما نمیتوانید از Certificate ای که برای موتورسیکلت ارائه شده است برای تریلی هم استفاده کنید و این قانون در ساختار CA هم وجود دارد.
از کجا متوجه شویم که یک Certificate معتبر
از کجا بدانیم یک Certificate منقضی شده است یا باطل شده است؟ دقت کنید که در ساختار PKI سرورها که همان CAها هستند تمامی Public Keyها و Private Keyها را درون خودشان دارند و به همین دلیل است که در صورت مفقودشدن گواهینامه یا Certificate شما امکان صدور مجدد آن وجود دارد.
همین سرورها یا CAها برای همگان کلیدهای عمومی را منتشر میکنند و در کنار این کلیدهای عمومی لیستی از Certificateهای باطل شده را جهت استعلام معتبر بودن Certificateها ارائه میکنند.
در اصطلاح فنی به این لیست Certificateهای منقضی شده CRL یا Certificate Revocation List گفته میشود و در صورت نداشتن این لیست ممکن است افسر راهنماییورانندگی نتواند استعلام کند، بر اساس همان مثالی که قبلاً زدیم. اگر CRL را نداشته باشیم متوجه نمیشویم که یک گواهینامه هنوز معتبر است یا اینکه باطل شده است.
برای مثال گواهینامههای راهنماییورانندگی اگر در حین انتقال به سرقت بروند چه اتفاقی رخ میدهد؟ اگر مرکز داده ستاد راهنماییورانندگی دچار مشکل شود چه اتفاقی میافتد؟ آیا قرار هست همیشه مراکز صدور گواهی آنلاین باشند و در دسترس یا نیازی نیست و خیلی دیگر از این موارد که همگی قابل درج در این مثال هستند؛ زیرا دقیقاً شما از PKI در ساختار گواهینامه راهنماییورانندگی استفاده میکنید.
کاربردهای PKI در سازمانها
احراز اصالت دوعاملی و امضای دیجیتال در سامانههای نرمافزاری سازمان: استفاده از PKI برای احراز هویت کاربران و امضای دیجیتال در سامانههای نرمافزاری جهت افزایش امنیت و اطمینان از اصالت اطلاعات.
ورود امن به دامنه با استفاده از کارت هوشمند: استفاده از PKI برای امنتر کردن ورود به سیستم با استفاده از کارتهای هوشمند.
ارتباطات امن پست الکترونیک: استفاده از امضای دیجیتال و رمزنگاری با استفاده از PKI برای افزایش امانت و امنیت در ارتباطات پست الکترونیک.
امضا و رمزنگاری اسناد دیجیتال: استفاده از PKI برای امضا و رمزنگاری اسناد دیجیتال بهمنظور اطمینان از اصالت و امانت اطلاعات.
رمزنگاری سیستم فایلNTFS : استفاده از رمزنگاری با PKI برای افزایش امانت و امنیت سیستم فایل NTFS در سیستمهای عامل ویندوز.
پیادهسازی و صدور گواهی SSL برای سرویسدهندههای وب: استفاده از PKI برای پیادهسازی امنیت ارتباطات HTTPS در وب با صدور گواهیهای SSL.
ارتباطات امن راه دور از طریق VPN : استفاده از PKI برای رمزنگاری و احراز هویت در اتصالات امن از طریق شبکههای خصوصی مجازی VPN
مؤلفهای امنیتی PKI
زیرساخت کلید عمومی یا همان PKI یک مؤلفه امنیتی محسوب میشود. مؤلفهای امنیتی PKI دارای سه معیار محرمانگی، اصالت و یکپارچگی است.
Certificate Authority (CA)
CA یک مؤسسه یا سرویسدهنده است که مسئول صدور و مدیریت گواهینامههای دیجیتال است. CA اطمینان از اعتبار و اصالت اطلاعات در یک PKI فراهم میکند.
Public Key Infrastructure (PKI)
زیرساخت کلید عمومی که شامل استانداردها، پروتکلها، و خدمات موردنیاز برای مدیریت کلیدها و گواهینامهها میشود.
Public Key Cryptography
از الگوریتمهای رمزنگاری کلید عمومی برای ایجاد جفت کلید عمومی و خصوصی و انجام عملیات امضای دیجیتال استفاده میشود.
Digital Certificates
گواهینامههای دیجیتال حاوی اطلاعاتی درباره مالک کلید عمومی، اطلاعات تأییدیه، و دیگر موارد موردنیاز برای احراز اصالت.
Certificate Revocation List (CRL)
لیستی از گواهینامههای دیجیتالی که به هر دلیلی از چرخه معتبریت خارج شدهاند یا لغو شدهاند.
Registration Authority (RA)
RA مسئول انجام فرایند هویتسنجی مالکان گواهینامههای دیجیتال است و معتبریت اطلاعات ارائه شده در آنها را اعلام میکند.
Validation Authority (VA)
VA اطلاعات گواهینامههای دیجیتال را بررسی کرده و اعتبار آنها را تأیید میکند.
خدمات رمزنگاری و امضاء دیجیتال
خدماتی که برای انجام عملیات رمزنگاری و امضاء دیجیتال در PKI استفاده میشوند.
خدمات توزیع کلید
مسئول توزیع کلیدها و گواهینامهها بهموجب استانداردهای PKI است.
سیاستها و قوانین امنیتی
قوانین و سیاستهای امنیتی که استفاده از PKI را مدیریت میکنند و برای تضمین امنیت و حفاظت در تمامی مراحل استفاده از زیرساخت کلید عمومی تعیین میشوند.
چرا رمزنگاری مهم است؟
رمزنگاری یک فرایند مهم است که بهمنظور حفاظت اطلاعات از دسترسی غیرمجاز استفاده میشود. این مکانیزم، اطلاعات را به نحوی رمزگذاری میکند که تنها گیرنده موردنظر قادر به خواندن آن است و برای دیگران غیرقابلفهم باقی میماند. در مواردی مانند سازمانها، اطلاعات حساس مثل اسرار تجاری یا حقوق و دستمزدها باید بهصورت رمزنگاری شده تدارک دیده شوند تا محافظت از حریم خصوصی و امنیت اطلاعات اطمینانبخش باشد.
در جهان امروز، دو روش اصلی برای انجام رمزنگاری وجود دارد: رمزنگاری متقارن و رمزنگاری نامتقارن. در رمزنگاری متقارن، از یک کلید مشترک برای رمزگذاری و رمزگشایی استفاده میشود، درحالیکه در رمزنگاری نامتقارن، دو کلید متفاوت برای این امور به کار میروند. در ادامه ما با یکی از الگوریتمهای رمزنگاری قدیمی به نام کد سزار Caesars آشنا میشویم.
الگوریتمهای رمزنگاری pki
در زبان رمزنگاری pki ، اصطلاح “الگوریتم رمزنگاری” به هر الگوریتم یا تابع ریاضی اشاره دارد که به دلیل داشتن خصوصیات موردنیاز در پروتکلهای رمزنگاری به کار میرود.
در گذشته، سازمانها و شرکتهایی که نیاز به رمزگذاری یا سایر خدمات رمزنگاری داشتند، عادت داشتند الگوریتمهای رمزنگاری منحصربهفردی را طراحی کنند، اما با گذر زمان مشخص شد که برخی از این الگوریتمها دارای ضعفهای امنیتی بزرگ هستند که باعث سهولت در شکستن رمز میشود.
به همین دلیل، امروزه رمزنگاری مبتنی بر افشای کامل الگوریتمهای رمزنگاری منسوخ شده است و در روشهای جدید رمزنگاری، افترا به این است که جزئیات کامل الگوریتمها و پروتکلها به عموم اطلاعات داده شود و تنها آنچه پنهان است، کلید رمز است. بهاینترتیب، امنیت و حفظ حریم شخصی توسط این الگوریتمها و پروتکلها که بر امنیت و محرمانه ماندن کلید رمز متکی است، تضمین میشود.
رمزنگاری با استفاده از کد سزار
کد سزار، یک الگوریتم رمزنگاری است که توسط ژولیوس سزار برای ارسال دستورات نظامی به لشکریانش ابداع شد. این الگوریتم با استفاده از حروف الفبا و یک کلید عددی اجرا میشود. در این روش، برای رمزنگاری پیام، هر حرف الفبا بهاندازه کلید به سمت راست یا چپ شیفت میشود.
حروف الفبای ساده: abcdefghijklmnopqrstuvxyz
حروف الفبای رمزنگاری شده: defghijklmnopqrstuvxyzabc
پیام با متن معمولی: My message is encrypted
پیام رمزنگاری شده: Pb phvvdjh lv hqfubsxhg
مشکل اصلی این الگوریتم رمزنگاری در آن است که بهسادگی قابل شکستن است. بهعنوانمثال، میتوان از حرفی که معمولاً برای شکستن رمز استفاده میشود، بهره گرفت. همچنین، درصورتیکه کلمهای کوتاه باشد، شکستن رمز بسیار ساده میشود. استفاده بیش از حد از یک کلید، باعث «بیاثر شدن کد» میشود.
تعریف کلید عمومی pki در الگوریتمهای رمزنگاری
الگوریتمهای رمزنگاری مدرن، همانند کد سزار از مفهوم کلید بهره میبرند. کلید یک عدد تصادفی بسیار بلند است که بهوسیله ماشینها تولید میشود و در فرایند رمزنگاری به کار میرود. این کلیدها بهمنظور اجرای فرایند رمزنگاری ایجاد میشوند. دو نوع اصلی از کلید وجود دارد که به نامهای کلید خصوصی Private Key و کلید عمومی Public Key شناخته میشوند. هنگامی که از کلید عمومی استفاده میشود که در رمزنگاری نامتقارن به کار میرود.
رمزنگاری نامتقارن
رمزنگاری نامتقارن با استفاده از یک جفت کلید (کلید خصوصی و کلید عمومی) انجام میشود که این دو کلید از نظر ریاضی با یکدیگر ارتباط دارند. در رمزنگاری نامتقارن، کلید خصوصی میان دو طرف به اشتراک گذاشته نمیشود و بهجای آن، کلید عمومی به اشتراک گذاشته میشود. برای رمزنگاری اطلاعات از کلید عمومی استفاده میشود و بهعنوان تضمین امنیت، برای رمزگشایی از کلید خصوصی استفاده میشود.
مراحل اجرای رمزنگاری
- کلید عمومی به متناظر خود ارسال میشود که برای رمزنگاری اطلاعات مورد استفاده قرار میگیرد.
- کلید خصوصی برای رمزگشایی اطلاعات به کار میرود.
رمزنگاری نامتقارن عمدتاً در الگوریتمهای RSA پیادهسازی میشود. طول کلید در این روشها بسیار بلند است و برای کاربردهای امروزی، استفاده از یک کلید حداقل 4096 بیتی توصیه میشود.
رمزنگاری نامتقارن از استحکام بسیار بالایی برخوردار است، اما نکتهای که باید در نظر گرفت، این است که این روش منابع زیادی از سیستم (عمدتاً پردازنده) را اشغال میکند که باعث کاهش سرعت رمزنگاری میشود.
رمزنگاری متقارن
رمزنگاری متقارن بر اساس بهکارگیری یک کلید خصوصی مشترک میان دو یا چند موجودیت اجرا میشود. در این روش یک کلید خصوصی مشترک به نام Kpr، میان دو موجودیت به اشتراک گذاشته میشود. این کلید اختصاصی، اطلاعات را قابل رمزنگاری و رمزگشایی میکند. بااینحال، هر چه کلید اختصاصی خود را بیشتر به اشتراک بگذارید، کمتر بهعنوان یک کلید اختصاصی محسوب میشود. به همین دلیل، رمزنگاری نامتقارن ایجاد شده است.
رمزنگاری متقارن در الگوریتمهای AES، 3DES، Blowfish، RC4 و… پیادهسازی میشود. معمولاً طول کلید در این روشها کوتاه است و یک کلید با طول 256 بیت به عنوان یک کلید قدرتمند در نظر گرفته میشود.
رمزنگاری متقارن به دلیل سرعت بالا و استفاده کمتر از منابع سیستم، موردتوجه قرار میگیرد. بااینحال، به دلیل اشتراکگذاری کلید خصوصی بین یک یا چند موجودیت، امنیت این روش کمتر از رمزنگاری نامتقارن است.
رمزنگاری مدرن
هر الگوریتم رمزنگاری از مزایای خاصی بهرهمند است. رمزنگاری متقارن سرعت بسیار بالایی دارد، اما به استحکام بالایی دست نمییابد، درحالیکه رمزنگاری نامتقارن دقیقاً برعکس این ویژگیها عمل میکند؛ بنابراین به نظر میرسد که ایجاد ارتباط و تلفیق بهینه بین این دو الگوریتم میتواند بهترین راهحل باشد و بهدستآوردن راهحلی مستحکم و سریعتر را فراهم کند.
الگوریتمهای مدرن برای رمزنگاری اطلاعات از کلید نشست (کلید موقتی) استفاده میکنند. در این روش، کلید نشست با کلید عمومی گیرنده رمزنگاری میشود. برای رمزگشایی اطلاعات، گیرنده ابتدا کلید نشست را با کلید خصوصی خود رمزگشایی کرده و سپس با استفاده از کلید نشست، اطلاعات را رمزگشایی میکند.
مراحل اجرای رمزنگاری مدرن
در سمت فرستنده:
- تولید یک کلید موقتی به نام کلید نشست
- رمزنگاری اطلاعات با استفاده از Ks
- Ksبا استفاده از کلید عمومی گیرنده رمزنگاری میشود و سپس به Kseتبدیل میشود.
- Kseبه فایل اطلاعات رمزنگاری شده اضافه میشود و این فایل به گیرنده ارسال میشود.
در سمت گیرنده:
- تفکیک اطلاعات رمزنگاری شده Kse
- رمزگشایی Kse با استفاده از کلید خصوصیKpr گیرنده و تبدیل به Ks
- رمزگشایی سند با استفاده از Ks
یکپارچگی
بررسی یکپارچگی، یک مکانیزم است که تغییریافتن یا تغییرنیافتن اطلاعات را مورد بررسی قرار میدهد. اطلاعات به دلیل عدم کارکرد صحیح رمزنگاری، مشکلات شبکه یا تغییرات بدخواهانه قابلتغییر هستند. بهمنظور بررسی یکپارچگی، ثامب پرینت thumbprint از اطلاعات ایجاد میشود. ثامب پرینت که هش یا دایجست هم گفته میشود با استفاده از الگوریتمی ایجاد میشود که یک رشته بیت کوتاهتر را از اطلاعات تولید میکند، این رشته بیت کوتاهتر باید یکتا باشد.
گاهی اوقات، دو اطلاعات متفاوت میتوانند به یک ثامب پرینت منجر شوند که به آن تصادف collision میگوییم. بهعنوانمثال، MD5 آسیبپذیر است چرا که میتواند در مواقع نیاز تصادف ایجاد کند؛ بنابراین مهاجم ممکن است به راحتی باور کند که اطلاعات تغییر نکردهاند، از جمله معروفترین الگوریتمها میتوان به SHA-256، SHA-1 یا MD5 اشاره کرد.
ایجاد ثامب پرینت
برای ایجاد ثامب پرینت، اطلاعات اولیه بهعنوان ورودی به الگوریتم هش ارسال میشود و در نتیجه یک دایجست ایجاد میشود.
نمونه ثامب پرینت برای عبارت:
I love Security
MD5: f3f57004371b08ee73327ae2e5353958
SHA-1: 8c9855b2c81c1e3278a5ce6a771e5c3f74ee09b5
SHA-256: 1675cd4ee780f6cc04c6d3b54faa2de90fb5b18cdacc974dacf2d99d35307cce
اصالت
امضای دیجیتالی به اطمینان از یکپارچگی اطلاعات (با استفاده از الگوریتم هش) و اصالت کمک میکند. امضا همانند امضای واقعیت استفاده میشود. برای مثال، زمانی که بهعنوان مشترک یک سرویس ثبتنام میکنید، این موارد را میخواهید:
- سند امضا شده توسط شرکت (اصالت).
- امضای شما تنها و فقط شما را شناسایی کند (غیر قابل ابطال).
- امضای شما برای حق عضویتهای دیگر قابل استفاده نباشد. اگر میخواهید مشترک سرویس دیگری شوید، باید با امضایی جدید عمل واگذاری را انجام دهید (غیر قابل استفاده مجدد).
- قرارداد در طول زمان تغییر نکند (غیر قابل تغییر).
- طرفین (یعنی شما و شرکت) نتوانند انکار کنند که سند را امضا کردهاند (غیر قابل فسخ).
امضای دیجیتالی باید اصیل، غیر قابل ابطال، غیرقابلاستفاده مجدد غیرقابلتغییر و غیرقابلفسخ باشد. درصورتیکه تمام این ویژگیها کنار هم قرار گیرند، اصالت و یکپارچگی اطلاعات قابلتأیید خواهد بود.
عملیات امضا
عملیات امضا بر اساس رمزنگاری نامتقارن انجام میشود. در ابتدا، یک دایجست از اطلاعات اولیه ایجاد و با کلید خصوصی رمزنگاری میشود. به این عملیات “امضا” میگوییم.
گیرنده برای اعتبارسنجی امضا، دایجستهای رمزنگاری شده را از پیام استخراج میکند و برای رمزگشایی آن از کلید عمومی خود استفاده میکند. سپس گیرنده یک دایجست از اطلاعات دریافتی ایجاد و با دایجستهای رمزگشایی شده از قبل مقایسه میکند. به این کار “فرایند بررسی امضا” میگوییم.
یکی از راههای خوب برای بهخاطر سپردن موارد استفاده از کلید خصوصی این است که بدانیم در هر عملیات چه اطلاعاتی مهم است. در فرایند امضا، اطلاعات مهم همان دایجست است و در نتیجه برای امضا از کلید خصوصی استفاده میشود. در فرایند رمزنگاری، اطلاعات حیاتی رمزنگاری میشود و در نتیجه برای رمزگشایی از کلید خصوصی استفاده میشود.
عملیات رمزنگاری و امضا
حال که از رمزنگاری، الگوریتم هش، و امضا اطلاعاتی به دست آوردیم، نگاهی به نحوه تعامل این موارد میاندازیم تا ببینیم چگونه اطلاعات را محرمانه، اصیل، و قابلاطمینان میکنند.
هنگامی که امضا و رمزنگاری با هم استفاده میشوند، فرایند امضا اولویت دارد. پس این مراحل با این ترتیب انجام میشود:
- از اطلاعات اولیه یک دایجست ایجاد میشود.
- این ثامب پرینت با کلید خصوصی Kprg رمزنگاری میشود.
- ثامب پرینت به اطلاعات اولیه (در همان فایل) اضافه میشود.
- یک کلید نشست موقتی Ks تولید میشود. این کلید برای رمزنگاری اطلاعات اولیه به کار میرود.
- کلید نشست با کلید عمومی گیرنده Kpub رمزنگاری میشود.
- Kseبه فایل اطلاعات رمزنگاری شده اضافه میشود. در نتیجه این فایل حاوی اطلاعات رمزنگاری شده Kseاست.
هنگامی که گیرنده فایل را از فرستنده دریافت میکند، کار را با رمزگشایی فایل آغاز میکند و پس از آن اعتبارسنجی امضا را انجام میدهد:
- گیرنده Kse فایل دریافتی را استخراج میکند. این کلید با کلید خصوصی Kprb رمزگشایی میشود تا کلید نشست Ks بدست آید.
- برای اطلاعات رمزگشایی شده از Ks استفاده میشود.
- سپس گیرنده ثامب پرینت رمزنگاری شده را استخراج میکند.
- برای رمزگشایی ثامب پرینت از کلید عمومی Kpug استفاده میشود.
- در همین حال، گیرنده از اطلاعات رمزگشایی شده قبلی یک دایجست ایجاد میکند.
- در پایان گیرنده ثامب پرینت رمزگشایی شده را با دایجست ایجاد شده از اطلاعات رمزگشایی شده مقایسه میکند، اگر با هم منطبق بودند امضا تأیید میشود.
اجزای زیرساخت کلید عمومی
هر PKI برای این که بتواند کلیدها و مجوزهای دیجیتال را ایجاد، مدیریت، توزیع و فسخ کند نیاز به یکسری سختافزار، نرمافزار، خط مشی و استاندارد دارد. مجوزهای دیجیتال، قلب یک PKI هستند به این خاطر که هویت دارنده مجوز را تائید و با توجه به این هویت، کلید عمومی PKI مجوز را مشخص میکنند.
هر PKI شامل اجزای زیر است:
- یک طرف مورد اطمینان که به آن مرجع صدور گواهینامه دیجیتال (CA) گفته میشود و به عنوان عامل اصلی ایجاد کننده اطمینان عمل میکند و سرویسهایی را عرضه میکند که هویت افراد، کامپیوترها و سایر موجودیتها را بررسی و تایید میکنند.
- یک متصدی برای ثبتنام که معمولاً به آن CAی تابع گفته میشود و از CAی اصلی مجوز دارد که گواهینامهها را برای کاربران تعیین شده توسط CAی اصلی صادر کند.
- یک دیتابیس برای مجوزها که درخواستهای ارسال شده برای مجوز را ذخیره میکند و مجوزها را صادر و یا فسخ میکند.
- یک فروشگاه مجوز که روی یک کامپیوتر محلی مقیم میشود و محلی برای مجوزهای صادر شده و کلیدهای خصوصی است.
CA گواهینامههای دیجیتال را برای افراد و نهادهای مختلف بعد از شناسایی و تائید هویتشان صادر میکند. سپس این مجوزها را با کلید خصوصی خودش امضا میکند؛ کلید عمومی CA همانطور که از نامش پیداست در دسترس عموم قرار دارد. CAها از root certificateها برای ایجاد “یک زنجیره اعتماد” استفاده میکنند؛ root certificate های زیادی در مرورگرهای وب وجود دارند، بنابراین این مرورگرها یک مکانیزم اعتماد درونی برای این CAها دارند. سرورهای وب، کلاینتهای ایمیل، تلفنهای هوشمند و خیلی از سختافزارها و نرمافزارهای دیگر هم از PKI، پشتیبانی میکنند و دارای root certificate از CAهای بزرگ هستند.
گواهینامههای دیجیتال علاوه بر کلید عمومی نهادها یا افراد، حاوی اطلاعات دیگری هم هستند از جمله اطلاعاتی درباره الگوریتم مورد استفاده برای ایجاد امضاء، شخص یا نهادی که هویتش شناسایی یا تائید شده، امضای دیجیتال CA که دادههای مربوطه را تائید و مجوز را صادر کرده، هدف رمزنگاری کلید عمومی، امضای گواهینامه و همچنین بازه تاریخی که مجوز در آن اعتبار دارد.
مشکلات زیرساخت کلید عمومی
PKI یک زنجیره اعتماد را شکل میدهد تا بتوان هویت افراد و نهادهای داخل یک شبکه را شناسایی کرد. اما قدرت PKI هم مثل هر زنجیره دیگری به اندازه ضعیفترین عضو آن است. استانداردهای مختلفی هستند که جنبههای مختلف PKI را پوشش میدهند، مثل سیاست اعطای مجوز زیرساخت کلید عمومی (Internet X.509 (Internet X.509 Public Key Infrastructure Certificate Policy و فریم ورک اقدامات مربوط به صدور گواهینامه (به اختصارRFC2527)، اما هیچ نهاد نظارتی و قانونی وجود ندارد که اجرای این استانداردها را الزامآور کند.
هرچند اغلب اوقات CA اشاره به یک “شخص ثالث قابلاطمینان” دارد اما کوتاهیهایی در رویکردهای امنیتی مربوط به CAهای مختلف در سالهای اخیر باعث به خطر افتادن اعتماد در کل زیرساخت کلید عمومی شده که اینترنت به آن وابسته است. در صورتیکه یک CA در معرض خطر قرار بگیرد، امنیت کل PKI تهدید میشود. برای مثال در سال 2011، فروشندگان مرورگرهای وب ملزم شدند تمام مجوزهای صادر شده توسط یک CAی هلندی به نام DigiNotar را در لیست سیاه قرار بدهند و این اقدام به دلیل شناسایی بیش از 500 مجوز جعلی انجام شد.
سرویس جستجو و مرور امن (WOT (Web of trust
یک جایگزین برای استفاده از CA جهت بررسی و تائید اعتبار اطلاعات کلیدهای عمومی، روشی غیرمتمرکز به نام وب اعتماد یا “Web of trust” است. این مفهوم در نرمافزار رمزگذاری PGP و سایر سیستمهای سازگار با OpenPGP استفاده میشود. در این روش به جای اتکا بر سلسله مراتبی از مراجع صدور گواهینامه، گواهینامهها توسط سایر کاربران امضا میشوند تا این تضمین ایجاد شود که کلید عمومی ذکر شده، مربوط به فرد یا نهاد لیست شده در مجوز است.
یکی از مشکلات این روش این است که کاربر باید به صداقت تمام طرفهای موجود در زنجیره اعتماد داشته باشد بنابراین این روش بیشتر برای انجمنها و جوامع کاربری کوچک مناسب است. مثلاً یک سازمان یا شرکت میتواند وب اعتماد خودش را برای تعیین و تصدیق هویت کاربران و دستگاههای داخلی، بین شبکهای و برون شبکهای خودش داشته باشد و همچنین میتواند با استفاده از نرمافزارهایی مثل Microsoft Certificate Services بر اساس CAی خودش کار کرده و مجوزهای دیجیتال را صادر و یا فسخ کند.