رمزنگاری گلدواسر-میکالی (به انگلیسی: Goldwasser–Micali cryptosystem)یکی از روشهای رمزنگاری کلید عمومی است که در سال ۱۹۸۲ توسط شافی گلدواسر و سیلویو میکالی معرفی شده است[۱]. این روش اولین روش احتمالاتی کلید عمومی است که در آن میتوان با داشتن مفروضات استاندارد رمزنگاری امنیت را اثبات نمود. این روش ممکن است بهینه نباشد چرا که در روش گلدواسر-میکالی متن رمزشده میتواند تا چند صد برابر بزرگتر از متن آشکار باشد. گلدواسر و میکالی برای اثبات امنیت این سیستم از مفهوم امنیت معنایی بهره جستهاند.
سیتم رمزنگاری گلدواسر-میکالی بر اساس پیچیدگی مسئله مانده مربعی به پیمانه عدد مرکب N = pq که p و q عدد اول بزرگ هستند، به صورت معنایی امن است. این فرض بیان میکند که با داشتن زوج (x, N)، تعیین این مسئله که آیا x یک مانده مربعی به پیمانه N است مسئله دشواری میباشد. مسئله مانده مربعی با فرض معلوم بودن N به راحتی حل میشود چراکه مانده مربعی را میتوان با استفاده از تجزیه به راحتی محاسبه نمود. این الگوریتم پیام را گسترش میدهد، به این مفهوم که به ازای هر بیت عددی به پیمانه N ارسال میکند و این عدد با توجه به بزرگی اعداد اول p و q بسیار بزرگ میباشد. این الگوریتم احتمالاتی است یعنی با داشتن متن اصلی خاص، میتوان تعداد بسیار زیادی متن رمزشده متفاوت تولید نمود بدون اینکه کلید عمومی یا سایر پارامترها تغییر کنند. این مسئله باعث میشود دشمن نتواند پیام دریافتی را با مقایسه با لغتنامه متنهای رمزشده شناخته شده، تشخیص دهد.
روش مذکور از سه الگوریتم تشکیل شدهاست. الگوریتم اول به تولید کلید میپردازد و کلیدی عمومی و نیز یک کلید عمومی تولید میکند. الگوریتم دوم روشی احتمالاتی برای رمزگذاری ارائه میدهد و نهایتاً الگوریتم سوم شیوه رمزگشایی را بیان میکند. در روش گلدواسر-میکالی بررسی میگردد که آیامقدار معلوم x به پیمانه N با فرض معلوم بودن تجزیه N مربعی میشود یا نه. این مسئله را میتوان با فرایند زیر تحقیق نمود:
گلدواسر-میکالی از روشی مشابه آراس ای برای تولید کلید بهره میگیرد.
کلید عمومی از (x, N) تشکیل شدهاست و کلید رمز برابر تجزیه (p, q) میباشد.
فرض کنید بابک بخواهد پیام m را به آذر بدهد.
بابک متن رمزشده (c1, ..., cn) را می فرستد.
آذر (c1, ..., cn) را دریافت میکند. سپس او طبق فرایند زیر m را ستخراج میکند.
خروجی برابر m = (m1, ..., mn) خواهد بود.