Signatures and zero-knowledge proofs

froajnzd·2024년 12월 11일
0

real world cryptography

목록 보기
7/12
post-thumbnail
  • 영지식증명(zero-knowledge proofs)과 암호화 서명(cryptographic signatures)
  • 암호화 서명을 위한 현존하는 표준
  • 서명의 섬세한 행동과 그 함정을 피하는 것

What is a signature?

How to sign and verify signatures in practice

A prime use case for signatures: Authenticated key exchanges

A real-world usage: Public key infrastructures

Zero-knowledge proof(ZDPs): The origin of signatures

Schnorr identification protocol: An interactive zero-knowledge proof

Signatures as non-interactive zero-knowledge proofs

The signature algorithms you should use (or not)

RSA PKCS#1 v1.5: A bad standard

RSA-PSS: A better standard

The Elliptic Curve Digital Signature Algorithm(ECDSA)

The Edwards-curve Digital Signature Algorithm(EdDSA)

Subtle behaviors of signature schemes

Substitution attacks on signatures

Signature malleability

Summary

  • 디지털 서명은 실제 서명과 비슷하나, 암호화로 뒷받침되므로 서명 개인 키를 제어하지 않는 사람이 위조할 수 없도록 만든다
  • 디지털 서명은 출처(예로, key exchange의 한 사람)을 인증하고 전환적 신뢰를 제공하는데에 유용하다. (내가 앨리스를 신뢰하고 앨리스가 밥을 신뢰하면, 나는 밥을 신뢰할 수 있다)
  • 영지식 증명(ZKP)은 증명자가 특정 정보(증인)의 지식을 드러내지 않고도 증명할 수 있게 해준다. 서명 작업 중, 검증자가 온라인 상태가 아니어도 되기에 서명은 비상호작용 ZKP로 볼 수 있다.
  • 표준을 통해 서명할 수 있다.
    • RSA PKCS#1 v1.5는 오늘날 널리 사용되지만 올바르게 구현하기 어렵기에 추천하지 않는다
    • RSA-PSS는 구현하기 쉽고 보안 증명이 가능한 더 나은 서명 방식이다. 안타깝게도, 타원 곡선 변형으로 인해 요즘에는 인기가 없어서 네트워크 프로토콜에 많이 쓰인다.
    • 현재 가장 인기 있는 서명 방식은 타원 곡선을 기반으로 한다(ECDSA, EdDSA). ECDSA는 NIST의 곡선 P-256과 함께 사용되며, EdDSA는 Edwards25519 곡선과 함께 자주 사용된다.(이 조합을 Ed25519라고 한다)
  • 서명이 전통적인 방식이 아닌 방법으로 사용될 경우, 몇몇 미묘한 속성이 위험할 수 있다.
    • 몇몇 서명 방식이 key substitution attack에 취약하기 때문에 누가 메세지에 서명했는지 모호해지지 않도록 주의해야 한다. 외부 행위자는 이미 존재하는 서명을 검증할 수 있는 새로운 키 쌍을 만들거나, 주어진 서명을 검증할 수 있는 새로운 키 쌍, 새로운 메세지를 만들 수 있다.
    • 서명의 고유성에 의존하지 마라. 첫째로, 많은 서명 방식에서는 서명자가 같은 메세지에 대해 임의의 많은 서명을 만들 수 있다. 둘째로, 많은 서명 방식은 malleable, 즉 외부행위자가 서명을 취하고, 같은 메세지에 대해 또다른 유효 서명을 만들 수 있다.
profile
Hi I'm 열쯔엉

0개의 댓글

관련 채용 정보