디지털 서명
디지털 서명 원시 함수를 사용하면 아무도 데이터를 조작하지 않았는지 확인할 수 있습니다. 서명된 데이터의 신뢰성과 무결성은 보장하지만 보안 비밀성은 보장하지 않습니다. 비대칭이므로 키 쌍 (공개 키 및 비공개 키)을 사용합니다.
디지털 서명 원시에는 다음과 같은 속성이 있습니다.
- 진위성: 비공개 키가 없으면
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비트 보안 수준
- RSA 기반 스킴의 적응형 선택 메시지 공격에 대한 112비트 보안 수준 (2,048비트 키 허용)
가공성
공격자가 이미 서명된 메시지에 대해 다른 유효한 서명을 만들 수 있는 경우 서명 스키마는 조작 가능합니다. 이는 대부분의 시나리오에서는 문제가 되지 않지만, 프로그래머가 유효한 서명이 고유하다고 암시적으로 가정하는 경우도 있으며, 이로 인해 예상치 못한 결과가 발생할 수 있습니다.
사용 사례
데이터에 디지털 서명을 하고 싶습니다.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-03-04(UTC)
[null,null,["최종 업데이트: 2025-03-04(UTC)"],[[["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"]]