Използването на криптирана комуникация е в основата на един успешен IOT проект, от друга страна малкото ресурси в устройствата е сериозна спирачка за пълната и качествена защита от външно влияние. Нека сравним възможните опции:
Некриптирана HTTP, MQTT връзка:
- използва малко памет;
- напълно некриптирана връзка (всеки в комуникацията между вашето устройство и сървърът, към който правите заявка може да прочете и подмени информацията, която изпращате/получавате).
SSL без проверка на валидността на сертификата:
- връзката е криптирана и не може да бъде пряко подслушана;
- теоретично все още е възможно някой да подмени отговорът от DNS и да отклони вашият трафик към негов сървър;
- използва повече оперативна памет.
SSL с проверка на отпечатък (fingerprint):
- връзката е криптирана и не може да бъде пряко подслушана;
- подмяната на DNS и отклоняването на трафик ще стане доста по-трудно (но не и невъзможно);
- трябва да се измисли механизъм, при който, при всяко подновяване на сертификат на сървъра устройството да преминава на по-малко защитен режим за да може да се свърже и обнови своите данни, което от своя страна обезсмисля цялото занимание;
- използва повече оперативна памет.
SSL с пълна проверка на сертификата:
- връзката е криптирана и не може да бъде пряко подслушана;
- подмяната на DNS и отклоняването на трафик ще стане невъзможна;
- трябва да се измисли механизъм, при който, при всяко подновяване на сертификат на сървъра устройството да преминава на по-малко защитен режим за да може да се свърже и обнови своите данни, което от своя страна обезсмисля цялото занимание;
- използва много повече оперативна памет.
В общи граници истината е някъде по средата. Вероятно SSL без проверка би бил подходящ за хоби проекти. Вероятно за комерсиални проекти трябва да се помисли за някакъв тип проверка, но в същото време трябва да се мисли и за начин устройствата да не загубят връзка завинаги при промяна на сертификат.
