امضای دیجیتالی
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Digital Signature primitive به شما امکان می دهد تأیید کنید که هیچ کس در داده های شما دستکاری نکرده است. صحت و یکپارچگی، اما نه محرمانه بودن داده های امضا شده را ارائه می دهد. نامتقارن است، به این معنی که از یک جفت کلید (کلید عمومی و کلید خصوصی) استفاده می کند.
امضای دیجیتال اولیه دارای ویژگی های زیر است:
- اعتبار : غیرممکن است امضایی ایجاد کنید که
PublicKeyVerify.Verify(signature, message)
اعتبار آن را تأیید کند، مگر اینکه کلید خصوصی را داشته باشید. - نامتقارن : برای ایجاد امضا از کلید متفاوتی نسبت به تأیید آن استفاده می شود. این به شما امکان میدهد کلید عمومی را برای تأیید امضاها بین طرفهایی که خودشان نمیتوانند امضا ایجاد کنند، توزیع کنید.
اگر به عدم تقارن نیاز ندارید، به جای آن از MAC اولیه ساده تر و کارآمدتر استفاده کنید.
عملکرد امضای دیجیتال در Tink به عنوان یک جفت اولیه نشان داده شده است:
- PublicKeySign برای امضای داده ها
- PublicKeyVerify برای تایید امضا
یک نوع کلید را انتخاب کنید
ما استفاده از ECDSA_P256 را برای بیشتر موارد استفاده توصیه می کنیم، اما گزینه های مختلفی وجود دارد. به طور کلی موارد زیر صادق است:
- ECDSA_P256 پرکاربردترین گزینه و یک پیش فرض معقول است. البته توجه داشته باشید که امضاهای ECDSA شکل پذیر هستند.
- ED25519 امضاهای قطعی ایجاد می کند و عملکرد بهتری نسبت به ECDSA_P256 ارائه می دهد.
- RSA_SSA_PKCS1_3072_SHA256_F4 امضاهای قطعی ایجاد می کند و بهترین عملکرد تأیید را ارائه می دهد (اما امضا بسیار کندتر از ECDSA_P256 یا ED25519 است).
حداقل تضمین های امنیتی
- داده هایی که باید امضا شوند می توانند طول دلخواه داشته باشند
- سطح امنیت 128 بیتی در برابر حملات پیام انتخابی تطبیقی برای طرحهای مبتنی بر منحنی بیضی
- سطح امنیت 112 بیتی در برابر حملات پیام انتخابی تطبیقی برای طرحهای مبتنی بر RSA (کلیدهای 2048 بیتی را مجاز میسازد)
چکش خواری
اگر مهاجم بتواند امضای معتبر دیگری برای پیامی که قبلاً امضا شده است ایجاد کند، طرح امضا قابل انعطاف است. در حالی که این مشکل برای اکثر سناریوها نیست، در برخی موارد برنامه نویسان به طور ضمنی فرض می کنند که امضاهای معتبر منحصر به فرد هستند و این می تواند منجر به نتایج غیرمنتظره شود.
مثال استفاده
ببینید می خواهم داده ها را به صورت دیجیتالی امضا کنم .
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-03-04 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-03-04 بهوقت ساعت هماهنگ جهانی."],[[["Digital signatures ensure data integrity and authenticity by verifying that data hasn't been tampered with."],["They use a pair of keys (public and private) for asymmetric signing and verification, allowing for secure distribution of the public key."],["Tink provides two primitives for digital signatures: `PublicKeySign` for signing and `PublicKeyVerify` for verifying."],["ECDSA_P256 is generally recommended, with ED25519 offering better performance and RSA_SSA_PKCS1_3072_SHA256_F4 providing the fastest verification."],["Digital signatures in Tink guarantee a minimum of 112-bit security and support data of any length."]]],["Digital signatures ensure data authenticity and integrity using asymmetric key pairs (public and private). `PublicKeySign` signs data, while `PublicKeyVerify` checks signatures. Key options include the widely used ECDSA_P256, faster ED25519, and high-verification-performance RSA_SSA_PKCS1_3072_SHA256_F4. Signatures offer 128-bit security (elliptic curves) or 112-bit security (RSA). ECDSA signatures are malleable, allowing attackers to forge valid signatures. If asymmetry is not needed consider using MAC.\n"]]