"타임 워프 공격"이란 무엇입니까?

이 기사는 기계로 번역되었습니다
원문 표시

이 글의 전반부는 비트코인 ​​스택 거래소 Q&A 웹사이트에 "타임 워프 공격"을 설명하는 David A. Harding의 답변입니다. 타임워프 공격은 "The Great Consensus Cleanup" 소프트 포크 제안이 해결하려고 시도하는 합의 수준의 약점입니다. 그러나 합의된 정리 소프트 포크 적용된 테스트넷 4에서 개발자 Zawy는 유사한 공격을 발견했습니다. 후반부에는 머치가 델빙 비트코인 ​​포럼에서 공격 방법을 소개하고, 그가 추천하는 완화 방법도 소개된다.

타임워프 공격

원본 링크: https://bitcoin.stackexchange.com/questions/75831/what-is-time-warp-attack-and-how-does-it-work-in-general/75834#75834

저자: 데이비드 A. 하딩

비트코인 프로토콜(합의 규칙)에는 블록 헤더의 타임스탬프에 대한 두 가지 관련 규칙이 있습니다.

  1. 노드는 현지 시간보다 2시간 이상 빠른 타임스탬프가 있는 블록을 허용하지 않습니다.
  2. 블록의 타임스탬프는 지난 11개 블록의 중앙값을 초과해야 하며, 이는 노드가 이를 승인하기 위한 전제 조건입니다. 이 규칙을 MTP(Median Time Past)라고 합니다.

귀하의 질문에서 언급했듯이 채굴 난이도의 변화는 2016 블록의 난이도 조정 기간 중 첫 번째 블록과 마지막 블록의 타임스탬프(차이)를 기준으로 계산됩니다.

위의 규칙이 주어지면 모든 채굴자가 일제히 행동하면 주기의 처음 2015개 블록에서 MTP 규칙을 따를 수 있으므로 각 블록의 타임스탬프는 (이전 블록과 비교하여) 1초만 앞으로 이동됩니다. MTP 규칙에서 허용하는 최소증가 폭 입니다. 이렇게 하면 난이도가 약간 줄어들지만 마지막 블록의 타임스탬프를 현재 실시간보다 약간 더 이동할 때 MTP 규칙에 어떤 일이 발생하는지 생각해 보세요. 중앙값은 전혀 변경되지 않습니다.

실제 타임스탬프는 초 단위로 측정되지만 여기서는 현재 시간을 기준으로 11개의 타임스탬프 집합을 나타내기 위해 일 단위를 사용합니다.

 [-13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 0]

번역자 주: 앞의 "-13"은 타임스탬프가 나타내는 시간이 실제 시간보다 13일 전이라는 의미입니다.

그런 다음 이 11개 블록의 타임스탬프 중앙값은 여전히 ​​-13입니다. 이는 채굴자가 난이도 조정 주기의 마지막 블록에서 현재 시간보다 약간 더 많은 시간을 사용할 때 허용할 필요가 없음을 의미합니다. 타임스탬프가 앞으로 이동되었습니다. 1초 이상 - 다음 난이도 주기의 첫 번째 블록은 -13의 타임스탬프를 사용할 수 있습니다. 이는 난이도 주기가 13일 전에 시작되었음을 의미합니다.

이 두 번째 난이도 조정 주기가 끝나면 채굴자는 다시 타임스탬프를 최대한 앞으로 이동할 수 있으므로 프로토콜에서는 이 주기의 모든 블록을 채굴하는 데 28일이 소요된 것으로 간주합니다. 이는 예상 속도의 절반에 불과합니다. 다음 주기에는 채굴 난이도가 절반으로 줄어듭니다.

현재 MTP 규칙에 사용되는 값은 다음과 같습니다.

 [-27, -27, -27, -27, -27, -27, -27, -27, -27, -27, 0]

채굴자는 이 공격을 계속 반복하여(주기에서 이전 블록의 타임스탬프를 최대한 뒤로 이동하고 마지막 블록의 타임스탬프를 최대한 앞으로 이동) 2016 블록이 채굴될 때까지 난이도를 지속적으로 줄일 수 있습니다. 2016초도 채 걸리지 않았는데, 이는 난이도를 더 이상 줄일 수 없는 시점입니다(MTP에서는 각 블록의 타임스탬프를 최소 1초 이상 앞당겨야 하기 때문입니다).

귀하의 주요 질문은 대다수의 채굴자들의 공모 없이 어떻게 그러한 공격이 가능할 수 있느냐는 것입니다. 이제 모든 광부들이 공모할 때 공격이 어떻게 가능한지 살펴보았습니다. 타임스탬프를 선택하면 공격자 채굴자가 중앙값 시간이 정직한 값으로 점프하는 것을 안정적으로 방지할 수 있는 블록을 찾을 수 있는 운이 좋다는 점을 알아야 합니다.

예를 들어, 지난 11개 블록의 타임스탬프가 다음과 같다고 가정해 보겠습니다.

 [-27, 0, -27, 0, -27, 0, -27, 0, -27, 0, -27]

이러한 타임스탬프를 순서 하고 중앙값을 찾으면 해시 해시레이트 의 5/11(45%)이 정직 채굴 되었음에도 불구하고 중앙값이 -27임을 알 수 있습니다. 하지만 이는 공격자 채굴자가 여전히 해싱 해시레이트 의 55%를 보유하고 있다는 의미가 아닙니까? 어쩌면 그렇지 않을 수도 있습니다. 해시 비율이 30%가 넘는 대규모 채굴자는 이점을 얻기 위해 "이기적인 채굴" 공격을 사용할 수도 있고, 채굴자가 후속 블록이 없는 블록("고아")을 사용하지 않는 정직한 타임스탬프가 있는 다른 블록을 렌더링하겠다고 직접적으로 위협할 수도 있습니다. 블록")은 정직한 채굴자가 더 적은 수익을 얻을 수 있도록 해줍니다.

개인적으로 이 공격은 실행 속도가 느리고 눈에 잘 띄기 때문에 비트코인에서는 발생할 가능성이 없다고 생각합니다. 그러나 다른 프로토콜의 설계자는 이러한 매개 변수 변경으로 인해 공격 실행이 더 쉬워질 수 있으므로 매개 변수 변경에 주의해야 할 수도 있습니다.

Zawy의 대체 시간 왜곡 공격

원본 링크: https://delvingbitcoin.org/t/zawy-s-alternating-timestamp-attack/1062

저자:머치

@zawy는 어제 Testnet 4 PR에 공격을 도입했습니다 . 이해를 표명하겠습니다.

타임워프 공격과 유사하게 이 공격은 공격자가 다수 블록의 타임스탬프를 선택할 수 있어야 하지만, 타임워프 공격과 달리 난이도 조정 기간(즉, 사이클 기간 동안 난이도를 하나씩 오류로 측정합니다. 이 공격은 이론적으로는 타당해 보이지만 16주간의 이기적 채굴(그리고 아마도 해시 해시레이트 의 50%)을 수행해야 한다는 요구 사항으로 인해 비현실적이어야 합니다.

이 공격의 일반적인 아이디어는 대부분의 블록의 타임스탬프를 보류하는 것이지만, 난이도 조정 주기의 마지막 블록에서는 미래를 나타내는 타임스탬프와 과거를 나타내는 타임스탬프를 교대로 배치하여 블록의 최소화와 증가 사이를 오가는 것입니다. 어려움. 이러한 과열과 낮은 온도로 인해 공격자는 정직한 채굴자가 생산할 것으로 예상되는 것보다 더 많은 블록을 동시에 생산할 수 있습니다.

구체적으로 공격자는 다음과 같이 했습니다.

  1. 공격자는 먼저 타임스탬프를 최대한 뒤로 설정합니다. 원래 설명에서는 타임스탬프가 블록당 1초만 앞당겨졌지만 타임스탬프는 6초마다 만 앞당겨지면 됩니다. 채굴자는 해싱 해시레이트 의 거의 대부분을 보유하므로 블록은 20분마다 나타날 것으로 예상됩니다. 논의를 단순화하기 위해 블록 생성 속도가 어려운 기간 동안 일정하다고 가정합니다.

    상표 높은 MTP [들] 타임스탬프[들] 실제 경과 시간 어려움
    출발점 0 < 0 0 0
    1 < 0 0 20분
    2 < 0 0 40분
    3 < 0 0 60분
    6 0 1 2시간
    12 1 2 4시간
  2. 공격자는 난이도 조정 주기의 마지막 블록의 타임스탬프를 공격 시작일로부터 8주 후로 설정합니다. 이 블록은 노드의 현지 시간보다 2시간 이상 빠르기 때문에 다른 노드에서 허용되지 않으므로 여기의 공격자는 (일시적으로) 네트워크에서 자신을 포크. 그러나 이 타임스탬프는 미래를 나타내므로 공격자가 다음 주기의 난이도를 이 주기 난이도의 1/4로 변경할 수 있습니다. 두 번째 난이도 조정 주기의 첫 번째 블록 타임스탬프도 합의 정리 제안 요구 사항에 대처하기 위해 공격 시작 날짜로부터 8주 후로 설정되어야 합니다.

    상표 높은 MTP [들] 타임스탬프[들] 실제 경과 시간 어려움
    출발점 0 < 0 0 0
    2014년 335 336 4주 – 40분
    2015년 335 8W 4주 − 20분
    2016년 336 8W 4주 D/4
  3. 공격자는 두 번째 난이도 주기에서 채굴 계속하여 타임스탬프를 가능한 한 적게 전진시키고 마지막 블록의 타임스탬프를 다시 8주로 전진시켜 난이도를 다시 4배로 낮춥니다. 해시 해시레이트 의 약 절반을 차지하기 때문에 공격자가 첫 번째 난이도 주기를 완료하는 데는 4주가 걸리지만 두 번째 난이도 주기에는 1주일만 소요됩니다.

    상표 높은 MTP [들] 타임스탬프[들] 실제 경과 시간 어려움
    출발점 0 < 0 0 0
    1 < 0 0 1200
    2014년 335 336 4주 – 40분
    2015년 335 8W 4주 − 20분
    2016년 336 8W 4주 D/4
    2017년 336 337 4주 + 5분 D/4
    2018 336 337 4주 + 10분 D/4
    4030 671 672 5주 − 10분 D/4
    4031 671 16W 5주 − 5분 D/4
    4032 672 16W 5주 D/16
    4033 672 673 5주 + 75초 D/16
  4. Zawy는 또한 공격자가 난이도 조정의 마지막 블록 전환에 대해 가능한 가장 작은 타임스탬프와 가장 큰 타임스탬프를 설정할 수 있다고 말했습니다. 이로 인해 복잡한 공칭 경과 시간을 갖는 조정 주기가 다소 어려워집니다. 그러나 난이도 조정 알고리즘은 이를 반주로 간주하고 여전히 난이도를 4배만큼만 증가시킵니다. 합의 정리에서 제안된 새로운 제한 사항(다음 난이도 기간의 첫 번째 블록의 타임스탬프가 이전 기간의 마지막 블록보다 일찍 설정되는 것을 허용하지 않음)을 준수하더라도 공격자는 여전히 1/4 사이를 전환할 수 있습니다. 그리고 1/16. 공격자는 5/4주마다 2개의 난이도 블록을 채굴할 수 있습니다.

    상표 높은 MTP [들] 타임스탬프[들] 실제 경과 시간 어려움
    출발점 0 < 0 0 0
    1 < 0 0 1200
    2014년 335 336 4주 – 40분
    2015년 335 8W 4주 − 20분
    2016년 336 8W 4주 D/4
    2017년 336 337 4주 + 5분 D/4
    2018 336 337 4주 + 10분 D/4
    4030 671 672 5주 − 10분 D/4
    4031 671 16W 5주 − 5분 D/4
    4032 672 16W 5주 D/16
    4033 672 673 5주 + 75초 D/16
    6047 1007 1008 5W 42시간 ~ 75초 D/16
    6048 1008 1009 5와 42시간 D/4
    6049 1008 1009 5w 42h + 5분 D/4
    8063 1343 1344 6주 42시간 − 5분 D/4
    8064 1344 16W 6시 42시 D/16
    8065 1344 16W 6W 42시간 + 75초 D/16
    10079 1679년 1680 6주 84시간 ~ 75초 D/16
    10080 1680 1681년 6시 84시 D/4
    10081 1680 1681년 6주 84시간 + 5분 D/4
    12095 2015년 2016년 7주 84시간 − 5분 D/4
    12096 2016년 16W 7시 84시 D/16
    12097 2016년 16W 7W 84시간 + 75초 D/16
  5. 실제 경과 시간이 16주에 도달하면 공격자는 자신이 비밀리에 채굴한 체인을 노출하고 (가정적으로) 약간 더 높은 누적 작업량을 갖게 되어 공용 네트워크 블록의 16주 거래 활동 중 약 8064개를 무효화하고 재구성하여 대략적인 정보를 얻을 수 있습니다. 39816 블록 보상을 제공하며, 퍼블릭 네트워크의 느린 블록 생성 기간 동안 브로드캐스팅된 충돌하지 않는 모든 트랜잭션을 패키징할 수 있기 때문에 퍼블릭 네트워크보다 더 많은 거래 수수료를 받을 수 있습니다.

Zawy 공격의 변형

어제 이 공격에 대한 설명을 읽은 후 이를 세부적으로 조정해야겠다는 생각이 들었습니다.

주기의 마지막 블록의 타임스탬프를 최소값으로 변경하고 16주 후에 공격자는 대신 주기의 최소값으로 떨어뜨린 다음 두 단계로 미래를 나타내는 타임스탬프를 향해 이동할 수 있습니다.

상표 MTP [들] 타임스탬프 [들] 경과 시간 [초] 어려움
시작 0 < 0 0 0
1 < 0 0 1200
2 < 0 0 2400
3 < 0 0 3600
6 0 1 7200
12 1 2 14400
2014년 335 336 4와트 - 40분
2015년 335 8W 4와트 - 20분
2차 차이 기간 2016년 336 8W 4W D/4
2017년 336 337 4W + 5분 D/4
2018 336 337 4와트 + 10분 D/4
4030 671 672 5W - 10분 D/4
4031 671 16W 5~5분 D/4
3차 차이 기간 4032 672 16W 5와트 D/16
4033 672 673 5와트+75초 D/16
6047 1007 1008 5W 42시간 ~ 75초 D/16
6048 1008 1009 5와 42시간 D/4
6049 1008 1009 5w 42h + 5분 D/4
8063 1343 1344 6주 42시간 − 5분 D/4
8064 1344 8W 6시 42시 D/16
8065 1344 8W 6W 42시간 + 75초 D/16
10079 1679년 1680 6주 84시간 ~ 75초 D/16
10080 1680 16W 6시 84시 D/64
10081 1680 16W 6W 84시간 + 19초 D/64
12095 2015년 2016년 D/64
12096 2016년 2017년 D/16
12097 2016년 2017년 D/16
14111 2351 2352 D/16
14112 2352 8W D/64
14113 2352 8W D/64
16127 2687 2688 D/64
16128 2688 16W D/256
16129 2688 16W D/256
18143 3023 3024 D/256
18144 3024 3025 D/64
18145 3024 3025 D/64

이를 통해 공격자는 더 많은 블록을 생성할 수 있을 뿐만 아니라 난이도를 기하급수적으로 줄일 수 있습니다.

결론적으로

소프트 포크 타임스탬프에 추가 요구 사항을 지정하도록 하는 것이 유용할 수 있습니다. 즉, 난이도 기간 N의 마지막 블록의 타임스탬프가 동일한 기간의 첫 번째 블록의 타임스탬프보다 커야 합니다. 즉, 다음이 필요합니다.

$$n ∈ ℕ; 타임스탬프_{2016×n} < 타임스탬프_{2016×n+2015}$$

나는 위에서 언급한 것처럼 타임스탬프를 수정하지 않는 한 난이도 주기에 걸쳐 타임스탬프를 향상시키기 위한 정직한 채굴 의 필요성(기존 MTP 규칙에 의해 간접적으로 발생하는 최소 1초)이 이 규칙과 충돌한다고 생각하지 않습니다. 그러나 내가 이해한 바에 따르면 그러한 규칙은 이러한 공격 표면을 줄여야 합니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
즐겨찾기에 추가
1
코멘트