Tamper protection
General behavior
- Low or medium risk logs are batched. Only high risk logs are sent individually.
- Pings are logged locally every 60 seconds to handle service stopping without a chance to write a stop marker to disk.
Specific events handled
- Suspend / wake: Zero-risk logs, there will be no screenshots taken between suspend and wake.
- Shutdown / startup: Zero-risk logs, there will be no screenshots taken between shutdown and startup. These will be wrapped by primary service stop/start logs, also zero-risk because we detect it was part of a shutdown cycle.
- Service stopped inside app (e.g.
virtue daemon stop on Linux): “Are you sure?” question, then high risk log and marker indicating it was a user event so another high risk log is not generated on startup.
- Service stopped outside app / Service killed with cleanup allowed (e.g.
systemctl --user stop virtue.service / kill <service pid> on Linux): 0.5 risk log, unknown source of stopping. Will have a stop marker which will be read on startup.
- Service killed forcefully (e.g.
kill -9 <service pid>): No alert can be sent on service stopping. Ping timestamps determine alert level on startup.
- Service started inside / outside app (e.g.
virtue daemon start / systemctl --user start virtue.service on Linux): If stop marker present, zero-risk log if within 10 seconds. If no marker, zero-risk log if within 70 seconds of the last ping. Otherwise sends a high risk log.
- Login: Zero-risk log.
- Logout: “Are you sure?” question, then high risk log.