تبادل کلید Diffie-Hellman.
آلیس و باب از تبادل کلید Diffie-Hellman برای به اشتراک گذاشتن رازها استفاده میکنند. آنها با اعداد اول شروع میکنند، کلیدهای خصوصی انتخاب میکنند، کلیدهای عمومی میسازند و با هم مبادله میکنند و سپس یک کلید مخفی مشترک تولید میکنند.
برنامهی آزمون اعداد اول p و g را در اختیار میگذارد.
آلیس یک کلید خصوصی a انتخاب میکند که بزرگتر از ۱ و کوچکتر از p است.
باب هم به همین شکل یک کلید خصوصی b انتخاب میکند.
آلیس کلید عمومی A را محاسبه میکند.
A = gᵃ mod p
باب هم با استفاده از همان p و g، به همین ترتیب کلید عمومی B را از کلید خصوصی b خود محاسبه میکند.
آلیس و باب کلیدهای عمومی را با هم مبادله میکنند.
آلیس کلید مخفی s را محاسبه میکند.
s = Bᵃ mod p
باب محاسبه میکند
s = Aᵇ mod p
این محاسبات به یک نتیجهی یکسان میرسند!
اکنون آلیس و باب راز مشترک s را در اختیار دارند.
یکی از راهحلهای ممکن برای این تمرین این است که تابع توانرسانی پیمانهای خودتان را پیادهسازی کنید. برای اطلاعات بیشتر به صفحهی زیر مراجعه کنید.
بسیاری از پیادهسازیها برای همهی دامنهی ورودیها درست کار نمیکنند. آزمونهای اختیاری دیگری هم تعریف شدهاند که کمک میکنند مطمئن شوید همهی ورودیهای معتبر، نتایج معتبر تولید میکنند.
برای اجرای آزمونهای امتیاز، پرچم #[ignore] را بردارید و آزمونها را با ویژگی big-primes اجرا کنید، به این شکل:
$ cargo test --features big-primes