رفتن به نوشته‌ها

برچسب: Elliptic Curve

رمزنگاری کوانتومی

زندگی روزمره‌­ی ما رو گستره‌­ی وسیع و متنوعی از ارتباطات تشکیل میده. از یک عملیات ساده بانکی با کارت­‌های اعتباری گرفته تا مکالمات تلفنی، ایمیل‌­ها، نامه‌نگاری‌ها، فضاهای ابری و … که در هرکدوم از این‌­ها کلی اطلاعات رد و بدل میشه. اما همواره مساله اساسی که وجود داره، خطر دزدیده شدن اطلاعات در این ارتباطاته و می‌دونیم هرچقدر ارزش اطلاعات بیشتر باشه خطر بزرگتری هم اونا رو تهدید میکنه.

 میخوایم توجه خودمون رو معطوف این پرسش کنیم که آیا امکان برقراری ارتباط کاملا امن بدون ترس از دزدیده شدن اطلاعات وجود داره یا نه ؟

مساله‌ی تامین امنیت ارتباطات از گذشته­‌های دور مورد توجه ویژه مردم بوده. مثلا در جنگ‌­ها اطلاعات مهم و سری باید با حداکثر ایمنی جابجا می­شد و این خودش یک مساله بزرگ به حساب میومد و بعضی وقتا بیسیم‌چی‌ها از کلمات رمزی برای این کار استفاده می­‌کردند. با گذشت زمان ابزار رمزنگاری هم کم‌کم به دست بشر پیشرفت کرد و راه‌­های زیادی طراحی و اجرا شد.

یکی از روش‌های کلاسیک رمزنگاری روش “ One-time Pad ” است. این روش امنیت نسبتا بالایی داره. فرض کنید با این روش یک متن رو رمزگذاری کردید. متن رمزگذاری شده­‌ی شما هیچ اطلاعاتی از متن اصلی نداره و اگر کسی قصد دزدیدن اطلاعات رو داشته باشه، نمیتونه از متن رمزگذاری شده چیزی متوجه بشه. ویژگی مهم این روش اینه که برای رمز گذاری از کلیدی استفاده میشه که به اندازه متن طولانیه و کلیدمون یکبار مصرفه!

بیایم یک مثال برای این روش بزنیم. فرض کنید آلیس و باب میخوان یک پیام متنی برای هم بفرستن. مثلا آلیس میخواد کلمه “QUANTUM” رو برای باب بفرسته. در مرحله اول آلیس با توجه به جایگاه هر حرف یک عدد به اون نسبت میده:

message:                                   Q          U          A          N          T          U          M

message:                             17 (Q)    21 (U)    1 (A)   14 (N)   20 (T)    21 (U)   13 (M)

برای ساخت کلید آلیس از اعداد تصادفی استفاده میکنه و به هر عدد تصادفی میتونه یک حرف رو نسبت بده:

key:                                    24 (X)     22 (V)    2 (B)    10 (J)     3 (C)     8 (H)    12 (L)

تو این قسمت اعداد رو دو به دو باهم جمع میکنه:

message + key:                   15 (O)     17 (Q)   3 (C)     24 (X)   23 (W)   3 (C)    25 (Y)

و در نهایت آلیس یک متن رمزگذاری شده (ciphertext) تولید کرده:

ciphertext:                                O            Q         C           X          W         C          Y

حالا کاری که باید باب انجام بده چیه؟ باب متن رمزنگاری شده رو از آلیس دریافت میکنه:

ciphertext:                                O            Q          C          X          W          C          Y

و اعداد مربوط به هر حرف رو هم میدونه:

ciphertext:                          15 (O)      17 (Q)    3 (C)   24 (X)    23 (W)    3 (C)    25 (Y)

حالا اگه باب کلید رو در اختیار داشته باشه میتونه به راحتی (با یک تفریق ساده!) به متن اصلی دست پیدا کنه:

key:                                   24 (X)       22 (V)    2 (B)    10 (J)      3 (C)     8 (H)  12 (L)

ciphertext – key:                  17 (Q)      21 (U)    1 (A)   14 (N)     20 (T)   21 (U)  13 (M)

message:                                 Q             U          A          N           T          U          M

اما این روش رمزنگاری یک سری مشکلات رو هم به همراه داره. یک مشکل بزرگ اینه که اعداد تولید شده برای ساختن کلید، واقعا تصادفی نیستند. در واقع اعدادی که کامپیوتر به اسم اعداد تصادفی برای ما تولید میکنه، از الگوریتم‌های خاصی پیروی می‌کنند و اونجوری که باید، اعداد تصادفی نیستند. خب اگه سارقِ اطلاعات بتونه روند تولید عدد تصادفی رو حدس بزنه ، به راحتی به کلید دسترسی پیدا می­کنه و میتونه بدون اینکه ما متوجه بشیم اطلاعات رو بدزده. یکی دیگه از مشکلات بزرگ این روش اینه که کلید تولید شده به اندازه متن طولانیه و یکبار مصرفه و اگر بخواهیم متن‌های زیادی رو رد و بدل کنیم، دفترچه­‌ی چند صد برگی از کلیدها رو هم نیاز داریم که بنظر معقول نمیاد. اما مهم‌ترین مشکل در رد و بدل کردن کلید پیش میاد. کلید ساخته شده توسط آلیس چه‌جوری به دست باب باید برسه؟! از طریق خطوط ارتباطی مثل اینترنت یا تلفن؟ یا مثلا با یک پیک موتوری؟ می‌دونیم اگه کلید لو بره و دست سارق اطلاعات بیفته علاوه بر اینکه متن رمزگذاری شده رو میتونه بخونه، میتونه الگوریتم تولید کلید رو هم بدست بیاره و بقیه ماجرا.  همه‌ی این‌ها باعث میشه به این نتیجه برسیم که ” One-time Pad ” روش ایده آلی برای رمز نگاری نیست.

اما یک روش کلاسیک رمز نگاری دیگه هم وجود داره که بر اساس الگوریتم‌های ریاضی بنا شده . اگه بخوایم بطور خیلی مختصر توضیح بدیم، تو این روش یک کلید عمومی وجود داره و از اون برای رمزگذاری استفاده میشه و کلید عمومی رو همه دارند. همچنین یک کلید خصوصی وجود داره برای گشودن رمز که این کلید فقط دست شخصیه که قراره اطلاعات رو به اون بفرستیم. این روش انوع مختلفی داره مثل  Diffie-Hellman ,  RSA , Elliptic Curve . در واقع این روش بر اساس یک سری از توابع ریاضیاتی بنا شده که انجامشون از یک طرف آسون ولی  باز گردوندنشون سخت و دشواره.

قبل اینکه وارد روش­‌های رمزنگاری کوانتومی بشیم، یک سری از مفاهیم مکانیک کوانتومی رو باهم مرور می‌کنیم:

– میدونیم که هر حالت (state) کوانتومی رو میشه بر حسب بر هم نهی یک سری حالت پایه بنویسیم . حالا اگه بیایم روی اون اندازه‌گیری انجام بدیم، یک جواب یکتا بدست میاریم. مثلا اگر حالت مورد نظر از بر هم نهی ۲ حالت پایه ساخته شده باشه، همواره بعد از اندازه‌گیری یکی از حالت‌ها رو بدست میاریم و هیچوقت دوتاشون رو با هم در نتیجه‌­ی آزمایشمون نداریم. (نگاه کنید به: Quantum superposition)

– اندازه‌گیری یک حالت باعث میشه سیستم در اون حالت اندازه‌گیری شده بمونه که اصطلاحا میگن سیستم به اون حالت فروریزش یا فروکاهش  “collapse” کرده. (نگاه کنید به: Measurement in quantum mechanics)

– یک مفهوم دیگه هم در کوانتوم وجود داره که مفهوم درهم‌تنیدگیه ( “ entanglement” ) که میگه دو ذره (مثلا دو تا فوتون) که در هم تنیده شدن، با هم در ارتباطند، هر چند که از هم دور باشند و یجورایی همدیگه رو خبردار می‌کنند! مثلا اگه بیایم یکی از فوتون‌ها رو روش آزمایش انجام بدیم، این آزمایش رو اونیکی فوتون که ممکنه اونور دنیا هم باشه نتیجه مشخصی رو میده که از فیزیک کلاسیک زیاد قابل توجیه نیست!

– همچنین میدونیم فوتون یک بسته از نوره (اگه نور رو با دید ذره ای نگاه کنیم) .

– یک ویژگی که به فوتون‌ها میشه نسبت داد قطبیدگی یا قطبش اونهاست. (اگه بخواییم خیلی مختصر توضیح بدیم، قطبیده شدن یک فوتون یعنی اینکه اون­‌ها رو از یک سری وسیله اپتیکی عبورشون بدیم تا بعد از عبور، در راستایی که ما میخواهیم حرکت کنند.)

– یک فوتون میتونه بصورت عمودی یا افقی قطبیده بشه و یا بصورت ترکیب خطی از قطبش عمودی و افقی وجود داشته باشه .

طبق نشان­‌گذاری دیراک (Dirac notation) می­تونیم حالت فوتونی که افقی(horizontally)  قطبیده شده رو بصورت زیر تعریف کنیم:

$$ \left \vert \psi \right \rangle = \left \vert {H} \right \rangle $$

و همچنین فوتونی که بصورت عمودی(vertically)  قطبیده شده رو میتونیم به این صورت نشون بدیم:

$$ \left \vert \psi \right \rangle = \left \vert {V} \right \rangle $$

همونطور که قبلا گفتیم فوتون ما می‌تونه به‌صورت بر هم نهی این دوحالت نیز وجود داشته باشه:

$$ \left \vert \psi \right \rangle = \alpha \left \vert {H} \right \rangle + \beta \left \vert {V} \right \rangle $$

حالا فرض کنید یک فوتون به ما دادن که در حالت زیره:

$$ \left \vert \psi \right \rangle = \alpha \left \vert {H} \right \rangle + \beta \left \vert {V} \right \rangle $$

ما میخوایم روی این فوتون آزمایش انجام بدیم و قطبیدگی اون رو اندازه بگیریم. بنظرتون نتیجه آزمایش چی میتونه باشه؟!

تجربه‌ی ما در آزمایشگاه نشون میده، دو جواب ممکنه برای این اندازه­‌گیری بدست بیاد. یا به این نتیجه می‌رسیم که فوتونمون بصورت افقی قطبیده شده با احتمال:

$$ \left \vert \alpha \right \vert ^ 2 $$

و یا بصورت عمودی قطبیده شده با احتمال:

$$ \left \vert \beta \right \vert ^ 2 $$

و میدونیم همواره جمع احتمال‌ها  برابر ۱ میشه، یعنی:

$$ \left \vert \alpha \right \vert ^ 2 + \left \vert \beta \right \vert ^ 2 = 1 $$

در مکانیک کوانتومی انتخاب پایه‌ها بصورت افقی و عمودی کاملا اختیاریه و شما میتونین برای توصیف پدیده­‌ی کوانتومی مورد نظرتون (که در اینجا حالت فوتونمون بود) هر پایه ای که دوس داشته باشید انتخاب کنید (اگر کمی با جبر خطی آشنا باشید کاملا می‌فهمید که چرا میشه!) . برای ادامه بحث ما یک سری پایه جدید تعریف می‌کنیم و این پایه‌هامون نسبت به راستای افقی 45 درجه دوران دارند. یکی ازین پایه‌هامون قطریه(Diagonal)  و به‌ این صورت:

$$ \left \vert {D} \right \rangle = \frac{1}{\sqrt{2}}(\left \vert {H} \right \rangle + \left \vert {V} \right \rangle )$$

و اونیکی پایمون هم پادقطریه (Anti Diagonal)  و بصورت زیر:

$$ \left \vert {A} \right \rangle = \frac{1}{\sqrt{2}}(\left \vert {H} \right \rangle – \left \vert {V} \right \rangle )$$

حالا اگه دوباره قطبیدگی فوتونمون رو که این دفعه تو حالت قطریه اندازه گیری کنیم، چه نتیجه‌ای بدست میاریم!؟ در اینجا دو حالت به‌وجود میاد. حالت اول وقتیه که ابزاری که با اون اندازه­‌گیری انجام میدیم، براساس پایه‌های قطری و پادقطری طراحی شده باشه. در اینصورت نتیجه اندازه‌گیریمون همواره (%۱۰۰) بصورت D بدست میاد. حالت دوم وقتیه که وسیله‌ی اندازه‌گیریمون بر اساس پایه‌های افقی و عمودی طراحی شده باشه. در این صورت ما هیچوقت یک جواب قطعی نداریم که بتونیم بگیم بعد از اندازه‌گیری چه نتیجه‌ای بدست میاریم یا به‌عبارت بهتر، هیچوقت به‌طور دقیق نمیتونیم بگیم سیستم بعد از اندازه‌گیری به کدوم یک از حالت‏‌های افقی یا عمودی “collapse” میکنه.

این یک موفقیت خیلی بزرگ به حساب میاد. چون کوانتوم مکانیک یک منبع طبیعی و بسیار قدرتمند برای تولید اعداد کاملا تصادفی در اختیار ما گذاشته . یعنی اگه روی فوتون قطریمون اندازه‌گیری انجام بدیم هر دفعه یک جواب بدست میاریم و در واقع در هر بار اندازه‌گیری به احتمال ۵۰ درصد جوابمون  H و به احتمال ۵۰ درصد جوابمون V خواهد بود.

با در نظر گرفتن همه‌ی مفاهیم مطرح شده در مورد مکانیک کوانتومی تا اینجای کار،  میریم سراغ اولین روش رمزنگاری کوانتومی با نام  BB84. این روشِ ساختِ توزیعِ کلیدِ کوانتومی! (QKD) توسطGilles Brassard وCharles Bennett در سال ۱۹۸۴ طراحی شد.

***در مورد پایه‌هایی که میتونیم در مکانیک کوانتومی برای فوتونمون انتخاب کنیم قبلا صحبت کردیم.  حالا پایه‌هامون رو بصورت شماتیک، نمادگذاری میکنیم.  پایه عمودی-افقی رو بصورت:

نشون میدیم که شامل یک حالت افقی 〈 H | (عدد 0 و نماد – ) و یک حالت عمودي 〈 V | (عدد 1 و نماد | ) میشه و همچنین پایه قطري-پاد قطري مورد نظرمون رو بصورت :

نشون میدیم که این پایمون هم یک حالت قطری 〈 D | (عدد 1 و نماد / ) داره و یک حالت پاد قطری  〈 A | (عدد 0 و نماد \ ).

باز هم میریم سراغ آلیس و باب به عنوان فرستنده و گیرنده اطلاعات. در مرحله اول، آلیس بصورت تصادفی یک سری پایه (Basis) برای خودش انتخاب میکنه. هدف آلیس اینه که یک رشته باینری شامل اعداد صفر و یک رو برای باب بفرسته. پس تو مرحله دوم باز هم بصورت تصادفی اعداد صفر و یک خودش رو تولید میکنه (Data). (قبلا گفتیم که مکانیک کوانتومی ابزار قدرتمندی برای تولید اعداد تصادفی دراختیارمون میذاره). در مرحله سوم آلیس از مقایسه پایه­­‌هایی که انتخاب کرده با اعدادی که تولید کرده، به یک سری از حالات (State) میرسه که این حالات میتونه افقی، عمودی، قطری و یا پاد قطری باشه (با توجه به توضیحاتی که در مورد پایه‌­ها دادیم و قسمت ***).

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

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

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

سوالی که اینجا مطرح میشه در مورد امنیت این روشه. اگه یکی این وسط بخواد اطلاعات رو بدزده چی؟ در این روش مهم ترین قسمت کار، انتقال حالت‌ها (state) از آلیس به بابه. چون در نهایت این قسمته کاره که باعث ساخت کلید ایمن میشه.خب اگه کسی بخواد تو این قسمت دزدی کنه، طبیعتا اول کار باید یک سری پایه برای خودش انتخاب کنه تا بتونه به وسیله اون‌ها روی حالت‌ها اندازه‌گیری انجام بده. اولین و بزرگترین مشکل برای سارق اینه که از پایه‌های باب هیچ اطلاعاتی نداره و به هیچ وجه نمیتونه پایه‌هاشو مثل باب انتخاب کنه. خب اگه بیاد در بین ارتباط آلیس و باب دزدی کنه، در پایان کار که آلیس و باب اطلاعات مربوطه رو رد و بدل کردن و کلید رو بدست آوردن، متوجه یک ناسازگاری بزرگ میشن. این ناسازگاری از اونجا ناشی میشه که اندازه گیری یک حالت کوانتومی باعث میشه سیستم در اون حالت بمونه و اصطلاحا سیستم به اون حالت فروزیزش یا فروکاهش “collapse” کنه. در اینجا هم دزد اطلاعات یک اندازه گیری انجام داده و حالتی که آلیس برای باب فرستاده بود رو عوض کرده و به این ترتیب آلیس و باب متوجه میشن که نفر سومی هم در ارتباط اون‌ها نقش داشته.

اما برای پیاده کردن این پروتکل چی نیاز داریم؟

در روش BB84 ، همه کار توسط فوتون‌ها انجام میشه. اما این فوتون‌ها باید “تک فوتون” (single photon) باشند و کوچکترین اختلالی در تولید فوتون که باعث بشه این ویژگی از بین بره، روند رمزنگاری رو با مشکل روبه‌رو میکنه. در عمل ساخت منابعی که برای ما تک‌فوتون تولید کنند بسیار سخت و بغرنجه!

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

برگردیم سراغ مکانیک کوانتومی؛ اگه به‌جای تک فوتونی که قبلا داشتیم، فرض کنیم دو تا فوتون در هم تنیده داریم، در واقع یک سیستم دو فوتونه که میتونیم بصورت زیر نمایشش بدیم (اندیس‌ها نشون دهنده‌ی شماره فوتون):

$$ \left \vert \psi \right \rangle = \alpha_{HH} ({\left \vert {H} \right \rangle_1}{\left \vert {H} \right \rangle_2}) + \alpha_{HV} ({\left \vert {H} \right \rangle_1}{\left \vert {V} \right \rangle_2}) + \alpha_{VH} ({\left \vert {V} \right \rangle_1}{\left \vert {H} \right \rangle_2}) + \alpha_{VV} ({\left \vert {V} \right \rangle_1}{\left \vert {V} \right \rangle_2})$$

برای سادگی کار سیستممون رو طوری تغییر میدیم که ۲ تا از جمله‌ها صفر بشند:

$$ \left \vert \psi \right \rangle = \alpha_{HH} ({\left \vert {H} \right \rangle_1}{\left \vert {H} \right \rangle_2}) + \alpha_{VV} ({\left \vert {V} \right \rangle_1}{\left \vert {V} \right \rangle_2})$$

حالا قطبیدگی فوتون اولمون رو اندازه‌گیری میکنیم. همون‌طور که قبلا گفتیم نتیجه میتونه عمودی یا افقی باشه. فرض کنید نتیجه اندازه‌گیری عمودی شد. اما سوالی که پیش میاد اینه که بعد از اندازه‌گیری سیستم به چه حالتی فروریزش (collapse) میکنه ؟ (دقت کنید که اندازه‌گیری فقط روی فوتون اول انجام شد)

نتایج اندازه‌گیری در آزمایشگاه بسیار شگفت‌انگیزه و به ما میگه پس از اندازه‌گیری سیستم به حالت زیر در میاد:

$$ \left \vert \psi \right \rangle = {\left \vert {H} \right \rangle_1}{\left \vert {H} \right \rangle_2}$$

و این نشون میده، اندازه‌گیری روی یک فوتون، روی فوتون دیگر هم تاثیر میذاره. حالا این دو فوتون درهم تنیده هر چقدر هم که میخوان از هم دور باشن، ولی باز روی هم تاثیر میذارن! نتیجه ای که از دیدگاه کلاسیک کاملا دور از انتظاره! دو فوتون در هم تنیده، باز هم ابزاری قدرتمندی در اختیار ما میذارن که با اون بتونیم عدد تصادفی تولید کنیم. چون اندازه گیری رو این فوتون ها دو نتیجه بیشتر نداره که احتمال اون‌ها کاملا با هم برابره.

بریم سراغ روش بعدی رمزنگاری کوانتومی یعنی روش “E91” که خیلی مختصر میخواهیم راجبش صحبت کنیم. این روش در سال ۱۹۹۱ توسط “ Artur Ekert مطرح شد؛ در این روش دو فوتون در هم تنیده داریم که آلیس و باب هرکدوم روی یکی از این فوتون‌ها آزمایش انجام میدن. باز هم مانند روش قبلی، آلیس و باب هرکدوم پایه‌های دلخواه خودشون رو به‌طور تصادفی، برای اندازه‌گیری انتخاب میکنن. چون فوتون‌ها در هم تنیده هستند و اندازه‌گیری روی هرکدوم ، وضعیت اون یکی رو هم مشخص می‌کنه، نتایج اندازه‌گیری الیس و باب به هم مربوط میشه و اگه از روش هایی مشابه به BB84 استفاده کنن، در نهایت یک کلید ایمن خواهند داشت. همچنین اگر کسی قصد دزدی اطلاعات رو هم داشته باشه، اختلال بوجود اومده در سیستم به راحتی برای آلیس و باب قابل مشاهده است. (جزئیات این روش نیازمند یک سری اطلاعات در مورد قضیه بل ، “Quantum teleportationو چیز های دیگه میشه . برای همین به توضیح مختصر اون اکتفا کردیم.)

و در پایان مشاهده کردیم که چگونه مکانیک کوانتومی در برقراری ارتباط‌های ایمن به ما کمک میکنه و باعث میشه وجود هر اختلال حین برقراری ارتباط رو متوجه بشیم و بتونیم روشی برای انتقال ایمن اطلاعات داشته باشیم!

توجه:

استفاده از تصاویر و مطالب این پست، با ذکر منبع، بلامانع است.