Перейти до вмісту

Журнал аудиту

Журнал аудиту, за адресою /audit, — це реєстр. Кожна подія несе SHA-256-хеш свого вмісту та хеш попередньої події, а потім підпис Ed25519 від машини, яка її записала.

Показано обидва стовпці хешів

Section titled “Показано обидва стовпці хешів”

Журнал стверджує, що prev кожного рядка дорівнює hash рядка під ним, і показ обох дозволяє перевірити це твердження на око. Одна зелена галочка, яка завжди каже verified, нікого нічого не навчить, і їй неможливо не довіряти.

  • ⟳ Verify перечитує сам журнал — не індекс — і заново проходить ланцюжок. Перевірка похідної копії відносно самої себе нічого не довела б.
  • Rebuild викидає пошуковий індекс і програє журнал у новий. Безпечно в будь-який момент.
  • Стовпець sig позначає кожну подію, чий підпис не відповідає її хешу.

Відредагуйте один рядок журналу вручну — і кожна подія після нього не пройде перевірку, бо кожен хеш охоплює попередній. Видалення хвоста — єдина правка, якої ланцюжок не бачить, — саме тому журнал реплікується, а не довіряється одній машині.

Ефемерні події — присутність, набір тексту (види 9000–9999) — ніколи не записуються. Серцебиття кожні п’ятнадцять секунд на трьох машинах — це чверть мільйона подій на рік, яких ніхто ніколи не прочитає.

Terminal window
curl -s localhost:3401/api/events/verify | jq
tail -f ~/.erebros-t/events/log.jsonl

Ланцюжок кожної машини перевіряється окремо, бо кожен із них — окремий файл; ok: false називає порядковий номер, де стався розрив. Якщо ланцюжок зламано, хтось редагував log.jsonl — відновіть його з резервної копії; не лагодьте вручну.