امضای دیجیتال با استفاده از RSA
RSA نوعی “عملکرد یک طرفه Trapdoor” است. ویکیپدیا یک تابع یک طرفه را به عنوان تابعی توصیف میکند که محاسبه آن در هر ورودی آسان است، اما با توجه به تصویر یک ورودی تصادفی، معکوس کردن آن دشوار است. در اینجا، «آسان» و «سخت» باید به مفهوم نظریه پیچیدگی محاسباتی، به ویژه نظریه مسائل زمان چندجمله ای درک شود. یک تابع یک طرفه trapdoor فقط می تواند با کمک یک “Trapdoor” یعنی “d” ما، کلید خصوصی در رمزگذاری کلید عمومی معکوس شود. این روش در تراکنش های دیجیتال و احراز هویت داده های الکترونیکی استفاده شده است.
اجازه دهید “N” مدول، “e” کلید عمومی و “d” کلید خصوصی باشد.
رابطه بین این سه به شرح زیر است:
ed \equiv 1 mod phi(N) -> 1
امضای دیجیتال برای احراز هویت داده های الکترونیکی استفاده می شود. بگذارید آلیس و باب دو طرف عمومی باشند که مایل به برقراری ارتباط با یکدیگر هستند و ماروین استراق سمع کننده باشد و سعی کند انتقال داده بین دو طرف را مختل کند. سناریو در اینجا به شرح زیر است: آلیس در حال تلاش برای گرفتن امضای باب بر روی یک پیام ‘M’ \in Z*N است. برای گرفتن امضا، آلیس پیام “M” را می فرستد که باب پیام M را به صورت زیر امضا می کند:
S = Md mod N -> 2
در اینجا S تبدیل به امضای پیام M میشود. در مرحله بالا، باب کلید خصوصی خود را روی پیام اعمال میکند و امضای S را به دست میآورد. سپس این S را برای آلیس یا هر طرف معتبر دیگری که به امضای باب روی M نیاز دارد میفرستد. از آنجایی که کلید عمومی باب، همانطور که از نام آن پیداست، برای طرفین شناخته شده است، می توان به راحتی امضا را با محاسبه ساده تأیید کرد که آیا از باب تولید شده است یا خیر.
Se = M mod N -> 3
ما از دو ویژگی ساده، 1 و 2 برای رسیدن به 3 استفاده کردهایم. فقط باب کلید خصوصی خود را دارد و بنابراین طرفین میتوانند به این نتیجه برسند که امضا معتبر و خوانا است.
همین سناریو را در اینجا در نظر بگیرید، به جز این واقعیت که این بار ماروین امضای باب را روی یک پیام M میخواهد که باب آن را رد میکند، چون احمقی نیست که اهمیت امضای دیجیتال را میداند. بنابراین به جای امضای روی M، ماروین امضای “معصوم به نظر” M را می خواهد که به صورت زیر محاسبه می شود:
M’ = reM mod N
باب موافقت می کند که این پیام M’ را امضا کند. اجازه دهید S امضای تولید شده در مورد M باشد. می توانیم S را به صورت زیر بنویسیم:
S’ = (M’)d mod N
پس از دریافت امضای S، ماروین می تواند به راحتی امضا را جعل کند تا امضای پیام M را به شرح زیر دریافت کند:
مرحله 1: Se = (S’)e/re
مرحله ۲: (S’)e/re = (M’)ed/re
مرحله 3: (M’)ed/re \equiv M’/re = M mod N
(از 1، ed \ equiv 1 mod ph (N) )
مرحله 4: Se = M mod N
در اینجا r هر عدد صحیح تصادفی در همان بازه M است. اصطلاح re mod N به عنوان عامل کور کننده شناخته می شود.
بنابراین بدون اینکه واقعاً امضای M را دریافت کند، ماروین میتواند با موفقیت امضای S’ را برای به دست آوردن امضای M یعنی S دستکاری کند. این تکنیک به مهاجم اجازه میدهد تا بدون رضایت کسی که آن را امضا میکند، روی پیام مورد نظر خود امضا کند. .
سوالی که اکنون مطرح می شود این است که اقدامات ممکن برای جلوگیری از چنین حملاتی چه می تواند باشد؟ اگر از نزدیک به نحوه اجرای Blinding Attack نگاه کنید، در مرحله 3 نتیجه خواهید گرفت. اگر امضاکننده به جای امضای خود پیام، هش پیام M را امضا کند، هر چهار مرحله در حمله بی معنی خواهد بود زیرا M’ با H(M’) (تابع هش) جایگزین می شود و بنابراین نمی تواند. یکی دیگر از مزایای استفاده از هش پیام به جای استفاده از پیام این است که یک هش رمزنگاری می تواند یک پیام طولانی دلخواه بگیرد و آن را به یک رشته کوتاه “فشرده” کند، به گونه ای که ما نمی توانیم دو پیام را پیدا کنیم که در یک مقدار هش دارند. بنابراین، امضای هش به خوبی امضای پیام اصلی است، بدون محدودیتهای طولی که اگر از هش استفاده نمیکردیم، خواهیم داشت. این بر مشکل اندازه در عملیات RSA غلبه می کند که در آن کلید باید بسیار بزرگ باشد تا پیام های کوچکتر امضا شود!
نظرات کاربران