برنامههای کیف پول ارزدیجیتال برای دریافت ساتوشی کلیدهای عمومی ایجاد می کنند و از کلیدهای خصوصی متناظر برای ارسال استفاده میکنند.
فایلهای کلیدهای خصوصی کیف پول ارزدیجیتال ، به صورت اختیاری سایر اطلاعات مرتبط با تراکنشها برای برنامهی کیف پول را ذخیره میکنند.
برنامههای کیف پول ارزدیجیتال و فایلهای آن در زیربخشهای جداگانهای در زیر ذکر شدهاند.
برنامههای کیف پول ارزدیجیتال
صدور مجوز دریافت و ارسال ساتوشیها جز ویژگی نرمافزاری کیف پول ارزدیجیتال است، اما لازم نیست که این کارها را برنامهی آن انجام دهد.
دو برنامهی کیف پول میتوانند با هم کار کنند
یک برنامه کلیدهای عمومی را به منظور دریافت ساتوشی توزیع میکند
برنامهی دیگر تراکنشهایی که این ساتوشیها را ارسال میکنند را امضاء میکند.
برنامههای کیف پول ارزدیجیتال همچنین نیاز دارند با شبکهی همتا به همتا تعامل داشته باشند تا اطلاعات لازم را بلاکچین دریافت و تراکنشهای جدید را منتشر کنند.
با این حال، برنامههای توزیعکنندهی کلیدهای خصوصی یا امضاء کنندهی تراکنشها نیازی ندارند که خودشان با شبکهی همتا به همتا تعامل داشته باشند.
این مسأله باعث میشود که ما سه بخش ضروری اما جداگانه در یک سیستم کیف پول داشته باشیم.
بخش های کیف پول ارزدیجیتال
- یک برنامه برای توزیع کلید عمومی
- یک برنامه برای امضاء
- یک برنامه برای تعامل با شبکه
در ادامه ، ما ترکیبهای متداول این بخشها را توصیف میکنیم.
توجه: ما به طور کلی در مورد توزیع کلید عمومی صحبت میکنیم.
در بسیاری از موارد، به جای کلیدهای عمومی، هشهای P2PKH یا P2SH توزیع میشوند، و کلیدهای عمومی واقعی تنها زمانی توزیع میشوند که خروجیهای تحت کنترل آنها خرج شوند.
کیف پول ارزدیجیتال تمام سرویس
سادهترین آن برنامهای است که هر سه عمل را انجام میدهد:
این برنامه کلیدهای خصوصی تولید میکند، کلیدهای عمومی متناظر را استنتاج میکند، در صورت نیاز به توزیع کلیدهای عمومی کمک میکند، تراکنشهایی که این خروجی ها را صرف میکنند را ایجاد و امضاء میکند، و تراکنشهای امضاء شده را منتشر میکند.

کیف پول ارزدیجیتال تمام سرویس:
تقریباً تمام کیف پولهای محبوب میتوانند به عنوان کیف های تمام سرویس استفاده شوند.
مزیت اصلی کیف پولهای تمام سرویس این است که استفاده از آنها آسان است. یک برنامهی واحد تمام چیزی که یک کاربر برای دریافت و ارسال ساتوشی نیاز دارد را انجام میدهد.
نقطه ضعف اصلی کیف پول های ارزدیجیتال تمام سرویس این است که آن ها کلیدهای خصوصی را روی یک دستگاه متصل به اینترنت نگه میدارند.
به خطر افتادن این دستگاهها یک پدیدهی رایج است، و اتصال به اینترنت انتقال کلیدهای خصوصی از یک دستگاه به خطر افتاده به یک مهاجم را آسان میکند.
برای کمک به محافظت در برابر سرقت، بسیاری از برنامههای کیف پول ارزدیجیتال گزینهی رمزنگاری فایلهای آن را که شامل کلیدهای خصوصی است، در اختیار کاربران قرار میدهند.
این کار از کلیدهای خصوصی، زمانی که از آنها استفادهای نمیشود محافظت میکند، اما نمیتواند در برابر حملاتی که برای جمعآوری کلید رمزنگاری یا خواندن کلیدهای رمزگشاییشده از حافظه طراحی شدهاند، از دادهها محافظت کند.
کیف پولهای Signing Only
برای افزایش امنیت، کلیدهای خصوصی را میتوان به وسیلهی برنامهی کیف پول ارزدیجیتال جداگانه که در یک محیط امنتر کار میکنند، تولید و ذخیره کرد.
کیف پولهای signing-only با نمونه هایی که به صورت همتا به همتا با شبکه تعامل دارند، همکاری میکنند.
برنامههای کیف پول Signing only معمولاً برای ایجاد کلیدهای خصوصی و عمومی والد که میتوانند برای ایجاد کلیدهای عمومی و خصوصی فرزند استفاده شوند، از راههای ایجاد کلید قطعی استفاده میکنند.

کیف پولهای Signing Only
کیف پول signing-only هنگامی که برای اولین بار اجرا میشوند، یک کلید خصوصی والد ایجاد میکنند و کلید عمومی متناظر آن را به کیف پول شبکهشده منتقل میکند.
کیف پول ارزدیجیتال شبکهشده از کلید عمومی والد استفاده میکند تا:
- کلیدهای عمومی فرزند را استنتاج کند
- به صورت اختیاری به توزیع آنها کمک میکند
- روی خروجیهایی که با این کلیدهای عمومی خرج میشوند
- نظارت میکند
- تراکنشهای امضاء نشدهای که این خروجیها را خرج میکنند را ایجاد میکند
- و این تراکنشهای امضاء نشده را به کیف signing only منتقل میکند.
اغلب به کاربران این امکان داده میشود که جزئیات تراکنشهای امضاء نشده را با استفاده از کیف signing only بررسی کنند.
پس از گام بررسی اختیاری، کیف signing only از کلید خصوصی والد برای استنتاج کلیدهای خصوصی فرزند مناسب استفاده میکند و تراکنشها را امضاء میکند و این تراکنشهای امضاء شده را به کیف پولهای شبکهشده باز میگرداند.کیف پول شبکهشده سپس تراکنشهای امضاء شده در شبکهی همتا به همتا منتشر میکند.
انواع کیف پول های signing only
- کیف پولهای آفلاین
- کیف پولهای سختافزاری
کیف پول ارزدیجیتال آفلاین
چند برنامه کیف پول ارزدیجیتال تمام سرویس نیز به عنوان دو کیف جداگانه عمل میکنند:
یک نمونه برنامه که به عنوان کیف پول signing only (که اغلب «کیف پول آفلاین» نامیده میشوند) عمل میکند .
نمونه برنامهی دیگر که «کیف پول آنلاین» یا «watching only» نامیده میشود به عنوان کیف پول شبکهشده عمل میکند.
دلیل نامگذاری کیف پول آفلاین به این نام این است که روی دستگاهی اجرا شوند که به هیچ شبکهای متصل نباشد، اجرا میشود و به این ترتیب تعداد بردارهای حمله را به طور قابل توجهی کاهش میدهند.
هنگام استفاده از این کیف پولهای ارزدیجیتال، کاربر میتواند تمام انتقال داده را از طریق یک رسانهی قابل حمل مانند درایوهای USB کنترل کند.
////////////////////////////////////////////////////
جریان کاری کاربر به صورت زیر است
۱ (آفلاین) تمام اتصالات شبکه روی یک دستگاه را غیرفعال کنید و نرمافزار کیف پول را نصب کنید.
برای ایجاد کلیدهای خصوصی و عمومی والد، نرمافزار کیف پول را در حالت آفلاین اجرا کنید.
کلید عمومی والد را در رسانهی قابل جابهجایی کپی کنید.
۲ (آنلاین) نرمافزار کیف پول را در دستگاه دیگری که به اینترنت متصل است، نصب کنید.
کلید عمومی والد را از رسانهی قابل جابهجایی را وارد کنید.
مانند زمانی که با یک کیف پول تمام سرویس کار میکنید، کلید عمومی را توزیع کنید تا وجه دریافت کنید.
هنگامی که قصد خرج کردن ساتوشی داشتید، جزئیات خروجی را پر کنید و تراکنش امضاء نشدهی تولید شده توسط کیف پول را در رسانهی قابل جابهجایی ذخیره کنید.
۳ (آفلاین) تراکنش امضاء نشده به صورت آفلاین باز کنید، جزئیات خروجی را بررسی کنید تا اطمینان حاصل کنید مقدار درست به آدرس درست ارسال میشود.
با این کار از بدافزار کیف پول آنلاین که سعی میکند کاربر را فریب دهد که برای ارسال وجه به مهاجم یک تراکنش را امضاء کند، جلوگیری میشود.
پس از بررسی، تراکنش را امضاء و آن را در یک رسانهی قابل جابهجایی ذخیره کنید.
۴ (آنلاین) تراکنش امضاء شده را در نمونهی آنلاین باز کنید تا بتوانید آن را در شبکهی همتا به همتا منتشر کنید.
مزیت اصلی کیف پولهای آفلاین این است که این امکان را میدهند که امنیت کیف پولهای تمام سرویس تا حد زیادی بهبود پیدا کند.
تا زمانی که کیف پول سختافزاری در معرض خطر قرار نگیرد و کاربر تمام تراکنشها را قبل از امضاء بررسی کند، حتی اگر کیف پول آنلاین در معرض خطر قرار بگیرد، ساتوشیهای کاربر ایمن باقی میمانند.
نقطه ضعف اصلی کیف پولهای آفلاین:
نقطه ضعف اصلی کیف پولهای آفلاین زحمت استفاده از آنها است. برای حداکثر امنیت، آنها از کاربر میخواهند تا یک دستگاه تنها برای کارهای آفلاین اختصاص دهند.
هر زمان که وجوه خرج شدند، این دستگاه آفلاین باید بوت شود، و کاربر باید دادهها را از دستگاه آنلاین به صورت فیزیکی روی دستگاه آفلاین کپی کند.
کیف پولهای سختافزاری :
کیف پولهای ارزدیجیتال سختافزاری دستگاههایی هستند که برای اجرای کیف پولهای signing-only اختصاص داده شدهاند.
این تخصیص به آنها اجازه میدهد تا بسیاری از آسیبپذیریهایی را که در سیستم عاملهای طراحیشده برای استفادهی عمومی حضور دارند، حذف کنند و به آنها اجازه میدهد به طور مستقیم با سایر دستگاهها ارتباط برقرار کنند.
بنابراین لازم نیست که کاربران به صورت دستی دادهها منتقل کنند.
جریان کاری کاربر چیزی نزدیک به موارد مطرح شده در زیر است:
۱ (سختافزار) کلیدهای خصوصی و عمومی والد را ایجاد میکند. کیف پول سختافزاری را به یک دستگاه شبکهشده متصل میکند تا بتواند کلید عمومی والد را دریافت کند.
۲ (شبکهشده) مانند زمانی که با یک کیف پول تمام سرویس کار میکنید، کلیدهای عمومی را برای دریافت وجه توزیع کنید.
هنگامی که آمادهی ارسال ساتوشی بودید، جزئیات تراکنش را پر کنید، به کیف پول سختافزاری متصل شوید، و روی گزینهی Spend کلیک کنید.
کیف پول شبکهشده به صورت اتوماتیک جزئیات تراکنش را به کیف سختافزار ارسال میکند.
۳ (سختافزار) جزئیات تراکنش موجود در صفحهی کیف پول سختافزاری بررسی کنید. برخی از کیف پولهای سختافزاری ممکن است کلمهی عبور یا شمارهی پین درخواست کنند.
کیف پول سخت افزاری تراکنش را امضاء میکند و آن را در کیف پول شبکهشده بارگذاری میکند.
۴ (شبکهشده) کف پول شبکهشده تراکنش امضاء شده را از سوی کیف پول سختافزاری دریافت میکند و آن را در شبکه منتشر میکند.
۵ مزیت کیف پولهای سختافزاری این است که با زحمت کمتری نسبت به آفلاین، امنیت کیف تمام سرویس را بهبود میبخشند.
عیب اصلی کیف پولهای ارزدیجیتال سختافزاری:
عیب اصلی کیف پولهای سختافزاری پر زحمت بودن آنها است.
اگرچه زحمت آن کمتر از کیف پولهای آفلاین است، کاربر هنوز هم باید یک کیف پول سختافزاری خریداری کند و هر زمان که بخواهد تراکنشی را با استفاده ازکیف پول signing-only انجام دهد، باید کیف پول سختافزاری را همراه داشته باشد.
عیب دیگر این کیف پولها که امید رفع آن هست، این است که برنامههای کیف پول محبوب بسیار کمی وجود دارند از کیف پولهای سختافزاری پشتیبانی میکنند.
اگرچه تقریباً تمام برنامههای کیف پول محبوب قصد خود را برای پشتیبانی از حداقل یک مدل کیف پول سختافزاری اعلام کردهاند.
کیف پولهای مخصوص توزیع :
برنامههای کیف پول ارزدیجیتال که در محیطهای نسبتاً امن مانند وب سرورها اجرا میشوند، میتوانند طوری طراحی شوند که فقط برای توزیع کلیدهای عمومی (از جمله آدرسهای P2PKH یا P2SH) استفاده شوند.

کیف پول مخصوص توزیع
دو راه متداول برای طراحی این کیف پولهای مینیمالیست وجود دارد:
• یک پایگاه داده را با تعدادی کلید عمومی یا آدرس پر کنید و سپس بر اساس درخواست یک اسکریپت کلید عمومی یا آدرس با استفاده از یکی از ورودیهای پایگاه داده توزیع کنید.
برای جلوگیری از استفادهی مجدد از کلیدها، وب سرورها باید کلیدهای استفاده شده را در لیستی ذخیره کنند.
این کار میتواند با استفاده از کلیدهای عمومی والد ، آسانتر انجام شود.
• برای ایجاد کلیدهای عمومی از یک کلید عمومی والد استفاده کنید.
برای جلوگیری از استفادهی مجدد از کلید، روشی باید استفاده شود تا اطمینان حاصل شود که کلید عمومی یکسانی دو بار توزیع نمیشود.
این کار میتواند با وارد کردن کلیدهای توزیع شده در یک پایگاه داده و یا با استفاده از یک اشارهگر افزایشی به عدد شاخص کلید انجام شود.
هیچ یک از روشهای بالایی سربار قابل توجهی به سیستم اضافه نمیکنند، به خصوص اگر برای ردیابی پرداخت یک پایگاه داده استفاده شود تا هر پرداخت ورودی را به یک کلید عمومی جداگانه مربوط کند.
فایلهای کیف پول ارزدیجیتال :
کیف پولهای بیت کوین در هستهی خود مجموعهای از کلیدهای خصوصی هستند.
آنها به صورت دیجیتالی در یک فایل ذخیره میشوند و میتوانند به صورت فیزیکی روی یک تکه کاغذ ذخیره شوند.
فرمتهای کلید خصوصی :
کلیدهای خصوصی برای رمزگشایی ساتوشیهای یک آدرس خاص استفاده میشوند.
در بیت کوین، یک کلید خصوصی در فرمت استاندارد یک عدد ۲۵۶ بیتی است که بین مقادیر زیر قرار دارد،که تقریباً محدودهی ۱ تا ۲^۲۵۶ را شامل میشود.
0x01 و 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140
این محدوده توسط استاندارد رمزنگاری secp256k1 ECDSA مقرر شده است که توسط بیتکوین استفاده میشود.