
EIP-3074 이후에 악성 서명으로 인해 이더리움 계정 자금이 소진될 수 있나요?
작성자: lightclients
번역: MetaCat

EIP-3074 이후 잘못된 서명 하나로 인해 이더리움 계정의 잔액이 완전히 소진될 수 있습니다.
네, 사실입니다.
EIP-3074 공동 저자가 여기 있습니다. 일이 더 악화되기 전에 이 우려를 일단 진정시키고자 합니다.
첫째, 현재 EIP-3074과 같은 형식의 무접두사 데이터 서명을 지원하는 지갑은 듣지 못했습니다. 즉, 현재 어떤 지갑도 EIP-3074을 지원하지 않습니다. 당신이 몇 개의 대시보드를 탐색하거나 고급 기능을 얼마나 많이 열든 상관없이 현재 EIP-3074 메시지를 서명할 수 없습니다.
dapp에 '로그인'하기 위해 서명하는 메시지는 EIP-191 기반으로, EIP-3074과는 완전히 다른 표준을 사용합니다. 이것은 아래와 같은 데이터를 서명하는 메시지에 추가합니다:
0x19 <0x45 (E)> <thereum Signed Message:\n" + len(message)> <data to sign
그래서 dapp 로그인용 메시지를 서명하는 사용자를 속여 실제 유효한 이더리움 트랜잭션을 서명하게 만드는 것은 불가능합니다.
트랜잭션은 단일 바이트 값으로 접두사를 붙입니다:
0x01 - 2930 tx
0x02 - 1559 tx
0x03 - 4844 tx
자세한 정보는 다음에서 확인하세요: https://github.com/ethereum/execution-specs/tree/master/lists/signature-types
EIP-3074은 접두사 0x04 사용을 계획하고 있습니다. 이를 통해 이더리움 내 모든 기타 유형의 서명 가능 데이터와의 모호성을 제거할 수 있습니다. 지갑은 사용자가 이러한 메시지를 서명할 수 있도록 적극적으로 선택해야 합니다.
지갑이 EIP-3074을 통합하는 방식에 따라 사용자가 더욱 쉽게 악용당할 위험이 존재할 수 있습니다. 이를 이해하려면 먼저 EIP-3074 서명 작동 방식을 확실히 이해해야 합니다.
서명을 위한 인증 메시지는 다음과 같은 필드를 포함합니다. 중요한 점은 호출자 주소(invoker address)를 포함한다는 것입니다. AUTH는 오직 이 주소에서 온 서명만을 유효하다고 간주합니다.

잔액을 소진시키기 위해서는 다음 두 가지 조건을 모두 충족해야 합니다:
1) 지갑이 사용자가 임의의 호출자 주소(invoker address)로 서명할 수 있도록 허용해야 하며,
2) 사용자가 호출자(invoker)가 신뢰할 수 있는지 검증하지 않아야 합니다.
즉, 사용자가 위 두 조건 중 어느 하나라도 실행하지 않으면 문제가 발생하지 않습니다.
우리는 지갑 소프트웨어가 이렇게 이해하기를 바랍니다: EIP-3074 호출자는 스마트 계약보다는 지갑 소프트웨어 코드의 확장과 더 유사하다. 지갑은 사용자가 임의의 코드를 자유롭게 실행하고 자신의 개인키(pk)에 접근하는 것을 허용하지 않습니다. 마찬가지로, 사용자가 자신의 이더리움 계정을 임의로 위임(delegate)하도록 허용해서도 안 됩니다.
따라서 지갑 소프트웨어가 EIP-3074을 안전하지 않게 통합하고, 또한 사용자가 상호작용 중인 호출자를 검증하지 않는다면, 악의적인 호출자에게 위임될 수 있습니다. 그러나 여전히 EOA에서 단일 트랜잭션을 보내어 이를 취소할 수 있습니다. 그러면 진행 중인 모든 AUTH 서명이 취소됩니다.
적어도 지갑 소프트웨어는 EIP-3074 메시지 서명을 비밀키를 내보내는 것과 동등한 중요한 작업으로 다뤄야 합니다.
지갑이 3074을 안전하게 통합한다고 가정하더라도 계정이 도난당할 가능성은 여전히 존재합니다. 이것은 일괄 거래(batch transaction)의 기본적인 특성입니다. 여러 작업을 쉽게 보낼 수 있게 해주는 것처럼, 공격자가 당신을 속여 자산을 여러 건 보내도록 유도할 수도 있기 때문입니다.
지갑 소프트웨어는 당신이 서명하려는 각각의 작업을 명확하게 표시해야 합니다. 이를 통해 '나는 한 번의 거래만 하려 했지만, 이 서명 요청은 나에게 십수 차례의 거래도 하게 만들고 있다'는 것을 쉽게 알아챌 수 있습니다. 맹목적 서명(blind signing)을 통해 일괄 처리하면 이를 감지할 수 없습니다.
네, EIP-3074은 지갑에 매우 큰 신뢰를 둡니다. 하지만 우리는 이미 우리의 비밀키를 안전하게 맡김으로써 지갑을 신뢰하고 있습니다! 그 이상의 신뢰는 없습니다.
EIP-3074은 안전하게 통합하고 사용할 수 있습니다. 어떤 지갑이라도 이를 어떻게 수행해야 할지 궁금한 점이 있다면 언제든지 저희에게 연락 주세요. EIP-3074의 공동 저자로서, 우리는 현재 이 표준의 다음 단계 발전을 최선으로 돕는 방법을 고민하고 있습니다.
지난 몇 년간 우리는 이를 어떻게 사용하고 남용할 수 있을지에 대한 다양한 시나리오를 개발하는 데 많은 시간을 보냈습니다. 이제 이러한 아이디어들이 실제로 구현되기 시작한 것이 기쁩니다. 그러나 이것이 가장 어려운 부분이라는 것도 잘 알고 있습니다.
EIP-3074 이후 잘못된 서명 하나로 인해 이더리움 계정 잔액이 소진될 수 있다는 우려를 요약하자면:
-
현재 지갑들은 새로운 형식을 따르는 EIP-3074 유형의 서명을 지원하지 않습니다.
-
EIP-3074 서명 내 호출자(invoker) 필드는 매우 중요합니다. 신뢰할 수 없는 호출자는 귀하의 자금을 훔칠 수 있습니다.
-
지갑은 호출자 주소가 신뢰할 수 있음을 보장해야 합니다. 이것은 현재 지갑이 임의의 코드 실행을 방지하는 방식과 유사합니다.
-
EIP-3074의 일괄 거래는 여전히 악의적인 행위자가 자산 이체 거래를 서명하도록 속이는 세계를 열어줍니다. 지갑은 EIP-3074 메시지를 서명할 때 무엇이 일어나는지 명확하게 표시해야 합니다.
-
네, 우리는 지갑에 대해 매우 높은 신뢰를 두고 있지만, 사용자들은 이미 비밀키를 지갑에 맡겼으며, 이는 최고 수준의 신뢰입니다.

EIP-3074과 EIP-4337
EIP-3074은 계정 추상화(Account Abstraction) 제공업체에게 매우 긍정적인 일입니다. 고객들에게 큰 이익이 되기 때문입니다.
-
ERC-4337은 신규 사용자를 암호화 세계로 유입하는 최고의 방법입니다.
-
EIP-3074은 기존 사용자를 스마트 계정으로 유입하는 최고의 방법입니다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News











