Hacking Verge: 어땠는지 (1부)

시간 왜곡, 마이닝 취약점, DOS 공격 등.

암호화폐 애호가는 일반 사람들에게 자신이 좋아하는 코인이 실행되는 블록체인 프로토콜의 신뢰성과 보안에 대해 이야기하는 것을 좋아합니다. 실제로 비트코인이나 이더리움과 같은 가장 큰 암호화폐는 적절한 수준의 보안을 제공하며 역사상 다른 ​​어떤 디지털 자산이나 결제 시스템보다 더 잘 수행할 수 있습니다. 이러한 암호 화폐가 그 어떤 것도 뒷받침되지 않고 누구의 통제도 받지 않는다는 점을 고려하면 이는 상당히 큰 성과입니다.

그러나 많은 사람들은 언급된 암호화폐가 원칙적으로 해킹될 수 없다고 감히 주장합니다. 어떤 경우에는 그러한 진술이 사람을 어색한 위치에 놓을 수 있기 때문에 이것은 적어도 전술적 오산입니다. 예를 들어, 통화가 여전히 해킹된 경우.

그런 경우 다른 것이 남아 있지 않다면 최소한 자신에 대해 설명해야 할 것입니다.

지난달에는 아직 신원이 확인되지 않은 해커가 사용자 익명성에 중점을 둔 비교적 작은 암호화폐인 Verge를 해킹했습니다. 4월 6일과 1월 560일 사이에 알려지지 않은 해커가 몇 시간 동안 Verge 네트워크를 세 번 제어했으며 그 동안 다른 사용자는 결제할 수 없었습니다. 설상가상으로 이 간격 동안 해커는 초당 80코인(약 1달러)의 비율로 가짜 Verge 코인을 발행했습니다. 그 결과 해커는 XNUMX만 달러 이상의 암호화폐를 발행했습니다.

이 상황은 과장없이 재앙이라고 할 수 있습니다. Verge가 해킹을 당했습니다.

그러나 누구의 탓입니까? Verge 개발자의 실수였습니까? 암호화 프로토콜의 근본적인 취약점입니까, 아니면 다른 것입니까? 더 큰 암호 화폐에서 이런 일이 발생할 수 있으며, 그렇다면 이를 피하는 방법은 무엇입니까?

이러한 종류의 해킹으로 많은 세부 사항이 항상 불분명합니다. 그러나 이 경우 주요 취약점을 식별할 수 있습니다.

타임스탬프 스푸핑: 의도하지 않은 오류 또는 위험한 거짓말?

언뜻 보기에 이 취약점은 버그처럼 보일 수 있지만 실제로는 "정확하지 않은" 타임스탬프를 생성하기 위한 특수 기능입니다. 블록체인 프로토콜에서 개별 트랜잭션(일반적으로 네트워크 참가자 간의 전송)은 단일 블록으로 그룹화되어 검증됩니다. 각 블록에는 생성 날짜의 타임스탬프가 있습니다. 블록체인 프로토콜이 제대로 작동하더라도 이러한 스탬프의 순서가 중단될 수 있습니다. 예를 들어 블록 100에는 다음과 같은 타임스탬프가 있을 수 있습니다. 후 블록 101. 이는 제XNUMX자에게 권한 제공을 거부하는 분산 네트워크에서 정확한 시간 동기화를 설정하는 것이 전혀 쉽지 않기 때문입니다.

데이터가 PXNUMXP 네트워크를 통해 전파되는 데 소요되는 예측할 수 없는 시간을 감안할 때 모든 당사자가 선의로 거래를 수행하더라도 블록이 "순서가 어긋난" 것처럼 보일 수 있습니다. 다시 말해서, 이 점에서 최소한 약간의 유연성이 허용되어야 합니다. Verge의 경우(적어도 해킹 전), 프로토콜은 노드가 블록에 표시된 현재 시간에 대해 "동의하지 않음"을 허용했으며 비동기화에는 최대 XNUMX시간이 걸릴 수 있습니다.

해커는 타임스탬프를 위조하여 공격을 시작했습니다. 그는 과거에서 온 것처럼 블록을 보냈지만 허용된 2시간을 초과하지 않았습니다.

이것이 궁극적으로 네트워크 보안에 영향을 미칠 수 있는 이유는 작업 증명 네트워크에 대한 마이닝의 특성에 있습니다.

채광 난이도: 벽은 높을 때만 보호합니다.

Verge 네트워크를 분산하려면 MacBook과 같은 소형 장치에서 네트워크 소프트웨어를 실행할 수 있어야 합니다. 이것은 차례로 네트워크의 지불량을 제한합니다. 즉, 블록에 대한 목표 시간을 설정합니다(결과적으로 초당 트랜잭션 수 제한). Verge 네트워크는 1초마다 30블록으로 실행되었습니다. 네트워크가 분산되어 있다는 점을 감안할 때 합리적인 질문을 할 수 있습니다. 참가자가 훨씬 더 빠른 속도로 블록을 전송하지 못하게 하는 것은 무엇입니까? 이것은 사소하지 않은 문제입니다. 확인된 각 블록이 블록을 만든 사람에게 보상을 준다면 채굴자가 가능한 한 많은 블록을 확인하는 것이 유리합니다.

요컨대 이 문제에 대한 해결책은 작업 증명 프로토콜의 해결책입니다. 네트워크가 블록을 검증하려면 블록 자체의 데이터에서 직접 오는 암호학적으로 복잡한 계산 문제에 대한 솔루션이 포함되어야 합니다. 이 문제의 특성은 복잡성이 쉽게 변경될 수 있다는 것입니다. Verge는 1초 안에 30개의 블록을 형성하는 것을 목표로 했으며 현재 블록 확인률을 기준으로 채굴 난이도를 지속적으로 조정했습니다. 사용자가 Verge 블록을 채굴하고 생성하는 데 더 많은 전력을 할당하기로 결정하고 이러한 블록이 더 빨리 생성되면 프로토콜이 채굴 난이도를 높이고 블록 확인 속도가 느려집니다. 반대로, 전력이 감소하고 블록을 생성하는 시간이 증가할수록, 채광 더 쉬워졌습니다. 따라서 올바르게 작동할 때 경제 변동, 암호화폐 시장 가격, 에너지 시장, 제국의 흥망성쇠 등 현실 세계에서도 외부 요인이 변할 때 Verge 네트워크는 끊임없이 변화에 반응하고 추구했습니다. 블록의 형성을 대상에 시간 단위로 가져옵니다.

Verge가 문제의 현재 난이도를 계산하는 데 사용하는 알고리즘을 Dark Gravity Wave라고 합니다. 2시간 동안의 블록 확인 비율의 가중 평균을 계산합니다. 이것은 복잡한 알고리즘이며 세부 사항은 여기서 중요하지 않습니다. 중요한 것은 마이닝의 복잡성이 마지막 블록의 형성 속도에 달려 있으며, 이 속도의 계산은 물론 타임스탬프와 관련이 있다는 것입니다.

여기에 문제가 있습니다. 잘못된 타임스탬프를 충분히 생성하면 균형이 무너집니다. 이것이 바로 해커가 한 일입니다. 블록체인의 데이터에 따르면 해킹의 전체 시간 동안 모든 두 번째 블록이 현재 시간보다 약 XNUMX시간 전에 타임스탬프와 함께 전송되어 설정 알고리즘을 크게 혼동했습니다. 채굴 난이도. 프로토콜에 지능이 있고 말할 수 있다면 "오 안돼! 최근에 충분한 블록이 형성되지 않았습니다! 아마도 채굴의 복잡성이 너무 높아서 줄여야 합니다!"

타임스탬프가 계속해서 변경됨에 따라 프로토콜은 채굴이 엄청나게 간단해질 때까지 작업의 난이도를 계속해서 줄였습니다. 일반적인 이해를 하자면, 평균 작업 난이도(시간)는 1393093,39131시간이었고, 공격 중에는 0,00024414로 떨어졌습니다. 즉, 채굴 난이도가 99.999999% 감소했습니다. 작업의 복잡성이 적을수록 더 많은 블록이 형성되어 블록체인으로 보낼 수 있습니다. 그 공격의 결과, 단 1초 만에 하나의 블록이 전송되었습니다.

공격의 독창성은 해커가 채굴 난이도의 한계를 우회하여 돌파하지 못했다는 점에 있다. 보안 시스템이 그물을 둘러싸고 있는 벽이라고 상상해 보십시오. 이 벽은 너무 높고 강해서 부서지거나 올라갈 수 없습니다. 해커는 그것을 낮추는 방법을 찾았고 단순히 그것을 넘어섰습니다.

이 취약점이 분명하지 않다는 것은 놀라운 일입니다. 프로토콜에 대한 이러한 공개적인 공격은 네트워크의 평판을 악화시킬 것입니다. 또한 블록 생성 속도가 증가하여 프로토콜에서 상상한 것보다 더 많은 Verge 코인을 생성할 수 있습니다. 예측 가능한 주식 대 흐름 비율로 신뢰할 수 있는 통화를 옹호하는 경제학자라면 이 상황이 걱정될 것입니다.

그러나 복잡성을 줄이는 것은 문제의 절반에 불과합니다. 그 자체로는 실제로 공격자에게 이점이 없습니다. 복잡성이 감소함에 따라 블록 형성은 해커에게 훨씬 더 쉬워졌지만 다른 모든 사람들에게도 더 쉬워졌습니다. 채굴자들은 언제나처럼 계속해서 서로 경쟁합니다. 이 상황에서 우리는 블록이 더 빨리 생성되지만 성공적인 채굴자는 이전과 같이 분산되고 민주적이어야 한다고 가정합니다. 다르게 말하면, 채굴의 복잡성에 관계없이 네트워크를 장악하기 위해 공격자는 여전히 시스템 전력의 최소 51%를 제어해야 합니다.

그러나 이 해커는 실제로 전체 네트워크를 장악하고 전체 해시레이트의 51%보다 훨씬 적은 리소스로 작업을 수행했습니다. 그는 Verge의 다중 마이닝 알고리즘과 관련된 취약점의 두 번째 구성 요소를 악용하여 이 작업을 수행했습니다.

계속 될 ...

기사 평가
블록체인 미디어
코멘트를 추가