Я пытаюсь сделать безопасный протокол между iPhone-приложением и сервером Arduino. Цель состоит в том, что приложение iPhone отправляет запрос на сервер Arduino, и сервер обрабатывает его только в том случае, если он имеет соответствующие учетные данные в той или иной форме. Я не совсем уверен, как подойти к этой проблеме. Любые предложения очень ценятся!Способы передачи данных безопасно между приложением iPhone и сервером Arduino
ответ
К сожалению, на Arduino нет действительно надежных коммуникационных возможностей. Основная проблема заключается в том, что библиотеки SSL не были перенесены на эту платформу, отчасти из-за того, что 8-битные процессоры, построенные платформой, не очень мощные. Сказав, что есть некоторые вещи, которые вы можете сделать, но вы должны будете сделать их сами:
Basic access authentication - очень небезопасный способ контроля доступа к страницам HTTP, поэтому он не рекомендуется. Digest access authentication, с другой стороны, использует одностороннюю криптографическую кодировку (хеширование). Для этого требуется только библиотека MD5, которая составляет actually available для Arduino. Что вам нужно сделать, так это изменить исходный код класса Web Server для поддержки аутентификации доступа к дайджесту: AFAIK не поддерживает его из коробки.
Если вам кажется сложным, вы можете реализовать что-то довольно основное (и не очень безопасное, но лучше, чем ничего). Это может выглядеть следующим образом:
- Первый запрос GET приходит от клиента
- Сервер отвечает «не уполномочен» ответ, встраивание в ответ маркер, который связан с (возможно, хэш) запрашивающий IP-адрес. Вы также можете сделать оригинальную временную часть хэша, и дать этим токенам ограниченную продолжительность жизни.
- Если следующий запрос с одного и того же IP-адреса включает хэш на основе некоторого секретного кода + отправленный токен, выполняется следующий запрос.
Теперь это не защитит вас от подмены IP-адресов и многих других вещей, о которых я, вероятно, не думал. Тем не менее, это даст вам небольшой уровень безопасности (и небольшую часть безопасности через неясность, если вы верите в такую вещь). Вы можете запросить (немного) более сложные схемы на superuser
Возможно, вы сможете просто использовать аутентифицированные сообщения, созданные на основе общих секретов. Сообщение будет содержать [как минимум] тип сообщения, тело сообщения, временную метку и дайджест сообщения. Вы создаете дайджест посредством HMACing другого материала с общим секретом. (Тип HMAC Arduino в Google для libaries и кода.) Сообщение отправляется через TCP или UDP (я предпочитаю его). Arduino вычисляет дайджест сообщения, проверяет его, проверяет данные и затем действует на сообщение.
Одна вещь, которую мне нравится делать, это реализовать портовое деление или что-то на сетевом уровне перед сервером приложений. Это предотвращает доступ нежелательного трафика к пользовательскому (и, возможно, уязвимому) серверу команд. Это можно сделать незаметно (см. «Тихий стук») или, очевидно. Сетевая защита также может быть реализована с помощью специального устройства, которое сильно поднимает и дисквалифицирует большое количество изгоев, прежде чем оно достигнет Arduino.
- 1. Формирование связи между сервером и приложением iPhone
- 2. Синхронизация данных между сервером и приложением iOS
- 3. Синхронизация данных между приложением и веб-сервером
- 4. Передача данных между C++-приложением и сервером
- 5. Безопасное соединение между приложением iPhone и веб-сервером?
- 6. Безопасная связь между сервером django и приложением iphone
- 7. Внедрение Oauth между собственным сервером и iPhone-приложением
- 8. Новые способы передачи данных между диспетчерами просмотра
- 9. Самый быстрый способ передачи данных между приложением
- 10. Каковы различные способы связи между приложением iOS и сервером базы данных?
- 11. Способы связи между сервером и клиентом
- 12. Связь между приложением мобильного телефона и сервером
- 13. Связь между iPhone и сервером
- 14. Стратегии синхронизации данных и кеширования данных между iphone и сервером
- 15. Безопасность между родным приложением iOS и сервером
- 16. Эффективное управление загрузкой между сервером и приложением
- 17. Синхронизировать время между приложением android и сервером
- 18. Связь между сервером и мобильным приложением
- 19. Сокетная связь между настольным приложением и сервером
- 20. В чем разница между веб-приложением iPhone и iPhone-приложением?
- 21. Большая передача данных между мобильным приложением и сервером
- 22. Сколько способов синхронизации данных между Android-приложением и сервером?
- 23. Отправка данных между веб-сервером и java-приложением
- 24. база данных синхронизации между приложением wp8 и сервером
- 25. передачи данных между Android и сервером с использованием JSON синтаксического
- 26. Лучший способ передачи данных между клиентом и сервером (C#/javascript)
- 27. Лучшего способа передачи данных XML между сервером и клиентскими сокетами
- 28. Является ли формат передачи данных JSON между клиентом и сервером?
- 29. Что является предпочтительным методом передачи данных между службой и приложением
- 30. Безопасная связь между iPhone и сервером?
Сетевой экран + SSL? – 2013-04-06 20:03:56
Не думайте, что у Arduino достаточно вычислительной мощности/памяти для запуска SSL на нем. Я уже использую экран ethernet, но – Mason
USB serial + PC + SSL? – 2013-04-06 20:21:14