Александр Терентьев (aterentiev) wrote,
Александр Терентьев
aterentiev

Category:

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

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

Постановка задачи:

Есть где-то в мире сервер с достаточной мощностью, операционка неважна, предположим, она современная, полный контроль у нас. Есть супермаленькие клиенты, никакого линукса, только C++, только хардкор. Нужно разрешить клиентам выходить в страшный и ужасный интернет, надежно (на данный момент времени) цепляться к серверу и передавать ему данные, получать ответы. Скажем, TCP стек уже есть.

Как минимум нужна защита от базовых атак (типа MITM), утечка ключей из фирмвари не должна быть фатальной для всей системы.

Ограничиваем зону действий: Сервер один, не меняется годами. Клиентов много, каждый уникален. Момент привязки клиента к серверу, скажем, контролируется хорошо и руками.

Как это нужно реализовывать?

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

Остальное вроде бы дело техники, и если ограничиться фиксированным размером сообщения, должно быть все ок.

Читая интернеты, кажется, что все очень сложно и вообще на мелких системах типа МК невозможно. Но нам же не нужно решение уровня PC, мы ограничиваем зону действий.

Покритикуйте или подскажите, как перейти к делу...
Tags: Очумелые ручки, Программизмы
Subscribe

  • Как всегда ищу магическую кнопку "сделай само и круто"

    Когда я хочу автоматически сгенерировать какой-то код, мне нужно скриптам дать на вход необходимую информацию. В случае линейных задач я обычно…

  • Про ручные циркулярки

    Кроил вчера лист OSB ручной циркуляркой и в очередной раз задумался о левых-правых пилах. Загадочным образом в этих ваших Европах считают правое…

  • 802.1q trunk через WiFi

    Гуглил, гуглил, недогуглил. Есть свичи с кучей разных VLAN-ов, соединенные на данный момент гигабит-транками. Пришла разнарядка поместить все на…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 23 comments

  • Как всегда ищу магическую кнопку "сделай само и круто"

    Когда я хочу автоматически сгенерировать какой-то код, мне нужно скриптам дать на вход необходимую информацию. В случае линейных задач я обычно…

  • Про ручные циркулярки

    Кроил вчера лист OSB ручной циркуляркой и в очередной раз задумался о левых-правых пилах. Загадочным образом в этих ваших Европах считают правое…

  • 802.1q trunk через WiFi

    Гуглил, гуглил, недогуглил. Есть свичи с кучей разных VLAN-ов, соединенные на данный момент гигабит-транками. Пришла разнарядка поместить все на…