Skip to content
francofarnediPublic

About

Filigrana per copie di documenti d'identità, tutto nel browser, nessun upload

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Sigillo

Filigrana per le copie dei documenti d'identità, ispirata all'articolo Copia della carta d'identità? Anche no e a FiligraneFacile.

Tutto gira nel browser: niente server, niente upload, niente dipendenze di rete. La CSP in index.html (connect-src 'none') impedisce alla pagina qualsiasi richiesta in uscita.

Avvio

Scarica lo zip dell'ultima release, estrailo e fai doppio clic su index.html (Chrome, Edge, Firefox, Safari). Funziona anche offline.

Oppure provala online, senza scaricare nulla: francofarnedi.github.io/sigillo. Anche la versione online gira tutta nel tuo browser: nessun file viene caricato.

Con Docker

Utile per ospitare Sigillo su un server aziendale, su un NAS o su un PC della rete di casa, così lo usano anche colleghi e famiglia. L'immagine è pubblicata su GitHub Container Registry: ghcr.io/francofarnedi/sigillo, per computer Intel/AMD e ARM (Mac Apple Silicon, Raspberry Pi). Non serve un account GitHub per scaricarla.

1. Installa Docker (una volta sola): Docker Desktop su Mac e Windows, oppure Docker Engine su Linux.

2. Scarica l'immagine di una versione precisa (consigliato) o l'ultima:

docker pull ghcr.io/francofarnedi/sigillo:0.2.0

3. Avvia l'app:

docker run -d --name sigillo -p 8080:8080 --read-only --tmpfs /tmp --restart unless-stopped ghcr.io/francofarnedi/sigillo:0.2.0

4. Aprila nel browser: http://localhost:8080 (dagli altri PC della rete: http://<indirizzo-del-server>:8080).

Comandi utili:

Cosa Comando
Fermarla docker stop sigillo
Riavviarla docker start sigillo
Vedere se è attiva docker ps --filter name=sigillo
Aggiornarla a una nuova versione docker rm -f sigillo, poi ripeti i punti 2 e 3 con il nuovo numero
Usare un'altra porta (es. 9000) sostituisci -p 8080:8080 con -p 9000:8080

Con Docker Compose: scarica docker-compose.yml in una cartella e lancia docker compose up -d. Per aggiornare: docker compose pull && docker compose up -d.

Tag disponibili: 0.2.0 (versione esatta), 0.2 (ultima correzione della 0.2), latest (ultimo commit su main).

Dai sorgenti: docker build -t sigillo . e poi docker run -d -p 8080:8080 sigillo.

L'immagine serve solo file statici con nginx. Gira senza root e non tiene log degli accessi, e la CSP blocca ogni richiesta in uscita. Anche qui i documenti vengono elaborati nel browser di chi usa l'app e non arrivano mai al server: il container non ha niente da conservare. Nota: se lo esponi fuori dalla tua rete, mettilo dietro HTTPS (per esempio un reverse proxy come Caddy o Traefik).

Cosa fa

  1. Documento: carica JPG/PNG/WebP/HEIC (HEIC solo su Safari) o PDF, con scelta della pagina.
  2. Ritaglio: selezioni solo il dettaglio che serve (proporzioni libere, tessera ID-1, A4) e puoi ruotare.
  3. Filigrana: testo a mosaico diagonale con destinatario, finalità, data e codice unico SG-XXXXXX, più linee di sicurezza ondulate e un sigillo rotondo con il codice. Puoi regolare colore, opacità, dimensione, densità e angolo.
  4. Protezioni: bianco e nero; coperture a nero pieno o pixelate sui dati non richiesti; marca invisibile con il codice nascosto nei pixel.
  5. Esporta: PNG, JPG o PDF, sempre senza EXIF. Ogni copia entra nel registro e riceve subito un nuovo codice.
  6. Registro: elenco delle copie rilasciate (destinatario, finalità, data, codice, SHA-256, miniatura), salvato in localStorage, con esportazione e importazione in JSON.
  7. Verifica: carichi una copia ritrovata e Sigillo ti dice a chi l'avevi data. Confronta prima l'impronta SHA-256 (file identico), poi cerca la marca invisibile; in alternativa puoi cercare il codice a mano.
  8. Messaggio GDPR (artt. 13, 15, 17) già compilato, da copiare nella mail.

Marca invisibile

108 bit: 16 di sincronismo e 2 copie di (30 bit di codice + CRC-16). Sono disposti in una griglia 12×9 di celle 4×4 px ripetuta su tutta l'immagine, con una variazione di luminosità di ±4. In lettura il segnale di tutte le ripetizioni si somma, quindi:

  • regge a screenshot, ritagli parziali, nuovi salvataggi in PNG, JPG fino a qualità 70 circa e screenshot su schermo retina (2×);
  • non regge a ridimensionamenti non interi, foto dello schermo o stampa e scansione.

Prima si confronta per correlazione con i codici del registro, che è il metodo più tollerante; poi si prova la lettura diretta con correzione dei bit più deboli.

Struttura

index.html   interfaccia
style.css    stile (solo font di sistema, nessuna risorsa esterna)
app.js       logica: caricamento, ritaglio, render, marca invisibile, registro, verifica
vendor/      pdf.js 3.11.174 (legacy) e jsPDF 2.5.2, in locale

pdf.js gira con il "fake worker" (pdf.worker.min.js caricato via <script>), così funziona anche da file://.

Contribuire

Segnalazioni, idee e pull request sono benvenute: leggi CONTRIBUTING.md. Per le vulnerabilità di sicurezza segui SECURITY.md. Chi partecipa rispetta il codice di condotta.

Licenza

Sigillo è rilasciato con licenza MIT: puoi usarlo, modificarlo e redistribuirlo liberamente, a patto di mantenere l'avviso di copyright.

Le librerie in vendor/ restano con le loro licenze, riportate nell'intestazione di ciascun file: pdf.js (Apache-2.0, © Mozilla Foundation) e jsPDF (MIT, © James Hall, yWorks GmbH e contributori).

About

Filigrana per copie di documenti d'identità, tutto nel browser, nessun upload

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages