Public Key
**공개 키(Public Key)**는 암호화폐 지갑 소유자가 암호화폐나 대체 불가능한 토큰(NFT)과 같은 디지털 자산을 받기 위해 타인과 공유하는 문자 및 숫자의 문자열로, 개인 키에서 암호학적으로 파생됩니다.[1]
이는 한 쌍으로 이루어진 키 중 하나로, 다른 하나는 비밀로 유지되어야 하는 개인 키입니다. 공개 키 암호화 방식에서 이 두 키는 자금을 제어하는 비밀을 밝히지 않고도 자금의 소유권을 증명하는 데 사용됩니다.[2] 블록체인에서 공개 키는 공개 주소를 생성하고 거래를 승인하는 디지털 서명을 검증하는 데 사용되는 반면, 개인 키는 서명 자체를 수행합니다.[3]
공개 키를 제공하는 것은 누군가에게 이메일 주소를 보내는 것과 비슷합니다. 자금을 보내고자 하는 누구에게나 자유롭게 제공할 수 있으며, 모든 공개 키 주소는 소유자가 해당 지갑에서 자금을 사용할 수 있도록 권한을 부여하는 개인 키와 대응됩니다.[1] 공개 키나 주소를 공유하는 것은 자산 보안에 위험이 없지만, 개인 키를 분실하면 접근 권한을 영구적으로 상실하게 됩니다.[2]
개요 및 용어
일상적인 사용에서는 공개 키와 주소라는 용어가 혼용되기도 하지만, 이들은 서로 다른 객체입니다. 공개 키는 개인 키에서 직접 파생된 큰 숫자이며, 주소는 공유하기 쉽도록 설계되고 특정 이론적 공격에 대한 저항력을 더하기 위해 해당 공개 키를 짧게 해싱한 버전입니다.[2]
전체 공개 키는 일반적으로 사용자가 찾을 수 있는 곳에 표시되지 않습니다. 지갑은 보통 개인 키와 주소를 보여주며, 블록체인 익스플로러는 공개 주소는 보여주지만 공개 키 자체는 보여주지 않습니다.[3]
공개 키나 주소를 암호화폐가 저장되는 장소로 설명하는 것은 흔하지만 오해의 소지가 있는 관행입니다.
암호화폐는 특정 위치에 물리적으로 보관되는 것이 아니라 소유권이 할당된 코드와 비트입니다. 주소는 그 소유권에 붙은 라벨과 같은 역할을 합니다.[3] 두 사람이 거래할 때 서로의 공개 주소를 공개하는데, 이는 송금인이 자금을 보내기 위해 필요한 은행 계좌 번호와 비슷하지만, 공개 키 자체가 교환되지는 않습니다.[3]
이 세 항목 간의 관계는 비대칭적입니다. 공개 키와 주소는 모두 개인 키로부터 계산되지만, 그 반대는 거의 불가능합니다. 즉, 공개 키나 주소로부터 개인 키를 재생성하는 것은 실질적으로 불가능합니다.[3]
이는 복구 측면에서 직접적인 결과를 초래합니다. 공개 키를 분실한 사용자는 개인 키로부터 이를 다시 만들 수 있지만, 개인 키를 분실한 사용자는 해당 공개 주소와 연결된 비트코인이나 알트코인에 영원히 접근할 수 없게 됩니다. 블록체인에는 중앙 기관이나 비밀번호 복구 메커니즘이 없기 때문입니다.[3][2]
키 생성 및 타원 곡선 수학
개인 키는 무작위로 생성된 숫자로, 일반적으로 256비트 길이입니다. 이 키 공간의 크기가 보안을 유지해 줍니다. crypto.news는 이를 약 10^77개의 가능한 값으로 수치화하며, 이는 관측 가능한 우주의 추정 원자 수인 10^80개와 비교되는 수치입니다.[2]
그런 다음 공개 키는 타원 곡선 곱셈을 사용하여 이 개인 키에서 파생됩니다. 즉, 개인 키를 곡선 위의 고정된 생성 점(generator point)에 곱하는 방식입니다. 이는 순방향 계산은 빠르지만 역방향은 실질적으로 불가능한 일방향 함수입니다. 역계산을 하려면 타원 곡선 이산 로그 문제를 풀어야 하는데, 이에 대한 효율적인 해결책은 아직 알려져 있지 않기 때문입니다.[2]
Investopedia도 비슷하게 개인 키가 해싱 함수(주로 타원 곡선 함수)를 거쳐 공개 키를 생성한다고 설명합니다.[3]
비트코인과 이더리움은 모두 secp256k1로 알려진 동일한 타원 곡선을 사용합니다. crypto.news에 따르면, 이 곡선은 256비트 개인 키와 512비트 비압축 공개 키 또는 257비트 압축 공개 키를 생성합니다.[2]
공개 키는 두 가지 형태로 저장될 수 있습니다. 비압축 공개 키는 65바이트입니다. 0x04라는 1바이트 접두사 뒤에 x 좌표 32바이트와 y 좌표 32바이트가 이어집니다. 압축 공개 키는 33바이트입니다. y 값이 짝수이면 0x02, 홀수이면 0x03인 1바이트 접두사 뒤에 32바이트 x 좌표가 오며, 접두사가 y의 패리티를 인코딩하여 y 값을 재구성할 수 있게 합니다.[2]
Investopedia는 이더리움 공개 키가 64바이트(16진수 형식으로 128자)이며, 이더리움에서는 지갑에 의해 공개 키가 자동으로 생성된다고 명시합니다.[3]
압축 형식의 선택은 실질적인 결과를 가져옵니다. 동일한 개인 키에서 파생된 압축 및 비압축 공개 키는 서로 다른 비트코인 주소를 생성하므로, 원래와 다른 압축 형식을 사용하는 지갑으로 개인 키를 가져오면 다른 주소가 생성됩니다.[2]
주소 파생
원시 공개 키는 길고 일부 체인에서는 필요할 때까지 원장에 기록하지 않는 것이 좋기 때문에, 지갑은 이를 공유하기 전에 더 짧은 주소로 해싱합니다. 짧은 문자열이라는 편의성 외에도, 거래를 보내는 데 한 번도 사용되지 않은 주소는 아직 온체인에 공개 키를 노출하지 않은 상태이며, crypto.news는 이를 미래의 양자 공격에 대한 이론적인 보호 계층으로 설명합니다.[2]
두 주요 네트워크는 주소를 다르게 파생합니다. 비트코인에서는 공개 키를 SHA-256 해싱 알고리즘에 통과시킨 후 RIPEMD-160을 거쳐 160비트 해시를 생성합니다. 여기에 버전 바이트를 앞에 붙이고 체크섬을 뒤에 붙인 후, 결과를 Base58Check 형식으로 인코딩하여 1, 3 또는 bc1으로 시작하는 최종 주소를 만듭니다.[2]
Investopedia도 이와 일치하는 설명을 제공하며, 공개 키가 처음 생성될 때는 긴 문자열이므로 압축하고 짧게 만들어야 하며, 비트코인에서는 0 두 개를 추가하고 결과를 Base58Check로 보내 추가로 인코딩한다고 언급합니다.[3]
이더리움에서는 공개 키를 Keccak-256 해시 함수에 넣고 결과 해시의 마지막 20바이트(160비트)를 주소로 취하며, 앞에 "0x" 접두사를 붙이고 선택적으로 EIP-55 체크섬을 추가합니다.[2] Investopedia는 이를 이더리움이 공개 키의 마지막 20바이트를 사용하고 앞에 0x를 추가하는 것으로 설명합니다.[3] 이더리움은 내부적으로 비압축 공개 키를 사용하지만 파생 과정에서 접두사 바이트를 제거하고 64바이트의 x 및 y 값만 사용합니다.[2]
보안 및 무작위성 실패
모든 키 쌍의 보안은 전적으로 개인 키를 생성하는 데 사용된 무작위성의 품질에 달려 있습니다. 약하거나 예측 가능한 무작위성으로 인해 공격자가 개인 키를 복구할 수 있었던 사례가 반복적으로 발생했으며, crypto.news는 몇 가지 실제 실패 사례를 기록하고 있습니다.[2]
2026년 7월, 연구원들은 Coldcard 하드웨어 지갑이 5년 동안 취약한 개인 키를 생성해 왔음을 발견했습니다. 펌웨어의 빌드 플래그가 장치에 전용 하드웨어 무작위 칩을 건너뛰도록 지시했기 때문입니다. 공격자가 이 취약점을 리버스 엔지니어링한 후, 2026년 7월 30일부터 지갑 탈취가 시작되어 취약점이 공개되기 전까지 약 1억 1,600만 달러 상당의 비트코인이 도난당했습니다.[2]
이전의 사건들도 같은 패턴을 따랐습니다. 2013년 Android SecureRandom 취약점으로 인해 여러 비트코인 지갑에서 중복된 난수가 생성되었고, 이로 인해 공격자들은 거래 서명으로부터 개인 키를 계산할 수 있었습니다.[2] 2022년 9월에는 Profanity 베니티 주소 생성기가 익스플로잇되었습니다. 연구원들은 이 생성기의 키 생성이 32비트 시드만 사용한다는 것을 발견했는데, 이는 유효 키 공간을 2^256에서 2^32(약 40억 개)로 줄여 몇 분 만에 무차별 대입 공격(brute-force)이 가능하게 했습니다.[2]
이러한 위험을 완화하기 위해 crypto.news는 진정한 난수 생성기를 갖춘 신뢰할 수 있는 하드웨어 지갑을 사용하고, 주사위 굴리기나 동전 던지기와 같은 방법을 통해 사용자가 직접 엔트로피를 추가할 수 있는 옵션을 활용할 것을 권장합니다.
추가적인 실질적 권장 사항으로는 개인 키나 시드 구문을 절대 공유하지 말 것, 주소를 교체하는 클립보드 악성코드에 대비해 주소 형식을 확인하고 첫 글자와 마지막 글자를 육안으로 확인할 것, 하드웨어 제조사의 엔트로피 관련 실적을 조사할 것, 환경적 저항력을 위해 금속 백업을 포함하여 시드 구문의 보안 백업을 여러 개 보관할 것 등이 있습니다.[2