- 이산로그문제(Discrete log problem)
이산로그문제는 덧셈과 뺄셈을 사용, 점(스칼라)는 정수로 곱하거나 나눌수있음
더하기, 빼기, 곱셈은 표준컴퓨터로 쉽게 사용하지만 나눗셈은 양자컴퓨터로 가능할 것
타원곡선상에 있는 점(H 혹은 G) : generator point
private key : 큰세트(2^128보다 크거나같음)에서 랜덤으로 선택된 정수(스칼라)
public key : generator point * private key(scala)
→ 이런 곱셈은 역연산(로그,logarithm) 수행이 어려움
- 암호해싱(Cryptographic Hashing)
임의의길이의 데이터를 수신하고 고정된 길이 문자열로 소화(digest) → 해시값: digest
암호해시함수가 되려면 입력, 출력이 예측불가능해야함
해시충돌 저항성
비트코인 - RIPEMD-160(public에서 주소생성), SHA-256(PoW구현) 사용
- 동형 암호(Homomorphic Encryption)
암호화된 숫자에 수학적 연산을 수행하는 기술
곱셈 연산이 상당히 어려우며(완전한 동형암호화 시스템은 비용이 많이듬), 더하기, 빼기 수행에 적합
- CoinJoin- Greg Maxwell이 발명
- 사용자가 트랜잭션을 병합, 트랜잭션 그래프가 복잡
- 트랜잭션 그래프 : 거래 참여자, 다른 사용자 같의 관계 및 토큰 기록 정보
- 비트코인(모든 입력이 동일한 사용자로부터 발생)과달리 CoinJoin을 사용하여 프라이버시에 도움
- 단점 : 참여자간 상호작용 필요
- 비대화 형식의 CoinJoin : One Way Aggraegate Signatures(OWAS)
→ 모든 입력 소유자가 인증과 전체 병합된 트랜잭션 확인을 위해 서명해야함
→ 오프라인, 익명 및 비동기 방식으로 트랜잭션 병합 불가능
→ 더 복잡한 암호 가정(암호페어링) 필요
- 기밀거래(Confidential Transaction,CT) - Greg Maxwell이 제안
- 비트코인 프라이버시 보호가 목적
- Commitment scheme
- Pedersen Commitment : 평범한 UTXO값을 cryptographic commitment로 대체, 동형적 특성(입력과 출력의 합이 같음)
- commitments 는 체인에 주소를 표시하지 않음
- Commitment : private key에 바인딩되어 암호 commitment에 포함된 잔액을 보유하고 있음을 나타냄
- 받는 사람만 거래 금액을 정확히 알수 있음
→ 잔액값 표시를 원할경우 원래값 만이 수학연산을 충족하므로 수동으로 수정 불가
- blinding factor
- commitments생성시 사용한 매개변수
- blinding factor를 알고 있는 사람만 거래출력 사용 가능
- blinding factor를 통해 private key를 만들고, 지불트랜잭션의 출력으로 사용
- 신분인증의 기본요소, 공유해서는 안됨