کلید عمومی Public Key چیست و چگونه کار میکند؟
کلید عمومی Public Key یک کد رمزنگاری است که به کاربران امکان میدهد ارزهای رمزپایه را به حساب خود وارد کنند. کلید عمومی و کلید خصوصی ابزارهای مورد نیاز برای اطمینان از امنیت اقتصاد رمزنگاری هستند.
Public Key یک آدرس شخصی منحصر به فرد است که در بلاکچین به اشتراک گذاشته شده است. Public Key یک کد رمزنگاری است که با استفاده از الگوریتمهای رمزگذاری کلید نامتقارن ایجاد میشود. و برای تبدیل پیام به قالب غیرقابل خواندن استفاده میشود. از آنجا که Public Key بیت کوین از یک رشته بسیار طولانی از اعداد تشکیل شده است. فشرده شده و کوتاه میشود تا آدرس عمومی را تشکیل دهد. اگر یک مالک Public Key خود را گم کند، میتوان با استفاده از کلید خصوصی آن را دوباره ایجاد کرد.
کلید عمومی Public Key چگونه کار میکند؟
هنگامی که کاربر اولین معامله خود را با بیت کوین یا altcoins آغاز میکند، یک جفت کلید عمومی Public Key و یک کلید خصوصی Private Keys ایجاد میشود. هر یک از کلیدها از یک رشته طولانی از نویسههای عددی تشکیل شده است. که به حفظ امنیت منابع کاربر در اکوسیستم دیجیتال کمک میکند.
Private Keys برای کاربر به تنهایی شناخته شده است و به عنوان شناسه دیجیتالی کاربر عمل میکند. کلید خصوصی به کاربر اجازه میدهد هرگونه معامله دیگر را از حساب خود خرج کند، برداشت کند. انتقال دهد یا انجام دهد. یک الگوریتم پیچیده برای تولید Public Key روی Private Key اعمال میشود و هر دو کلید در کیف پول دیجیتال ذخیره میشوند.
وقتی معاملهای توسط کاربر آغاز میشود تا مثلاً بیت کوین را برای شخص دیگری ارسال کند. تراکنش باید به شبکهای منتقل شود که گرههای توزیع شده اعتبار تراکنش را قبل از نهایی کردن و ضبط آن در بلاکچین تأیید میکنند.
انتقال ها چگونه با کلید عمومی انجام میشوند؟
قبل از اجرای تراکنش، با استفاده از Private Key به صورت دیجیتالی امضا میشود. امضا مالکیت کلید خصوصی را اثبات میکند، اگرچه جزئیات Private Key را برای کسی افشا نمیکند. از آنجا که Public Key از کلید خصوصی شکل گرفته است، Public Key کاربر برای اثبات اینکه امضای دیجیتال از کلید خصوصی وی آمده است استفاده میشود. پس از تأیید اعتبار معامله، وجوه به آدرس عمومی گیرنده ارسال میشود.
آدرس عمومی نسخه hashed شده Public Key است. از آنجا که Public Key از یک رشته اعداد بسیار طولانی تشکیل شده است. فشرده شده و کوتاه میشود تا آدرس عمومی را تشکیل دهد. در واقع، کلید خصوصی کلید عمومی را تولید میکند، که به نوبه خود، آدرس عمومی را تولید میکند.
وقتی دو نفر توافق میکنند که یکی از آنها token یا coin دیگری را ارسال کند. آدرس عمومی خود را برای یکدیگر فاش میکنند. آدرس عمومی مانند شماره حساب بانکی است. فرستنده به شماره نیاز دارد تا بتواند وجه را برای گیرنده ارسال کند که سپس میتواند آن را با کلید خصوصی خود خرج کند یا از آن برداشت کند. گیرنده همچنین میتواند دسته کوین های فرستنده را با استفاده از آدرس عمومی فرستنده که در صفحه وی نمایش داده میشود، تأیید کند.
رمزگذاری کلید عمومی
برای درک رمزنگاری Public Key، باید ابتدا از معنی رمزگذاری شروع کنیم. این اصطلاح اغلب سوتفاهم نمیشود، بنابراین بیایید ابتدا سه مفهوم را که اغلب اشتباه گرفته میشوند، مشخص کنیم:
- رمزگشایی: ترجمه یک پیام به یک قالب شناخته شده برای عموم (مانند Unicode، Base64 و غیره).
- رمزگذاری: مخلوط کردن یک پیام به یک قالب مبهم که فقط با استفاده از یک کلید رمزگشایی مخفی قابل برگشت است.
- Hashing: تقابل یک طرفه پیام در هضم اندازه ثابت مبهم.
به یاد داشته باشید، رمزگذاری فقط با استفاده از کلید رمزگشایی مخفی قابل برگشت است. در حالی که رمزگذاری به صورت عمومی قابل رمزگشایی است. hashing و رمزگذاری هر دو پیام را مبهم میکنند، اما فقط رمزگذاری قابل برگشت است.
انواع رمزگذاری در کلید عمومی
با خارج شدن از راه، دو نوع رمزگذاری اصلی وجود دارد: رمزگذاری متقارن و رمزگذاری نامتقارن.
رمزگذاری متقارن چیست؟
در رمزگذاری متقارن، از یک کلید واحد برای رمزگذاری و رمزگشایی دادهها استفاده میشود. این «متقارن» نامیده میشود زیرا هر دو طرف یک آینه از یک کلید دارند.
وقتی بیشتر مردم در مورد رمزگذاری صحبت میکنند، معمولاً به رمزگذاری متقارن اشاره میکنند. رمزگذاری تلفنهای هوشمند، رمزگذاری پایگاه داده و برنامههای پیام رمزگذاری شده همه از رمزگذاری متقارن استفاده میکنند.
به عنوان مثال، در TLS، پروتکل رمزگذاری شده از انتها به انتهای پشت HTTPS، دو طرف به سرعت یک کلید متقارن مشترک ایجاد میکنند. که پس از آن برای رمزگذاری تمام ترافیک آینده خود استفاده میکنند. هر دو طرف نسخهای از همان کلید را که پیامها را رمزگذاری و رمزگشایی میکند، حفظ میکنند.
رمزنگاری متقارن اکنون بسیار سریع است و اکثر پردازندههای مرکزی از بسیاری از رمزهای متقارن با سرعت سخت افزاری پیادهسازی میکنند.
رمزگذاری نامتقارن چیست؟
از طرف دیگر رمزگذاری نامتقارن نوعی عجیب است. دو کلید وجود دارد، یکی که قرار است Public Key باشد و دیگری که کلید خصوصی باشد. این دو کلید معکوس عملکردی هستند – چیزی که توسط Public Key رمزگذاری شده است فقط توسط کلید خصوصی قابل رمزگشایی است و بالعکس. این سحر و جادو هسته ارزهای رمزپایه را میسازد.
همانطور که اتفاق میافتد، رمزنگاری نامتقارن بسیار کندتر از رمزنگاری متقارن است. عملیات رمزنگاری نامتقارن عموماً بر حسب میلی ثانیه اندازه گیری میشود.
بنابراین، هر طرح رمزنگاری میخواهد رمزنگاری نامتقارن را به حداقل برساند و در اسرع وقت به رمزهای متقارن تبدیل کند. به طور کلی این بدان معنی است که پروتکلها از رمزنگاری نامتقارن برای ایجاد هویت استفاده میکنند. و سپس برای ادامه ارتباط از طریق رمزنگاری متقارن، یک کلید جلسه مشترک ایجاد میکنند.
امنیت کلید
اگرچه کلید و آدرس Public Key از کلید خصوصی تهیه شده است، اما مورد معکوس تقریباً غیرممکن است.
شبکه ارزهای رمزنگاری شده با استفاده از توابع ریاضی پیچیده برای اطمینان ازعدم امکان تولید کلید خصوصی ازPublic Key ایمن میماند، خصوصاً از آنجایی که کلید عمومی و نسخه هش آن توسط همه افراد در شبکه مشاهده میشود.
از آنجا که تهیه مجدد کلید خصوصی از کلید عمومی یا آدرس غیرممکن است. در صورتی که کاربر کلید خصوصی خود را گم کند، هر بیت کوین یا altcoin که در آدرس عمومی وی قرار دارد برای همیشه غیرقابل دسترسی است. از طرف دیگر، کاربری که کلید عمومی خود را گم میکند میتواند مجدداً آن را با کلید خصوصی ایجاد کند.
کلید عمومی Public Key به عنوان هویت
در رمزنگاری Public Key، یک تشبیه خام اما مفید این است که به Public Key خود مانند یک نام کاربری فکر کنید. میتوانید آن را با هر کسی به اشتراک بگذارید، و افراد از آن برای شناسایی عمومی شما استفاده میکنند. بنابراین، کلید خصوصی شما به نوعی مانند گذرواژه شما است. در صورت لو رفتن، به هر کسی اجازه میدهد شما را جعل کند.
به عنوان یک توسعه دهنده، احتمالاً قبلاً با Public Key مانند کلیدهای SSH سر و کار داشته اید. حتی ممکن است از آنها برای تأیید اعتبار در خدماتی مانند Github استفاده کرده باشید. اما در Github، هر کلید SSH که تولید میکنید در نهایت با هویت منحصر به فرد شما گره خورده است.
در بیت کوین، جفت کلید شما هویت شماست. هیچ شکل دیگری از تایید هویت فراتر از کلیدهای رمزنگاری وجود ندارد. در عین حال، این بدان معنی است که تولید یک هویت به آسانی تولید یک جفت کلید جدید است.
ممکن است تعجب کنید: اگر شخصی فقط جفت کلید او باشد، چه چیزی مانع شما میشود که به طور تصادفی کلیدهای شخص دیگری را تولید نکنید و آنها را جعل کنید – یا همه بیت کوینهای آنها را بدزدید؟
به عنوان مثال:
شانس تولید کلیدهای مشابه به طور تصادفی با شخص دیگر از نظر ریاضی معادل دو نفر در یک اتاق غول پیکر است که به طور تصادفی تولد یکسانی دارند. یعنی میتوانید آن را مانند حمله روز تولد تحلیل کنید.
اگر به یاد بیاورید، برای اینکه ۵۰٪ احتمال هرکس با جفت کلید شخص دیگری برخورد کند (معادل دو نفر که یک روز تولد را به اشتراک میگذارند)، باید تعداد \ (\ sqrt {N} ) تعداد زیادی جفت کلید ثبت شده داشته باشید، جایی که \ (N ) اندازه کل فضای کلید است. با توجه به اینکه رمزنگاری بیت کوین از کلیدهای عمومی ۲۵۶ بیتی استفاده میکند، این بدان معناست که شما نیاز به کلیدهای \ (۲ ^ {128} ) ثبت شده دارید قبل از اینکه احتمالاً شاهد یک برخورد یک کلید عمومی باشید. برای به دست آوردن حس مقیاس، کلیدهای \ (۲ ^ {128} ) یک کلید برای هر اتم کربن در هر انسانی است که تاکنون وجود داشته است.
این دقیقاً همان چیزی است که رمزنگاری Public Key را به عنوان شکلی از هویت امکانپذیر میکند. تا زمانی که کلیدها را به درستی تولید میکنید، فضای کلید بسیار گیج کننده است و هر هویتی که تولید میکند برای همیشه منحصر به فرد خواهد بود.
cypherpunksها با این ایده ایجاد شده اند. با داشتن کلیدهای عمومی به عنوان شناسه، شما میتوانید نه با نام یا ایمیل بلکه با Public Key شناسایی شوید. به اعتقاد آنها، این امر نظارت و سانسور را به گذشته تبدیل میکند. همچنین ایجاد جعل یا کادربندی شخصی غیرممکن است. اگر کسی پیامی را که توسط کلید خصوصی شما امضا شده است نقل کند، در صحت پیام آن تردیدی وجود ندارد.
Digital signatures
یکی از موارد ابتدایی رمزنگاری که از رمزنگاری Public Key خارج میشود، امضای دیجیتالی است. امضای دیجیتال همان چیزی است که به نظر میرسد – اثبات رمزنگاری غیرقابل انعطاف مبنی بر اینکه «مالک یک کلید خصوصی» دادههایی را «امضا» کرده است.
یک امضای دیجیتالی باید دارای این شروط باشد:
- قابل تأیید عمومی (اگر Public Key شما را دارم).
- فراموش نشدنی (بدون کلید خصوصی شما).
- غیرقابل برگشت (بعداً نمیتوانید انکار امضا از کلید خصوصی خود را انکار کنید).
- مقید به یک پیام خاص (من نمیتوانم امضای شما را روی چیز دیگری کپی و جایگذاری کنم).
میتوانید با استفاده از کلید خصوصی خود پیامی را امضا کنید و سپس شخص دیگری میتواند با استفاده از Public Key شما امضا را تأیید کند. در عمل، پروتکلهای امضای دیجیتال خود پیام را امضا نمیکنند، بلکه در عوض یک هش از پیام را امضا میکنند (بعلاوه برخی موارد padding). از آنجا که hash پیام تعهدی الزامآور به خود پیام است، به همان اندازه خوب است. امضای hash اجازه میدهد تا کل عملیات بسیار سریعتر انجام شود، زیرا امضای پیامهای طولانی میتواند بسیار کند باشد. همچنین برخی نقاط ضعف امنیتی ظریف وجود دارد که میتواند ناشی از امضای پیامهای خام باشد.
در بیت کوین، تمام معاملات با کلید خصوصی کاربر امضا میشود. این ثابت میکند که امضا کننده معامله را مجاز دانسته است، در حالی که هنوز (بیشتر) رازداری کلید خصوصی خود را حفظ میکند.
Key generation
هر سیستم رمزنگاری با Public Key به یک تولید کلید قوی بستگی دارد. تولید کلیدهای قدرتمند تنها در صورتی امکانپذیر است که به تصادفی با کیفیت بالا دسترسی داشته باشید.
منظور ما از تصادفی بودن با کیفیت بالا چیست؟
از این گذشته، رایانهها ماشینهای قطعی هستند – با توجه به همان سری دستورالعملها، آنها قرار است همان خروجیها را تولید کنند. در مورد درخواست از کامپیوتر برای ایجاد تصادفی چیزی متناقض وجود دارد.
اما به نظر میرسد، منابع زیادی برای entropy وجود دارد که کامپیوتر میتواند برای ایجاد تصادفی استفاده کند. هنگام راه اندازی، سیستم عامل شما یک entropy جمع آوری شده را حفظ میکند، سر و صدای تصادفی مانند خواندن دما، حرکات ماوس و دادههای زمان را میگیرد. این همه این دادهها را با هم در یک مجموعه entropy مخلوط میکند. این entropy سپس از طریق یک تابع شبه تصادفی (مانند یک تابع hash) اجرا میشود تا یک سری بایت تصادفی تولید کند. در سیستمهای مبتنی بر یونیکس، یک پرونده ویژه / dev / random وجود دارد که جریانی از این دادههای تصادفی را فراهم میکند که میتواند برای بذر تولید کلید رمزنگاری استفاده شود.
یک سیستم رمزنگاری فقط به اندازه تصادفی بودن آن خوب است. entropy ناکافی در تولید کلید منجر به حملات زیادی علیه سیستمهای رمزنگاری شده است. یکی از این موارد اشکال در ماژول SecureRandom اندروید بود که باعث شد ماژول Android Java از اعداد تصادفی کم entropy خارج شود. این امر منجر به ایجاد بسیاری از برنامههای اصلی بیت کوین کلیدهای خصوصی ناامن شد که بسیاری از آنها به سرعت شکسته شدند. همچنین گزارشهای زیادی در مورد کلیدهای تولید شده با استفاده از روشهای مختلف اکتشافی ad hoc گزارش شده است، که به طور معمول در معرض خطر قرار میگیرند. وقتی صحبت از ارزهای رمزپایه میشود، تولید کلید شلخته به معنی سرقت و از بین رفتن سرمایه است.
اما این فقط در تولید Public Key نیست.
اکثر الگوریتمهای امضای دیجیتال برای امنی بودن فرآیند امضا، امضا کننده نیاز به ایجاد تصادفی دارد. این تصادفی بودن باید منجر به متفاوت بودن هر امضا شود، حتی اگر همان پیام امضا شده باشد یا همان کلید امضا کننده آن باشد. اگر امضا کننده در حین امضا یک عدد تصادفی با آنتروپی زیاد تولید نکند، شکستن کلید خصوصی پس از مشاهده امضاهای کافی امکانپذیر است.
در حقیقت، موارد متعددی وجود داشته است که این اعداد تصادفی در چندین امضا مجدداً مورد استفاده قرار گرفته است. اگر هرگز این اتفاق بیفتد، محاسبه کلید خصوصی با استفاده از جبر دبیرستان امری پیش پا افتاده است. از این اشتباه برای شکستن DRM در پلی استیشن ۳ بسیار مورد سو استفاده قرار گرفت.
ما نمیتوانیم به اندازه کافی بر این مسئله استرس داشته باشیم: هرگز رمزنگاری خود را نوردید. با همه موارد در این دوره کاملاً آکادمیک رفتار کنید. اگر شما باید چیزی را از لحاظ رمزنگاری عجیب و غریب لمس کنید، با آن مانند رادیواکتیو رفتار کنید و با رمزگذار محله خود مشورت کنید. اگر چاره دیگری ندارید، از کتابخانههای رمزنگاری شده با نبرد با پیش فرضهای معقول استفاده کنید.
From RSA to ECC
بنابراین چگونه ما به همه این موارد رمزنگاری Public Key رسیده ایم؟ و آیا اساساً جادوگری نیست؟ (اسپویلر: بله همینطور است). زمینه رمزنگاری کلید عمومی در سال ۱۹۷۷ با اختراع سیستم رمزنگاری RSA توسط سه محقق رون ریوست، آدی شامیر و لئونارد آدلمان آغاز شد.
RSA چیست؟
RSA در زمینه رمزنگاری یک موفقیت بزرگ بود، زیرا اولین سیستم رمزگذاری Public Key بود که به طور عمومی کشف شد. (Clifford Cocks در واقع یک الگوریتم معادل در سال ۱۹۷۳ اختراع کرد، اما توسط سازمانهای اطلاعاتی طبقهبندی شد و هرگز استفاده نشد.)
از نظر ریاضی، سیستمهای رمزنگاری Public Key مانند RSA در نهایت از توابع trapdoor ساخته شده اند: محاسبه توابع دشوارتر از تأیید است. الگوریتم RSA بر عملکرد trapdoor فاکتورگیری عدد صحیح استوار است. فاکتورگیری تعداد زیادی از ابتدا دشوار است، اما تأیید فاکتوربندی آن همیشه آسان است. به عنوان مثال، شما احتمالاً عوامل اصلی ۱۷۷ را نمیدانید، اما با توجه به یک فاکتوراسیون احتمالی \ (۳ \ cdot ۵۹ )، تأیید صحت آن آسان است.
با توجه به اینکه RSA به سختی فاکتورگیری از اعداد صحیح بستگی دارد، میتوان تصور کرد که برای همیشه سخت خواهد ماند. اما همانطور که مشخص شد، الگوریتمهای فاکتورسازی ما با گذشت زمان به تدریج بهبود یافته اند. به همین دلیل و به لطف قانون مور افزایش قدرت محاسباتی، اندازه کلیدهای امن RSA با گذشت زمان افزایش یافته است. در اصل اندازههای کلید RSA در صدها بیت متغیر بود، اما اندازه کلید توصیه شده در حال حاضر ۲۰۴۸ بیت است. این تا جایی که کلیدهای رمزنگاری استفاده میشود کاملاً بزرگ است.
ECC چیست؟
این روزها رمزنگاری منحنی بیضوی (ECC) بسیار رایج است. ECC یک سیستم رمزنگاری است که بر اساس انجام ضربات روی منحنیهای بیضوی در زمینههای محدود است. امنیت آن به سختی محاسبه لگاریتمهای گسسته بستگی دارد. (اگر به نظر میرسد gobbledygook است، نگران نباشید، در این مرحله نیازی به درک جزئیات خوب ندارید).
طرح امضایی که با ECC استفاده میشود به عنوان ECDSA، الگوریتم امضای دیجیتال منحنی بیضوی شناخته میشود. این طرح امضایی است که تقریباً در همه ارزهای رمزپایه استفاده شده است.
تقریباً همه رمزنگاری Public Key امروزه بر روی منحنیهای بیضوی استاندارد شده است زیرا ECC با توجه به همان سطح امنیت بسیار کارآمدتر از RSA است. بهترین الگوریتمهای ما برای محاسبه لگاریتمهای گسسته بیش از منحنیهای بیضوی خاص، نمایی هستند، در حالی که بهترین الگوریتمهای ما برای فاکتور دادن به اعداد صحیح، زیر نمایشگاه هستند (به معنی سادهسازی فاکتورهای صحیح). کلیدهای استاندارد ECC ۲۵۶ بیت هستند، تقریباً به اندازه \ (\ frac {1} {10} ) اندازه کلیدهای استاندارد RSA. با توجه به اندازه کلیدهای ۲۵۶ بیتی، تقریباً تضمین شده است که هیچ دو کلید ECC تولید شده به طور تصادفی هرگز با هم برخورد نخواهند کرد.
تفاوت ویژگی های ECC و RSA
برای اینکه درک کنید ECC بسیار کارآمدتر از RSA است به این مثال توجه کنید:
انرژی محاسباتی مورد نیاز برای شکستن یک کلید ۲۲۸ بیتی RSA برای جوشاندن یک قاشق چایخوری آب کافی است. انرژی مورد نیاز برای شکستن یک کلید ۲۲۸ بیتی ECC برای جوشاندن کل آب روی زمین کافی است.
منحنیهای مختلف دارای ویژگیهای امنیتی متفاوتی هستند، و منحنیهای خاصی دارای نقاط ضعفی هستند به طوری که هرگز نباید در عمل استفاده شوند. بیت کوین از منحنی به نام secp256k1 استفاده میکند که اکنون بیشتر به دلیل تصویب بیت کوین از آن محبوب شده است.
استفاده از ریاضیات منحنیهای RSA (۱.۲، ۳) یا بیضوی (۱.۲، ۳) از حوصله این دوره خارج است. هر دوی آنها به جبر بیش از زمینههای محدود اعتماد دارند، که یک موضوع ریاضی نسبتاً پیشرفته است. اما برای درک نقش رمزنگاری کلید عمومی در ارزهای رمزپایه نیازی به درک ریاضی نیستید. در صورت تمایل به یادگیری بیشتر، ما در بخش خواندن اضافی پیوندهایی را ارائه خواهیم داد.
مبانی ریاضی کلید عمومی
رمزنگاری Public Key در نهایت به مجموعه کوچکی از فرضیات ریاضی بستگی دارد. اگر این فرضیهها نادرست باشند، این بدان معنی است که همه رمزنگاری Public Key ما اساساً شکسته شده است. از این لحاظ، این یک سوال باز است که آیا رمزنگاری Public Key حتی اصلاً ایمن نیست یا فقط آن را ایمن میدانیم زیرا در حال حاضر هیچ الگوریتم سریعی نداریم که بتواند ساختارهای فعلی ما را خراب کند.
به طور کلی، ما امنیت هر طرح رمزنگاری را از طریق کاهش ایجاد میکنیم – اساساً اثبات اینکه اگر میتوانستید این طرح رمزنگاری را بشکنید، میتوانید یک مشکل واقعاً سخت دیگر را نیز حل کنید. به عنوان مثال، مشکل کوله پشتی، یک مسئله کاملاً مشهور از نظر محاسباتی، از رضایتپذیری بولی کاهش مییابد. ما کاملاً مطمئن هستیم که میزان رضایتمندی Boolean سخت است، بنابراین با گفتن اینکه مشکل کوله پشتی نیز سخت است، بسیار احساس امنیت میکنیم.
الگوریتم Shor در رایانههای کوانتومی
الگوریتم Shor فقط در یک کامپیوتر کوانتومی کارآمد است. رایانههای کوانتومی که امروز توانستهایم بسازیم بسیار ناچیز هستند و ممکن است مدتی فاصله داشته باشیم تا بتوانیم رایانههای کوانتومی را در اندازهای که میتوانند کلیدهای ECC دنیای واقعی را بشکنند، مقیاسبندی کنیم. برای مرجع، در حال حاضر بیشترین تعداد فاکتور استفاده شده از الگوریتم Shor ۲۱ است.
اما هرگاه رایانههای کوانتومی در مقیاس عملی شوند، میدانیم که RSA و ECC با استفاده از الگوریتم Shor قابل شکستن هستند. این یک رقابت جدید توسط موسسه ملی استاندارد و فناوری (NIST) برای درخواست الگوریتمهای جدید مقاوم در برابر کوانتوم برای رمزنگاری Public Key ایجاد کرده است. تمام طرحهای رمزگذاری پس از کوانتوم در نظر گرفته شده حداقل نظمی در اندازه آهستهتر از ECC دارند و بسیاری از آنها قبلاً شکسته شدهاند.
در حال حاضر، رایانههای کوانتومی هنوز در مرحله تحقیق و توسعه هستند، بنابراین میتوانیم با این فرض که رمزنگاری Public Key حداقل برای مدتی قابل اعتماد باشد، پیش برویم.