فهرست مطالب
200x
حداکثر سرعت نسبت به CPU
90%
سهم NTT در تاخیر
32-bit
استفاده از خط لوله اعداد صحیح
1. مقدمه
اثباتهای دانش صفر (ZKPs) یک پروتکل رمزنگاری انقلابی هستند که به یک طرف (اثباتکننده) اجازه میدهد تا دانش یک ورودی مخفی را بدون افشای هیچ اطلاعاتی درباره خود مخفی اثبات کند. این قابلیت، کاربردهای تحولآفرینی در ارزهای دیجیتال خصوصی، برونسپاری محاسبات قابل تأیید و راهحلهای مقیاسدهی بلاکچین امکانپذیر کرده است. چالش اساسی در پذیرش ZKP، سربار محاسباتی قابل توجه مورد نیاز برای تولید اثبات بوده است که برای محاسبات پیچیده میتواند روی CPUهای مدرن چندین دقیقه طول بکشد.
پردازندههای گرافیکی به دلیل ماهیت موازیسازی دادهای هستههای محاسباتی اصلی، به عنوان پلتفرم اصلی شتابدهی برای ZKPها ظهور کردهاند. همانطور که در شکل ۱ نشان داده شده است، ZKPهای شتابیافته با GPU تا ۲۰۰ برابر سرعت بیشتری نسبت به پیادهسازیهای CPU نشان میدهند. با این حال، علیرغم این دستاوردهای چشمگیر، یک توصیف سیستماتیک از گلوگاههای عملکرد و محدودیتهای مقیاسپذیری روی معماریهای مدرن GPU به طور محسوسی در ادبیات موضوع غایب بوده است.
2. پیشینه و کارهای مرتبط
2.1 مبانی اثبات دانش صفر
اثباتهای دانش صفر بر این اصل عمل میکنند که یک اثباتکننده میتواند یک تأییدکننده را از دانش یک شاهد $w$ برای یک تابع عمومی $f$ و ورودی $x$ به گونهای متقاعد کند که $f(x,w) = y$، بدون اینکه هیچ اطلاعاتی درباره $w$ فاش شود. پروتکل Groth16 که اساس این مطالعه را تشکیل میدهد، اثباتهای مختصر و زمانهای تأیید زیر میلیثانیه ارائه میدهد و آن را به ویژه برای کاربردهای دنیای واقعی مناسب میسازد.
2.2 شتابدهی GPU در رمزنگاری
کارهای قبلی در شتابدهی GPU ابتدای رمزنگاری، بهبودهای عملکرد قابل توجهی را نشان دادهاند. مطالعاتی مانند [۱۹,۳۰,۳۱,۴۲] نشان دادهاند که معماری موازی GPUها برای عملیات رمزنگاری به ویژه آنهایی که شامل محاسبات ریاضی در مقیاس بزرگ هستند، بسیار مناسب است. با این حال، این تلاشها عمدتاً بر روی هستههای فردی متمرکز شدهاند تا عملکرد سیستم end-to-end.
3. روششناسی و تنظیمات آزمایشی
3.1 چارچوب ZKProphet
ZKProphet یک چارچوب تحلیل جامع برای ارزیابی عملکرد ZKP روی GPUها ارائه میدهد. این چارچوب به طور سیستماتیک هستههای محاسباتی اصلی از جمله ضرب اسکالر چندگانه (MSM) و تبدیل نظریه اعداد (NTT) را ارزیابی میکند که در مجموع بیش از ۹۵٪ از بار محاسباتی در تولید ZKP را به خود اختصاص میدهند.
3.2 پیکربندیهای معیار
تنظیمات آزمایشی ما از معماریهای مدرن GPU از نسلهای Ampere و Ada Lovelace شرکت NVIDIA استفاده میکند. ما عملکرد را در تعداد محدودیتهای مختلف ارزیابی میکنیم که نشاندهنده پیچیدگی محاسبات در حال اثبات است. معیارها شامل هر دو بارکاری مصنوعی و کاربردهای ZKP دنیای واقعی از حوزههای ارز دیجیتال و بلاکچین هستند.
4. نتایج تحلیل عملکرد
4.1 تجزیه عملکرد هسته
تحلیل ما یک تغییر حیاتی در گلوگاههای عملکرد را نشان میدهد. در حالی که تحقیقات قبلی به شدت بر بهینهسازی عملیات MSM متمرکز بودند، ما دریافتیم که با پیادهسازیهای بهینهشده مدرن MSM، عملیات NTT اکنون تا ۹۰٪ از تاخیر تولید اثبات را به خود اختصاص میدهند. این نشاندهنده یک تغییر پارادایم قابل توجه است که نیاز به تمرکز مجدد بر بهینهسازی NTT دارد.
شکل ۱: سرعت اثباتکننده در مقابل تعداد محدودیتها
نتایج آزمایشی نشان میدهد که پیادهسازیهای GPU سرعت قابل توجهی نسبت به baselineهای CPU ارائه میدهند، با عملکردی که تقریباً به صورت خطی با تعداد محدودیتها مقیاس مییابد و تا ۲۰۰ برابر بهبود برای مجموعههای محدودیت بزرگ.
4.2 تحلیل مقیاسپذیری
ما مشاهده میکنیم که محاسبات ZKP منحصراً روی خطوط لوله اعداد صحیح ۳۲ بیتی GPU اجرا میشوند و به دلیل وابستگیهای داده ذاتی، موازیسازی در سطح دستورالعمل محدودی را نشان میدهند. این اساساً مقیاسپذیری عملکرد را بر اساس واحدهای محاسباتی اعداد صحیح موجود به جای قابلیتهای اعشاری محدود میکند.
5. جزئیات پیادهسازی فنی
5.1 مبانی ریاضی
عملیات ریاضی اصلی در ZKPها بر روی محاسبات میدان متناهی روی میدانهای اول بزرگ متکی هستند. عملیات NTT که یک شکل تخصصیشده از تبدیل فوریه در میدانهای متناهی است، میتواند به صورت زیر بیان شود:
$$X_k = \sum_{j=0}^{n-1} x_j \cdot \omega^{jk} \mod p$$
که در آن $\omega$ یک ریشه اولیه $n$ام وحدت پیمانه $p$ است، و $p$ یک عدد اول بزرگ است. NTT معکوس به طور مشابه با $\omega^{-1}$ تعریف میشود.
5.2 پیادهسازی کد
شبهکد زیر یک پیادهسازی بهینهشده NTT برای معماریهای GPU را نشان میدهد:
__global__ void ntt_kernel(uint32_t *a, uint32_t *roots, int n) {
int tid = threadIdx.x + blockIdx.x * blockDim.x;
int stride = blockDim.x * gridDim.x;
for (int i = tid; i < n/2; i += stride) {
int j = bit_reverse(i, log2(n));
if (i < j) {
swap(a[i], a[j]);
}
}
__syncthreads();
for (int len = 2; len <= n; len <<= 1) {
int half = len >> 1;
for (int i = tid; i < n; i += stride) {
if ((i & (len - 1)) < half) {
uint32_t u = a[i];
uint32_t v = mul_mod(a[i + half], roots[len + (i & (half - 1))]);
a[i] = add_mod(u, v);
a[i + half] = sub_mod(u, v);
}
}
__syncthreads();
}
}
6. کاربردها و جهتهای آینده
بهینهسازی ZKPها روی GPUها امکانهای کاربردی متعددی را باز میکند. در فناوری بلاکچین، ZKPهای بهینهشده میتوانند راهحلهای rollup کارآمدتر و قراردادهای هوشمند حفظ حریم خصوصی را امکانپذیر کنند. برای یادگیری ماشین قابل تأیید، همانطور که در کارهایی مانند [۳۲] بررسی شده است، ZKPهای شتابیافته با GPU میتوانند تأیید عملی استنتاجهای مدل را بدون افشای پارامترهای اختصاصی مدل امکانپذیر کنند.
جهتهای تحقیقاتی آینده شامل بررسی محاسبات دقت مختلط برای بهرهبرداری بهتر از هستههای تانسور GPU، توسعه رویکردهای همطراحی سختافزار-نرمافزار تخصصی، و ایجاد چارچوبهای بهینهسازی انطباقی است که میتوانند به طور خودکار پارامترهای ZKP را بر اساس قابلیتهای سختافزاری خاص و نیازهای کاربردی تنظیم کنند.
تحلیل اصلی
مطالعه ZKProphet نشاندهنده یک پیشرفت قابل توجه در درک ویژگیهای عملکرد اثباتهای دانش صفر روی معماریهای مدرن GPU است. در حالی که تحقیقات قبلی، مانند کار بنیادی روی zk-SNARKها توسط Ben-Sasson و همکاران (۲۰۱۴)، مبانی نظری را estable کردند، و پیادهسازیهای بعدی مانند libsnark و bellman چارچوبهای عملی ارائه دادند، یک شکاف قابل توجه در تحلیل عملکرد سیستماتیک در سراسر خط لوله محاسباتی وجود داشته است.
شناسایی NTT به عنوان گلوگاه اصلی جدید (که تا ۹۰٪ تاخیر را به خود اختصاص میدهد) نشاندهنده یک تغییر حیاتی در اولویتهای بهینهسازی است. این یافته با مشاهدات در سایر حوزههای محاسباتی فشرده همسو است که در آن بهینهسازیهای اولیه بر روی آشکارترین گلوگاهها متمرکز میشوند، تنها برای آشکار کردن محدودیتهای ثانویه که پس از بهبودهای اولیه غالب میشوند. الگوهای مشابهی در پیادهسازیهای رمزنگاری برای سیستمهای بلاکچین مشاهده شده است، جایی که پس از بهینهسازی عملیات منحنی بیضوی، الگوهای دسترسی به حافظه به عامل محدودکننده تبدیل شدند.
استفاده انحصاری از خطوط لوله اعداد صحیح ۳۲ بیتی هم چالشها و هم فرصتها را ارائه میدهد. بر خلاف بارکاریهای یادگیری ماشین که به شدت از هستههای تانسور و محاسبات FP32/FP16 استفاده میکنند، ZKPها نمیتوانند از این واحدهای تخصصی در معماریهای فعلی GPU بهرهمند شوند. این موضوع پتانسیلی برای همطراحی سختافزار-نرمافزار، مشابه رویکرد اتخاذ شده در معماری TPU گوگل برای شبکههای عصبی، اما تخصصیشده برای عملیات رمزنگاری، نشان میدهد. موازیسازی محدود در سطح دستورالعمل به دلیل وابستگیهای داده، بیشتر بر نیاز به نوآوریهای الگوریتمی که بتوانند موازیسازی بیشتری را آشکار کنند، تأکید میکند.
در مقایسه با سایر تلاشهای شتابدهی رمزنگاری، مانند آنهایی که برای رمزنگاری همومورفیک (همانطور که در [۹] referenced شده است) یا چارچوبهای محاسبات قابل تأیید، تمرکز ZKProphet بر عملکرد end-to-end به جای بهینهسازی هسته فردی، بینشهای عملیتری برای استقرار دنیای واقعی ارائه میدهد. ارجاع به کاربردهای یادگیری ماشین قابل تأیید در [۳۲] کاربردهای متقابل حوزهای امیدوارکنندهای را پیشنهاد میکند که در آن ZKPهای شتابیافته با GPU میتوانند مدلهای اعتماد جدیدی در سیستمهای هوش مصنوعی امکانپذیر کنند.
محدودیتهای مقیاسپذیری عملکرد شناسایی شده در این کار، پیامدهای قابل توجهی برای استقرار عملی ZKPها در سیستمهای تولید دارد. با افزایش تعداد محدودیتها با محاسبات پیچیدهتر، رابطه مقیاسپذیری خطی نشان میدهد که معماریهای فعلی GPU ممکن است بدون نوآوریهای معماری که به طور خاص بر بارکاریهای رمزنگاری هدفگیری میکنند، با محدودیتهای اساسی مواجه شوند.
7. مراجع
- Groth, J. (2016). "On the Size of Pairing-Based Non-interactive Arguments." EUROCRYPT 2016.
- Ben-Sasson, E., et al. (2014). "Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture." USENIX Security Symposium.
- Parno, B., et al. (2013). "Pinocchio: Nearly Practical Verifiable Computation." IEEE Symposium on Security and Privacy.
- Setty, S., et al. (2013). "Resolving the conflict between generality and plausibility in verified computation." EuroSys.
- Zhang, J., et al. (2020). "vCNN: Verifiable Convolutional Neural Network based on zk-SNARKs." Cryptology ePrint Archive.
- Wahby, R.S., et al. (2018). "Full accounting for verifiable outsourcing." CCS.
- Kosba, A., et al. (2016). "C∅C∅: A Framework for Building Composable Zero-Knowledge Proofs." USENIX Security.
- Xie, T., et al. (2022). "zkCNN: Zero Knowledge Proofs for Convolutional Neural Network Predictions and Accuracy." CCS.