HashTheory

طرح اشتراک راز شامیر (Shamir’s Secret Sharing)

تقسیم امن راز بدون افشای اطلاعات

هومن خطیب زاده

هومن خطیب زاده

۴ بازدید
اشتراک راز شامیر

طرح اشتراک راز شامیر (Shamir’s Secret Sharing): تقسیم امن راز بدون افشای اطلاعات

تصور کنید کلید بسیار حساسی دارید: عبارت بازیابی کیف پول کریپتو، کلید اصلی رمزنگاری یک بانک، یا رمز باز کردن خزانهٔ یک شرکت. اگر این کلید را فقط به یک نفر بسپارید، با چالش نقطهٔ تک‌شکست (Single Point of Failure) روبه‌رو هستید؛ اگر آن را به چند نفر بدهید، هر فرد به‌تنهایی دسترسی کامل خواهد داشت.
چگونه می‌توان یک راز را بین چند نفر تقسیم کرد به طوری که تنها با کنار هم قرار گرفتن تعداد مشخصی از آن‌ها راز بازیابی شود و اگر حتی یک نفر کمتر باشد، هیچ سرنخی از راز فاش نشود؟
این مسئله با طرح اشتراک راز شامیر (Shamir’s Secret Sharing - SSS) حل می‌شود؛ الگوریتمی رمزنگاری که پایهٔ آن نه بر حدس و الگوریتم‌های پیچیده، بلکه بر هندسهٔ چندجمله‌ای‌ها و جبر مجرد استوار است.

طرح آستانه‌ای (k,n)(k, n) چیست؟

طرح اشتراک راز شامیر یک راز (مانند کلید اصلی یا پسورد) را به nn سهم (ShareShare) یکتا تقسیم می‌کند. این سیستم بر پایهٔ طرح آستانه‌ای (k,n)(k, n) کار می‌کند:

  • توزیع (DistributionDistribution): راز به nn سهم تقسیم شده و بین افراد توزیع می‌شود.
  • بازیابی (ReconstructionReconstruction): هر ترکیب دلخواه از حداقل kk سهم می‌تواند راز را بازسازی کند.
  • امنیت کامل (PerfectSecrecyPerfect Secrecy): داشتن کمتر از kk سهم، هیچ‌گونه اطلاعاتی دربارهٔ راز ارائه نمی‌دهد.
مثال: در یک طرح 33 از 55 (n=5n=5 و k=3k=3)، کلید به 55 سهم تقسیم می‌شود. هر 33 نفر می‌توانند راز را بازیابی کنند، اما 22 نفر حتی با به‌کارگیری تمام توان پردازشی جهان، هیچ اطلاعاتی به دست نمی‌آورند. از نظر ریاضی، با داشتن کمتر از kk سهم، تمامی مقادیر ممکن برای راز، شانس برابری دارند.

ایدهٔ هندسی: تعیین منحنی با تعداد مشخصی نقطه

پایه و اساس این روش بر یک اصل هندسی ساده روی صفحهٔ مختصات بنا شده است:

  • از ۱ نقطه، بی‌نهایت خط راست عبور می‌کند.
  • با داشتن ۲ نقطه، تنها یک خط راست یکتا مشخص می‌شود.
  • از ۲ نقطه، بی‌نهایت سهمی (منحنی درجه ۲) می‌گذرد.
  • با داشتن ۳ نقطه، یک سهمی یکتا کاملاً مشخص می‌شود.

قاعدهٔ کلی جبر این است که برای تعیین یکتای یک چندجمله‌ای از درجهٔ dd، به حداقل d+1d + 1 نقطه نیاز داریم. بنابراین اگر آستانهٔ مورد نیاز برای بازیابی kk باشد، درجهٔ چندجمله‌ای برابر است با:
d=k1d = k - 1

برای درک بهتر، ویدیو زیر را مشاهده کنید:

راز کجا پنهان می‌شود؟

راز اصلی برابر با عرض از مبدأ چندجمله‌ای قرار داده می‌شود؛ یعنی مقدار yy به ازای x=0x = 0.
سپس به هر فرد یک نقطهٔ متمایز روی منحنی به‌صورت (x,y)(x, y) تحویل داده می‌شود (با شرط x0x \neq 0). اگر برای بازسازی به kk نقطه نیاز باشد، داشتن k1k - 1 نقطه بی‌نهایت منحنی ممکن باقی می‌گذارد که از آن نقاط عبور می‌کنند؛ در نتیجه عرض از مبدأ (راز) کاملاً ناشناخته می‌ماند.

مثال عددی در فضای معمولی: طرح ۲ از ۳ (k=2,n=3)(k=2, n=3)

برای درک شهودی، یک طرح آستانه‌ای با k=2k = 2 و n=3n = 3 را بررسی می‌کنیم. چون k=2k = 2 است، درجهٔ چندجمله‌ای d=21=1d = 2 - 1 = 1 خواهد بود (معادله خط راست به صورت y=mx+by = mx + b).

  • راز (bb): 1111
  • شیب تصادفی (mm): 33
  • معادله خط: y=3x+11y = 3x + 11

سهم‌ها با جای‌گذاری مقادیر x=1,2,3x = 1, 2, 3 ساخته می‌شوند:

  • سهم ۱: (1,14)(1, 14)
  • سهم ۲: (2,17)(2, 17)
  • سهم ۳: (3,20)(3, 20)

بازسازی راز با دو سهم

فرض کنید دارندگان سهم ۱ و سهم ۲ پیش هم می‌آیند: (1,14)(1, 14) و (2,17)(2, 17).ابتدا شیب خط (mm) را محاسبه می‌کنند:
m=y2y1x2x1=171421=3m = \frac{y_2 - y_1}{x_2 - x_1} = \frac{17 - 14}{2 - 1} = 3سپس با جای‌گذاری یکی از نقاط در y=3x+by = 3x + b مقدار bb به دست می‌آید:
14=3(1)+b    b=1114 = 3(1) + b \implies b = 11راز (b=11b = 11) به‌دقت بازیابی شد. این مثال روند ریاضی را نشان می‌دهد، اما در پیاده‌سازی واقعی به دلیل خطاهای اعشاری و نشت اطلاعات از اعداد حقیقی استفاده نمی‌شود.

چرا ریاضیات معمولی کافی نیست؟ نقش میدان‌های متناهی (Zp\mathbb{Z}_p)

استفاده از اعداد حقیقی یا اعشاری در رمزنگاری دو مشکل عمده ایجاد می‌کند:

  1. خطای گرد کردن: محاسبات اعشاری در رایانه دقیق نیستند و ممکن است منجر به بازیابی نادرست راز شوند.
  2. نشت اطلاعات: در حساب معمولی، مقادیر بزرگ سهم‌ها می‌توانند بازهٔ حدس برای شیب یا راز را محدود کنند و امنیت مطلق را از بین ببرند.

راه‌حل: نظریه هم‌نهشتی روی اعداد اول

در پیاده‌سازی واقعی از میدان متناهی (Zp\mathbb{Z}_p) با یک عدد اول pp استفاده می‌شود:

  • یک عدد اول pp انتخاب می‌شود که از راز و تعداد کل سهم‌ها (nn) بزرگ‌تر است (p>Secretp > \text{Secret} و p>np > n).
  • تمام محاسبات در(modp)\pmod pانجام می‌شوند (مجموعهٔ اعداد {0,1,,p1}\{0, 1, \dots, p-1\}).
  • در این ساختار، نشت اطلاعات صفر می‌شود زیرا هر سهم، احتمالی کاملاً یکسان برای تمام رازهای ممکن ایجاد می‌کند.

مثال گام‌به‌گام روی میدان متناهی (p=11p = 11)

عدد اول p=11p = 11 را انتخاب می‌کنیم. تمام محاسبات در مجموعهٔ {0,1,2,,10}\{0, 1, 2, \dots, 10\} انجام می‌شوند.
فرض کنید طرح 22 از 33 (k=2k=2) با خط زیر تعریف شده است:
y=(2x+5)(mod11)y = (2x + 5) \pmod{11}راز برابر است با b=5b = 5 (مقدار yy در x=0x = 0).

ساخت سهم‌ها:

معادلهٔ خط ما به صورت زیر تعریف شده است:
y=(2x+5)(mod11)y = (2x + 5) \pmod{11}راز در این معادله، همان عرض از مبدأ یعنی 55 است (yy به ازای x=0x = 0).
حالا برای ساخت سهم‌های مختلف، مقادیر دلخواه و غیرصفر xx (مثلاً x=3x = 3 و x=4x = 4) را در معادله جای‌گذاری کرده و گام‌به‌گام حساب می‌کنیم:

ساخت سهم ۱ (به ازای x=3x = 3)

۱. محاسبهٔ مقدار اولیه:
2(3)+5=6+5=112(3) + 5 = 6 + 5 = 11۲. اعمال(mod11)\pmod{11}: باید باقی‌ماندهٔ تقسیم 1111 بر 1111 را به دست آوریم. چون 1111 بر 1111 بخش‌پذیر است، باقی‌مانده برابر 00 می‌شود:
110(mod11)11 \equiv 0 \pmod{11}۳. مختصات سهم ۱: (3,0)(3, 0)

ساخت سهم ۲ (به ازای x=4x = 4)

۱. محاسبهٔ مقدار اولیه:
2(4)+5=8+5=132(4) + 5 = 8 + 5 = 13۲. اعمال (mod11)\pmod{11}: باید باقی‌ماندهٔ تقسیم 1313 بر 1111 را به دست آوریم. عدد 1313 برابر است با (1×11)+2(1 \times 11) + 2؛ پس باقی‌مانده برابر 22 می‌شود:
132(mod11)13 \equiv 2 \pmod{11}۳. مختصات سهم ۲: (4,2)(4, 2)

بازسازی کامل راز با سهم‌های (3,0)(3, 0) و (4,2)(4, 2)

۱. محاسبه شیب (mm):
m=2043=2m = \frac{2 - 0}{4 - 3} = 2معادله به صورت y=(2x+b)(mod11)y = (2x + b) \pmod{11} درمی‌آید.
۲. محاسبه عرض از مبدأ (bb):با قرار دادن سهم (3,0)(3, 0):
0(2(3)+b)(mod11)    0(6+b)(mod11)0 \equiv (2(3) + b) \pmod{11} \implies 0 \equiv (6 + b) \pmod{11}در پیمانهٔ 1111 عددی که با 66 جمع شود و مضرب 1111 گردد 55 است (6+5=1106 + 5 = 11 \equiv 0). بنابراین:
b=5b = 5راز با موفقیت و بدون خطای گردکردن به دست آمد (S=5S = 5).

یک سوءتفاهم رایج: چرا به هیچ‌کس سهمی با x=0x = 0 داده نمی‌شود؟

گاهی وجود مقدار y=0y = 0 در یک سهم (مانند سهم (3,0)(3, 0)) باعث سردرگمی می‌شود. باید بین x=0x = 0 و y=0y = 0 تفکیک قائل شد:

  • راز اصلی مقدار yy به ازای x=0x = 0 است.
  • سهم‌ها فقط برای مقادیر x=1,2,3,x = 1, 2, 3, \dots توزیع می‌شوند.
  • اگر به فردی سهمی با x=0x = 0 داده شود (مثلاً (0,5)(0, 5))، آن فرد مستقیماً و بدون نیاز به دیگران راز را در اختیار دارد.
  • مقدار y=0y = 0 در سهم (3,0)(3, 0) صرفاً نقطه‌ای از منحنی است که محور xx را قطع کرده و هیچ اطلاعاتی از راز (x=0x=0) افشا نمی‌کند.

بازسازی با سهمی: طرح ۳ از ۴ (k=3,n=4)(k=3, n=4) روی (mod11)\pmod{11}

برای آستانهٔ k=3k = 3 به چندجمله‌ای درجهٔ ۲ نیاز داریم:
y=(ax2+bx+c)(mod11)y = (ax^2 + bx + c) \pmod{11}فرض کنید سه سهم زیر در اختیار ما قرار دارد:

  • سهم ۱: (1,10)(1, 10)
  • سهم ۲: (2,8)(2, 8)
  • سهم ۳: (3,10)(3, 10)

تشکیل دستگاه معادلات

با جای‌گذاری سهم‌ها در معادله:
a(1)2+b(1)+c10(mod11)    a+b+c10(mod11)(معادله ۱)a(2)2+b(2)+c8(mod11)    4a+2b+c8(mod11)(معادله ۲)a(3)2+b(3)+c10(mod11)    9a+3b+c10(mod11)(معادله ۳)\begin{aligned} a(1)^2 + b(1) + c &\equiv 10 \pmod{11} \implies a + b + c \equiv 10 \pmod{11} \quad \text{(معادله ۱)} \\ a(2)^2 + b(2) + c &\equiv 8 \pmod{11} \implies 4a + 2b + c \equiv 8 \pmod{11} \quad \text{(معادله ۲)} \\ a(3)^2 + b(3) + c &\equiv 10 \pmod{11} \implies 9a + 3b + c \equiv 10 \pmod{11} \quad \text{(معادله ۳)} \end{aligned}

حل دستگاه معادلات

۱. حذف cc:

  • تفریق معادله ۱ از معادله ۲:
    (4a+2b+c)(a+b+c)810(mod11)3a+b29(mod11)(معادله A)\begin{aligned} (4a + 2b + c) - (a + b + c) &\equiv 8 - 10 \pmod{11} \\ 3a + b &\equiv -2 \equiv 9 \pmod{11} \quad \text{(معادله A)} \end{aligned}
  • تفریق معادله ۱ از معادله ۳:
    (9a+3b+c)(a+b+c)1010(mod11)8a+2b0(mod11)    4a+b0(mod11)(معادله B)\begin{aligned} (9a + 3b + c) - (a + b + c) &\equiv 10 - 10 \pmod{11} \\ 8a + 2b &\equiv 0 \pmod{11} \implies 4a + b \equiv 0 \pmod{11} \quad \text{(معادله B)} \end{aligned}

۲. محاسبهٔ aa و bb:

  • تفریق معادله A از معادله B:
    (4a+b)(3a+b)09(mod11)a92(mod11)    a=2\begin{aligned} (4a + b) - (3a + b) &\equiv 0 - 9 \pmod{11} \\ a &\equiv -9 \equiv 2 \pmod{11} \implies a = 2 \end{aligned}
  • جای‌گذاری a=2a = 2 در معادله A:
    3(2)+b9(mod11)    6+b9    b=33(2) + b \equiv 9 \pmod{11} \implies 6 + b \equiv 9 \implies b = 3

۳. محاسبهٔ cc (راز):

  • جای‌گذاری a=2a = 2 و b=3b = 3 در معادله ۱:
    2+3+c10(mod11)    5+c10    c=52 + 3 + c \equiv 10 \pmod{11} \implies 5 + c \equiv 10 \implies c = 5

چندجمله‌ای بازسازی‌شده برابر است با y=(2x2+3x+5)(mod11)y = (2x^2 + 3x + 5) \pmod{11} و مقدار راز برابر با 55 است.

شرایط انتخاب عدد اول pp

عدد اول pp نمی‌تواند دلخواه باشد و باید دو شرط اساسی را برآورده کند:

  1. p>Secretp > \text{Secret}: اگر pp از راز کوچک‌تر باشد، محاسبهٔ پیمانه مقدار راز را تغییر داده و بازسازی درست غیرممکن می‌شود.
  2. p>np > n: هر سهم نیازمند یک xx یکتا در مجموعهٔ {1,2,,p1}\{1, 2, \dots, p-1\} است؛ بنابراین pp باید از تعداد کل سهم‌ها بیشتر باشد.
در پیاده‌سازی‌های عملی رمزنگاری، از اعداد اول بسیار بزرگ (مانند اعداد اول ۲۵۶ بیتی) استفاده می‌شود تا فضای راز بزرگ و غیرقابل حدس باشد.

تمرین کاربردی انتخاب pp

بانکی می‌خواهد یک کلید عددی با مقدار 450450 را بین 55 مدیر توزیع کند (n=5n = 5). کدام عدد اول مناسب است؟

  • گزینه A: p=7p = 7 (نادرست: هم از راز و هم از nn کوچک‌تر است)
  • گزینه B: p=401p = 401 (نادرست: کوچک‌تر از راز 450450 است)
  • گزینه C: p=521p = 521 (درست: هم 521>450521 > 450 و هم 521>5521 > 5)

کاربردهای واقعی Shamir’s Secret Sharing

  • بازیابی اجتماعی در کیف‌پول‌های وب۳ (Social Recovery): تقسیم عبارات بازیابی بین چند دستگاه یا افراد مورد اعتماد.
  • خزانه‌های چندامضایی و مدیریت شرکتی: نیاز به تایید حداقل kk مدیر برای انجام تراکنش‌های مالی حساس.
  • ماژول‌های امنیتی سخت‌افزاری (HSM) و سیستم‌های ابری: توزیع کلیدهای اصلی رمزنگاری بین سرورهای جغرافیایی مختلف.

جمع‌بندی

امنیت طرح اشتراک راز شامیر مبتنی بر پیچیدگی محاسباتی یا «سختی حدس زدن» نیست؛ بلکه بر پایهٔ امنیت مطلق نظریه اطلاعات (InformationTheoreticSecurityInformation-Theoretic Security) استوار است. با داشتن کمتر از kk سهم، تعداد بی‌نهایتی منحنی با تمامی عرض از مبدأهای ممکن وجود دارند که شانس بروز هر یک کاملاً یکسان است.