Come @Colin menziona lo schema che TI ora utilizza per comunicare un SSID di rete e una frase chiave da un'applicazione di configurazione a un dispositivo abilitato CC3000 si chiama Smart Config.
Smart Config deve comunicare informazioni (SSID di rete e frase chiave) da una rete wifi sicura a un dispositivo abilitato CC3000 che non è ancora in grado di decrittografare il traffico su quella rete.
Inizialmente CC3000 non è collegato alla rete (ma può monitorare il traffico), quindi l'applicazione Smart Config non può inviare le sue informazioni direttamente al dispositivo. Invece, invia pacchetti UDP a un'altra macchina esistente sulla rete: il punto di accesso wifi (AP). Che l'AP non sia interessato a riceverli è irrilevante, è solo importante che i pacchetti siano visibili sulla rete.
Mentre CC3000 può monitorare il traffico che non può decrittografarlo, non può nemmeno dire con certezza che un determinato pacchetto crittografato contiene dati UDP. Quindi, come può scegliere i pacchetti UDP o fare qualcosa di utile con loro?
Fondamentalmente Smart Config codifica le sue informazioni non nel contenuto dei pacchetti che sta inviando ma nella loro lunghezza. La crittografia WiFi influenza la lunghezza dei pacchetti, ma in modo coerente, ovvero aggiunge L byte aggiuntivi alla dimensione di ogni pacchetto, dove L è una costante.
L'applicazione Smart Config codifica l'SSID e la frase chiave nelle lunghezze dei pacchetti di una sequenza di pacchetti UDP. CC3000 può vedere i pacchetti crittografati e le loro dimensioni.
In molti ambienti il CC3000 sarà in grado di vedere il traffico proveniente da più reti vicine, quindi come può individuare il traffico rilevante? Anche dopo la crittografia si possono ancora vedere gli indirizzi MAC dell'origine e della destinazione di un pacchetto in modo da poter raggruppare il traffico in questo modo. Oltre alle informazioni primarie che Smart Config sta tentando di inviare, invia anche schemi ripetitivi periodici di lunghezze di pacchetti, quindi il CC3000 raggruppa il traffico come descritto e quindi cerca tali schemi, quando li trova nel traffico di un dato coppia sorgente e destinazione su cui si concentra per recuperare le informazioni primarie.
Ovviamente c'è anche di più, ad es. Anche quando CC3000 ha trovato la coppia sorgente e destinazione, che corrispondono all'AP e alla macchina che esegue l'applicazione Smart Config, come filtra i pacchetti Smart Config da altro traffico non correlato che passa tra AP e la macchina? Ho scritto tutto in una serie di post sul blog.
Il più tecnicamente dettagliato copre il cuore di Smart Config: come codifica l'SSID e la frase chiave e li trasmette in modo che un CC3000 possa prenderli:
http://depletionregion.blogspot.ch/2013/10/cc3000-smart-config-transmitting-ssid.html
Poi ho un post che è meno tecnico, più un'opinione sul perché dovresti sempre usare una chiave AES con Smart Config:
http://depletionregion.blogspot.ch/2013/10/cc3000-smart-config-and-aes.html
Nel mezzo c'è un bit tecnico che descrive brevemente come configurare un codice in Java con la trasformazione AES necessaria per funzionare come previsto da CC3000.
E infine la prova del budino: ho scritto un'applicazione per emulare il comportamento relativo a Smart Config di CC3000, ovvero può recuperare l'SSID e la frase chiave trasmessi da qualsiasi applicazione di Smart Config senza dover essere in grado di decrittografare il traffico di rete pertinente. Puoi trovare dove scaricare la fonte e tutti i dettagli qui:
http://depletionregion.blogspot.ch/2013/10/cc3000-smart-config-and-keyphrase.html
Ciò dovrebbe consentire di testare il comportamento di qualsiasi applicazione Smart Config che si scrive, vale a dire si può vedere cosa un CC3000 sarebbe in grado di ricostruire dai dati trasmessi dall'applicazione.
Ho anche alcuni post relativi a Smart Config / CC3000:
http://depletionregion.blogspot.ch/search/label/CC3000
Per alcune informazioni di base può anche essere interessante leggere questi thread sul forum TI relativi al CC3000.
Il primo riguarda Smart Config stesso:
http://e2e.ti.com/support/low_power_rf/f/851/t/253463.aspx
E uno su mDNS, il meccanismo con cui un'applicazione Smart Config rileva che un dispositivo abilitato CC3000 si è unito alla rete:
http://e2e.ti.com/support/low_power_rf/f/851/p/290584/1020839.aspx
In entrambi i thread alcuni messaggi iniziali potrebbero non sembrare così rilevanti ma ci sono anche alcune informazioni interessanti mescolate. Ma ci sono anche molte informazioni imprecise, quindi non dare per scontato che siano tutte corrette, anche le informazioni dai dipendenti di TI o da me (alla fine ho imparato molto ma ho iniziato con alcune ipotesi / credenze errate).
I brevetti sono stati citati alcune volte, tuttavia non riesco a trovare alcuna prova che ci siano brevetti in corso o concessi su questa tecnologia.