프라이빗키만 있으면 누구든지 지갑에 접속이 가능하다면, 조합을 통해 개인지갑에 들어가 탈취할 가능성도 있나요?
개인지갑주소처럼 프라이빗키도 숫자와 알파벳으로 이루어진 것으로 알고 있습니다. 개인 비밀번호 탈취 방법중에 하나가 성능좋은 PC를 활용해 비밀번호 경우의수 조합을 돌리는 프로그램으로 접속후 탈취하는 수법이 있다고 하는데, 프라이빗키처럼 숫자와 알파벳으로 이루어져있다면 성능 좋은 PC를 통해서 개인지갑에 접속할 수 있는 위험성이 있지 않을까 생각합니다. 가능성이 있는 부분인지 궁금하네요.
말씀하신 것과 완전히 일치하지는 않지만 비슷한 원리를 활용하여 암호화폐를 탈취하는 것이 제한적인 조건에서 가능합니다.
며칠 전에 언론에 보도된 내용에 따르면, 어떤 이유로 암호화가 제대로 이루어지지 못해 매우 단순한 프라이빗 키가 만들어지는 경우에는 이를 통해 프라이빗 키에 대응되는 공개키 값을 찾아내는 것이 가능하다고 합니다. 따라서 지갑을 언락할 수 있고 암호화폐를 탈취할 수 있게 되는 것이죠.
이것에 대해 한국에는 자세히 보도된 바가 없기 때문에 이 문제를 제기한 보안 컨설팅 업체의 논문을 직접 읽고 답변을 드리도록 하겠습니다. 제가 이해한 바대로 설명을 드리는 것이라서 잘못 설명한 부분이 있을 수도 있으므로 양해를 부탁드립니다.
우선 본격적으로 답변을 드리기 전에 이 문제가 이더리움 블록체인의 자체의 결함이나 문제라기 보다는 지갑 생성 과정의 문제라고 보시는 것이 좋을 것입니다. 또한 이러한 암호화폐 탈취 행위를 'Blockchain Bandit(블록체인 강도)'라고 부르기로 했다고 합니다.
이런 일이 가능한 이유는 프라이빗 키를 통해 공개 키 값을 도출해 내는 것이 아예 불가능한 것이 아니기 때문입니다. 즉 프라이빗 키를 만들 수 있는 모든 경우의 중에서 일반적인 경우라면 생성되지 않을 매우 단순한 프라이빗 키가 만들어졌다고 생각하고 이런 것부터 시작해서 공개 키 값을 하나씩 도출해 가면서 해당 공개키가 존재하는지 살펴 본 후, 만약에 존재한다면 지갑을 언락한 후 이더리움을 탈취하는 것입니다.
물론, 일반적인 경우에는 이런 것이 가능하지 않습니다. 해킹을 당할 수 있을 만큼 단순하고 허술한 프라이빗 키만 공개 키를 빠르게 도출할 수 있습니다. 그것이 아니라 일반적인 경우라면 이더리움 프라이빗 키에서 공개 키를 알아내는 것은 256비트 암호를 해독하는 것과 같으므로 몇 년이 걸릴지, 몇 백년이 걸릴지, 비용이 얼마나 들지 아무도 모르는 거의 불가능하고 무의미한 작업이라고 할 수 있습니다.
그렇다면 이러한 일이 왜 일어나는 것일까요?지갑 앱이나 지갑 서비스를 이용해서 공개 키와 프라이빗 키를 생성할 때 해당 서비스의 코딩 오류가 발생하여 원래보다 매우 단순화된 프라이빗 키가 만들어진다거나, 악성코드로 인해서 프라이빗 키를 생성하는 프로세스를 손상시킴으로써 매우 단순한 프라이빗 키가 만들어진다거나 하는 암호화 수준이 낮은 프라이빗 키가 만들어 졌거나, 사용자에게 프라이빗 키를 선택할 수 있는 선택권을 주는 경우에 사용자가 기억하기 쉽고 매우 단순한 프라이빗 키를 골랐을 수 있기 때문입니다.
다시 한 번 설명드리면 위와 같은 이유로 단순한 프라이빗 키가 만들어진다면 이를 통해 공개 키 값을 도출하는 것이 가능해지고 지갑 또한 언락이 가능하게 되는 것입니다. 일반적인 경우라면 프라이빗 키로부터 정확히 공개 키를 찾아낸다는 것은 불가능에 가깝지만 말입니다.
결론적으로는 프라이빗 키가 해킹을 당했다기 보다는 매우 단순한 프라이빗 키가 만들어지는 바람에 이를 통해 공개 키를 찾아내는 것이 가능해져 암호화폐를 탈취 당할 수 있다는 것이겠습니다. 그리고 이것은 이더리움 블록체인의 보안 결함이나 직접적인 문제는 아닙니다.
답변이 도움이 되길 바랍니다.