본문으로 건너뛰기
buybitcoinsmart

용어집 / 개발자 참고 자료

점 함수

점 함수란 무엇입니까?
점 함수는 secp256k1의 생성점에 개인 키를 곱하여 개인 키를 공개 키로 바꾸며, 모든 비트코인 주소가 기반으로 삼는 단방향 단계입니다.

BIP-32에 명시되어 있습니다.

BIP32는 이 연산에 point(p)라는 이름을 붙였는데, 계층적 키 유도가 거의 모든 줄에서 이를 언급하기 때문입니다. 곡선의 고정된 생성점에 256비트 비밀값을 곱하면 안전하게 공개할 수 있는 좌표 쌍이 나옵니다. 그 좌표 쌍에서 비밀값을 복원하려면 78자릿수 공간에서 이산 로그를 푸는 것과 같습니다. 지갑은 주소마다 이 함수를 한 번 실행하며, 결코 거꾸로 실행할 필요가 없습니다.

작동 방식

점 함수는 두 입력 중 하나가 영구히 고정된 타원 곡선 곱셈입니다.

비트코인은 secp256k1 곡선을 사용합니다. 이 곡선은 큰 소수 체 위에서 y의 제곱이 x의 세제곱 더하기 7이라는 방정식으로 정의되며, NIST가 아니라 SEC 2 문서에서 표준화되었습니다. 이 곡선에는 모든 구현이 하드코딩하는 생성점 G가 있고, 값이 2의 256제곱 바로 아래에 있는 군 위수 n도 있습니다. 개인 키는 1부터 n 빼기 1까지의 임의의 정수입니다. 이 함수는 배증과 덧셈 사다리를 사용해 G를 그 횟수만큼 자기 자신에 더하며, 우주의 나이가 아니라 1밀리초보다 훨씬 짧은 시간에 끝납니다.

반대 방향이 보안 가정의 전부입니다. 결과 점이 주어졌을 때, 공개된 어떤 방법도 군 크기의 대략 제곱근보다 빠르게 승수를 복원하지 못하므로 작업량은 2의 128제곱 회 연산 정도입니다. 주소를 재사용하거나 공개하거나 수십 년 동안 보관해도 이 점은 바뀌지 않습니다.

한 가지 성질이 계층적 지갑을 가능하게 합니다. 점 곱셈은 덧셈에 대해 분배되므로, a 더하기 b의 점은 a의 점에 b의 점을 더한 것과 같습니다. 개인 키에 트윅을 더하면 대응하는 공개 키는 그 트윅의 점만큼 이동하며, 이 값은 키를 보유하지 않고도 누구나 계산할 수 있습니다. 비강화 BIP32 유도가 이 항등식에 기반하고, 스크립트 트리에 대한 커밋먼트로 이동한 내부 키인 Taproot 출력 키도 마찬가지입니다.

확인할 수 있는 곳

점 함수는 지갑이 새로운 수신 주소를 보여 줄 때마다 실행됩니다.

확장 공개 키가 그 자체로 유용한 이유도 여기에 있습니다. xpub을 온라인 상점이나 조회 전용 휴대전화에 넘기면, 그 기기는 공개 키에 트윅을 적용해 결제마다 새 주소를 생성할 수 있으며, 어디에도 개인 키가 존재하지 않습니다. 하드웨어 지갑은 같은 비대칭성을 반대편에서 활용합니다. 비밀값은 칩을 떠나지 않고 결과 점만 케이블로 돌아옵니다.

이 성질에는 위험한 이면이 있습니다. 관계가 덧셈적이고 공개적이므로, 확장 공개 키와 유출된 비강화 자식 개인 키 1개를 결합하면 누구든 부모 개인 키와 함께 전체 가지를 복원할 수 있습니다. 계정 수준 유도가 강화되는 이유이며, 유출된 xpub이 즉각적인 절도가 아니라 프라이버시에 대한 재앙인 이유입니다.

점 함수 vs 압축 공개 키

점 함수는 수학적 객체를 만들어 내고, 압축 공개 키는 그 객체를 적는 한 가지 방식입니다. 점은 각각 32바이트인 좌표 쌍입니다. 압축 형식은 y 좌표를 버리고 그것이 짝수였는지 홀수였는지를 기록하는 1바이트 접두사를 유지하여 33바이트가 됩니다. 비압축 형식은 두 좌표를 모두 65바이트에 걸쳐 적습니다. Taproot의 x 전용 형식은 32바이트를 유지하며 접두사가 전혀 없습니다. 이들 모두는 같은 점을 나타내지만, 각 인코딩은 서로 다른 주소로 해시됩니다. 그래서 잘못된 압축 플래그로 오래된 키를 가져오면 잔액이 0으로 표시되는 동안 코인은 다른 주소에 그대로 남아 있습니다.

혼동하기 쉬운 용어

자주 묻는 질문

공개 키를 다시 개인 키로 바꿀 수 있습니까?

알려진 어떤 방법으로도 불가능합니다. 곡선 위의 점에서 승수를 복원하는 것은 이산 로그 문제이며, 공개된 최선의 공격은 2의 128제곱 회 연산 정도를 필요로 하는데, 현재나 예측 가능한 어떤 하드웨어도 이를 수행할 수 없습니다.

xpub이 개인 키 없이 주소를 생성할 수 있는 이유는 무엇입니까?

점 곱셈이 덧셈에 대해 분배되기 때문입니다. 유도 단계는 개인 키에 트윅을 더하며, 같은 트윅을 공개 키에 직접 적용할 수 있으므로 xpub만 보유한 서버도 새 주소를 만들 수 있습니다.

다음에 읽을 글

관련 용어

개발자 참고 자료 분야의 다른 용어

이 페이지를 영어로 읽기