add tcn
This commit is contained in:
parent
b49ad291ad
commit
98a13ea8a1
@ -1,57 +1,87 @@
|
|||||||
# Protocollo TCN
|
# Protocollo TCN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Descrizione del protocollo
|
## 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 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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
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
|
### 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:
|
||||||
|
|
||||||
|
```
|
||||||
|
tck_0 ← H_tck(rak)
|
||||||
|
tck_1 ← H_tck(rvk || tck_0)
|
||||||
|
```
|
||||||
|
|
||||||
|
dove *H_tck* è una funzione di hash con 256 bit di output.
|
||||||
|
|
||||||
|
Ogni report può contenere al massimo 2^(16) chiavi di contatto
|
||||||
|
|
||||||
|
Partendo una TCN se ne può derivare unìaltra tramite un'operazione di Ratchet:
|
||||||
|
|
||||||
|
```
|
||||||
|
tck_i ← H_tck(rvk || tck_{i-1})
|
||||||
|
```
|
||||||
|
|
||||||
|
dove || indica una concatenazione.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Chiave temporanea di contatto
|
### Chiave temporanea di contatto
|
||||||
|
|
||||||
|
Il numero di contatto temporaneo viene generato da una chiave di contatto temporanea, nel seguente modo:
|
||||||
|
|
||||||
|
```
|
||||||
|
tcn_i ← H_tcn(le_u16(i) || tck_i)
|
||||||
|
```
|
||||||
|
|
||||||
|
dove *H_tcn* è una funzione di Hash con 128bit 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.
|
||||||
|
|
||||||
|
```
|
||||||
|
┌───┐
|
||||||
|
┌──▶│rvk│─────────┬──────────┬──────────┬──────────┬──────────┐
|
||||||
|
│ └───┘ │ │ │ │ │
|
||||||
|
┌───┐ ┌─────┐ │ ┌─────┐ │ ┌─────┐ │ │ ┌─────┐ │
|
||||||
|
│rak│──────▶│tck_0│─┴─▶│tck_1│─┴─▶│tck_2│─┴─▶ ... ─┴─▶│tck_n│─┴─▶...
|
||||||
|
└───┘ └─────┘ └─────┘ └─────┘ └─────┘
|
||||||
|
│ │ │
|
||||||
|
▼ ▼ ▼
|
||||||
|
┌─────┐ ┌─────┐ ┌─────┐
|
||||||
|
│tcn_1│ │tcn_2│ ... │tcn_n│
|
||||||
|
└─────┘ └─────┘ └─────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Numeri temporanei di contatto
|
### Numeri temporanei di contatto
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Report
|
### Report
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Implementazione del protocollo per la JMV
|
## Implementazione del protocollo per la JMV
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Applicazione
|
# Applicazione
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Bluetooth
|
## Bluetooth
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Trasmissione
|
### Trasmissione
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Scansione
|
### Scansione
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Stima della distanza
|
### Stima della distanza
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## UI
|
## UI
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Memorizzazione
|
## Memorizzazione
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Rete
|
## Rete
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user