ESP32-C3 광고 차단기

1 hour ago 3

2달러 ESP32-C3에서 PSRAM 없이 동작하는 Pi-hole 방식의 DNS 광고 차단기로, 차단 목록을 RAM 대신 플래시에 저장해 RAM 사용량을 약 50KB로 줄임 도메인을 정렬된 40비트 해시로 저장하고 이진 탐색함으로써, 14만 개 이상의 도메인을 약 0.7MB에 담고 WiFi 왕복 시간을 포함해 약 10ms에 조회함 차단 도메인과 그 하위 도메인에는 0.0.0.0을 반환하고, 나머지 질의는 상위 DNS 리졸버로 전달함 웹 대시보드에서 차단 목록과 펌웨어를 무선 갱신할 수 있지만, 4MB 플래시에서 펌웨어 OTA를 사용하면 차단 목록 용량이 약 25만 도메인으로 제한됨 상태 변경 API와 네트워크 OTA에 인증을 적용했으나, 평문 HTTP를 사용하므로 LAN 트래픽을 도청할 수 있는 공격자에게 인증 정보를 보호하지 못함 플래시에 해시를 저장하는 DNS 차단 구조 esp32-c3-adblock은 PSRAM 없는 칩을 위한 플래시 해시 최적화에 집중한 독립적인 구현임 DNS 질의에서 도메인을 추출하고, 해당 도메인과 상위 도메인 접미사의 FNV-1a 해시를 계산해 플래시의 정렬된 테이블을 이진 탐색함 일치하면 0.0.0.0으로 응답해 차단함 일치하지 않으면 상위 리졸버에 질의를 전달하고 응답을 중계함 도메인 문자열을 RAM에 적재하는 방식과 달리, 도메인마다 5바이트 해시만 플래시에 저장함 14만 1,000개 도메인은 문자열 방식에서 약 2.5MB RAM을 차지하지만, 이 방식에서는 플래시 0.67MB를 사용함 RAM 사용량은 약 50KB이며, 조회당 약 18회의 플래시 읽기와 WiFi 왕복 시간을 합쳐 약 10ms가 걸림 하드웨어 비용 비교는 PSRAM 탑재 ESP32 약 8달러, PSRAM 없는 ESP32-C3 약 2달러임 40비트 해시의 용량과 충돌 절충 40비트는 플래시 용량과 해시 충돌 사이의 절충점임 생일 문제에 따른 충돌 규모는 14만 1,000개 도메인에서 약 0건, 53만 7,000개에서 약 1건이며, 충돌하면 차단 대상이 아닌 도메인도 차단될 수 있음 32비트는 플래시를 20% 절약하지만 25만 개 도메인에서 약 7건의 충돌이 발생함 64비트는 도메인당 3바이트를 추가로 사용함 이 구조는 더 큰 칩에도 적용 가능함 플래시 16MB를 갖춘 ESP32-S3에서는 약 270만 도메인을 저장할 수 있음 문자열을 PSRAM 8MB에 저장하는 방식의 약 46만 6,000개와 대비됨 하드웨어와 기...

Read Entire Article