Podpis cyfrowy
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Pierwotny typ podpisu cyfrowego umożliwia sprawdzenie, czy nikt nie wprowadził zmian w Twoich danych. Zapewnia autentyczność i integralność danych, ale nie ich poufność. Jest to algorytm asymetryczny, czyli wykorzystuje parę kluczy (klucz publiczny i klucz prywatny).
Pierwotny element podpis cyfrowy ma te właściwości:
- Autentyczność: niemożliwe jest utworzenie podpisu, który
PublicKeyVerify.Verify(signature, message)
zweryfikuje, chyba że masz klucz prywatny.
- Asymetryczny: do utworzenia podpisu używany jest inny klucz niż do jego weryfikacji. Dzięki temu możesz rozpowszechniać klucz publiczny, aby weryfikować podpisy w przypadku podmiotów, które nie mogą samodzielnie tworzyć podpisów.
Jeśli nie potrzebujesz asymetrii, rozważ użycie prostszego i bardziej wydajnego prymitywu MAC.
Funkcje podpisów cyfrowych są w Tink reprezentowane przez parę prymitywów:
- PublicKeySign do podpisywania danych
- PublicKeyVerify do weryfikacji podpisu
Wybieranie typu klucza
W większości przypadków zalecamy używanie ECDSA_P256, ale istnieje wiele opcji. Ogólnie obowiązują następujące zasady:
- ECDSA_P256 to najczęściej używana opcja i domyślna opcja. Pamiętaj jednak, że podpisy ECDSA są zmienialne.
- ED25519 tworzy podpisy deterministyczne i zapewnia lepszą wydajność niż ECDSA_P256.
- RSA_SSA_PKCS1_3072_SHA256_F4 tworzy podpisy deterministyczne i zapewnia najlepszą wydajność weryfikacji (ale podpisywanie jest znacznie wolniejsze niż w przypadku ECDSA_P256 lub ED25519).
Minimalne gwarancje bezpieczeństwa
- Dane do podpisania mogą mieć dowolną długość.
- 128-bitowy poziom zabezpieczeń przed dostosowywanymi atakami typu „wybrany komunikat” w przypadku schematów opartych na krzywej eliptycznej
- 112-bitowy poziom zabezpieczeń przed atakami dostosowanymi do wybranych wiadomości w schematach opartych na RSA (umożliwia używanie kluczy 2048-bitowych)
Złożoność
Schemat podpisu jest podatny na manipulację, jeśli atakujący może utworzyć inny prawidłowy podpis dla już podpisanej wiadomości. W większości przypadków nie jest to problemem, ale w niektórych przypadkach programiści domyślnie uznają, że prawidłowe podpisy są unikalne, co może prowadzić do nieoczekiwanych wyników.
Przykładowy przypadek użycia
Zobacz, jak podpisać dane cyfrowo.
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-25 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-25 UTC."],[[["\u003cp\u003eDigital signatures ensure data integrity and authenticity by verifying that data hasn't been tampered with.\u003c/p\u003e\n"],["\u003cp\u003eThey use a pair of keys (public and private) for asymmetric signing and verification, allowing for secure distribution of the public key.\u003c/p\u003e\n"],["\u003cp\u003eTink provides two primitives for digital signatures: \u003ccode\u003ePublicKeySign\u003c/code\u003e for signing and \u003ccode\u003ePublicKeyVerify\u003c/code\u003e for verifying.\u003c/p\u003e\n"],["\u003cp\u003eECDSA_P256 is generally recommended, with ED25519 offering better performance and RSA_SSA_PKCS1_3072_SHA256_F4 providing the fastest verification.\u003c/p\u003e\n"],["\u003cp\u003eDigital signatures in Tink guarantee a minimum of 112-bit security and support data of any length.\u003c/p\u003e\n"]]],["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"],null,[]]