کلید خصوصی چیست؟
کلید خصوصی در بلاک چین، یک رشته است که به کاربران بلاک چین اجازه می دهد که در امنیت کامل تراکنش های خود را انجام دهند.
در واقع کلید خصوصی را می توان به یک چک سفید امضا شده تشبیه کرد که اگر دست کسی بیفتد می تواند تمام موجودی شما را از بانک برداشت کند.
تشبیه دیگر این است که کلید خصوصی همان کیف پول شما، یا پول نقد شماست که اگر دست کسی بیفتد می تواند خرج کند.
نرم افزار کیف رمزارز شما به این کلید دسترسی دارد.
در واقع وقتی شما برای آدرس دیگری رمزارز می فرستید از این کلید استفاده می کنید.
با ما سفری به تاریخ داشته باشید تا ریشه های تکامل این دانش را بیابید همچنین ارگ علاقه ندارید می توانید از قسمت تاریخچه بگذیرد.
[lwptoc]
تاریخچه
رمزنگاری در ایران
رمزنگاری ایرانیان به سالهای بسیار دور باز می گردد.
در زمان هخامنشیان برای ارتباط با ساتراپ های دور دست از پیام های رمز که بوسیله بر افروختن آتش بر روی نقاط بلند می فرستادند استفاده می شد
طبق گفتة «ابن ندیم» ایرانیان هفت نوع خط داشته اند که هریک از آنها ویژگی و کاربرد خاصی داشته است:
1- دین دبیره: مخصوص نوشتن اوستا و سایر کتب دینی.
2- ویش دبیریه: شامل 365 حرف بوده، با کمک این خط میتوانستند آثار قیافه، انواع صداها مثل شرشر آب، اشارات چشم، چشمک زدن و سایر ایما و اشارات را بنویسند. متأسفانه از این خط و حروف آن اثری نمانده است.
3- کشتج: دارای24 حرف بوده و در نوشتن عهود و اقطاعات و نقش انگشتر و نگارهای جامه و فرش و سکّة فارسی کاربرد داشته است.
4- نیم کشتج: 28 حرفی بوده و مسائل طب و فلسفه را با آن مینوشتند.
5- شاه دبیریه: مخصوص مکاتبات پادشاهان بوده وآموختن آن را بر مردم عادی ممنوع کرده بودند تا افراد دیگر بر اسرار شاهان آگاهی نیابند.
6- نامة دبیریه یا هام دبیریه: این خط 33 حرف بینقطه داشته و ویژة همه طبقات مملکت، جز شاهان بوده است.
7- رازسهریه: شاهان اسرار خود را به وسیله آن برای سایر افراد مینوشتهاند. 14 (ابن ندیم، 1366: 20-25)
رمزنگاری در روم
ابداع جفت کلید(Keypairs) تاریخچه ای طولانی دارد.
مشخص نیست پیشینه رمزنگاری به چه دورانی باز می گردد.
بر مبنای آنچه از منابع غربی داریم ژولیوس سزار پیام های رمزی می فرستاده است.
در سزار سایفر، جای حروف الفبا چند مکان جابجا می شد و بدین ترتیب ارسال پیام ها انجام میشد.
کلید رمز نیز تعداد جابجایی بود، مثلا اگر حرف الف که اولین حرف الفباست با حرف ت عوض می شد، کلید 4 حرکت به راست بود.

پیشرفت ریاضیات و علم رمزنگاری
رمزها ساخته می شدند و برخی نیز شغلشان رمزگشایی بود.
تا آنجا که می دانیم از 2500 سال پیش حکومت ها برای انتقال پیام از رمزنگاری استفاده می کردند.
اما اشکال سایفر این بود که کلید رمز فقط یکی بود و به سرعت پخش می شد.
ریاضیدانان هر روز در تلاش بودند تا روش های بهتری برای رمزگشایی پیدا کنند.
داستان معروف ماشین انیگمای آلمان نازی و آلن تورینگ نابغه انگلیسی که با ساختن ماشین بمب توانست رمز آن را برای مدت محدودی تا سال 1942 باز کند را بسیاری می دانند.
مشکل انیگما و تمام سایفر های متقارن این بود که کلید باید منتقل می شد و امکان لو رفتن آن وجود داشت.
کرشهف، ریاضیدان فرانسوی تاکید بسیار زیادی بر لو نرفتن و دیده نشدن کلید داشت.
توسعه کامپیوتر ها و کلید های نا متقارن
جیمز هنری الیس(James Henry Ellis)، کارمند ستاد ارتباطات دولت بریتانیا، در سال 1970 روی روشی برای انتقال امن پیام با استفاده از کلید های نا متقارن کار میکرد.

سازمان امنیت آمریکا پیش از آن که دیفی و هلمن (Diffie and Hellman)کار خود را روی کلید نامتقارن شروع کنند در جریان کار جیمز الیس قرار داشت.
اما شوربختانه به دلیل پست دولتی او اجازه انتشار مقالات و تحقیقات خود را نداشت.
امروز همه ویتفیلد دیفی (Whitfield Diffie) و مارتین هلمن ( Martin Hellman) را پیشگامان کشف روش انتقال داده بر اساس کلید های نامتقارن می شناسند.
واقعیت این است که او نه تنها 5 سال زودتر از این دو دانشمند کار خود را به پایان برده بود بلکه الگوریتم کلید های نامتقارن را که به نام سه دانشمند(RSA) خوانده می شود و دیفی و هلمن نتوانستند پیدا کنند پیدا کرده بود.
اساس کلید های نامتقارن ( کلیدعمومی-کلید خصوصی)
اساس الگوریتم نامتقارن( کلیدخصوصی-کلیدعمومی) یک اصل ساده ریاضی است.
یک عدد را در نظر بگیرید که به اندازه کافی بزرگ باشد و از حاصل ضرب دو عدد بزرگ ساخته شده باشد.
مثلا من عدد 9560 را در 785468 ضرب میکنم و نتیجه می شود 7,509,074,080
من نتیجه (7,509,074,080) را به شما نشان میدهم و از شما می خواهم آن دو عدد را پیدا کنید.
اگر شما کامپیوتر نداشته باشید و اعدادی که من ضرب کرده ام به اندازه کافی بزرگ باشند شما هیچ راهی ندارید که آن دو عدد را حدس بزنید.
روش دیفی و هلمن
فرض کنید داریوش می خواهد پیامی به آتوسا بفرستد.
در حالی که شیما می خواهد بفهمد در این پیام چیست و نامه بر آنهاست.
هر دو یک صندوق برای انتقال دارند و هر کدام یک قفل و کلید خود را دارند.
ابتدا داریوش پیام را می نویسد آن را در صندوق گذاشته و قفل خود را بر صندوق میزند و با کلید قفل میکند.
آن را به شیما میدهد تا به آتوسا برساند.
صندوق به دست آتوسا می رسد اما آتوسا کلید قفل را ندارد چون اگر داریوش کلید را به شیما میداد شیما می توانست صندوق را باز کند و از محتوای آن با خبر شود.
بنا بر این آتوسا قفل خود را به صندوق میزند و با کلید خود آن را قفل می کند و آن را به شیما می دهد که برای داریوش ببرد.
حالا روی صندوق دو قفل نصب شده و بدست داریوش می رسد.
داریوش وقتی می بیند قفل آتوسا روی صندوق است و صندوق امن است قفل خود را با کلید باز می کند و دوباره برای آتوسا می فرستد.
آتوسا صندوق را دریافت میکند و با کلید خود قفل خود را باز کرده و پیام را می خواند.
مزایای روش دیفی هلمن
دیفی و هلمن مشکل انتقال پیام را بر یک بستر عمومی نا امن حل کردند.
آنها الگوریتم انتقال پیام را با کمک رالف مرکل به شکل کامل در مقاله سال 1976 خود منتشر کردند.
معایب
این روش مستلزم چند بار رفت و آمد پیام بود.
برای حل این مشکل دیفی و هلمن ایده کلید های نا متقارن را در مقاله خود نوشتند اما الگوریتمی برای اجرای آن معرفی نکردند.
RSA و کاربرد کلید های نامتقارن
هرچند دیفی و هلمن کلید های نامتقارن را معرفی کردند اما نتوانستند الگوریتمی کاربردی برای اجرای آن معرفی کنند.
سه دانشمند وریاضیدان به نام های رونالد ریوست، آدی شامیر و لئونارد آدلمن
( Ronald Rivest, Adi Shamir, and Leonard Adleman)RSA<= توانستند الگوریتم کاملی برای رمزنگاری نامتقارن ارائه کنند.
آنها توانستند کلید خصوصی و کلید عمومی را از یک الگوریتم استخراج کنند.
RSA چگونه کار میکند؟
فرض کنید داریوش می خواهد به آتوسا پیامی بفرستد و مانند مثال قبلی شیما می خواهد از محتوای پیام آنها با خبر شود.
در این حالت داریوش و آتوسا قفل هایی دارند که هر کدام از آنها دوکلید دارند، یکی برای باز کردن و دیگری برای قفل کردن.
کلید عمومی برای قفل کردن استفاده می شود و کلید خصوصی برای باز کردن قفل استفاده می شود.
قفل با کلید عمومی هر کسی بسته شود فقط با کلید خصوصی همان شخص باز می شود.
هر دو کلید های عمومی را در دسترس عموم قرار می دهند، بنا براین همه و طبعا شیما به کلید های عمومی داریوش و آتوسا دسترسی دارند.
داریوش کلید عمومی آتوسا را بر میدارد پیام خود می نویسد در صندوق گذاشته و آن را با کلید عمومی آتوسا قفل میکند.
در این حالت فقط کلید خصوصی آتوسا می تواند قفل را باز کند و دیگران و حتی داریوش هم نمی تواند قفل را باز کند.
الگوریتم RSA
ابتدا داریوش دو عدد اول p و q را انتخاب می کند: مثلا 17 و 11
او سپس آنها را در هم ضرب کرده : – n= 17*11= 187, n= p*q
سپس تابع اویلر n را محاسبه می کند : φ(n) =(17-1)(11-1)=160 : φ(n) = (p – 1) (q – 1)
حالا داریوش باید دو عدد (Encryption رمزنگاری) e و (decryption رمزگشایی ) d را به گونه ای انتخاب کند که حاصلضرب آنها (e.d)نسبت به φ(n)=160 اول باشد.
e باید از 160کوچکتر باشد و نسبت به n=187 و φ(n)=160 اول باشد.
و به زبان ریاضی باید: e.d ) mod 160 = 1 )
اینجا داریوش 7 را برای e انتخاب می کند و طبق قانون d را 23 انتخاب میکند . بدین ترتیب 161=(23.7) نسبت به 160 اول است یا 161mod 160 =1
داریوش کلید عمومی خود را (e,n)یا (7,187 ) منتشر کرده و آتوسا آن را می بیند.
داریوش کلید خصوصی (d,n) یا (23,187 ) نزد خود نگه می دارد و از همه مخفی میکند.
آتوسا حرف X لاتین را برای داریوش با استفاده از کلید عمومی داریوش رمز میکند و می فرستد. کد اسکی ASCII این حرف 88 است.
C یا رمز شده پیام یا X=88 عبارت است از باقی مانده حاصل تقسیم ( 88 به توان 7 ) بر 187 : 11=(mod 187 ) 88^7
C یا 11 بدست داریوش می رسد و داریوش آن را با کلید خصوصی خود (23,187 ) بدین شکل رمز گشایی می کند:
( C^d(mod n) ) یا (mod 187 ) 11^23 که میشود 88 یا X
مزایای RSA
هیچ راهی برای محاسبه کلید خصوصی از کلید عمومی وجود ندارد و تنها راه حدس و خطا است که با توجه به بالا سرعت محاسبه کامپیوتر ها در RSA باید به آن توجه کرد.
معایب RSA
تابع اویلر مشکلات امنیتی دارد و با بالا رفتن سرعت کامپیوتر ها روش bruteforce یا سعی و خطا موجب هک شدن برخی سیستم ها شده است.
این سیستم برای رسیدن به امنیت بالا باید طول کلید را بسیار بزرگ در نظر بگیرد که همین سبب مصرف بالای حافظه کامپیوتر در مقایسه با منحنی بیضوی ECC می شود.
کلید خصوصی و عمومی در الگوریتم امضای دیجیتال منحنی بیضوی (ECDSA)
بیت کوین و سایر رمزارزها برای تراکنش از الگوریتم (ECDSA) استفاده میکنند.
در شکل یک تابع بیضوی را مشاهده می کنید.
ریاضیات این نوع توابع بسیار پیچیده است اما فقط لازم است بدانید این توابع برای رمزنگاری استفاده می شوند و در اکثر رمزارزها کلید خصوصی و عمومی با فراخوانی این تابع در برنامه انجام می شود.

مزایا
در این روش با مصرف حافظه بسیار کمتر از روش RSA می توان به همان امنیت رسید.
برای مقایسه این روش با RSA به اینجا کلیک کنید.
معایب
هر چند سازمان های مهم دولتی آمریکا برخی الگوریتم های بیضوی را بسیار امن می دانند اما باید توجه داشت که نمی توان نو آوری های آینده را در گسترش پردازنده های سریع و همچنین نرم افزار هایی که امکان پردازش های موازی قدرتمند را فراهم می کنند نا دیده گرفت.
مجموعه ورودی و خروجی این توابع برای قدرت پردازش های امروزی بسیار بزرگ هستند اما مشخص نیست با پیشرفت پردازنده ها این امنیت حفظ شود.
در حالی که هر روز بر دارایی های مردم در بلاک چین که به این الگوریتم وابسته است بیشتر می شود.
ابداع کامپیوتر های کوانتومی که مخصوص به شکستن رمز این توابع هستند شاید امروز مقرون به صرفه نباشد.
اما هر چه بیشتر بر سرمایه مردم در کریپتو کارنسی ها افزوده شود این ابداع مقرون به صرفه تر خواهد شد.
آدرس بیتکوین چیست؟
کلید خصوصی و عمومی از تابع بیضوی secp256k1 به شکل یک طرفه استخراج می شوند.
محاسبه کلید خصوصی از کلید عمومی بسیار دشوار است و با کامپیوتر های امروزی تقریبا غیر ممکن است.
برای بدست آوردن آدرس بیت کوین از کلید عمومی استفاده می شود.
تابع RIPEMD 160 توسط اتحادیه اروپا در سال 1992 توسعه داده شد.
فرمول ساخت آدرس در بیتکوین چنین است :

آدرس =((کلید عمومی )SHA256) RIPEMD 160
درسهای بیتکوین تقریباً همیشه در رمزگذاری به نام «Base58Check» به کاربران ارائه میشوند.
که از 58 کاراکتر (یک سیستم اعداد Base58) و یک جمعسنجی برای کمک به خوانایی انسان، جلوگیری از ابهام و محافظت در برابر خطا در آدرس استفاده میکند.

آدرس اتریوم چگونه ساخته می شود.
تابع هش ساخت آدرس در اتریوم ککاک 256 (keccak256) است.
کلید خصوصی: 09e910621c2e988e9f7f6ffcd7024f54ec1461fa6e86a4b545e9e1fe21c28866 -با استفاده از الگوریتم ECDSA — secp256k1 — کلید عمومی را برای کلید خصوصی ایجاد میکند.
کلید عمومی یک نقطه در الگوریتم منحنی بیضی است.
دارای مختصات x و y است که برای ایجاد آدرس اتریوم استفاده می شود.
1: کلید عمومی: 048e66b3e549818ea2cb354fb70749f6c8de8fa484f7530fc447d5fe80a1c424e4f5ae648d648c980ae7095d1efad87161d83886ca4b6c498ac22a93da5099014a –
برای ایجاد آدرس اتریوم، keccak256 – تابع هش اتریوم – را با استفاده از مختصات x و y اعمال میکند
. 2: آدرس اتریوم: 0x00B54E93EE2EBA3086A55F4249873E291D1AB06C آدرس بلاک چین اتریوم 0x00B54E93EE2EBA3086A55F4249873E291D1AB06C را ببینید
خروجی:
0: کلید خصوصی: 09e910621c2e988e9f7f6ffcd7024f54ec1461fa6e86a4b545e9e1fe21c28866 1:
کلید عمومی: 048e66b3e549818ea2cb354fb70749f6c8de8fa484f7530fc447d5fe80a1c424e4f5ae648d648c980ae7095d1efad87161d83886ca4b6c498ac22a93da5099014a 2:
آدرس اتریوم: 0x00B54E93EE2EBA3086A55F4249873E291D1AB06C
نمونیک یا 12 کلمه
سلسله مراتب چند حساب BIP44 برای کیف پول های قطعی
طرح استخراج BIP49 برای حسابهای مبتنی بر P2WPKH-neted-in-P2SH
آنتروپی قطعی BIP85 از زنجیره کلید BIP32
امضای دیجیتال
در سیستم ECDSA تراکنش ها ابتدا باید امضا شوند.
امضای تراکنش را می توانید با امضای چک بانکی مقایسه کنید.
با این تفاوت که پس از امضای تراکنش ماینر ها یا اعتبار دهنده ها تراکنش را انجام می دهند.
در این سیستم برخلاف RSA این کلید خصوصی است که سند یا تراکنش هش شده را رمز(ENCRYPT) می کند.
کار کلید عمومی باز کردن این رمز یا رمزگشایی (DECRYPT) است.
بدین ترتیب کلید های نا متقارن سبب می شوند که بدون فاش شدن کلید خصوصی صحت امضا از طریق کلید عمومی قابل تایید باشد.
امضای دیجیتال با کلید خصوصی پای اسناد متنی یا تصویری نیاز به پرداخت هزینه سوخت یا گاز ندارد.
اما اگر خود سند یا امضا تغییری در وضعیت بلاک چین ایجاد کنند پرداخت هزینه سوخت اجباری است.
مثلا اگر بخواهید یک متن را در بلاک چین ثبت کنید نیاز دارید آن را امضا کرده و گازپرایس آن را بپردازید.