최근 깃허브(GitHub)에 공개된 '홉섬(Hopsum)' 프로젝트는 라우터가 만료된 패킷에 대해 보내는 ICMP 시간 초과(Time Exceeded) 메시지를 활용해 덧셈, 뺄셈, 곱셈 연산을 수행하도록 하는 독특한 방법을 제시했습니다. 이는 라우터가 패킷 만료를 알리기 위해 의무적으로 보내는 에러 메시지의 부작용을 이용한 것으로, 라우터가 직접 연산을 수행하도록 설계되지 않았음에도 불구하고 특정 데이터를 계산하게 만드는 '기생 컴퓨팅(parasitic computing)'의 한 형태입니다.
홉섬의 원리는 IPv4 헤더와 ICMP 체크섬(checksum) 계산 방식에 기반합니다. TTL(Time To Live)이 0이 되어 라우터가 패킷을 폐기할 때, 라우터는 ICMP 시간 초과 메시지를 보냅니다. 이 메시지에는 원래 IPv4 헤더와 페이로드(payload)의 일부가 포함되며, ICMP 체크섬은 이 모든 데이터를 기반으로 계산됩니다. 홉섬은 사용자가 페이로드에 특정 16비트 워드(a, b, c)를 조작하여 삽입하면, 라우터가 계산하는 체크섬 필드에 이 워드들의 1의 보수 덧셈 결과(~(a ⊞ b ⊞ c))가 담겨 돌아온다는 점을 발견했습니다. 이 결과를 다시 입력 값으로 활용하여 여러 번의 왕복(round trip)을 통해 덧셈, 뺄셈, 심지어 곱셈까지 구현하는 방식입니다. 라우터는 실제 곱셈을 하는 것이 아니라, 페이로드의 워드들을 합산하고 그 결과를 보수 처리하는 기본 연산만 수행합니다.
이 기술은 라우터가 CPU 한 번의 명령으로 처리할 수 있는 연산을 네트워크 왕복 시간(RTT)을 소모하며 수행하므로 실용적인 측면에서는 비효율적입니다. 하지만 이 프로젝트의 진정한 의미는 네트워크 장비의 '의도치 않은' 컴퓨팅 능력을 발견하고 활용했다는 점에 있습니다. 이는 네트워크 프로토콜 설계의 미묘한 부분과 그로 인해 발생할 수 있는 예상치 못한 상호작용을 탐구하는 좋은 사례이며, 보안 연구나 네트워크 진단 도구 개발에 새로운 영감을 줄 수 있습니다. 또한, IPv6에서는 IPv4 헤더 체크섬 필드가 없어 이 특정 방식은 적용되지 않지만, 다른 프로토콜의 숨겨진 잠재력을 탐색하는 계기가 될 수 있습니다.