امضاهای حلقه و گمنام‌سازی (Anonymization)

عمده‌ترین معضل بیت کوین محرمانه‌نبودن میزان نقل و انتقالات و هویت فرستنده و گیرنده‌ی آن است. بیت کوین برای بررسی کافی‌بودن منابع مالی فرستنده جهت پرداخت، نیاز دارد که اینگونه عمل کند. به همین جهت، توسعه‌دهندگان ارزهای رمزنگاری شده به دنبال روش‌هایی جهت گمنام‌سازی (Anonymization) و حفظ هویت افراد در نقل و انتقالات بودند. یکی از جدیدترین روش‌هایی که مونرو (Monero) به این منظور از آن استفاده می‌کند، نقل و انتقالات محرمانه‌ی حلقه یا RingCT نام دارد.

0 277

تصور کنید که یک نشت اطلاعات در کاخ سفید بوجود آمده است. دونالد ترامپ (Donald Trump) رهبران امنیت سایبری خود را فراخوانده و به آن‌ها می‌گوید:«می‌دانم یکی از شما باعث نشت اطلاعات شدید، اما نمی‌توانم بگویم کدامتان». چطور ممکن است که ترامپ بداند یکی از رهبران او اطلاعات را نشت داده اما نداند کدامشان؟ بسیار خوب، این اتفاق می‌تواند به کمک امضای حلقه (ring signature) اتفاق بیفتد که مواردی چون گمنامی، تغییرناپذیری و برخوردتابی (Collision Resistance) را فراهم می‌کند.

Anonymization

یک امضای حلقه نوعی امضای دیجیتال است که توسط عضوی از یک گروه ایجاد می‌شود که هر کدام کلید خودشان را دارند. به همین خاطر ممکن نیست که بتوان شخصی از گروه که کلید را ایجاد کرده، تعیین نمود. این روش ابتدا توسط رون ریوست (Ron Rivest)، آدی شمیر (Adi Shamir) و یائل تامان (Yael Tauman) در سال ۲۰۰۱ شکل گرفت و آن‌ها در مقاله‌ خود معمای نشت اطلاعات کاخ سفید را مطرح کردند.

ایجاد حلقه

در یک امضای حلقه، ما گروهی از نهادها را تعریف می‌کنیم که هر کدام جفت‌کلیدهای عمومی/خصوصی خود را از میان (P1, S1)، (P2, S2)، …، (Pn, Sn) دارند. اگر ما از نهاد i بخواهیم که یک پیام را امضا کند (پیام)، آن‌ها از کلید محرمانه‌ی خود (si) و کلیدهای عمومی اعضای دیگر گروه (m,si,P1,…,Pn) استفاده می‌کنند. به همین خاطر ممکن است که اعتبار یک گروه را صرفاً با دانستن کلید عمومی آن تشخیص داد، اما در عین حال امکان ندارد که یک امضای معتبر را بدون آگاهی از کلیدهای خصوصی داخل گروه مشخص کرد.

پس بگذارید فرض کنیم که ترنت (Trent)، باب (Bob)، ایو (Eve) و آلیس (Alice) در یک گروه هستند و هر کدام کلیدهای عمومی و محرمانه‌ی خود را دارند. باب حالا می‌خواهد پیامی از گروه را امضا کند. او ابتدا یک متغیر تصادفی مانند v را تولید کرده و سپس متغیرهای تصادفی دیگری (xi) را برای هر یک از مشارکت‌کنندگان دیگر ایجاد می‌کند، اما کلید محرمانه‌ خود (si) را برداشته و از آن در جهت تعیین یک کلید محرمانه‌ی متفاوت استفاده می‌کند که این فرآیند، معکوس تابع رمزنگاری (encrypction function) است.

او حالا پیام را گرفته و یک هش (Hash) از آن به وجود می‌آورد و سپس یک کلید (k) را ایجاد می‌کند. این کلید با رمزنگاری متقارن به منظور رمزگذاری هر یک از عناصر حلقه (Ek) به کار خواهد رفت و پس از آن، هر عنصر حلقه، یک تابع EX-OR از عنصر قبل را مورد استفاده قرار می‌دهد (تصویر ۱).

Anonymization

هر کدام از متغیرهای تصادفی برای مشارکت‌کنندگان دیگر به همین شکل با کلید عمومی آن مشارکت‌کننده رمزگذاری می‌شود. باب سپس مقدار متغیر ys را به خاطر ایجاد حلقه محاسبه می‌نماید (نتیجه‌ی حلقه بایستی برابر با v باشد). او بعد از آن این مقدار را معکوس خواهد کرد تا کلید خصوصی معادل (xs) آن را ایجاد کند. حالا باب امضای کلی و مقادیر تصادفی x را در کنار کلید محرمانه‌ی محاسبه‌شده منتشر می‌کند. برای بررسی امضا، دریافت‌کننده تنها حلقه را محاسبه کرده و نتیجه‌ی آن را با امضای ارسال‌شده تطابق می‌دهد.

روش پایه اینگونه است:

  1. تولید رمزنگاری با (k=Hash(message
  2. تولید یک مقدار تصادفی (u)
  3. رمزگذاری u برای دست‌یابی به (v=Ek(u
  4. برای هر شخص (جدا از فرستنده):
    1. محاسبه مقدار {e=si^{Pi (همان mod Ni) که si عدد تصادفی تولیدشده برای کلید محرمانه‌ی گروه i‌ اُم و Pi کلید عمومی گروه می‌باشد.
    2. محاسبه v=v⊕e
  5. محاسبه sz=(v⊕u)^d (همان mod Nz) برای گروه امضاشده (z) که در آن d همان کلید محرمانه‌ی گروه امضاکننده است.

ما در نهایت به امضا( (v=Ek(u) می‌رسیم که حلقه را کامل می‌کند.

روش پایه که در آن باب کلیدهای محرمانه‌ی ساختگی برای دیگر اعضای حلقه ایجاد می‌کند به شکل زیر است:

Anonymization

سپس بازبینی حلقه به شکل زیر خواهد بود:

Anonymization

امضاهای حلقه‌ای در مونرو (Monero)

مشکل عمده‌ی شبکه‌ی بیت کوین این است که مقدار نقل و انتقالات و فرستنده و گیرنده‌ی منابع مالی محرمانه نیست و اگر کسی آدرس فردی را بداند، می‌تواند نقل و انتقالات او را دنبال کند. این موضوع ناشی از این است که بلاکچین می‌خواهد بررسی کند که فرستنده منابع مالی کافی برای پرداخت به دریافت‌کننده را داشته باشد. به همین خاطر، بسیاری از ارزهای رمزنگاری شده به دنبال راه‌هایی برای گمنام‌سازی نقل و انتقالات هستند. اتریوم (Ethereum)، به عنوان نمونه از zk-Snarks برای مخفی‌کردن هویت‌ها بهره می‌برد.

یکی از روش‌های حفظ هویت توسط ریوست و همکاران ارائه شد که از رمزنگاری RSA استفاده می‌کند. متاسفانه، این روش برای سیستم‌های مدرن کارآمد نیست، به همین خاطر گرگ ماکسول (Greg Maxwell) یک روش منحنی بیضوی را به عنوان راه جدیدی برای ایجاد امضای حلقه معرفی کرد که امضای حلقه‌ی بورومین (Borromean ring signature) نام دارد.

ارز رمزنگاری شده‌ مونرو پس از آن این روش را برای گمنام‌سازی نقل و انتقالات به کار برد، اما بعد از مدتی به استفاده از روش جدیدی روی آورد که امضای « چندلایه‌ی قابل اتصال گروه گمنام خودجوش » (Multi-layered Linkable Spontaneous Anonymous Group) نام دارد. این روش مقدار نقل و انتقال و هویت پرداخت‌کننده و دریافت‌کننده را مخفی می‌کند. در حال حاضر این روش به عنوان « حلقه‌ی نقل و انتقالات محرمانه » (Ring Confidential Transactions) یا به اختصار RingCT شناخته می‌شود که در ژانویه‌ی ۲۰۱۷ گسترده شد و از سپتامبر ۲۰۱۷ برای تمامی نقل و انتقالات الزامی شد.

نتیجه‌گیری

مشکل عمده‌ی شبکه‌ بیت کوین، خصوصی‌نبودن میزان نقل و انتقالات و فرستنده و دریافت‌کننده‌ی منابع مالی است و کسی که آدرس یک شخص را بداند، می‌تواند نقل و انتقالات او را دنبال کند. این مسئله حائز اهمیت است بدان جهت که بلاکچین نیاز دارد تا بررسی کند که فرستنده دارای منابع مالی کافی برای پرداخت به دریافت‌کننده باشد. به همین خاطر، بسیاری از ارزهای رمزنگاری به دنبال راه‌هایی برای گمنام‌سازی نقل و انتقالات هستند.

شاید از این مطالب هم خوشتان بیاید.

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.