از ویکیپدیا، دانشنامه آزاد

در رمزنگاری با کلید عمومی، اثر انگشت کلید عمومی مجموعه کوتاهی از بایت‌ها است که برای شناسایی کلید عمومی طولانی‌تر استفاده می‌شود . اثر انگشت با اعمال یک تابع هش رمزنگاری بر روی یک کلید عمومی ایجاد می شود. از آنجایی که اثر انگشت کوتاه‌تر از کلیدهایی است که به آن‌ها اشاره می‌کنند، می‌توان از آن‌ها برای ساده‌سازی برخی وظایف مدیریت کلید استفاده کرد. در نرم افزار مایکروسافت به جای «اثر انگشت» از «اثر انگشت» استفاده می شود.

فهرست

ایجاد اثر انگشت کلید عمومی [ ویرایش ]

اثر انگشت کلید عمومی معمولاً از طریق مراحل زیر ایجاد می شود:

  1. یک کلید عمومی (و به صورت اختیاری برخی از داده های اضافی) به دنباله ای از بایت ها کدگذاری می شود. برای اطمینان از اینکه همان اثر انگشت می‌تواند بعداً دوباره ایجاد شود، رمزگذاری باید قطعی باشد و هرگونه داده اضافی باید در کنار کلید عمومی مبادله و ذخیره شود. داده های اضافی معمولاً اطلاعاتی هستند که هر کسی که از کلید عمومی استفاده می کند باید از آن آگاه باشد. نمونه هایی از داده های اضافی عبارتند از: کلید با کدام نسخه پروتکل باید استفاده شود (در مورد اثر انگشت PGP ). و نام نگهدارنده کلید (در مورد اثر انگشت لنگر اعتماد X.509 ، که در آن داده‌های اضافی شامل یک گواهی خود امضای X.509 است ).
  2. داده های تولید شده در مرحله قبل با یک تابع هش رمزنگاری مانند SHA-1 یا SHA-2 هش می شوند.
  3. در صورت تمایل، خروجی تابع هش را می توان کوتاه کرد تا اثرانگشت کوتاه تر و راحت تر ارائه شود.

این فرآیند یک اثر انگشت کوتاه تولید می کند که می تواند برای احراز هویت یک کلید عمومی بسیار بزرگتر استفاده شود. برای مثال، در حالی که طول یک کلید عمومی RSA معمولی 2048 بیت یا بیشتر خواهد بود، اثر انگشت معمولی MD5 یا SHA-1 تنها 128 یا 160 بیت طول دارد.

هنگامی که برای بازرسی توسط انسان نمایش داده می شود، اثر انگشت معمولاً در رشته های هگزادسیمال کدگذاری می شود. سپس این رشته ها برای خوانایی به گروه هایی از کاراکترها قالب بندی می شوند. به عنوان مثال، یک اثر انگشت MD5 128 بیتی برای SSH به صورت زیر نمایش داده می شود:

43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8

استفاده از اثر انگشت کلید عمومی برای احراز هویت کلید [ ویرایش ]

اطلاعات بیشتر: احراز هویت کلید

هنگامی که یک کلید عمومی از طریق یک کانال غیرقابل اعتماد مانند اینترنت دریافت می شود، گیرنده اغلب مایل به احراز هویت کلید عمومی است. اثر انگشت می تواند به انجام این کار کمک کند، زیرا اندازه کوچک آنها به آنها اجازه می دهد از کانال های قابل اعتمادی عبور کنند که کلیدهای عمومی به راحتی جا نمی شوند.

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

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

علاوه بر این، اثر انگشت را می توان با موتورهای جستجو جستجو کرد تا اطمینان حاصل شود که کلید عمومی که کاربر به تازگی دانلود کرده می تواند توسط موتورهای جستجوی شخص ثالث دیده شود. اگر موتور جستجو با ارجاع به اثر انگشت مرتبط با سایت(های) مناسب، بازدیدهای خود را برگرداند، می توان مطمئن شد که کلید توسط مهاجم تزریق نمی شود، مانند حمله Man-in-the-Middle .

PGP فهرست کلمات PGP را برای تسهیل تبادل اثر انگشت کلید عمومی از طریق کانال های صوتی توسعه داد.

اثر انگشت کلید عمومی در عمل [ ویرایش ]

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

در سیستم‌هایی مانند PKI مبتنی بر X.509 ، اثر انگشت عمدتاً برای احراز هویت کلیدهای ریشه استفاده می‌شود. این کلیدهای ریشه گواهینامه هایی صادر می کنند که می توانند برای احراز هویت کلیدهای کاربر استفاده شوند. این استفاده از گواهی ها نیاز به تأیید اثر انگشت دستی بین کاربران را از بین می برد.

در سیستم‌هایی مانند PGP یا Groove ، از اثر انگشت می‌توان برای هر یک از روش‌های فوق استفاده کرد: آنها می‌توانند برای احراز هویت کلیدهای متعلق به سایر کاربران یا کلیدهای متعلق به مقامات صادرکننده گواهی استفاده شوند. در PGP، کاربران عادی می‌توانند گواهینامه‌ها را برای یکدیگر صادر کنند، و شبکه‌ای از اعتماد را تشکیل می‌دهند، و اثر انگشت اغلب برای کمک به این فرآیند استفاده می‌شود (مثلاً در مهمانی‌های امضاکننده کلید ).

در سیستم‌هایی مانند CGA یا SFS و اکثر شبکه‌های همتا به همتا رمزنگاری ، اثر انگشت در قالب‌های آدرس و نام از قبل موجود (مانند آدرس‌های IPv6 ، نام فایل‌ها یا سایر رشته‌های شناسایی) تعبیه می‌شود. اگر آدرس‌ها و نام‌ها قبلاً از طریق کانال‌های قابل اعتماد رد و بدل می‌شوند، این رویکرد به اثرانگشت اجازه می‌دهد تا روی آن‌ها رد و بدل شود. [1]

در PGP، اکثر کلیدها به گونه ای ساخته می شوند که چیزی که "شناسه کلید" نامیده می شود، به ترتیب برابر با 32 یا 64 بیت پایین اثر انگشت یک کلید است. PGP از شناسه های کلید برای ارجاع به کلیدهای عمومی برای اهداف مختلف استفاده می کند. اینها، به درستی، اثر انگشت نیستند، زیرا طول کوتاه آنها مانع از آن می شود که بتوانند به طور ایمن یک کلید عمومی را تأیید کنند. شناسه کلید 32 بیتی نباید استفاده شود زیرا سخت افزار فعلی می تواند یک شناسه کلید 32 بیتی برخوردی را تنها در 4 ثانیه ایجاد کند. [2]

امنیت اثر انگشت کلید عمومی [ ویرایش ]

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

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

برای جلوگیری از حملات preimage، تابع هش رمزنگاری که برای اثر انگشت استفاده می‌شود، باید دارای خاصیت مقاومت در برابر تصویر دوم باشد. اگر حملات برخورد یک تهدید باشد، تابع هش نیز باید دارای ویژگی مقاومت در برابر برخورد باشد. در حالی که کوتاه کردن خروجی تابع هش به خاطر اثرانگشت‌های کوتاه‌تر و قابل استفاده‌تر قابل قبول است، اثرانگشت کوتاه‌شده باید به اندازه کافی طولانی باشد تا ویژگی‌های مربوط به عملکرد هش را در برابر حملات جستجوی brute-force حفظ کند.

در عمل، بیشتر اثر انگشت‌هایی که امروزه استفاده می‌شوند بر اساس هش‌های MD5 یا SHA-1 غیرقطعی هستند. از سال 2017، در MD5 و SHA-1 می توان برخورد، اما نه پیش تصویر را پیدا کرد. بنابراین احتمالاً آینده استفاده فزاینده ای از توابع هش جدیدتر مانند SHA-256 را به همراه خواهد داشت. با این حال، اثر انگشت های مبتنی بر SHA-256 و سایر توابع هش با طول خروجی طولانی، بیشتر از اثر انگشت MD5 یا SHA-1 (نسبتا کوتاه) کوتاه می شوند.

در شرایطی که طول اثر انگشت باید به هر قیمتی به حداقل برسد، امنیت اثر انگشت را می توان با افزایش هزینه محاسبه اثر انگشت افزایش داد. به عنوان مثال، در زمینه آدرس‌های ایجاد شده به‌صورت رمزنگاری شده، این «افزونه درهم» نامیده می‌شود و هر کسی که اثرانگشت را محاسبه می‌کند، نیاز دارد تا هش‌سومی را که با تعداد ثابتی از صفر شروع می‌شود، جستجو کند، [3] که عملیات گران‌قیمتی در نظر گرفته می‌شود.

همچنین ببینید [ ویرایش ]

منبع

https://en.wikipedia.org/wiki/Public_key_fingerprint