"TLS для маленьких"

Sep 15, 2016 13:54

В очередной раз обдумываю тему защищенного соединения с сервером для сверхмаленьких устройств "умной пыли". Такое ощущение, что все не так сложно, как кажется, а программисты распустились и расслабились :) ОК, troll mode off ( Read more... )

Очумелые ручки, Программизмы

Leave a comment

Comments 23

eddy_em September 15 2016, 12:20:20 UTC
Можно через SMS выдавать временные (скажем, на сутки) сертификаты.

Reply

aterentiev September 16 2016, 12:29:47 UTC
а что может произойти, если сертификат будет годен дольше?

Reply

eddy_em September 16 2016, 12:36:48 UTC
Ну, скажем, стащит кто-нибудь...

Reply

aterentiev September 16 2016, 12:39:16 UTC
А стаскивание сертификата разве проблемно? Он же только публичный ключ содержит, не?

Reply


nicka_startcev September 15 2016, 13:36:31 UTC
если один из концов цепи полностью в руках злоумышленника, то всё бесполезно - злоумышленник может действовать от имени пыли.

если мы эту дыру какими-то внешними способами закрыли (типично, отзывом сертификатов тех, кто уже известно что скомпрометирован), то
1. в каждую пылинку свой закрытый ключ, его открытую половинку на сервер
2. на сервере свой закрытый ключ, его открытые половинки в пылинки
3. пылинка и сервер генерируют рандом+метку, шифруют своими закрытыми, обмениваются, расшфровывают, проверяют метку
4. после п3 оба два видят, что оппоненты владеют закрытыми частями ключей
5а. после п4 сервер пылинке может слать данные, зашфрованные открытым ключом пылинки, а пылинка серверу - на ключе сервера
5б. после п4 сервер посылает пылинке временный ключ, зашифрованный на открытом ключе пылинки. после этого идет обычное гаммирование на этом ключе - оно менее ресурсоёмко.

Reply

aterentiev September 16 2016, 12:12:32 UTC
поможешь с реализацией, есличо? :)

Reply

nicka_startcev September 16 2016, 12:13:54 UTC
советами - запросто. :)

Reply

aterentiev September 16 2016, 12:24:57 UTC
Ну вот смотри, п. 1-2 - элементарны.

поставить где-нибудь openssl и сделать ключи и сертификаты вроде должно быть так:

openssl genrsa -out server.key 2048
openssl req -new -key server.key -batch -days 3650 -x509 -out server.crt

Теперь делаем п. 3
надо найти "ту самую шифровальную функцию на с/с++", в той же openssl или чем-нибудь потоньше, чтобы сделать попытку хендшейка из пылины к компу

Reply


ex0_planet September 15 2016, 17:21:11 UTC
По первому пункту давно сказано: не изобретайте свою криптографию.

В остальном все тоже придумано до нас, надо просто сделать протокол a-la SSL, пусть даже на ограниченном подмножестве шифров. Там nicka выше описывает примерно как оно работает. Но опять же, лучше не изобретать, а взять что-то где уже прошлись по граблям.

Reply

nicka_startcev September 16 2016, 12:17:28 UTC
если комп большой - то да, лучше готовый пакет поставть.

а если это мелочь типа автосигналки, то иногда имеет смысл взять готовые криптоалгоритмы (или даже либы) для генерации ключевых пар, для двухключевых игрищ и для гаммирования, самому их в кучу объединить.

Reply

aterentiev September 16 2016, 12:20:10 UTC
вот именно так - не "возьмем универсальное и напишем скрипт", а "возьмем из универсального только необходимое, остальное просчитаем заранее"

Reply

ex0_planet September 16 2016, 12:32:55 UTC
Если это автосигналка, то наверное. Но если я правильно расшифровал откуда эта тема возникла, то тут речь про ESP82xx, там уже есть TCP-стек и некое подобие операционной системы. TLS-стеков под эмбед гугл уже находит некоторое количество, думаю, можно и openssl заточить, оторвав все лишнее.

Reply


intac September 15 2016, 20:42:24 UTC
я когдато думал на похожую тему. пришел к выводу, что только линукс, только впн. как минимум, если маленьких в округе много, то нужет гейтвей хотя бы с опенврт. но я ленивый и не хочу ничего изобретать.

Reply

aterentiev September 16 2016, 12:18:08 UTC
а вот я считаю, что линукс тут не то чтобы не нужен, а даже вреден - embedded-принципы позволяют делать неуниверсальные вещи типа заранее сохраненного сертификата, оптимированных под определенный тип шифрования функций, предвычисленных значений и прочего - мы ж не собираемся "пылью" ходить, скажем, в онлайн-банкинг?

Reply

intac September 16 2016, 13:53:02 UTC
Ну, впн решает не только проблему приватности, но и проблему нат. пыль же может использовать любой возможной тип соединения с интернетом. мобильный, прямое соединение, через роутер. для впн клиента не важно, всегда можно связаться с устройством(для меня это важно). Но я повторюсь, это я от лени и нехватки времени всё стараюсь упростить. К тому же линукс уже пихают во всё что можно и нельзя, железки стоят копейки. Нужен интернет датчик ? вот тебе мр3020 за 2 копейки. несколько ИО и сразу корпус или 100500 аналогов которе даже дешевле стояит и и имеют аналогичное железо. там тебе сразу и вайфай, и лан, и усб, и пара уарт

Reply


Leave a comment

Up