محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

PKI چیست؟ آشنایی با رمزنگاری کلید عمومی به زبان خیلی ساده

PKI چیست؟ رمزنگاری کلید عمومی چیست؟ یکی از مسائلی که در حوزه شبکه و امنیت همیشه مورد بحث و جدل بین اساتید بوده است و اکثرا دانشجویان با درک این موضوع مشکل دارند مبحث Certificate Services است که در حوزه مایکروسافت ما آن را به شکل Active Directory Certificate Services می شناسیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

این بحث در حوزه امنیت اطلاعات به عنوان رمزنگاری کلید عمومی یا Public Key Infrastructure هم شناخته می شود. با توجه به ماهیت کمی تا قسمتی پیچیده این مبحث قصد داریم امروز به زبان خیلی ساده و طبق روال ITPRO این مبحث را برای شما تشریح کنیم.

دقت کنید که قرار است فقط در این مقاله شما ساختار کلی مفهوم PKI را درک کنید و مهم نیست که با چه نوع Certificate Services ای قرار است کار کنید. خوب برای اینکه این مفاهیم را خوب درک کنید امروز می خواهیم برای شما یک داستان تعریف کنیم و مطمئن هستم با این داستان که کاملا من درآوردی است و فراموش نکنید که به نام ITPRO و محمد نصیری باید انتشار بدهید ، شما مفهوم PKI را به راحتی درک خواهید کرد ، خوب به سراغ داستان می رویم.


رمزنگاری کلید عمومی یا Public Key Infrastructure به زبان خیلی ساده - قسمت اول

مکانیزم کاری صدور گواهینامه رانندگی

ما قرار است مثال خودمان را با روش صدور گواهینامه رانندگی مثال بزنیم ، اولین سئوالی که پیش می آید این است که شما چرا گواهینامه رانندگی دریافت می کنید ؟ طبیعتا برای اینکه بتوانید بصورت مجاز رانندگی کنید و کسی که گواهینامه رانندگی شما را می بیند متوجه می شود

که شما رانندگی را بصورت اصولی یاد گرفته اید. خوب این گواهینامه رانندگی را خودمان هم می توانیم صادر کنیم ؟ جواب بله است ، شما برای خودتان می توانید گواهینامه رانندگی صادر کنید اما طبیعتا فقط خودتان هم این گواهینامه را قبول دارید و هیچکس دیگر این گواهینامه را قبول نخواهد داشت.

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

اما نکته در اینجاست که شما قرار نیست برای گرفتن گواهینامه راهنمایی و رانندگی یک راست به سراغ ستاد کل راهنمایی و رانندگی کشور نمی روید و برای اینکار حتی به ستادهای استانی راهنمایی و رانندگی نیز مراجعه نمی کند و فقط به مراکز پلیس بعلاوه ده یا آموزشگاه های مجازی که می توانند گواهینامه رانندگی صادر کنند مراجعه خواهید کرد.

دقت کنید که خود این آموزشگاه ها و مراکز پلیس بعلاوه ده نیز نمی توانند به تنهایی و خودسرانه اقدام به صدور گواهینامه کنند و بایستی مجوز و گواهینامه ای برای خودشان نیز داشته باشند که از مراجع بالاتر صادر می شود تا به آنها مجوز صدور گواهینامه برای مردم را بدهند.

اما شما چگونه گواهینامه رانندگی دریافت می کنید ؟ جواب ساده است ، شما ابتدا تمامی مدارک احراز هویت خود را ارائه می کنید ، آزمون های لازم برای تشخیص صلاحیت را پاس می کنید و در نهایت برای شما مجوز یا گواهینامه رانندگی صادر می شود که این اطمینان را به دیگران می دهد که شما یک راننده شده اید ( البته شاااااایییید D: ) خوب سئوال دیگر اینکه آیا من با گرفتن گواهینامه لودر می توانم خودروهای سبک را هم رانندگی کنم یا خیر ؟ آیا من می توانم با گواهینامه رانندگی موتور سیکلت یک تریلی را رانندگی کنم یا خیر ؟

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

تا اینجا دقت کنید که مردم به پلیس راهنمایی و رانندگی اعتماد دارند اما به شخص شما اعتماد ندارند ، برای صدور گواهینامه باید یک مرجع قابل اعتماد این تاییدیه ها را صادر کند. فراموش نکنید که در ساختار گواهینامه راهنمایی و رانندگی یک نام و نام خانوادگی وجود دارد که هر کسی می تواند از آن اطلاع پیدا کند اما درون این کارت گواهینامه راهنمایی و رانندگی اطلاعات محرمانه ای نیز وجود دارد که صرفا مختص همان شخص است ، اگر کسی گواهینامه راهنمایی و رانندگی شما را به سرقت ببرد ممکن است از این اطلاعات محرمانه سوء استفاده کند.

حالا فرض کنید که شما با موفقیت توانسته اید گواهینامه راهنمایی و رانندگی دریافت کنید و اینکار بصورت مجاز انجام شده است. یک روز که در حال رانندگی هستید پلیس خودروی شما را متوقف می کند و از شما درخواست گواهینامه راهنمایی و رانندگی می کند ، گواهینامه شما معتبر است اما افسر پلیس چگونه باید این را تشخیص بدهد ؟ در ابتدا توجه کنید که گواهینامه های رانندگی صادر می شوند ، تمدید می شوند

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

مکانیزم کاری صدور گواهینامه دیجیتال یا Digital Certificate

خوب حالا می رویم سراغ بحث فنی ، همان مثال قبلی را دائما در ذهن داشته باشید تا واژه های فنی ای که به کار می بریم برای شما قابل درکتر باشند. خوب اولین سئوالی که پیش می آید این است که چرا ما باید گواهینامه دیجیتال یا Digital Certificate بگیریم ؟ پاسخ بسیار ساده است ، برای اینکه بتوانیم اطلاعات خودمان را در حین انتقال در شبکه رمزنگاری کنیم و کاربران ما با مشاهده کردن این گواهینامه دیجیتال متوجه می شوند که اطلاعات انها نیز در حالت امنی در شبکه منتقل خوهد شد.

ساختار رمزنگاری کلید عمومی PKI

با داشتن گواهینامه دیجیتال کاربران وب سایت ما یا کاربران سرویس ها و خدمات ما متوجه می شوند که ما امنیت را در کارهایمان رعایت کرده ایم و طبیعتا اعتماد بیشتری به خدمات ما پیدا خواهند کرد. خوب آیا ما می توانیم این Digital Certificate را خودمان برای خودمان صادر کنیم ؟

پاسخ بله است ، ما می توانیم برای خودمان Certificate صادر کنیم اما نکته در اینجاست که فقط و فقط این Certificate را خودمان قبول داریم و برای دیگران که غیرمعتبر است ، صدور گواهینامه دیجیتال را باید مرجعی انجام دهد که از دید همگان مورد اعتماد است و در اینترنت یک امین به حساب می آید.

اما از Certificate های من درآوردی خیلی استفاده می شود و در اصطلاح فنی به آن Self-Signed Certificate یا Certificate خود تایید شده اطلاق می شود. اگر سیستم گلستان دانشگاه پیام نور را به خاطر داشته باشید بعد از ورود به صفحه Login با یک پیام خطای قرمز رنگ مواجه می شدیم ، این خطای قرمز رنگ یعنی سیستم جامع گلستان از یک گواهینامه خود امضا شده داخلی استفاده می کند که فقط برای همان دانشگاه معتبر است و در اینترنت اعتباری ندارد و اگر کسی با این سیستم تعامل کند خودش ریسک از دست رفتن محرمانگی اطلاعاتش را بر عهده می گیرد.


گواهینامه های دیجیتال را چه کسی صادر می کند ؟ گواهینامه های دیجیتال را مراکز صدور گواهینامه دیجیتال صادر می کنند که در اصطلاح فنی ما به آنها Certificate Authority می گوییم ، دقت کنید که این مراکز صدور گواهی دیجیتال می توانند هم بصورت عمومی معتبر باشند و هم بصورت خصوصی برای مثال شما می توانید Certificate Authority راه اندازی کنید که درون شرکت ملی نفت ایران باشد

و گواهینامه هایی که صادر می کند فقط در این شرکت معتبر هستند اما برای مثال این گواهینامه های دیجیتال برای مرکز آمار ایران غیر معتبر هستند و از طرفی شما می توانید Certificate Authority داشته باشید که در سطح کل کشور کار کند و برای مثال گواهینامه رانندگی شما که قطعا خود این گواهینامه نیز دارای کلیدهای رمزنگاری است در کل کشور اعتبار دارد .

معرفی CA ها معتبر دنیا



بنابراین ما Certificate Authority ها را که از این به بعد CA می نامیم به دو دسته کلی Public CA و Private CA دسته بندی می کنیم که Public CA ها مراکزی هستند که در سطح دنیا معتبر هستند و مجاز هستند به شما گواهینامه دیجیتال ارائه بدهند ، از نمونه این Public CA ها که همه به آنها در محیط اینترنت اعتماد دارند می توانیم به VeriSign و GeoTrust اشاره کنیم

و از نمونه های Private CA می توانیم به CA ای که در شرکت ITPRO است و برای سرویس دهی به کارکنان این شرکت استفاده می شود و اعتبار اینترنتی ندارد استفاده می کنیم. اما نکته بعدی اینجاست که شما قرار نیست مستقیما به مرکز اصلی یا همان ستاد اصلی صادر کننده گواهینامه دیجیتال مراجعه کنید بلکه باید از مراکز زیردستی یا میانی برای دریافت این Certificate ها استفاده کنید.

رمزنگاری کلید عمومی یا Public Key Infrastructure به زبان خیلی ساده - قسمت دوم



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

یک بخش بصورت عمومی است که هر کسی می تواند آن را مشاهده کند که در گواهینامه رانندگی نام و نام خانوادگی و شماره ملی و ... است و یک بخش خصوصی هم دارد که داخل کارت قرار گرفته است و برای احراز هویت از آن قسمت استفاده می شود.

ما در 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 هم وجود دارد.


رمزنگاری کلید عمومی یا Public Key Infrastructure به زبان خیلی ساده - قسمت دوم



اما از کجا متوجه شویم که یک Certificate معتبر است یا خیر ؟ از کجا بدانیم یک Certificate منقضی شده است یا باطل شده است ؟ دقت کنید که در ساختار PKI سرورها که همان CA ها هستند تمامی Public Key ها و Private Key ها را درون خودشان دارند

و به همین دلیل است که در صورت مفقود شدن گواهینامه یا Certificate شما امکان صدور مجدد آن وجود دارد. همین سرورها یا CA ها برای همگان کلیدهای عمومی را منتشر می کنند و در کنار این کلیدهای عمومی لیستی از Certificate های باطل شده را جهت استعلام معتبر بودن Certificate ها ارائه می کنند .

در اصطلاح فنی به این لیست Certificate های منقضی شده CRL یا Certificate Revocation List گفته می شود و در صورت نداشتن این لیست ممکن است افسر راهنمایی و رانندگی نتواند استعلام کند ، بر اساس همان مثالی که قبلا زدیم. اگر CRL را نداشته باشیم متوجه نمی شویم که یک گواهینامه هنوز معتبر است یا اینکه باطل شده است.

امیدوارم کمی در خصوص PKI دیدتان بازتر شده باشد ، هدف ما بحث فنی نبوده است و هدف ساده سازی درک این مفاهیم است. طبیعتا قوانین زیادی هست که ناگفته باقی مانده است اما می توان آنها را هم در همین مثالها جای داد .

برای مثال گواهینامه های راهنمایی و رانندگی اگر در حین انتقال به سرقت بروند چه اتفاقی رخ می دهد ؟ اگر مرکز داده ستاد راهنمایی و رانندگی دچار مشکل شود چه اتفای می افتد ؟ آیا قرار هست همیشه مراکز صدور گواهی آنلاین باشند و در دسترس یا نیازی نیست و خیلی دیگر از این موارد که همگی قابل درج در این مثال هستند زیرا دقیقا شما از PKI در ساختار گواهینامه راهنمایی و رانندگی استفاده می کنید. خوشحال می شوم که اگر مثالی در این خصوص دارید حتما در ادامه مطرح کنید تا برای دوستان ITPRO این مفاهیم ساده تر جا بیوفتد.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات