80 lines
1.7 KiB
Markdown
80 lines
1.7 KiB
Markdown
# Protocollo TCN
|
|
|
|
|
|
|
|
## Descrizione del protocollo
|
|
|
|
|
|
|
|
### Chiavi di autenticazione e verifica
|
|
|
|
|
|
### Chiave temporanea di contatto
|
|
|
|
|
|
|
|
### Numeri temporanei di contatto
|
|
|
|
|
|
|
|
### Report
|
|
|
|
|
|
|
|
## Implementazione del protocollo per la JMV
|
|
|
|
Per poter utilizzare il protocollo all'interno dell'applicazione Android è stato sviluppato un'implementazione di quest'ultimo per la *Java Virtual Machine*.
|
|
Come visto nella @sec:rak-rvk il protocollo genera le chiavi di autorizzazione e verifica a partire dalla curva ellittica *Ed25519*.
|
|
La nostra implementazione del protocollo per la gestione di questa curva utilizza la libreria NOME_LIBRERIA.
|
|
|
|
La chiave privata e pubblica prodotte da quest'ultima sono state *wrappate* all'interno delle classi `ReportAuthorizationKey` e `ReportVerificationKey` in questo modo le classi hanno un nome più esplicativo rispetto al contesto di utilizzo e un futuro cambiamento della libreria utilizzata per la crittografia non impatterà l'API della libreria.
|
|
|
|
A partire dalla `ReportAuthorizationKey` è possibile ricavare la `TemporaryContactKey` iniziale[^tck-0] attraverso la funzione `baseTemporaryContactKey()` riportata nel @lst:tck-0.
|
|
|
|
``` {.kotlin #lst:tck-0 caption="Derivazione della prima tck"}
|
|
fun baseTemporaryContactKey(): TemporaryContactKey {
|
|
val hmac = MessageDigest.getInstance("SHA-256").apply {
|
|
update(Const.H_TCK_DOMAIN_SEPARATOR)
|
|
update(key.toByteArray())
|
|
}
|
|
|
|
return TemporaryContactKey.createFromByteArray(
|
|
hmac.digest(),
|
|
0
|
|
)
|
|
}
|
|
```
|
|
|
|
[^tck-0]: La chiave temporanea iniziale viene ricavata a partire dalla sola *rak* e da essa non è generato nessun numero temporaneo di contatto.
|
|
|
|
# Applicazione
|
|
|
|
|
|
|
|
## Bluetooth
|
|
|
|
|
|
|
|
### Trasmissione
|
|
|
|
|
|
|
|
### Scansione
|
|
|
|
|
|
|
|
### Stima della distanza
|
|
|
|
|
|
|
|
## UI
|
|
|
|
|
|
|
|
## Memorizzazione
|
|
|
|
|
|
|
|
## Rete
|
|
|