هنگامی که برای اولین بار با Tink شروع به کار می کنید، برخی از مفاهیم کلیدی وجود دارد که باید قبل از شروع سفر خود را درک کنید. این موارد در بخش های بعدی توضیح داده شده است.
بدوی ها
تینک از مواد اولیه به عنوان بلوک های ساختمان رمزنگاری استفاده می کند که یک الگوریتم زیربنایی را مدیریت می کند تا کاربران بتوانند وظایف رمزنگاری را با خیال راحت انجام دهند. یک ابتدایی جزئیات یک الگوریتم رمزنگاری و نوع کلید را تعریف می کند.
Primitives پشتیبانی شده توسط Tink:
- رمزگذاری احراز هویت شده با داده های مرتبط (AEAD) : رایج ترین رمزگذاری اولیه برای رمزگذاری داده ها. برای اکثر نیازهای رمزگذاری مناسب است. AEAD محرمانه بودن متن ساده را فراهم می کند و امکان تأیید صحت و صحت آن را فراهم می کند. به رمزگذاری تأیید شده با داده های مرتبط (AEAD) مراجعه کنید.
- رمزگذاری قطعی: یک رمزگذاری اولیه که همیشه متن رمزی یکسانی را برای یک متن ساده و کلید مشخص تولید می کند. این می تواند مخاطره آمیز باشد، زیرا یک مهاجم برای شناسایی آن فقط باید بفهمد که کدام متن رمزی با یک ورودی متن ساده مطابقت دارد. AEAD قطعی را ببینید.
- امضای دیجیتال : یک نامتقارن (به رمزگذاری کلید نامتقارن مراجعه کنید) برای تأیید صحت و یکپارچگی داده های امضا شده. امضای دیجیتال را ببینید.
- رمزگذاری ترکیبی : رمزگذاری اولیه ای که رمزگذاری کلید نامتقارن و رمزگذاری کلید متقارن را ترکیب می کند (به رمزگذاری کلید نامتقارن و رمزگذاری کلید متقارن مراجعه کنید). رمزگذاری ترکیبی کارایی رمزگذاری متقارن را با راحتی رمزگذاری کلید عمومی ترکیب می کند. برای رمزگذاری یک پیام، یک کلید متقارن جدید تولید می شود و برای رمزگذاری داده های متن ساده استفاده می شود، در حالی که کلید عمومی گیرنده فقط برای رمزگذاری کلید متقارن استفاده می شود. متن رمزی نهایی شامل متن رمز متقارن و کلید متقارن رمزگذاری شده است. رمزگذاری ترکیبی را ببینید.
- کد احراز هویت پیام (MAC) : یک کد اولیه متقارن (به رمزگذاری کلید متقارن مراجعه کنید) برای تأیید صحت و یکپارچگی داده ها. به کد احراز هویت پیام (MAC) مراجعه کنید.
- Streaming AEAD : رمزگذاری اولیه ای که برای جریان داده ها رمزگذاری تایید شده ارائه می کند. زمانی مفید است که داده هایی که باید رمزگذاری شوند آنقدر بزرگ هستند که در یک مرحله پردازش نمی شوند. به پخش جریانی AEAD مراجعه کنید.
برای اطلاعات سازگاری، به نسخه های اولیه پشتیبانی شده بر اساس زبان مراجعه کنید.
برای اطلاعات بیشتر، طراحی اولیه را ببینید.
انواع کلیدی
یک نوع کلید یک ابتدایی خاص را پیاده سازی می کند. اکثر primitive ها دارای چندین نوع کلید هستند که بسته به نیاز شما برای امنیت، زمان اجرا و فضا می توانید انتخاب کنید. به عنوان مثال، AES128_GCM یک AEAD است که برای اکثر نیازها سریع و موثر است. در انواع کلیدهای پشتیبانی شده بر اساس زبان بیشتر ببینید.
دسته کلید و دسته کلید
Tink از مجموعه کلیدها برای مدیریت کلیدها استفاده می کند. مجموعه کلید اساسا مجموعه ای از کلیدها است که چرخش کلید را تسهیل می کند. ویژگی های قابل توجه یک کیست عبارتند از:
- هر کلید در یک مجموعه کلید دارای یک شناسه منحصر به فرد است که در یک مجموعه کلید منحصر به فرد است. این شناسه معمولاً بهعنوان پیشوندی به هر متن رمزی، امضا یا برچسب تولید شده اضافه میشود تا مشخص کند از کدام کلید استفاده شده است (برای اطلاعات بیشتر ببینید که چگونه Tink متنهای رمزی را برچسبگذاری میکند ).
- فقط یک کلید در یک زمان در یک مجموعه کلید اصلی است. یک کلید اصلی در یک مجموعه کلید در حال حاضر کلید "در حال استفاده" است.
- همه کلیدهای یک مجموعه کلید باید پیادهسازیهایی از همان ابتدایی (مانند AEAD) باشند، اما میتوانند انواع کلیدهای مختلفی داشته باشند (به عنوان مثال، کلید AES-GCM و XCHACHA20-POLY1305).
هر پیاده سازی Tink API هایی را برای ایجاد یا ویرایش مجموعه کلیدها فراهم می کند. با این حال، توصیه می کنیم از ابزار CLI خود از Tinkey استفاده کنید.
کاربران روی یک مجموعه کلید با استفاده از دسته کلیدها کار می کنند. دسته کلید، نوردهی مواد کلید حساس واقعی را محدود می کند. همچنین یک مجموعه کلید را انتزاع می کند که به کاربران اجازه می دهد تا یک کلید اولیه را به دست آورند که کل مجموعه کلید را "پیچیده" می کند. به عنوان مثال، شما می توانید یک AEAD اولیه یک مجموعه کلید با کلیدهای N
دریافت کنید. رمزگذاری و رمزگشایی با اولیه به دست آمده سپس از کلید اصلی در مجموعه کلید استفاده می کند.
برای اطلاعات بیشتر، طراحی مجموعه کلید را ببینید.