O relógio por trás dos commits: medindo uma jornada de trabalho em UTC
O desafio
feedparse-lite está sob três mil pacotes e o autor original, que não o tocava havia dois anos, entregou as chaves a um desconhecido depois de uma série de bons patches. A versão 2.1.0 saiu com um script postinstall que não está no tag do git. Antes de discutir intenção, a thread quer estabelecer algo mais simples: a conta afirma Vancouver, e o horário de trabalho de uma pessoa é muito difícil de falsificar porque não é um campo que alguém preenche. Seis registros públicos estão no quadro. Informe o fuso UTC em que esse mantenedor realmente vive.
O que você vai aprender
- Comparar dois timestamps do mesmo momento registrados em relógios diferentes
- Interpretar o DateTimeOriginal do EXIF como o horário local do relógio, sem offset inerente
- Inferir uma jornada de trabalho e um horário de almoço a partir de um histograma de atividade
- Descartar campos de perfil e registros WHOIS de serviços de privacidade como evidência de localização
- Explicar por que o horário de atividade é mais difícil de falsificar do que qualquer atributo declarado
Habilidades testadas
Pré-requisitos
- O que são UTC e offset de fuso horário
- Leitura de um log de commits
Como funciona
Quase tudo em um perfil é digitado pela pessoa que ele descreve. Localização, nome, empregador, fotografia: são todas declarações, todas de graça. O que essa pessoa não consegue controlar facilmente é quando está acordada, porque a jornada de trabalho vaza para todo timestamp que uma plataforma registra sobre ela, e as plataformas registram em UTC.
A medição precisa de dois relógios mostrando o mesmo momento. Um post carrega um timestamp UTC gerado no servidor. A foto anexada a ele carrega o DateTimeOriginal, que é o relógio local da própria câmera e, em uma câmera que não grava o campo OffsetTime, não tem fuso horário algum associado. A diferença entre os dois é o offset, e ela é precisa na casa dos minutos entre o disparo do obturador e o upload.
Depois, confira. Um offset correto transforma um espalhamento de timestamps UTC em algo reconhecivelmente humano: um início, um fim, um intervalo onde entra o almoço e nada nos fins de semana. Um offset errado transforma isso em alguém que diz bom dia às onze da noite. Neste caso, um dia inteiro de diferença é o que denuncia, e é por isso que a thread pediu um número em vez de um país. O número é o que a evidência sustenta; o país é um palpite construído em cima disso.
Erros comuns
- Responder UTC-7. Esse é o fuso de Vancouver em agosto, e é a alegação sob investigação, não uma conclusão.
- Confiar no endereço do WHOIS. O registrante é um serviço de privacidade. O endereço é do serviço, e ele aparece em milhares de domínios sem relação nenhuma.
- Ler o timestamp da foto como UTC. O
DateTimeOriginalé o relógio local da câmera. O registro indica que nenhum campo de offset está presente. - Usar só o log de commits. Ele reduz a resposta a alguns offsets plausíveis. Cruzar o post com a foto fecha a resposta com exatidão.
- Responder com um país. Vários países compartilham UTC+3, e a evidência não escolhe entre eles.
Como se proteger
Para um projeto que está transferindo direitos de commit ou de publicação, identidade é um problema de processo.
- Não conceda direitos de publicação só com base em bons patches. Uma conversa por voz ou vídeo, uma referência de alguém conhecido, ou um período de commits revisados sem acesso a release custam pouco e quebram esse padrão.
- Exija que dois mantenedores aprovem cada release, e publique com proveniência para que o tarball possa ser conferido contra o tag do qual ele afirma vir. Um script postinstall ausente do tag do git nunca deveria ter chegado a um registry.
- Preste atenção ao formato, não à pessoa: um pacote popular dormente, um autor inativo, uma conta nova, status de confiança concedido rápido demais, depois uma release que difere do código-fonte.
- Para quem consome o pacote, fixe versões, instale com scripts de lifecycle desativados, e mantenha um atraso entre o lançamento de uma release e sua adoção. A maioria dessas tomadas de controle é descoberta em poucos dias por outra pessoa.