رمزگذاری ترکیبی

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

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

رمزگذاری ترکیبی دارای ویژگی های زیر است:

  • رازداری : هیچ کس نمی تواند اطلاعاتی در مورد متن رمزگذاری شده (به جز طول آن) به دست آورد، مگر اینکه به کلید خصوصی دسترسی داشته باشد.
  • عدم تقارن : رمزگذاری متن رمز را می توان با کلید عمومی انجام داد، اما برای رمزگشایی، کلید خصوصی مورد نیاز است.
  • تصادفی سازی : رمزگذاری تصادفی است. دو پیام با متن ساده یکسان، متن رمزی یکسانی را نشان نمی دهند. این امر مانع از این می شود که مهاجمان بدانند کدام متن رمزی با یک متن ساده مطابقت دارد.

رمزگذاری ترکیبی در Tink به عنوان یک جفت اولیه نشان داده می شود:

  • HybridEncrypt برای رمزگذاری
  • HybridDecrypt برای رمزگشایی

پارامتر اطلاعات زمینه

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

یک پیاده سازی مشخص از رمزگذاری ترکیبی می تواند اطلاعات زمینه را به روش های مختلف به متن رمز متصل کند، به عنوان مثال:

  • از context_info به عنوان ورودی داده مرتبط برای رمزگذاری متقارن AEAD استفاده کنید (ر.ک. RFC 5116 ).
  • از context_info به عنوان ورودی «CtxInfo» برای HKDF استفاده کنید (اگر پیاده‌سازی از HKDF به عنوان تابع مشتق کلید استفاده می‌کند، RFC 5869 را ببینید).

یک نوع کلید را انتخاب کنید

توصیه می کنیم برای اکثر موارد استفاده از نوع کلید DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM استفاده کنید. این نوع کلید استاندارد رمزگذاری کلید عمومی ترکیبی (HPKE) را همانطور که در RFC 9180 مشخص شده است، پیاده سازی می کند. HPKE از یک مکانیسم کپسوله کردن کلید (KEM)، یک تابع مشتق کلید (KDF) و یک الگوریتم رمزگذاری احراز هویت شده با داده های مرتبط (AEAD) تشکیل شده است.

DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM به طور خاص از:

  • KEM: Diffie–Hellman روی Curve25519 با HKDF-SHA-256 برای استخراج راز مشترک.
  • KDF: HKDF-SHA-256 برای استخراج زمینه فرستنده و گیرنده.
  • AEAD: AES-256-GCM با nonces 12 بایتی بر اساس استاندارد HPKE تولید شده است.

سایر انواع کلیدهای HPKE پشتیبانی شده شامل موارد زیر است، اما به آنها محدود نمی شود:

  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305
  • DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_P521_HKDF_SHA512_HKDF_SHA512_AES_256_GCM

برای جزئیات بیشتر در مورد انتخاب الگوریتم برای KEM، KDF و AEAD، RFC 9180 را ببینید.

اگرچه دیگر توصیه نمی شود، اما Tink از برخی تغییرات ECIES همانطور که در استاندارد ISO 18033-2 Victor Shoup توضیح داده شده است، پشتیبانی می کند. برخی از انواع کلیدهای ECIES پشتیبانی شده در زیر فهرست شده اند:

  • ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256

حداقل خواص

  • متن ساده و اطلاعات زمینه می تواند طول دلخواه داشته باشد (در محدوده 0..2 32 بایت)
  • در برابر حملات متن رمزی انتخابی تطبیقی ​​ایمن باشید
  • امنیت 128 بیتی برای طرح های مبتنی بر منحنی بیضوی

موارد استفاده نمونه

ببینید من می خواهم داده ها را مبادله کنم .