본문 바로가기

Applied Cryptography

ECDSA with Bouncycastle Lib. ECDSA (Elliptic Curve Digital Signature Algorithm) Digital Signature Algorithm은 Nist 표준이며 국내 표준 전자서명 알고리즘이다. 앞에 붙은 "EC"는 Elliptic Curve 연산을 사용하여 DSA가 구현되었다는 의미로 해석할 수 있다. 단, 분명히 ECDSA가 DSA에서 파생된 알고리즘이지만, 서로 다른 알고리즘이다. 참고로 Etheruem과 그 영향을 받은 대부분의 블록체인이 사용자 계정 확인을 위해 ECDSA 전자서명을 사용한다. ECDSA with Java Lib 서명키(비밀키) BigInteger 난수 값. PrivateKey 객체로 관리됨 검증키(공개키) ECPoint 값; 서명키 값으로 유도되는 ECC Point. Publi.. 더보기
Blind Signature based RSA 1. Parameter on RSA p,q: Large Prime Numbers n= pq pi(n)= (p-1)(q-1), the function pi mean euler's one. e: small odd number d: multicative inverse of e under modulo pi(n) private key: d public key: (e, n) 본포스팅에 자세히 적지는 못하지만, e값은 랜덤하게 선택하면 되고, d 값은 e 값에 따라 계산하여 얻는다. 단, ed = 1 mod pi(n)이 성립하도록 구한다. 그러면 mod n 에서 지수가 1이 되기 떄문에 어떤 수라도 ed 승하면 자기 자신이 된다. 이 내용을 정확하게 이해하려면 정수론 지식이 조금 필요하다. 당장은 me을 d 승하여 .. 더보기
X.509 인증서 (+ Yessign 공인인증서 Sample) 참고자료 인증서 Spec. RFC 5280 - Internet X.509 PKI Certificate and CRL Profile url: https://tools.ietf.org/html/rfc5280 TTAS.KO-12.0012/R1 url: https://www.tta.or.kr/include/Download.jsp?filename=stnfile/TTAS.KO-12.0012_R1.pdf Tool. ASN.1 JavaScript Decoder Online url:https://lapo.it/asn1js/# 인증서 구조 인증서는 Certificate 구조체 형식으로 저장되며 다음과 같이 3개의 Field로 구성되어 있다. 변수명 구조 및 설명 tbsCertificate # 인증서 본문 version s.. 더보기
투표와 전자투표 투표가 갖춰야 할 성질 성질 설명 Voter Privacy 투표 내용으로 투표자를 알 수 없어야 한다. Vote Verifiability 각 투표는 독립적으로 확인 가능해야 하고, 정확히 카운팅 돼야 한다. -Universal Verifiability 누구나 투표 결과를 검증할 수 있음. -Individual Verifiability 자신의 투표가 결과에 집계 되었는지 확인할 수 있음 Democracy 유권자가 자신의 투표를 정당하게 행사해야 한다. (강압적 기권, 대리 투표 금지) Robustness 유권자의 해로운 행동을 방지해야한다. Receipt-freeness 유권자의 투표 내용 자체를 누구도 확인할 수 없어야 함. 투표 거래 방지를 위함 Correctness 투표 집계가 정확해야 한다. Fai.. 더보기
Shamir's Secret Sharing과 Lagrange Interpolation Secret Sharing 비밀 데이터를 여러 조각으로 "나누어" 분산 저장하는 작업이며, 유사시 여러 조각들을 취합하여 비밀 데이터를 복구한다. 단, 비밀 데이터를 n 등분하여 조각을 만들면, 각 조각에 비밀 데이터의 직접적인 정보가 담기게 되므로 바람직하지 않다. 비밀 데이터에 대한 어떤 정보도 담고 있지 않은 n 개의 조각을 만들 수 있을까? 여러 가지 설루션이 있지만 Shamir's Secret Sharing만 참고하면 된다. Threshold Secret Sharing n개의 조각 중에 일부를 분실하여도 비밀 데이터를 복구할 수 있도록 구성된 프로토콜이다. 하지만 이런 Threshold 기능은 공격자가 n 개 조각 중에 일부만 취득하여도 비밀데이터를 복구할 수 있으므로, 공격자에게도 득이 된다... 더보기
전자 서명 알고리즘 DSS(Digital Signature Standard) FIPS 186-4에 정의된 미국 표준 전자서명 알고리즘 표준이다. 이 문서에서는 DSA, RSA, ECDSA라는 세가지 전자서명 알고리즘을 명세한다. 다만, 표준의 다음 버전에서는 DSA 알고리즘이 제거될 예정이다. ECDSA (Elliptic Curve Digital Signature Algorithm) Modulus 연산으로 정의된 DSA에 Elliptic Curve 연산을 적용한 알고리즘이다. 근본적으로 ElGamal과 Schnorr Signatures의 변형 알고리즘이다. (자세한 알고리즘은 표준문서나 Wiki 등을 참고) RSA와 ECDSA 비교 ECDSA의 키 길이가 짧아서 좋은 데이터 효율을 보인다. 128-bit 안전성을 가정하면 .. 더보기
전자서명 개념 정리 전자 서명 지금부터 설명한 것은 전자서명이지만 아날로그 버전의 서명은 일반 서명이 아니라 도장과 의미가 더 유사하다. 전자서명과 도장의 공통적인 성질은 "오직 나만 소유한 것"으로 만들 수 있다는 것이다. 하지만 도장은 찍힌 모양을 보고 충분히 위조가 가능하다면, 전자서명은 위조가 불가능하다. 암호학에서 전자서명 프로토콜은 PublicKey Cryptosystem으로 분류된다. 즉, 서명자만이 알고 있는 서명키(비밀키)와 누구나 알고 있는 서명검증키(공개키)를 활용한다는 의미이다. 서명자는 우선 서명키/검증키 쌍을 생성한 뒤에 검증키를 만천하에 공개한다. 그리고 특정 메시지에 서명키로 전자서명 값을 생성하고, 전자서명 값은 메시지와 검증키로 검증 가능하다. 검증이란? 검증자는 전자서명 검증을 통해 "전자.. 더보기