قابلیت «پشتیبانی شمیر» (Shamir Backup) یکی از روشهای افزایش امنیت در نگهداری اطلاعات مهم مثل کلمات بازیابی کیف پولهای سخت افزاری است و ترزور از نخستین کمپانیهایی بود که این قابلیت را روی محصول جدیدش یعنی Trezor Model T ارائه کرد. توصیههای زیادی در رابطه با نحوه نگهداری صحیح از کلمات بازیابی وجود دارد و ما نیز در مقالات ولت سنتر بارها به آنها اشاره کردهایم.
روش پشتیبانی Shamir توسط یک مهندس رمزنگاری اسرائیلی به نام Adi Shamir ابداع شده و مربوط به اشتراکگذاری اطلاعات امنیتی مثل کلمات بازیابی است. این مفهوم کمی مشابه مفهوم تراکنشهای چند امضایی است و انجام یک عملیات را به برقرار بودن چند شرط از مجموع شرطهای تعریف شده وابسته میسازد. در این مقاله قابلیت پشتیبانی شمیر را به طور جامع بررسی خواهیم کرد. تا پایان همراه ما باشید.
پشتیبانی شمیر (Shamir Backup) چیست؟
قابلیت پشتیبانی شمیر یکی از روشهای به اشتراکگذاری اطلاعات در دنیای رمزنگاری است که توسط فردی به نام Adi Shamir به بازار معرفی شد. در این روش که به SSS یا Shamir’s Secret Sharing معروف است، یک رمز یا کلید خصوصی یا مستر seed به چند بخش مختلف تقسیم میشود که به هر کدام از آنها Share میگوییم. از این Shareها برای ساخت مجدد رمز اصلی استفاده میشود.
در این روش، زمانیکه بخواهیم از رمز اصلی در پلتفرم مربوطه استفاده کنیم، مثلا بخواهیم یک کیف پول را با مستر seed مربوطه بازیابی کنیم، به تعداد Shareهای مشخصی نیاز خواهیم داشت. به حداقل Shareهای مورد نیاز، Threshold (یا حد نصاب) گفته میشود. پس Threshold مشخص میکند که برای استفاده از رمز اصلی به حداقل چند Share نیاز خواهیم داشت.
فرض کنید یک کمپانی بخشی از سرمایه خود را در یک گاوصندوق امن نگهداری میکند. آنها میتوانند رمز گاوصندوق را به روشهای مختلف مثل AES رمزنگاری کنند تا دست کسی به رمز اصلی نرسد؛ اما زمانیکه دارنده رمز در دسترس نباشد یا فوت کند تکلیف چیست؟ اگر دارنده رمز به هر دلیلی فرد فاسدی باشد و یا حتی کلید اصلی از اون سرقت شود، تمام دارایی گاو صندوق به خطر میافتد. با اشتراکگذاری رمز به روش شمیر، میتوان رمز اصلی را به چندین Share تقسیم و با تعیین Threshold مشخص کرد که برای بازشدن گاوصندوق به چه تعداد از آنها نیاز است.
روش پشتیبانی شمیر در مورد کیف پولهای ارز دیجیتال نیز کاربرد داشته و میتواند تا حد زیادی امنیت کلمات بازیابی را افزایش دهد. برای مثال اگر کلمات بازیابی یک کیف پول را به سه قسمت یا Share تقسیم کرده و حدنصاب یا Threshold را عدد دو در نظر بگیریم، زمانیکه یکی از Shareها دزدیده یا حتی از بین برود، هیچ خطری داراییها را تهدید نمیکند. زیرا برای دسترسی به کیف پول به حداقل دو Share نیاز است.
در ادامه، دو مفهوم کاربردی Share و Threshold در سیستم پشتیبانی شمیر را بیشتر بررسی میکنیم.
Shareها در حقیقت بخشهایی از رمز یا کلمات بازیابی اصلی هستند که با سیستمی مشابه استاندارد BIP39 ساخته میشوند. اگر با این سیستم جذاب آشنا نیستید، پیشنهاد میکنیم حتماً مقاله «فرایند ساخت کلمات بازیابی در استاندار BIP 39» را در وبلاگ ولت سنتر مطالعه کنید تا بدانید کیف پولهای مختلف مثل لجر، ترزور یا کول ولت کلمات بازیابی را چطور تولید میکنند و امنیت این روشها چه مقدار بالا است.
رشته Shareها مجموعهای از ۲۰ یا ۳۳ کلمه انگلیسی هستند که هر کدام بخشی از اطلاعات مربوط به یک رمز مثل مستر seed کیف پول را شامل میشوند. با ترکیب تعداد مشخصی از Shareها میتوان کل مستر seed را از نو ساخت و از آن برای بازیابی کیف پول استفاده کرد.
در کیف پول ترزور مدل تی (Trezor Model T) به طور خودکار از پشتیبانی شمیر با Shareهای ۲۰ تایی استفاده میشود (که یک رشته ۱۲۸ بیتی را تشکیل میدهد). برای استفاده از Shareهای ۳۳ تایی (رشته ۲۵۶ بیتی) باید از بخش «کامند لاین» (Command-line) تنظیمات پیشفرض را تغییر داد که انجام این کار مناسب کاربرهای معمولی نیست و به دانش فنی بیشتری نیاز دارد.
تعداد Shareهای تولیده شدهای که در نهایت در اختیار کاربر (کاربرها) قرار میگیرند، میتواند حداکثر ۱۶ عدد باشد که توسط کاربر انتخاب میشود. (این عدد را با سیستمهای Share ۲۰ تایی یا ۳۳ تایی اشتباه نگیرید). مشخص کردن تعداد Shareهای لازم برای رمزگشایی مربوط به موضوع Threshold است که در ادامه آن را تشریح میکنیم.
مفهوم Threshold در سیستم پشتیبانی شمیر
جذابترین بخش سیستم پشتیبانی شمیر قسمت Threshold است؛ زیرا در این بخش مشخص میشود برای ساخت رمز اصلی به چه تعداد از Shareها نیاز داریم. پس هم تعداد Shareها و هم حدنصاب Shareهای ضروری یا همان Threshold برای رمزگشایی، توسط کاربر مشخص میشود. در این سیستم فقط تعداد حد نصاب مهم است و ترتیب استفاده Shareها (Order of shares) اهمیتی ندارد.
برای مثال، در زمان راهاندازی یک کیف پول مثل ترزور مدل T، اگر یک پشتیبانی شمیر از نوع ۴/۲ (بخوانید ۲ از ۴) ایجاد کنیم، کیف پول، ۴ عدد Share یا رمز مختلف تولید و به ما تحویل میدهد که برای بازیابی کیف پول، باید حداقل به دو مورد از آنها دسترسی داشته باشیم. هر نوع ترکیب ۲تایی از ۴ Share، قادر است مستر seed اصلی را تولید کند.
با توجه به نیاز و شرایط مختلف، هر کاربر میتواند هر ترکیب دلخواهی بین ۲ تا ۱۶ Treshhold از ۲ تا ۱۶ Share را انتخاب کند. اگر سیستم ۳/۳ انتخاب شود، برای ساخت مستر seed حتماً باید هر سه رمز در دسترس باشد و اگر دسترسی به یکی از آنها از بین برود، هرگز امکان بازیابی کیف پول وجود نخواهد داشت. پس باید متوجه خطرات انتخاب ماکزیمم Threshold مثل ۳/۳، ۴/۴ و غیره باشیم. کمترین Threshold قابل انتخاب عدد دو است و نمیتوان تنها با یک Share به رمز اصلی دسترسی داشت.
حالت بازیابی یا Recovery Mode در کیف پول ترزور
تا اینجا با سیستم پشتیبانی شمیر و مفاهیم Share و Threshold آشنا شدیم؛ در این بخش میخواهیم Recover Mode یا همان حالت بازیابی کیف پول ترزور و نحوه وارد کردن کلمات Share در این حالت آشنا شویم.
منظور از Recovery Mode حالتی است که اگر سیستم Shamir در دستگاه فعال شده باشد، در هنگام بازیابی کیف پول وارد این حالت میشود. از آنجاییکه ممکن است هر Share در جای مختلف و توسط افراد یا سیستمهای مختلف نگهداری شود، پس Recovery Mode قادر است فرایند بازیابی را به صورت طولانی در حافظه دستگاه نگهداری کند. یعنی ممکن است بعد از وارد کردن اولین Share مجبور شویم کیف پول را به محل دیگری انتقال دهیم. در چنین حالتی، اگر دستگاه از کامپیوتر جدا و برق آن قطع شود، همچنان در حالت Recovery Mode خواهد ماند تا shareهای بعدی به آن داده شود.
این قابلیت در هنگام بازیابی کیف پول با کلمات بازیابی اصلی (بدون استفاده از پشتیبانی شمیر) وجود ندارد. یعنی اگر کاربر هنگام وارد کردن ۱۲ کلمه بازیابی، کیف پول را خاموش یا از برق جدا کنیم، فرایند بازیابی به طور کامل ریست میشود و باید کلمات از اول وارد شوند.
پاسخ به چند سوال رایج در مورد پشتیبانی شمیر
- سیستم پشتیبانی شمیر چه فرقی با سیستم کلمات بازیابی دارد؟
در پشتیبانی شمیر کاربر میتواند تا ۱۶ رمز یا share مختلف انتخاب و مشخص کند که برای بازیابی کیف پول به حداقل چندتای آنها نیاز است. ولی در بازیابی معمولی تنها میتوان از سیستمهایی مثل ۱۲، ۱۸ و ۲۴ تایی استفاده کرده و دسترسی به تمام لغات و ترتیب وارد کردن آنها ضروری است.
علاوه بر این، برخی کلمات سیستم پشتیبانی شمیر با کلمات استفاده شده در استاندارد BIP39 متفاوتاند. پس ممکن است برخی کلمات یا همان shareهای سیستم Shamir در هیچ رشته کلمات بازیابی مشاهده نشوند و برعکس.
- چطور میتوانیم داراییهای خود را به یک کیف پول که قابلیت شمیر روی آن فعالشده انتقال دهیم؟
در حال حاضر چنین امکانی وجود ندارد. یعنی نمیتوانیم کلمات بازیابی یک کیف پول را بدون ساختن کیف پول جدید، به یک والت با سیستم شمیر فعال منتقل کنیم. پس ابتدا باید یک اکانت جدید ساخته و قابلیت پشتیبانی شمیر را روی آن فعال کنیم؛ سپس داراییهای خود را از کیف پول قبلی به آن انتقال دهیم.
- اگر بعضی از Shareها گم یا سرقت شود، چه اتفاقی میافتد؟
پاسخ این سوال به مقدار Threshold تعیین شده برای کیف پول بستگی دارد. مثلاً در زمان استفاده از سیستم ۵/۳ (۳ از ۵)، اگر یک یا دو Share گم یا سرقت شوند، هیچ خطری کیف پول را تهدید نمیکند. زیرا حد نصاب Shareهای لازم ۳ تاست و سیستم شمیر اجازه ساخت کلمات بازیابی اصلی را بدون وارد کردن آخرین Share نمیدهد. اما اگر از سیستم ۲/۲ (۲ از ۲) استفاده کنیم، گمشدن یا سرقت هر کدام از Shareها به منزله از دست رفتن تمام کلمات بازیابی است. (مقدار Threshold نمیتواند کمتر از ۲ باشد).
- آیا میتوان در کیف پولی که قابلیت شمیر آن فعال است، از Passphrase هم استفاده کرد؟
بله، از قابلیت Passphrase میتوان به عنوان یک لایه امنیتی استفاده کرد. البته پیشنهاد میشود ابتدا نکات لازم در مورد استفاده از Passphrase را مطالعه کنید. این رمز در هیچجایی از کیف پول ذخیره نمیشود و در صورت فراموش کردن آن، حتی با وارد کردن تمام کلمات بازیابی هم نمیتوان کیف پول را بازیابی کرد. پس در استفاده از آن دقت لازم را داشته باشید.
سخن پایانی
قابلیت پشتیبانی شمیر یک سیستم اشتراکگذاری اطلاعات حساس مثل کلمات بازیابی کیف پولها است که در آن رمز اصلی به بخشهای مختلفی به نام Share تقسیم میشود و در ادامه مشخص میگردد که برای دستیابی به رمز اصلی، حداقل چند Share نیاز است که به آن حد نصاب یا Threshold گفته میشود. شرکت ترزور اولین بار این قابلیت را در محصول Model T پیادهسازی کرد که مفهوم آن چیزی شبیه تراکنشهای چندامضایی بوده و کاربرد آن در نگهداری امن از کلمات بازیابی است.
کاربرها میتوانند تعداد Shareها را از ۲ تا ۱۶ عدد در نظر گرفته و برای آن یک Threshold بزرگتر از ۱ انتخاب کنند. مثلاً در سیستم شمیر ۴/۳ اگر یکی از رمزها گم شده یا به سرقت برود، خطری داراییها را تهدید نمیکند؛ زیرا برای دستیابی به رمز اصلی، وجود ۳ رمز کافی است. همچنین کاربران میتوانند از قابلیت Passphrase در کنار شمیر به عنوان یک لایه امنیتی استفاده کنند.
امیدواریم با مطالعه این مقاله با مفهوم پشتیبانی شمیر به خوبی آشنا شده و عملکرد آن را درک کرده باشید. ایمن و پرسود باشید.