کلید عمومی و خصوصی چیست؟
بیشتر ارزهای دیجیتال و پروژههای کریپتویی بر بستر فناوری بلاک چین طراحی و ساخته شدهاند. یکی از بخشهای مهم در پیادهسازی این شبکهها استفاده از سیستمهای رمزنگاری است به طوری که تقریبا هیچ پروژهای در این حوزه وجود ندارد که از یکی از متدهای رمزنگاری اطلاعات استفاده نکرده باشد. در همین راستا، ممکن است اسامی کلید خصوصی و عمومی را به دفعات در مقالات این حوزه شنیده باشید که دو مفهوم کلیدی مربوط به بخش رمزنگاری اطلاعات در شبکههای بلاک چینی هستند.
در دنیای برنامههای کامپیوتری، از سیستمهای رمزنگاری مختلفی استفاده میشود. یکی از این سیستمها، رمزنگاری نامتقارن نام دارد که به رمزنگاری کلید عمومی نیز معروف است و دقیقا همان روشی است که در شبکه بیشتر ارزهای دیجیتال استفاده میشود و کاربرها، آن را با دو مفهوم کلید خصوصی و عمومی میشناسند. در این مطلب میخواهیم به طور مفصل در مورد این سیستم رمزنگاری صحبت کنیم. پس اگر به این نوع مباحث فنی علاقهمندید، در این مقاله اطلاعات خوبی برای شما گردآوری شده است.
رمزنگاری کلید عمومی
«رمزنگاری کلید عمومی» (Public Key Cryptography) یا PKC یکی از روشهای رمزنگاری به روش نامتقارن (Asymmetric) است که بر اساس یک منطق جالب مبتنی بر ریاضیات کار میکند. منظور از نامتقارن در این نامگذاری این است که برای رمزگذاری (Encryption) و رمزگشایی (Decryption) اطلاعات از دو پارامتر مختلف استفاده میشود که به آنها «کلید خصوصی و عمومی» (Private and Public Key) گفته میشود.
سیستم رمزنگاری کلید عمومی در حقیقت بر اساس یک مفهوم کلی در دنیای کامپیوتر به نام Trapdoor Function کار میکند. Trapdoor به معنی دریچه (یا یک حفره کوچک یا راه فرار) است و به عملیات ریاضی خاصی اشاره میکند که انجامِ آن در یک جهت بسیار ساده، ولی انجام آن در جهت مخالف بسیار سخت و زمانبر است، مگر اینکه کلید یا پارامتر رمزگشایی در جهت مخالف، در دسترس باشد.
در این سیستم، اطلاعات اولیه که به آنها «Plaintext» (یا متن ساده) گفته میشود، به روشی یک طرفه، به «Ciphertext» (یا متن رمزشده) طوری تغییر شکل داده میشود که امکان معکوس کردن آن وجود نداشته باشد. منظور از روش یکطرفه، استفاده از توابع ریاضی مثل «تابع هش» (Hash Function) است که میتواند Plaintextها را به عنوان ورودی گرفته و در خروجی Ciphertext تولید کند.
این تابع، خروجی را با استفاده از چندین هزار عملیات ریاضی تصادفی، طوری تولید میکند که اگر بخواهیم از خروجی به ورودی اولیه برسیم، شاید به چندهزار سال زمان نیاز باشد. به همین خاطر آنها را برگشت ناپذیر مینامند.
نکته جالب این است که دسترسی به اطلاعات اصلی با استفاده از یک رمز (یا کلید)، طوری فراهم میشود که دارنده آن میتواند بدون لو دادن رمز، ثابت کند که رمز صحیح را در اختیار دارد. همانطور که گفتیم در پیادهسازی چنین متدی، از توابع ریاضی برگشتناپذیر استفاده میشود و از آنجایی که امکان دستکاری در چنین متدی وجود ندارد، از این روش میتوان برای تأیید اعتبار هر نوع دادهای مثل یک تراکنش استفاده کرد.
کلید خصوصی و عمومی چیست؟
هدف سیستم رمزنگاری PKC این است که بتوانیم در یک محیط عمومی، اطلاعات را به صورت امن و خصوصی مبادله کنیم. درست مثل سیستم بانکی که در آن هر کسی میتواند با داشتن شماره حساب مقصد، مبلغی را برای آن ارسال کند، ولی اجازه خرج کردن موجودی آن شماره حساب، فقط در اختیار مالک آن است.
سیستم PKC برای انجام این کار، با استفاده از مفهوم «امضای دیجیتال» (Digital Signatures) اطلاعات را رمزنگاری و از طریق یک کانال عمومی برای مقصد ارسال میکند. این تکنیک در مورد ارزهای دیجیتال به ما کمک میکند تا اطمینان حاصل کنیم که تراکنشها صرفا از طرف مالک حسابها ارسال میشوند و هیچ دستکاری در آنها صورت نمیگیرد.
در دنیای کریپتوکارنسیها، زمانی که یک فرد، مقداری بیت کوین (یا هر رمزارز دیگری) دارد، در حقیقت او «کلید خصوصی» (Private Key) مربوط به آن آدرس منحصربهفرد را در اختیار دارد. این کلید، اجازه باز کردن قفل آن آدرس یا همان اجازه خرج کردن داراییهای آن آدرس است و همانطور که از اسمش پیداست، باید همیشه خصوصی بماند و از دسترس دیگران به دور باشد.
در طرف دیگر، مفهوم «کلید عمومی» (Public Key) را داریم که در حکم آدرسهایی از بلاک چین هستند و میتوانند ارز دیجیتال یک شبکه را در خود نگهداری کنند. نکته مهم این است که بین کلیدهای خصوصی و عمومی، یک ارتباط ریاضی برقرار است. به این صورت که کلید عمومی، از طریق فرمولی یکطرفه و با استفاده از کلید خصوصی محاسبه میشود.
پس برای اینکه بتوانیم مقداری بیت کوین برای فردی ارسال کنیم، فقط کافیست کلید عمومی یا همان آدرس کیف پول او را بدانیم. بعد از ارسال تراکنش، تنها فردی که کلید خصوصی مربوط به آن آدرس را در اختیار داشته باشد، میتواند آن بیت کوینها را خرج کند.
دلیل اهمیت محافظت از کلید خصوصی
همانطور که تا اینجا متوجه شدیم، در سیستم رمزنگاری کلید عمومی، تنها پارامتری که برای خرج کردن کوینهای موجود در یک آدرس بلاک چین باید در دسترس باشد، کلید خصوصی است. علت این مسئله به این برمیگردد که تراکنش یا پیام ارسالشده، به طور خاص، برای یک آدرس عمومی ارسال شده و از این آدرس یا کلید عمومی، در خروجی هش این تراکنش استفاده شده است. تمام این اقدامات در یک شبکه کاملا عمومی (مثل شبکه بیت کوین) رخ داده و برای اینکه دیگران امکان دستکاری و سرقت اطلاعات را نداشته باشند، اجازه برداشت از حساب مقصد (یا خواندن اطلاعات مقصد) فقط به دارنده کلید خصوصی آن داده شده است.
این یک فرایند ریاضی است و نمیتوان در آن دست برد یا این اجازه را برای شخص دیگری هم صادر کرد؛ زیرا تابع هش همواره یک ورودی و یک خروجی خواهد داشت و نمیتوان برای یک کلید عمومی، دو کلید خصوصی تولید کرد. البته احتمال وقوع این سناریو صفر نیست و در این مورد بحثی به نام تصادم وجود دارد که ما قبلا در مقاله «تابع هش و فرایند هشینگ» به طور کامل این مسائل را بررسی کردهایم.
از همه این مطالب نتیجه میگیریم که در حوزه کریپتوکارنسیها، کلید خصوصی، تنها مجوز لازم برای برداشت از کیف پول دیجیتال است و هر کسی که آن را در اختیار داشته باشد، مالک داراییهای کیف پول مربوطه است. پس در نگهداری از آن باید نهایت دقت را داشته باشیم.
سخن پایانی
کلید خصوصی و عمومی یکی از مهمترین مسائل در شبکههای بلاک چینی هستند و به کمک آنها میتوان پیامهای رمزنگاری شده را در بستر شبکه ارسال و دریافت کرد. این سیستم، رمزنگاری کلید عمومی نام دارد و هدف آن برقراری امکان مبادله پیامهای خصوصی در یک محیط عمومی مثل بلاک چین است.
کلید عمومی همان آدرس کیف پول بلاک چین است که قابلیت نگهداری ارزهای دیجیتال را دارد و میتوان آن را در اختیار دیگران قرار داد. کلید خصوصی رمزی است که کلید عمومی با توجه به آن ساخته شده و تنها کلیدی است که میتواند قفل یک آدرس بلاک چینی را باز کند. این ارتباط به کمک تابع ریاضی هش برقرار شده که یک فرایند محاسباتی بسیار پیچیده و یک طرفه است؛ به این معنی که کلید عمومی به راحتی از روی کلید خصوصی قابل محاسبه بوده ولی عکس این کار امکانپذیر نیست.
امیدواریم علیرغم پیچیده بودن این بحث، فرایند رمزنگاری در شبکههای بلاک چین و مفهوم کلید خصوصی و عمومی را به خوبی درک کرده باشید. نظرات خود را در مورد این مطالب میتوانید با ما در میان بگذارید.
برای دریافت مشاوره تخصصی رایگان از کارشناسان ما، اطلاعات خواسته شده رو تکمیل فرمایید.