کلیدهای عبور: نحوه کار با CBOR و COSE

معرفی
کلیدهای عبور به عنوان یک استاندارد احراز هویت قوی و بدون رمز ظهور پیدا کرده اند. مرکز این فناوری رمزنگاری کلید عمومی است که در پروتکل WebAuthn پیاده سازی شده است. این مقاله به اجزای کلیدی WebAuthn از جمله pubKeyCredParams، CBOR، COSE و نحوه تعامل آنها در ایجاد، استخراج و مدیریت کلیدهای عبور می پردازد.
پست کامل وبلاگ را اینجا بخوانید
رمزنگاری کلید عمومی در WebAuthn
رمزنگاری کلید عمومی چیست؟
رمزنگاری با کلید عمومی که به نام رمزنگاری نامتقارن نیز شناخته می شود، از دو کلید مجزا استفاده می کند: یک کلید عمومی برای رمزگذاری و یک کلید خصوصی برای رمزگشایی. این سیستم کلید دوگانه با امکان رمزگذاری ایمن پیام و تأیید امضای دیجیتال، محرمانه بودن و یکپارچگی داده ها را تضمین می کند.
الگوریتم های رایج رمزنگاری کلید عمومی:
- RSA: به طور گسترده مورد استفاده قرار می گیرد، نیازهای ذخیره سازی بالا، کارآمدی کمتر در تلفن همراه.
- DSA: امضای دیجیتال، کارایی متوسط.
- ECDSA: محبوبیت فزاینده ای برای تراکنش های ایمن، راندمان بالا در تلفن همراه.
- EdDSA: بهینه برای سرعت و امنیت، حداقل نیاز به ذخیره سازی.
رمزنگاری منحنی بیضوی (ECC)، از جمله ECDSA و EdDSA، به دلیل اندازههای کلید کوچکتر، که کارایی ذخیرهسازی، عملکرد و عمر باتری را افزایش میدهد، به ویژه برای دستگاههای تلفن همراه مفید است.
WebAuthn و رمزنگاری کلید عمومی
WebAuthn: نمای کلی
WebAuthn یک پروتکل امنیتی است که از رمزنگاری کلید عمومی برای فعال کردن احراز هویت امن و بدون رمز عبور استفاده می کند. از روش های مختلف احراز هویت، از جمله بیومتریک و کلیدهای امنیتی سخت افزاری پشتیبانی می کند.
اجزای کلیدی:
- pubKeyCredParams: الگوریتم های رمزنگاری پشتیبانی شده توسط طرف متکی را در هنگام ایجاد جفت کلید تعریف می کند.
- credentialPublicKey: برای استخراج کلید عمومی از attestationObject ارائه شده توسط authenticator استفاده می شود.
انتخاب pubKeyCredParams مناسب
الگوریتم های COSE مربوطه برای WebAuthn:
WebAuthn برای تعیین الگوریتم های رمزنگاری پشتیبانی شده به شناسه های الگوریتم COSE (CBOR Object Signing and Encryption) متکی است. الگوریتم های کلیدی عبارتند از:
- RS256: به طور گسترده پشتیبانی می شود، از RSA با SHA-256 استفاده می کند.
- ES256: از ECDSA با SHA-256 استفاده می کند، بسیار کارآمد.
- EdDSA: برای امنیت افزایش یافته توصیه می شود، اگرچه کمتر پشتیبانی می شود.
برای اطمینان از سازگاری گسترده، توصیه می شود از هر دو RS256 و ES256 پشتیبانی کنید.
تعریف pubKeyCredParams:
پیکربندی pubKeyCredParams شامل تعیین شناسهها و انواع الگوریتم در PublicKeyCredentialCreationOptions است. مثلا:
const publicKeyCredentialCreationOptions = {
challenge: "*",
rp: {
name: "Corbado",
id: "corbado.com",
},
user: {
id: "user-X",
name: "user@corbado.com",
displayName: "Corbado Name",
},
pubKeyCredParams: [
{ alg: -7, type: "public-key" }, // ES256
{ alg: -257, type: "public-key" }, // RS256
],
authenticatorSelection: {
authenticatorAttachment: "platform",
requireResidentKey: true,
}
};
استخراج کلید عمومی از attestationObject
درک atestationObject:
atestationObject حاوی دادههای لازم برای طرف متکی است تا منشا و یکپارچگی اعتبار کلید عمومی را تأیید کند. این در قالب CBOR کدگذاری شده است و شامل اطلاعاتی مانند داده های احراز هویت و بیانیه گواهی است.
رمزگشایی و تجزیه:
رمزگشایی attestationObject شامل تجزیه داده های CBOR برای استخراج credentialPublicKey است. استفاده از کتابخانه های ایجاد شده WebAuthn می تواند این فرآیند را ساده کند و از استخراج و اعتبارسنجی دقیق و ایمن کلید عمومی اطمینان حاصل کند.
فرمت کلید COSE:
کلیدهای COSE که بر روی نقشههای CBOR ساخته شدهاند، راهی ساختاریافته برای نمایش کلیدها ارائه میدهند. آنها شامل ویژگی های خاص الگوریتم رمزنگاری مورد استفاده هستند، مانند مدول و توان برای کلیدهای RSA یا مختصات منحنی بیضوی برای کلیدهای ECDSA.
نتیجه
درک استفاده WebAuthn از pubKeyCredParams و credentialPublicKey، در کنار نقشهای CBOR و COSE، برای پیادهسازی سیستمهای احراز هویت ایمن، کارآمد و آیندهنگر بسیار مهم است. با استفاده از الگوریتمهای رمزنگاری مناسب و کتابخانههای آزمایششده، توسعهدهندگان میتوانند امنیت قوی و عملکرد بهینه را برای احراز هویت رمز عبور تضمین کنند.
پست وبلاگ مفصل ما را اینجا بخوانید.