# Off-the-Record Messaging

Off-the-Record Messaging (OTR) è il nome di un protocollo crittografico che fornisce una cifratura alle conversazioni di messaggistica istantanea utilizzando una combinazione di crittografia simmetrica AES con chiavi di 128 bit, scambio di chiavi Diffie-Hellman e funzione crittografica di hash SHA-1. Oltre all'autenticazione e alla cifratura, l'OTR fornisce anche perfect forward secrecy.
Il protocollo OTR è stato progettato dai crittografi Ian Goldberg e Nikita Borisov. Essi hanno creato una libreria client per facilitare il supporto agli sviluppatori di client di messaggistica istantanea che vogliono implementare il protocollo. Esistono plugin per Pidgin e Kopete che consentono di usare l'OTR insieme a qualunque protocollo di messaggistica supportato dai due programmi; è presente inoltre una funzione di autoriconoscimento che consente l'avvio automatico della sessione OTR con gli utenti che l'hanno attivato senza interferire con le conversazioni non cifrate.

## Implementazione

Oltre a fornire cifratura e autenticazione — funzionalità comunemente fornite da altri protocolli crittografici come PGP, GnuPG e X.509 (S/MIME) — l'OTR supporta anche altre funzioni meno comuni:
* perfect forward secrecy: i messaggi sono cifrati solamente con chiavi AES, scambiate con il protocollo Diffie-Hellman; la compromissione di una qualunque chiave crittografica non causa la compromissione delle precedenti conversazioni, anche nel caso in cui chi compie l'attacco sia in possesso dei testi cifrati;
* deniable authentication: i messaggi di una conversazione non hanno firma digitale e quando una conversazione è completa, chiunque può creare un messaggio facendolo apparire come proveniente da uno dei partecipanti, assicurando l'impossibilità di dimostrare che uno specifico messaggio provenga da una persona specifica; all'interno della conversazione il destinatario può avere la certezza che un messaggio provenga dalla persona che è stata identificata.

## Limitazioni

A causa delle limitazioni del protocollo, l'OTR nel 2009 non supportava conversazioni multiutente. Dalla versione 3 delle specifiche, una chiave simmetrica aggiuntiva può essere derivata durante lo scambio delle chiavi autenticate per essere usata per comunicazioni sicure su un canale differente (ad esempio un trasferimento di file cifrato). Il supporto per video e audio cifrati non è in programma.
Dal protocollo OTR v3 (pidgin-otr 4.0.0 e libotr 4.0.0) il plugin supporta conversazioni multiple con lo stesso utente che si connette da differenti posizioni.

## Supporto
### Nativo

I seguenti client supportano l'Off-the-Record Messaging nativamente:
* Adium (OS X)
* Blink (OS X)
* BitlBee (multipiattaforma)
* Centericq (Unix-like)
* ChatSecure (Android, iOS)
* climm (Unix-like)
* Conversations (Android)
* Cryptocat (multipiattaforma)
* IronChat (Android)
* Jitsi (multipiattaforma)
* Kopete (Unix-like)
* LeechCraft (multipiattaforma)
* MCabber (Unix-like)
* Profanity (Unix-like)
* Psi+ (multipiattaforma)
* TextSecure (Android)
* Xabber (Android)

### Mediante plugin

I seguenti client richiedono un plugin per supportare l'Off-the-Record Messaging:
* Gajim (multipiattaforma)
* Irssi (multipiattaforma)
* Miranda IM (Windows)
* Pidgin (multipiattaforma)
* Psi (multipiattaforma)
* Tkabber (multipiattaforma)
* WeeChat (multipiattaforma)
* XChat (multipiattaforma)