Perito Tacho: el programari pericial on les dades de l'expedient no surten de l'ordinador

El vam construir amb zero peticions de xarxa, perquè hi passen el DNI d'un conductor i material probatori sota cadena de custòdia. El que vam aprendre serveix per a qualsevol web que gestioni dades d'altres persones.

Hi ha un tipus de requisit que gairebé mai no apareix en un encàrrec de programari: que el programa no es connecti a internet. Ni una sola vegada. Ni per comprovar si hi ha actualitzacions.

Ens ho vam imposar nosaltres mateixos a Perito Tacho, l’eina amb què Pedro Mulero treballa els seus expedients pericials. És d’ús intern: no està a la venda ni ho estarà. I va resultar que gairebé tot el que ens va obligar a pensar serveix per a una web comercial normal i corrent. D’això va aquesta entrada: del que s’aprèn quan no et pots permetre que una dada surti de l’ordinador.

Què hi passa per dins

Un peritatge de tacògraf no gestiona «dades d’usuari». Gestiona el nom i el DNI d’un conductor concret, l’hora exacta en què va engegar el camió cada dia dels darrers dos mesos, on va creuar una frontera i de vegades el seu informe mèdic. El fitxer descarregat d’una targeta de conductor és, a més, material probatori: s’aporta a un procediment judicial amb una cadena de custòdia al darrere.

Que aquest binari surti de l’ordinador no és un detall de configuració. És un incident.

Plantejat així, la pregunta deixa de ser «quantes peticions fem?» i passa a ser «per què en fem cap?». Que és una pregunta molt millor, també per a una web.

Què vol dir «sense xarxa» quan es diu de debò

El fàcil és escriure «l’aplicació és local» en un fullet. El que vam haver de treure de veritat:

Cap CDN. Ni per a una llibreria de gràfics, ni per a una icona. Una etiqueta que apunta a un domini aliè és una petició des de l’ordinador de l’usuari cap a un tercer, amb la seva adreça IP i l’hora. Tot es va descarregar una vegada, es va revisar, es va desar al repositori.

Cap font remota. Les tipografies de Google són el cas més habitual i el més invisible: cada visita a una pàgina amb una font carregada des de fonts.googleapis.com és una connexió del navegador d’aquella persona a Google, abans que la pàgina s’acabi de dibuixar.

Cap telemetria. Ni anònima, ni «per millorar el producte».

Cap actualització automàtica. Aquesta costa més del que sembla, perquè implica que actualitzar una dependència és una decisió que algú pren, revisa i signa. És més feina. També és l’única manera de saber quin codi s’està executant.

L’efecte secundari és curiós: com que no es pot tirar de res extern, el programa pesa menys i arrenca abans. La privacitat i el rendiment solen anar de bracet, encara que es venguin com a coses diferents.

Les dues excepcions, per escrit

Dir «zero connexions» i després fer-ne una és la manera més ràpida que la norma deixi de valer. Per això hi ha exactament dues excepcions, cadascuna escrita amb el seu abast, la seva data d’autorització i el seu límit. El que no hi sigui, no surt.

La primera: el segell de temps. Quan s’emet un document, la seva empremta digital (un SHA-256, seixanta-quatre caràcters) viatja a una autoritat de segellat que retorna un segell signat. Surt l’empremta. No surt el document, ni l’expedient, ni el nom del client, ni una sola dada del cas. Una empremta no es pot revertir: d’aquests seixanta-quatre caràcters no se’n reconstrueix res.

La segona: la captura segellada d’una pàgina web. Serveix per deixar constància que un anunci de venda deia el que deia abans que el venedor l’editi. I aquí ve la part incòmoda, que és justament la que cal escriure: en aquesta sí que surt l’adreça completa, perquè l’autoritat de segellat ha de visitar la pàgina. Si aquesta adreça porta un identificador a la query, això surt de l’ordinador.

Per això aquesta segona excepció només es llança a mà, des de la seva pròpia ordre, una adreça cada vegada. No és automàtica, no va encadenada a l’emissió de cap document, avisa en pantalla abans d’enviar res i demana conformitat. Una adreça amb usuari o contrasenya a dins es rebutja sense preguntar.

La lliçó, que és la part aprofitable: una excepció que no està escrita no és una excepció, és una porta oberta que ningú no recorda haver deixat així.

Què prova un segell de temps. I què no

Convé ser precisos, perquè en això s’exagera molt.

L’article 41.1 del Reglament (UE) 910/2014, el que anomenen eIDAS, impedeix negar l’admissibilitat com a prova a un segell de temps electrònic pel fet de no ser qualificat. Però el 41.2 reserva la presumpció d’exactitud de la data i d’integritat de les dades als segells qualificats, que són els emesos per un prestador sotmès a supervisió.

Traduït: un segell d’una autoritat gratuïta és admissible i prova que un document amb aquesta empremta exacta existia en aquella data i que no ha canviat des d’aleshores. No té la presumpció legal del segell qualificat. En un judici sol ser suficient. Dir que «està certificat notarialment» seria mentida.

Preferim la frase llarga i certa a la curta i venedora. Aquí també.

Reproduïble o no val

L’altra norma és que el mateix fitxer d’entrada produeixi el mateix resultat, byte a byte, en execucions diferents i en ordinadors diferents. Això prohibeix dues coses dins del motor de càlcul: la data del sistema i els nombres aleatoris.

Sembla una mania de programador fins que es pensa en l’escena: el pèrit contrari agafa el mateix fitxer, el processa amb la mateixa eina i li surt una altra cosa. Un dictamen que no es pot reproduir no es pot defensar. Per això les marques de temps s’injecten des de fora, mai no es llegeixen des de dins.

Hi ha un equivalent web d’això, menys dramàtic però real: si la teva web es construeix cada vegada d’una manera, ningú no pot saber què es va publicar dimarts passat.

Què té a veure amb la teva web

Més del que sembla, perquè la pregunta de fons és la mateixa: saps quines dades dels teus visitants surten de la teva web cap a tercers?

Una pàgina normal de pime sol enviar, sense que ningú ho hagi decidit conscientment:

  • La IP de cada visitant a Google, per les fonts tipogràfiques.
  • La IP, la pàgina visitada i l’hora a una eina d’analítica, sovint abans que el visitant toqui el bàner de galetes.
  • Les mateixes dades a Facebook, si algú va enganxar un píxel fa tres anys per a una campanya que ja no existeix.
  • Tot l’anterior una altra vegada a YouTube si hi ha un vídeo incrustat. També a Google Maps si hi ha un mapa.

Un mapa de contacte i un vídeo de presentació poden suposar més connexions a tercers que tota la resta de la web junta.

L’article 5.1.c del RGPD exigeix que les dades personals siguin «adequades, pertinents i limitades al que és necessari». És difícil sostenir que enviar la IP d’algú a tres empreses diferents abans que hagi llegit el teu telèfon hi encaixi. I el 5.2 hi afegeix la part que s’oblida: el responsable no només ha de complir, ha de poder demostrar-ho.

Gairebé ningú no pot, perquè gairebé ningú no sap què carrega la seva pròpia web.

Com ho fem en el que lliurem

Sense heroïcitats i sense renunciar a res visible:

Les fonts se serveixen des del teu propi domini. Es descarreguen una vegada, es pugen amb la web, s’ha acabat la connexió a Google. El visitant veu exactament la mateixa tipografia. Com que viatja amb la resta de la pàgina, sol carregar abans.

Res de tercers abans del consentiment. L’analítica, el mapa i el vídeo no es carreguen fins que la persona accepta. Si no accepta, el mapa se substitueix per una adreça i un enllaç, que per arribar al teu taller funciona igual de bé.

Cada script extern s’ha de justificar. Si ningú no recorda per què es va posar, es treu. És sorprenent la quantitat de webs que arrosseguen píxels de campanyes acabades fa anys.

El que es diu a la política de privacitat és el que passa de veritat. Un document legal que enumera proveïdors que ja no fas servir és pitjor que no tenir-lo: demostra que ningú no se l’ha mirat. Sobre això vam escriure en una altra entrada.

Això no converteix una web en una fortalesa. La converteix en una web que saps explicar, que és el que et demanaran el dia que algú ho pregunti.

Per què ho expliquem

Perquè és la nostra manera de treballar i convé que es vegi abans de contractar, no després.

Tarraco App Lab va néixer d’un gabinet pericial, no d’una agència de màrqueting. Això explica aquestes manies millor que qualsevol declaració de principis: quan has hagut de defensar una dada davant d’un jutge, se te’n van les ganes de posar en una web coses que no saps explicar.

Si vols veure la resta del que fem, ho tens tot reunit al contenidor d’enllaços. I si el teu món és el transport, Perito Camión és la part pericial, Carretera Nacional publica informació laboral del sector sense vendre res. Per acabar, Oriana Mail és el gestor de correu que fem servir cada dia, construït amb les mateixes normes que descriu aquesta entrada.

I si tens una web i no saps què està enviant per aquí i per allà, és una pregunta raonable per fer-nos.

← Torna al blog

Comentaris