출처: 메타캣
EIP-3074 공동 저자! 일이 더 커지기 전에 이 걱정을 잠시 내려놓겠습니다.
먼저, 현재 프리픽스되지 않은 데이터 서명을 지원하는 지갑은 제가 아는 한 없습니다. 즉, 아무리 많은 제어판을 찾아보거나 고급 기능을 켜도 현재 EIP-3074를 지원하는 지갑은 없습니다. 현재 EIP-3074 메시지에 서명할 수 없습니다.
EIP-191에 기반한 EIP-3074와는 완전히 다른 표준을 사용하여 "로그인" 디앱 메시지에 서명하고 있습니다. 이렇게 하면 서명된 메시지에 다음 데이터가 추가됩니다.
0x19 <0x45 (E)< <거기서 서명된 메시지:\n" + len(message)> <서명할 데이터
이런 이유로 디앱에 로그인한 사람을 속여서 실제로 유효한 이더 트랜잭션에 서명하는 것은 불가능합니다.
트랜잭션은 단일 바이트 값으로 접두사가 붙습니다:
0x01 - 2930 tx
0x02 - 1559 tx
0x03 - 4844 tx
자세한 내용은 https://github.com/ethereum/execution-specs/tree/master 참조. /목록/서명 유형
EIP-3074는 접두사 0x04를 사용할 계획입니다. 이렇게 하면 이더넷의 다른 모든 서명 가능한 데이터 유형과 구분할 수 있습니다. 지갑은 사용자가 이러한 메시지에 서명할 수 있도록 적극적으로 선택해야 합니다.
지갑이 EIP-3074를 통합하는 특정 방식에 따라 사용자가 악용에 더 취약한 상황을 만들 수 있습니다. 이를 이해하려면 EIP-3074 서명이 어떻게 작동하는지 이해해야 합니다.
서명을 구축하는 인증 메시지에는 다음과 같은 필드가 있습니다. 중요한 것은 발신자 주소가 포함되어 있다는 것입니다. 이 주소는 AUTH가 서명을 유효한 것으로 간주하는 유일한 주소입니다.
잔액이 부족해질 계정의 경우 다음 두 가지를 모두 충족해야 합니다:
<1) 지갑에서 사용자가 모든 발신자 주소에 서명할 수 있어야 하고,
2) 사용자가 발신자를 신뢰할 수 있는지 확인하지 않아야 합니다.
사용자가 이 중 하나를 문제 없이 실행한다는 의미입니다.
우리는 지갑 소프트웨어가 EIP-3074 인보커가 계약이라기보다는 지갑 소프트웨어 코드의 확장에 가깝다는 점을 이해하길 바랍니다. 지갑은 사용자가 임의의 코드를 자유롭게 실행하고 개인키(PK)에 액세스하도록 허용해서는 안 되며, 마찬가지로 사용자가 자신의 이더 계정을 임의로 위임하는 것을 허용해서는 안 됩니다.
그 결과 지갑 소프트웨어가 EIP-3074를 안전하게 통합하지 않으면 사용자가 상호 작용하는 발신자를 인증하지 않으면 악의적인 발신자에게 위임할 수 있습니다. 그러나 EOA에서 한 번의 TX를 보내면 이를 취소할 수 있습니다. 이렇게 하면 모든 "진행 중인" AUTH 서명이 취소됩니다.
지갑 소프트웨어는 최소한 개인 키를 내보내는 것만큼이나 EIP-3074 메시지에 서명하는 것이 큰 문제가 되지 않도록 해야 합니다.
계정은 여전히 도난당할 수 있습니다(지갑이 3074를 안전하게 통합한다고 가정할 경우). 이는 대량 거래의 기본 속성입니다. 공격자가 사용자를 속여 그들이 통제하는 주소로 자산을 일괄적으로 보내도록 하는 것처럼, 대량 거래는 여러 작업을 쉽게 보낼 수 있게 해줍니다.
월렛 소프트웨어는 서명하는 각 작업을 명확하게 표시해야 합니다. 그래야 "한 번만 거래하려고 했는데 이 서명 요청으로 인해 수십 번 더 거래하게 되었다"는 사실을 쉽게 알아차릴 수 있습니다. 블라인드 서명을 통해 배치가 수행되는 경우 이를 감지할 수 없습니다.
예, EIP-3074는 지갑을 많이 신뢰합니다. 하지만 저희는 이미 개인 키로 안전하게 신뢰하고 있습니다! 더 높은 수준의 신뢰는 없습니다.
EIP-3074를 안전하게 통합하여 사용할 수 있으며, 이 방법에 대해 궁금한 점이 있는 지갑이 있다면 언제든지 저희에게 문의해 주세요. 저희는 EIP-3074의 저자로서 현재 표준 개발의 다음 단계에 가장 효과적으로 도움을 드릴 수 있는 방법을 고민하고 있습니다.
지난 몇 년 동안 저희는 이 표준이 어떻게 사용되고 악용될 수 있는지에 대한 가정 시나리오를 개발하는 데 많은 시간을 투자해 왔습니다. 이러한 아이디어가 실제 적용되기 시작했다는 사실에 매우 기쁩니다. 하지만 이것이 가장 어려운 부분이라는 것도 잘 알고 있습니다.
단 한 번의 잘못된 서명으로 EIP-3074 이후 이더 계정 잔액이 고갈될 수 있다는 우려를 요약하면:
- 현재 지갑은 EIP를 지원하지 않습니다. 3074 유형 서명을 지원하지 않으며, 새로운 형식을 따릅니다.
- EIP-3074 서명의 발신자 필드는 매우 중요합니다. 나쁜 발신자가 돈을 훔칠 수 있습니다.
- 지갑은 발신자 주소가 신뢰할 수 있는지 확인해야 합니다. 이는 현재 지갑이 임의 코드의 실행을 방지하는 방식과 유사합니다.
- EIP-3074의 대량 거래는 악의적인 공격자가 사용자를 속여 자산을 전송하는 거래에 서명하도록 할 수 있는 가능성을 열어두고 있습니다. 지갑은 EIP-3074 메시지에 서명할 때 어떤 일이 발생하는지 명확하게 보여줘야 합니다.
- 네, 지갑에 대한 신뢰도는 높지만 사용자가 지갑에 개인키를 맡긴다는 것은 가장 높은 수준의 신뢰입니다.
EIP-3074 vs EIP-4337> p>
EIP-3074는 고객에게 매우 유익하므로 계정 추상화 제공업체에 매우 유용합니다.
- ERC-4337은 신규 사용자에게 암호화폐를 소개할 수 있는 가장 좋은 방법입니다.
- EIP-3074는 기존 사용자에게 스마트 계정을 소개하는 가장 좋은 방법입니다.
원본 링크: https://twitter.com/lightclients/status/1778823652584120497
EIP-3074는 다음 이더넷 하드 포크에서 출시될 예정입니다.