Як @Colin згадує схему, яку TI тепер використовує для передачі мережевого SSID та ключової фрази з програми налаштування на пристрій, що підтримує CC3000, називається Smart Config.
Smart Config має передавати інформацію (мережевий SSID та ключову фразу) із захищеної мережі Wi-Fi на пристрій із підтримкою CC3000, який ще не в змозі розшифрувати трафік у цій мережі.
Спочатку CC3000 не підключений до мережі (але може контролювати трафік), тому програма Smart Config не може надсилати свою інформацію безпосередньо на пристрій. Натомість він надсилає пакети UDP на іншу існуючу машину в мережі - точку доступу Wi-Fi (AP). Якщо AP не зацікавлений у їх отриманні, не має значення, важливо лише, щоб пакети були видимими в мережі.
Хоча CC3000 може контролювати трафік, він не може його розшифрувати, він навіть не може точно сказати, що даний зашифрований пакет містить дані UDP. Тож як можна вибрати пакети UDP або зробити щось корисне з ними?
В основному Smart Config кодує свою інформацію не за змістом пакетів, які він надсилає, а за їх довжиною. Шифрування Wi-Fi впливає на довжину пакетів, але послідовно, тобто воно додає L додаткових байтів до розміру кожного пакету, де L - константа.
Додаток Smart Config кодує SSID та ключову фразу в довжину пакетів послідовності пакетів UDP. CC3000 може бачити зашифровані пакети та їх розміри.
У багатьох середовищах CC3000 зможе побачити трафік з декількох довколишніх мереж, тож як він може помітити відповідний трафік? Навіть після шифрування все ще можна побачити MAC адреси джерела та призначення пакету, щоб можна було групувати трафік таким чином. На додаток до первинної інформації, яку Smart Config намагається надіслати, вона також регулярно надсилає повторювані шаблони довжини пакету, тому CC3000 групує трафік, як описано, а потім шукає такі шаблони, коли знаходить їх у трафіку заданої кількості Пара джерела та місця призначення потім зосереджується на відновленні первинної інформації.
Очевидно, що це теж більше, ніж це, наприклад, навіть коли CC3000 знайшов пару джерела та призначення, які відповідають AP та машині, що працює за допомогою програми Smart Config, як вона фільтрує пакети Smart Config з іншого непов'язаного трафіку, що йде між AP і машина? Я все це написав у серії публікацій блогу.
Найбільш технічно детальний з них охоплює серце Smart Config - як він кодує SSID та ключову фразу і передає їх таким чином, що CC3000 може забрати їх:
http://depletionregion.blogspot.ch/2013/10/cc3000-smart-config-transmitting-ssid.html
Тоді у мене є менш технічна публікація, більш детальна думка про те, чому завжди слід використовувати AES-ключ із Smart Config:
http://depletionregion.blogspot.ch/2013/10/cc3000-smart-config-and-aes.html
У середині є технічний біт, який коротко описує, як ви налаштували шифр на Java з необхідним перетворенням AES, необхідним для роботи, як очікує CC3000.
І, нарешті, доказ пудингу - я написав заявку на емуляцію поведінки CC3000, пов’язаної з Smart Config, тобто вона може відновити SSID та ключову фразу, передану будь-яким додатком Smart Config, не потребуючи розшифрування відповідного мережевого трафіку. Тут можна знайти, де завантажити джерело та всі деталі:
http://depletionregion.blogspot.ch/2013/10/cc3000-smart-config-and-keyphrase.html
Це повинно дати можливість перевірити поведінку будь-якої програми Smart Config, яку пише, тобто можна побачити, що CC3000 міг би реконструювати з даних, переданих додатком.
У мене є ще кілька публікацій, пов’язаних з Smart Config / CC3000:
http://depletionregion.blogspot.ch/search/label/CC3000
Для отримання довідкової інформації також може бути цікаво прочитати ці теми на форумі TI, що стосується CC3000.
Перший, що охоплює Smart Config:
http://e2e.ti.com/support/low_power_rf/f/851/t/253463.aspx
І один на mDNS, механізм, за допомогою якого програма Smart Config виявляє, що пристрій з підтримкою CC3000 приєднався до мережі:
http://e2e.ti.com/support/low_power_rf/f/851/p/290584/1020839.aspx
В обох потоках деякі початкові повідомлення можуть здатися не настільки актуальними, але тут також змішана цікава інформація. Але також є багато недостовірної інформації, тому не вважайте, що вона є коректною, навіть інформація від співробітників TI або від мене (я зрештою дізнався багато, але почав з деяких неправильних припущень / переконань).
Патенти згадувались декілька разів, однак я не можу знайти жодних доказів того, що існують патенти, які розглядаються чи видаються на цю технологію.