خانه » دانشنامه » کلید خصوصی کلید عمومی، 2 پارامتر مهم برای امنیت کیف رمزارز
کلید خصوصی

کلید خصوصی کلید عمومی، 2 پارامتر مهم برای امنیت کیف رمزارز

کلید خصوصی چیست؟

کلید خصوصی در بلاک چین، یک رشته است که به کاربران بلاک چین اجازه می دهد که در امنیت کامل تراکنش های خود را انجام دهند.

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

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

نرم افزار کیف رمزارز شما به این کلید دسترسی دارد.

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

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

تاریخچه

رمزنگاری در ایران

رمزنگاری ایرانیان به سالهای بسیار دور باز می گردد.

در زمان هخامنشیان برای ارتباط با ساتراپ های دور دست از پیام های رمز که بوسیله بر افروختن آتش بر روی نقاط بلند می فرستادند استفاده می شد

طبق گفتة «ابن ندیم» ایرانیان هفت نوع خط داشته ­اند که هریک از آنها ویژگی و کاربرد خاصی داشته­ است:

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 خود منتشر کردند.

معایب

این روش مستلزم چند بار رفت و آمد پیام بود.

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

دیفی و هلمن

Diffie & Hellman Receive the 2015 Turing Award

RSA و کاربرد کلید های نامتقارن

هرچند دیفی و هلمن کلید های نامتقارن را معرفی کردند اما نتوانستند الگوریتمی کاربردی برای اجرای آن معرفی کنند.

سه دانشمند وریاضیدان به نام های رونالد ریوست، آدی شامیر و لئونارد آدلمن

( Ronald Rivest, Adi Shamir, and Leonard Adleman)RSA<= توانستند الگوریتم کاملی برای رمزنگاری نامتقارن ارائه کنند.

How RSA Works. Some of you may have heard of the word… | by Denilsen Axel Candiasa | Medium

Prime numbers keep your encrypted messages safe — here&#39;s how - ABC News

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

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 رمزگشایی ) را به گونه ای  انتخاب کند که حاصلضرب آنها (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) استفاده میکنند.

در شکل یک تابع بیضوی را مشاهده می کنید.

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

برای بیت کوین، پارامترهای زیر را داریم: مدول اول: 2به توان  256 – 232 – 24 – 28 – 27 – 26 – 24 – 1 → این یک عدد واقعاً بزرگ است که تقریباً برابر با تمام اتم‌های جهان است.
همچنین به صورت هگزادسیمال نشان داده می شود: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF منحنی بیضوی که در آن a = 0 و b = 7 است نقطه P پایه در مبنای شانزده = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8 ترتیب به صورت هگزادسیمال = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE
BAAEDCE6 AF48A03B BFD25E8C D0364141 این اعداد خودسرانه انتخاب نشده اند.
در واقع یک استاندارد رمزنگاری وجود دارد که توسط سازمان امنیت ملی آمریکا اجرا می شود، استانداردهای گروه رمزنگاری کارآمد (SEC) و بیت کوین از استاندارد secp256k1 پیروی می کند.
بنابراین، کلید خصوصی بیت کوین فقط یک عدد انتخابی دلخواه بین 1 و ترتیب بالا است.
کلید عمومی را می توان به راحتی از طریق ضرب اسکالر با فرمول بدست آورد:
کلید عمومی = کلید خصوصی * نقطه پایه P
نقطه پایه یک عدد تصادفی روی تابع است که توسط الگوریتم تولید می شود.
این حاصل ضرب برگشت ناپذیر است.

مزایا

در این روش با مصرف حافظه بسیار کمتر از روش RSA  می توان به همان امنیت رسید.

برای مقایسه این روش با RSA  به اینجا کلیک کنید.

معایب

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

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

در حالی که هر روز بر دارایی های مردم در بلاک چین که به این الگوریتم وابسته است بیشتر می شود.

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

اما هر چه بیشتر بر سرمایه مردم در کریپتو کارنسی ها افزوده شود این ابداع مقرون به صرفه تر خواهد شد.

آدرس بیتکوین چیست؟

کلید خصوصی و عمومی از تابع بیضوی secp256k1  به شکل یک طرفه استخراج می شوند.

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

برای بدست آوردن آدرس بیت کوین از کلید عمومی استفاده می شود.

تابع RIPEMD 160 توسط اتحادیه اروپا در سال 1992 توسعه داده شد.

فرمول ساخت آدرس در بیتکوین چنین است :

Bitcoin Addresses

آدرس =((کلید عمومی )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

ethaddress

نمونیک یا 12 کلمه

بی آی پی (BIP)  یک الگوریتم برای تولید کلید عمومی و کلید خصوصی با استفاده از یک دیکشنری است. 
این برنامه گروهی شامل 12 یا 24 تا  از کلمات آسان را  برای به خاطر سپردن تولید میکند که با استفاده از آن کلید خصوصی، کلید عمومی و آدرس به شکل قطعی تولید می شوند.
منظور از واژه «قطعی» این است که هر بار که همان 12 کلمه را وارد کنید همان کلید های خصوصی ساخته می شوند.
بدین ترتیب اگر با 12 کلمه خودتان 10 حساب ساخته باشید هر ده حستب قابل بازیابی است.
این الگوریتم  شامل دو بخش است: تولید حافظه و تبدیل آن به یک SEED یا بذر پاشی باینری.
بعداً می توان از این بذر پاشی برای تولید کیف پول های قطعی با استفاده از BIP-0032 یا روش های مشابه استفاده کرد.
کد یادگاری BIP39 برای تولید کلیدهای قطعی
کیف پول های قطعی سلسله مراتبی   BIP32

سلسله مراتب چند حساب BIP44 برای کیف پول های قطعی

طرح استخراج BIP49 برای حساب‌های مبتنی بر P2WPKH-neted-in-P2SH

آنتروپی قطعی BIP85 از زنجیره کلید BIP32

امضای دیجیتال

در سیستم ECDSA  تراکنش ها ابتدا باید امضا شوند.

امضای تراکنش را می توانید با امضای چک بانکی مقایسه کنید.

با این تفاوت که پس از امضای تراکنش ماینر ها یا اعتبار دهنده ها تراکنش را انجام می دهند.

در این سیستم برخلاف RSA  این کلید خصوصی است که سند  یا تراکنش هش شده را رمز(ENCRYPT) می کند.

کار کلید عمومی باز کردن این رمز یا رمزگشایی (DECRYPT) است.

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

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

اما اگر خود سند یا امضا تغییری در وضعیت بلاک چین ایجاد کنند پرداخت هزینه سوخت اجباری است.

مثلا اگر بخواهید یک متن را در بلاک چین ثبت کنید نیاز دارید آن را امضا کرده و گازپرایس آن را بپردازید.

درباره فرهاد قناعتگر

فرهاد قناعتگر دانش آموخته دانشگاه تهران و علم و صنعت   علاقه مندی ها: اقتصاد، سیاست و برنامه نویسی کامپیوتر   عاشق مطالعه و یادگیری هستم زبان: انگلیسی، آشنایی با فرانسه زبان برنامه نویسی: جاوا اسکریپت، سالیدیتی، پایتون در حال مطالعه rust 'گیت هاب : https://github.com/Farhadgh کارهای انجام شده در زمینه بلاکچین قرارداد هوشمند توکن دریک با نام daricpay ، سال 1396 روی شبکه اتریوم، متن باز https://cn.etherscan.com/address/0x20b504802dbce474b4dc59c9474f9270c85b94d8 - قرارداد هوشمند توکن لیکوئیدیتی جنریتور کریپویار روی شبکه پالیگان به آدرس https://polygonscan.com/address/0x1ae75C0241696dF2C65e8Af0c9677aDEF6420a65 اپلیکیشن غیر متمرکز(Dapp) : https://nft.cryptos.help

پاسخ دهید

ایمیل شما منتشر نخواهد شد. شاخه های ضروری نشانه گذاری شده اند *

*

x

همچنین نگاه کنید به

پول رایج

پول رایج چیست؟

پول رایج( legal tender)  چیست؟   پول رایج  هر چیزی است که توسط قانون به ...