walletcenter

قابلیت پشتیبانی شمیر - Shamir Backup

قاسم میلاجردی

زمان مورد نیاز برای مطالعه: 8 دقیقه

قابلیت پشتیبانی شمیر - Shamir Backup

قابلیت پشتیبانی شمیر (Shamir) یکی از روش‌های افزایش امنیت در نگهداری اطلاعات مهم مثل کلمات بازیابی کیف پول‌های سخت افزاری است و ترزور از نخستین کمپانی‌هایی بود که این قابلیت را روی محصول جدیدش یعنی Trezor Model T ارائه کرد. توصیه‌های زیادی در رابطه با نحوه‌ی نگهداری صحیح از کلمات بازیابی وجود دارد و ما نیز در مقالات ولت سنتر بارها به آن‌ها اشاره کرده‌ایم.

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

 

پشتیبانی شمیر (Shamir Backup) چیست؟

قابلیت «پشتیبانی شمیر» (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 در سیستم پشتیبانی شمیر را بیشتر بررسی می‌کنیم.

پشتیبانی شمیر shamir backup

 

مفهوم Share‌ در سیستم پشتیبانی شمیر

«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 را مطالعه کنید. این رمز در هیچ‌جایی از کیف پول ذخیره نمی‌شود و در صورت فراموش کردن آن، حتی با وارد کردن تمام کلمات بازیابی هم نمی‌توان کیف پول را بازیابی کرد. پس در استفاده از آن دقت لازم را داشته باشید.

 

سخن پایانی

قابلیت پشتیبانی شمیر (Shamir Backup) یک سیستم اشتراک‌گذاری اطلاعات حساس مثل کلمات بازیابی کیف پول‌ها است که در آن رمز اصلی به بخش‌های مختلفی به نام Share تقسیم می‌شود و در ادامه مشخص می‌گردد که برای دستیابی به رمز اصلی، حداقل چند Share‌ نیاز است که به آن حد نصاب یا Threshold گفته می‌شود. شرکت ترزور اولین بار این قابلیت را در محصول Model T پیاده‌سازی کرد که مفهوم آن چیزی شبیه تراکنش‌های چندامضایی بوده و کاربرد آن در نگهداری امن از کلمات بازیابی است.

کاربرها می‌توانند تعداد Shareها را از ۲ تا ۱۶ عدد در نظر گرفته و برای آن یک Threshold بزرگ‌تر از ۱ انتخاب کنند. مثلاً در سیستم شمیر ۴/۳  ‌اگر یکی از رمزها گم شده یا به سرقت برود، خطری دارایی‌ها را تهدید نمی‌کند؛ زیرا برای دستیابی به رمز اصلی، وجود ۳ رمز کافی‌ است.

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