رمزگذاری به زبان بسیار ساده بدون نیاز به علم برنامه نویسی
با مفهوم ساده ای از رمزگذاری به روش Public Key و Private Key با کوین ایران همراه باشید.
مفهوم رمزگذاری به روش جفت “کلید عمومی” و “کلید خصوصی” از جمله مسائل بنیادی درک کلی نحوه کار بیت کوین و سایر رمزارز ها می باشد. ولی متاسفانه تاکنون مطلبی به منظور درک ساده و به دور از پیچیدگی ریاضیاتی آن منتشر نشده است. تمام مطالبی که در این باره وجود دارد تنها برای افرادی با دانش عمیق ریاضی و برنامه نویسی قابل درک است. نیاز به چنین مطلبی وقتی شدیدا احساس می شود که بخواهید بیت کوین را به یک فرد جدید توضیح دهید.
رمزگذاری متقارن (دو طرفه)
اول از همه خیال شما را راحت کنم که این مفهوم آن قدر که فکر می کنید پیچیده نیست. اگر روش های ریاضی و برنامه نویسی که در این رمزگذاری استفاده می شود را کنار بگذاریم، مفهوم پایه ای این نوع رمزگذاری آنقدرها هم پیچیده نیست.
رمزنگاری از نوع کلید عمومی و خصوصی از نوع رمزگذاری یک طرفه یا نامتقارن می باشد. به همین دلیل ابتدا لازم است مفهوم رمزگذاری متقارن و دو طرفه را درک کنیم. برای درک رمزگذاری متقارن و دوطرفه مثال زیر را در نظر بگیرید:
فرض کنید افشین جعبه ای دارد که یک قفل روی آن است. مانند تمام قفل های دنیا اگر کلیدش را داشته باشید، هم می توانید آن را باز کنید و هم قفل کنید. پس اگر افشین یک ایتم محرمانه را داخل این جعبه بگذارد، باید آن را با کلید خود قفل کند. به دلیل اینکه تنها افشین کلید این قفل را دارد، تنها افشین می تواند محتوای آن را مشاهده کند. (البته درصورتی که افشین از کلید خود کپی کند و به فرد دیگری نیز بدهد، وی نیز مسلما می تواند در جعبه را باز کند و به محتوای آن دسترسی داشته باشد.)
این کل مفهوم رمزگذاری متقارن یا دوطرفه است؛ اینکه شما با یک کلید هم بتوانید جعبه را قفل کنید و هم آن را باز کنید.
رمزگذاری نامتقارن (یک طرفه)
از آنجا که در دنیای واقعی با نمونه های فیزیکی بسیاری از این نوع رمزگذاری سر و کار نداریم، شاید مثال سرراستی چون مثال قبل برای آن به کار نیاید.
ولی برای درک بهتر موضوع، ما همان مثال قبل را این بار به عنوان نامتقارن در نظر می گیریم.
این بار فرض کنید که سارا نیز جعبه ای دارد ولی این جعبه دارای قفل مخصوصی است. این قفل به جای دو وضعیت باز و بسته، دارای ۳ وضعیت (بسته – ۱)، (باز – ۲) و (بسته – ۳) است.
همچنین مهم ترین تفاوت این قفل در این است که به جای یک کلید، ۲ کلید دارد. کلید اولی فقط می تواند ساعت گرد بچرخد (در شکل بالا فقط می تواند از سمت چپ به راست و از وضعیت ۱ به ۲ و به ۳ بچرخد) و کلید دومی که فقط می تواند خلاف جهت ساعت بچرخد (در شکل بالا فقط می تواند از سمت راست به چپ و از وضعیت ۳ به ۲ و به ۱ بچرخد)
سارا کلید اولی را به صورت خصوصی تنها نزد خود نگه می دارد (ما کلید اولی را کلید خصوصی نامگذاری می کنیم چون تنها در اختیار سارا است). سارا از کلید دومی، ۱۰۰ ها کپی ساخته و آن را به خانواده و تمام دوست و آشنایان خود داده و حتی تعداد اضافی آن را به هر کسی که از او درخواست کند نیز می دهد. ازین رو کلید دومی را کلید عمومی می نامیم.
تا اینجای کار سارا یک کلید خصوصی دارد که می تواند در شکل بالا از چپ به راست از وضعیت ۱ به سمت وضعیت ۳ حرکت کند. تمام اطرافیان او نیز با کلید عمومی شان می توانند از راست به چپ از وضعیت ۳ به سمت وضعیت ۱ حرکت کنند. همین ویژگی هست که ماجرا را برای این نوع از قفل جالب می کند.
یک مثال روشن کننده
اول از همه تصور کنید که می خواهید به سارا آیتم محرمانه ای بفرستید که فقط خود او بتواند آن را ببیند. شما این ایتم محرمانه را داخل جعبه سارا می گذارید ( این جعبه در حالت وسط و باز قرار دارد). سپس از کلید عمومی ای که سارا در اختیار شما قرار داده استفاده می کنید و با چرخاندن آن به سمت چپ، جعبه را قفل می کنید (وضعیت بسته – ۱ ). حالا شما، هم آیتم را درون جعبه قرار داده اید و هم آن را قفل کرده اید.
حال تنها کلیدی که می تواند با چرخیدن از (وضعیت بسته – ۱ ) به (وضعیت باز – ۲ ) به صورت ساعتگرد قفل را باز کند و محتوای آن را مشاهده کند، کلید خصوصی سارا است.
تمام مفهوم رمزگذاری نامتقارن یا یک طرفه با کلید خصوصی و عمومی همین است. تمام افرادی که کلید عمومی جعبه سارا را دارند می تواند آیتم ( پول، اسناد و … ) را داخل جعبه وی قرار دهند و با چرخاندن به سمت چپ در آن را قفل کنند. ولی این فقط سارا هست که می تواند با کلید خصوصی خود و چرخاندن قفل به سمت راست دوباره در جعبه را باز کرده و به محتوای آن دسترسی پیدا کند.
امضای دیجیتال
همانطور که می دانید تمام تراکنش های بیت کوین با کلید خصوصی شما امضای دیجیتال می شوند.
حالا با ذکر مثال دیگری مفهوم امضای دیجیتال را نیز توضیح می دهیم.
یک کاربرد بسیار جالب تر جعبه مثال ما این است که سارا می تواند پول یا سند محرمانه ای را داخل آن گذاشته و با چرخاندن کلید خصوصی خود به صورت ساعتگرد، آن را به (وضعیت بسته – ۳ ) برده و قفل کند.
شاید بپرسید چرا باید چنین کاری بکند، چون هر کسی که کلید عمومی وی را دارد می تواند با چرخاندن کلید در خلاف جهت، آن را به (وضعیت باز – ۲ ) برده و در جعبه را باز کند.
این کار نشان می دهد که سارا مالک اصلی جعبه است. فرض کنید کسی جعبه ای را برای شما می آورد و می گوید این جعبه و پیغام درون آن متعلق به سارا است. تنها راه اثبات حرف وی این است که کلید عمومی جعبه سارا را برداشته و سعی کنید جعبه را با آن باز کنید. اگر در جهت ساعتگرد بچرخانید کلید شما کار نمی کند، چون تنها کلید خود سارا در جهت ساعتگرد می چرخید. حال کلید را به سمت چپ می چرخانید و جعبه باز می شود.
این بدین معنی است که این تنها سارا بوده است که توانسته با کلید خصوصی اش قفل را به سمت راست چرخانده و قفل کند، و تنها با کلید عمومی ای که او به شما داده است می توانید قفل را در جهت پادساعتگرد چرخانده و آن را باز کنید. پس این جعبه و کلیدهای آن متعلق به سارا است.
پس کلید خصوصی وی به نوعی امضایی برای تایید هویت وی می باشد.
کلیدها در دنیای کامپیوتر
در دنیای کامپیوتر طبیعتا با کلید فیزیکی سر و کار نداریم و این کلیدها در واقع شماره هایی بسیار بزرگ و با فرمت مخصوص ( معمولا در فرمت اعداد Hexadecimal ) هستند.
شما می توانید کلید خصوصی خودتان را که ماهیت آن شماره ای بسیار طولانی می باشد را در یک فایل متنی یا اپلیکیشن مخصوصی ذخیره کنید و کلید عمومی خود را (که آن نیز شماره بزرگی است) در وب سایت، ایمیل، شبکه های مجازی و …. با دیگران به اشتراک بگذارید.
در دنیای کامپیوتر، این اپلیکیشن ها (و در دنیای رمزارزها کیف پول ها) هستند که نقش جعبه و قفل جادویی مثال ما را ایفا می کنند.
اگر کسی با کلید عمومی در جعبه شما را باز کند و پولی را درون آن قرار دهد و سپس آن را قفل کند، فقط خود شما هستید که می توانید با داشتن کلید خصوصی در آن را باز کنید و از آن پول استفاده کنید.
اگر شما با کلید خصوصی تان در جعبه را باز کنید و سندی را درون آن قرار دهید و سپس آن را قفل کنید، تمام افراد می توانند با کلید عمومی شما محتوای جعبه را مشاهده کنند، ولی کلید خصوصی شما است که ثابت می کند شما مالک اصلی این جعبه هستید که در وهله اول در آن را از از چپ به راست باز کرده بودید.