قابلیت پشتیبانی شمیر (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 در سیستم پشتیبانی شمیر را بیشتر بررسی میکنیم.
مفهوم 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 به رمز اصلی دسترسی داشت.