خلاصه
کلید اینترفیس برنامه نویسی اپلیکیشن (API) یک کد منحصربفرد است که یک API از آن برای شناسایی اپلیکیشن یا کاربر درخواست دهنده استفاده میکند. از کلید API برای پیگیری و کنترل اینکه چه کسی و چطور از API استفاده میکند و همچنین احرازهویت و مجوزدهی به اپلیکیشنها استفاده میشود - به نوعی شبیه به رمزعبور و پسورد. کلید API میتواند به صورت یک کلید واحد یا مجموعهای از چند کلید باشد. کاربران باید برای حفاظت از خودشان در برابر احتمال سرقت کلیدهای API و عواقب ناشی از افشای این کلیدها، از اصول امنیتی توصیه شده پیروی کنند.
مقایسه API و کلید API
برای درک اینکه کلید API چیست، اول باید درک کنید که API چیست. API یا اینترفیس برنامه نویسی اپلیکیشن، یک واسط نرمافزاری است که به دو یا چند اپلیکیشن امکان میدهد اطلاعات را با یکدیگر به اشتراک بگذارند. مثلاً API کوین مارکت کپ به سایر اپلیکیشنها امکان میدهد که دادههای کریپتو مثل قیمت، حجم و ارزش بازار را بازیابی و از آنها استفاده کنند.
کلید API شکل و فرمهای مختلفی دارد - و میتواند به صورت یک کلید واحد یا چندین کلید باشد. در سیستمهای مختلف از این کلیدها برای احرازهویت و مجوزدهی به یک اپلیکیشن استفاده میشود که این مکانیزم به نوعی مثل استفاده از نام کاربری و رمزعبور است. کلاینت API از کلید API برای احرازهویت اپلیکیشنی که API را فراخوانی میکند، استفاده میکند.
مثلاً اگر بایننس آکادمی قصد استفاده از API کوین مارکت کپ را داشته باشد، کوین مارکت کپ یک کلید API ساخته و از آن برای احرازهویت بایننس آکادمی (کلاینت API) که درخواست دسترسی را دارد، استفاده میکند. وقتی بایننس آکادمی به API کوین مارکت کپ دسترسی پیدا میکند، این کلید API باید به همراه درخواست برای کوین مارکت کپ ارسال شود.
این کلید API فقط باید توسط بایننس آکادمی استفاده شود و نباید آن را در اختیار دیگران قرار داد. قرار دادن این کلید API در اختیار دیگران به آنها امکان میدهد که با هویت بایننس آکادمی به کوین مارکت کپ دسترسی پیدا کنند.
همچنین، API کوین مارکت کپ میتواند از کلید API برای اطمینان از اینکه اپلیکیشن مجاز به دسترسی به منبع درخواست شده است، استفاده کند. بعلاوه، مالکان API هم میتوانند از کلیدهای API برای نظارت بر فعالیت API مثل نوع، ترافیک و حجم درخواستها استفاده کنند.
کلید API چیست؟
کلید API برای کنترل و پیگیری اینکه چه شخصی و چگونه از یک API استفاده میکند، کاربرد دارد. اصطلاح کلید API میتواند برای سیستمهای مختلف معانی متفاوتی داشته باشد. بعضی از سیستمها یک کد دارند اما بعضی دیگر برای یک کلید API چندین کد مختلف دارند.
بنابراین، کلید API یک کد منحصربفرد یا مجموعهای از کدهای منحصربفرد است که یک API از آن برای صدور مجوز و احرازهویت کاربران یا اپلیکیشنهای فراخواننده استفاده میکند. برخی از کدها برای احرازهویت و بعضی دیگر برای ایجاد امضاهای رمزی جهت اثبات مجاز بودن یک درخواست استفاده میشوند.
معمولاً در مجموع به این کدهای احرازهویت "کلید API" گفته میشود اما کدهای مورد استفاده برای امضاهای رمزنگاری نامهای مختلفی دارند مثل "کلید مخفی"، "کلید عمومی" یا "کلید خصوصی". احرازهویت یعنی شناسایی موجودیتها و تأیید اینکه آنها همان شخص یا موجودیتی هستند که ادعا میکنند.
در مقابل، صدور مجوز سرویسهای API را که دسترسی به آنها مجاز است، مشخص میکند. عملکرد یک کلید API شبیه به عملکرد نام کاربری و رمزعبور است. همچنین میتوان آن را برای اتصال به سایر امکانات امنیتی جهت ارتقای امنیت هم استفاده کرد.
به طور کلی، مالک API از هر کلید API برای یک موجودیت خاص استفاده میکند و هر زمان یک API درخواستی مطرح میکند - که مستلزم احرازهویت یا صدور مجوز برای کاربر است - از کلید مناسب و مرتبط استفاده میشود.
امضاهای رمزنگاری شده
بعضی از کلیدهای API از امضای رمزنگاری شده به عنوان یک لایه اعتبارسنجی دوم استفاده میکنند. وقتی کاربری قصد ارسال یکسری داده خاص به یک API را داشته باشد، میتوان یک امضای دیجیتال تولید شده توسط یک کلید دیگر را به درخواست اضافه کرد. مالک API میتواند با استفاده از تکنیکهای رمزنگاری تأیید کند که این امضای دیجیتال با دادههای ارسال شده تطبیق دارد.
امضاهای متقارن و غیرمتقارن
میتوان دادههای به اشتراک گذاشته شده توسط یک API را با استفاده از کلیدهای رمزی امضاء کرد که این کلیدها در یکی از گروههای زیر قرار میگیرند:
کلیدهای متقارن
در این روش برای امضای دادهها و اعتبارسنجی امضاء از یک کلید مخفی مشابه استفاده میشود. در الگوریتمهایی با کلیدهای متقارن، معمولاً کلید API و کلیدهای مخفی توسط مالک API تولید میشوند و سرویس API باید از همان کلید مخفی برای تأیید امضاها استفاده کند. مزیت استفاده از یک کلید مشابه این است که سرعت آن بالاتر بوده و تولید امضاء و اعتبارسنجی آن نیاز به قدرت پردازشی کمتری دارد. یک مثال خوب از کلید متقارن HMAC است.
کلیدهای نامتقارن
در این روش دو کلید استفاده میشود: یک کلید عمومی و یک کلید خصوصی که متفاوت هستند اما طبق تکنیکهای رمزنگاری، به نوعی با هم ارتباط دارند. کلید خصوصی برای تولید امضاء و کلید عمومی برای تأیید امضاء استفاده میشود. کلید API توسط مالک API تولید شده اما کلید خصوصی و کلید عمومی مربوط به آن توسط کاربر تولید میشود. برای تأیید امضاء، مالک API فقط نیاز به کلید عمومی دارد بنابراین کلید خصوصی در دست کاربر باقی مانده و فاش نمیشود.
مزیت اصلی استفاده از کلیدهای نامتقارن امنیت بیشتر آنها به دلیل تفکیک تولید امضاء از کلیدهای اعتبارسنجی است. این باعث میشود که سیستمهای خارجی بتوانند امضاءها را اعتبارسنجی کنند بدون اینکه توانایی تولید امضاء را داشته باشند. مزیت بعدی این است که برخی سیستمهای رمزنگاری نامتقارن از قابلیت اضافه کردن پسورد به کلیدهای خصوصی پشتیبانی میکنند که یک مثال خوب در این زمینه، جفت کلید RSA است.
آیا کلیدهای API امن هستند؟
مسئولیت حفظ امنیت کلید API برعهده کاربر قرار دارد. کلیدهای API شبیه به رمزعبور هستند و باید با همان دقت و توجه با آنها برخورد کرد. قرار دادن کلید API در اختیار دیگران مثل قرار دادن رمزعبور در اختیار آنها است بنابراین نباید این کار را انجام داد چون باعث میشود حساب کاربری شما در معرض خطرات مهمی قرار بگیرد.
کلیدهای API دائماً در حملات سایبری مورد هدف قرار میگیرند چون میتوان از آنها برای انجام کارهایی مثل درخواست اطلاعات شخصی یا اجرای تراکنشهای مالی استفاده کرد. در واقع، مواردی بودهاند که در آنها خزشگرها با موفقیت به پایگاههای داده آنلاین کدها حمله کردهاند تا کلیدهای API را سرقت کنند.
عواقب سرقت کلیدهای API میتواند بسیار جدی باشد و منجر به ضررهای مالی چشمگیری شود. بعلاوه، بعضی از کلیدهای API منقضی نمیشوند و مهاجمان میتوانند همواره از آنها استفاده کنند.
اصول توصیه شده برای استفاده از کلیدهای API
به دلیل دسترسی کلیدهای API به دادههای حساس و آسیب پذیری کلی آنها، استفاده امن از این کلیدها ضروری است. برای ارتقای امنیت، هنگام استفاده از کلیدهای API نکات زیر را رعایت کنید:
- در صورت امکان کلیدهای API را به صورت مرتب تغییر دهید. این یعنی باید کلید قبلی را حذف کرده و کلیدی جدید بسازید. در برخی سیستمها تولید و حذف کلیدهای API کار راحتی است. همانطور که بعضی سیستمها کاربران را ملزم به تغییر رمز عبور پس از 30 تا 90 روز میکنند، در صورت امکان باید کلیدهای API را هم در فواصلی مشابه تغییر داد.
- از لیست سفید آیپی استفاده کنید: وقتی کلید API ایجاد میکنید، لیستی از آیپیهای مجاز به استفاده از آن کلید (لیست سفید) تهیه کنید. میتوانید لیستی از آیپیهای مسدود شده (لیست سیاه آیپی) هم داشته باشید. به این ترتیب حتی در صورت به سرقت رفتن کلیدهای API باز هم یک آیپی ناشناس نمیتواند به آنها دسترسی پیدا کند.
- استفاده از چند کلید API: داشتن چند کلید و تقسیم مسئولیت بین آنها به کاهش ریسک امنیتی کمک میکند چون امنیت شما متکی بر یک کلید خاص که دسترسیهای وسیعی دارد نخواهد بود. میتوانید برای هر کلید، لیستهای سفید مختلفی تعریف کنید تا سطح ریسک کمتر شود.
- ذخیره امن کلیدهای API: کلیدهای API را در مکانهای عمومی، روی کامپیوترهای عمومی یا به صورت متن ساده ذخیره نکنید. هر کلید را با استفاده از تکنیکهای رمزنگاری یا یک ابزار مدیریت رمز ذخیره کنید و مراقب باشید که به اشتباه آنها را در دسترس دیگران قرار ندهید.
- کلیدهای API خودتان را در اختیار دیگران قرار ندهید چون این کار مثل قرار دادن رمزعبور در اختیار دیگران است. این کار باعث میشود که یک شخص دیگر مجوزهای دسترسی و احرازهویت شما را در اختیار بگیرد. امکان استفاده از کلیدهای API برای هک حساب شما وجود دارد. کلید API باید فقط بین شما و سیستمی که آن را تولید کرده است باقی بماند.
در صورت فاش شدن کلید API، اول باید آن را غیرفعال کنید تا از ایجاد آسیب بیشتر جلوگیری کنید. اگر ضرر مالی دیدید، از اطلاعات مهم مربوط به حادثه اسکرین شات بگیرید، با نهادهای مربوطه تماس گرفته و گزارش ثبت کنید. این کار شانس شما را برای برگرداندن داراییهای به سرقت رفته افزایش میدهد.
جمع بندی
کلیدهای API قابلیتهای لازم برای احرازهویت و صدور مجوز را فراهم میکنند و کاربران باید با دقت این کلیدها را مدیریت و از آنها حفاظت کنند. برای استفاده امن از کلیدهای API باید نکات مختلفی را در نظر داشت. در مجموع باید کلیدهای API را مثل رمزعبور حسابهای خودتان در نظر بگیرید.ش