From d4fd16abeee24392e9cb476852e80c89f656e4df Mon Sep 17 00:00:00 2001 From: noemi3 Date: Thu, 9 Jul 2020 12:25:43 +0200 Subject: [PATCH] fixed tcn --- documentazione.md | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/documentazione.md b/documentazione.md index 28f0ab2..85b37cb 100644 --- a/documentazione.md +++ b/documentazione.md @@ -2,49 +2,47 @@ ## Descrizione del protocollo -Il protocollo TCN, Temporary Contact Number, è un protocollo di tracciamento dei contatti decentralizzato, sviluppato dalla TCN Coalition. Quest'ultima è una comunità di persone che durante l'emergenza COVID-19 hanno sviluppato questo supporto per lo sviluppo di app per notificare l'esposizione al contagio. +Il protocollo TCN, Temporary Contact Number, è un protocollo di tracciamento dei contatti decentralizzato, ideato dalla TCN Coalition. Quest'ultima è una comunità di persone che durante l'emergenza COVID-19 hanno sviluppato questo supporto per lo sviluppo di applicazioni per notificare l'esposizione al contagio. Il protocollo non richiede, informazioni personali ed è compatibile con autorità sanitarie. -I dispositivi degli utenti inviano un id(?) agli utenti vicini tramite Bluetooth e successivamente se un utente è risultato positivo al contagio può notificarlo ai suo contatti. +I dispositivi degli utenti inviano un identificativo agli utenti vicini tramite Bluetooth e successivamente, se un utente è risultato positivo al contagio, può notificarlo ai suo contatti. -Per aumentare la scalabilità si è scelto di non generare automaticamente di TCN ma di generarli in modo deterministico da alcuni dati seed. -In questo modo si riduce la dimensione del report da inviare, in quanto contiene solo dati seed compatti e non l'elenco intero di TCN. +Per aumentare la scalabilità la TCN Coalition ha scelto di non generare randomicamente tcn, ma di generarli in modo deterministico da un seed. +In questo modo si riduce la dimensione del report da inviare, in quanto contiene solo le informazione necessarie per calcolare i tcn e non l'elenco intero di tcn. L'utente può caricare diversi report di dimensioni minori in modo da non caricare l'intera cronologia dei contatti. -Inoltre è necessaria una chiave segreta che possiede l'utente per derivare i TCN. - ### Chiavi di autenticazione e verifica -L'user agent crea una chiave di autorizzazione *rak* (report authorization key) e una chiave di verifica *rvk* (report verification key), che ruotano periodicamente. -Si genera una chiave di contatto iniziale *tck_1* in questo modo: +L'user agent crea una chiave di autorizzazione *rak* (report authorization key) e una chiave di verifica *rvk* (report verification key). + +A partire dalla rak è possibile ricavare la chiave di contatto iniziale tck_0. ``` tck_0 ← H_tck(rak) -tck_1 ← H_tck(rvk || tck_0) ``` -dove *H_tck* è una funzione di hash con 256 bit di output. +dove `H_tck` è una funzione di hash con 256 bit di output. -Ogni report può contenere al massimo 2^(16) chiavi di contatto +### Chiave temporanea di contatto -Partendo una TCN se ne può derivare unìaltra tramite un'operazione di Ratchet: +Ogni report può contenere al massimo $2^{16}$ chiavi di contatto. + +Partendo un tcn se ne può derivare il prossimo tcn come mostrato di seguito: ``` tck_i ← H_tck(rvk || tck_{i-1}) ``` -dove || indica una concatenazione. +dove `||`indica una concatenazione. +### Numeri temporanei di contatto - -### Chiave temporanea di contatto - -Il numero di contatto temporaneo viene generato da una chiave di contatto temporanea, nel seguente modo: +Per ogni tck viene generato un numero di contatto temporaneo come mostrato di seguito: ``` tcn_i ← H_tcn(le_u16(i) || tck_i) ``` -dove *H_tcn* è una funzione di Hash con 128bit di output. +dove `H_tcn` è una funzione di Hash con 128 bit di output. Dalla chiave rak è possibile generare la chiave rvk e la chiave tck_0, dalle quali è possibile generare le successive tck e quindi tutti i successivi tcn. @@ -62,12 +60,10 @@ Dalla chiave rak è possibile generare la chiave rvk e la chiave tck_0, dalle qu └─────┘ └─────┘ └─────┘ ``` - - -### Numeri temporanei di contatto - ### Report + + ## Implementazione del protocollo per la JMV # Applicazione