我試圖在iPhone應用程序和Arduino服務器之間建立安全協議。目標是iPhone應用程序向Arduino服務器發出請求,並且服務器只在具有某種形式或者另一種形式的適當憑據時才處理它。我不確定如何解決這個問題。任何建議都非常感謝!安全地在iPhone應用程序和Arduino服務器之間傳輸數據的方法
2
A
回答
2
不幸的是,Arduino沒有真正安全的通信選項。基本問題是SSL庫沒有移植到這個平臺上,部分原因是該平臺構建的8位處理器功能不是很強大。說了一些你可以做的事情,但你必須自己去做:
Basic access authentication是一個非常不安全的控制HTTP頁面訪問的方法,所以不建議這樣做。另一方面,Digest access authentication採用單向密碼編碼(哈希)。它只需要MD5庫,對於Arduino來說就是actually available。您需要做的是修改Web Server類的源代碼以支持摘要訪問身份驗證:AFAIK不支持開箱即用。
如果這看起來很困難,你可以自己實現一些相當基本的(不是很安全,但比沒有更好的)。這可能是這樣的:
- 第一個GET請求從客戶端
- 服務器用「未授權」響應來響應到來時,在響應中嵌入這是關係到一個令牌(可能的哈希)請求的IP地址。您也可以使原始時間框架成爲哈希的一部分,並給這些令牌一個有限的生命週期。
- 如果來自同一IP地址的下一個請求包含基於某個密碼+發送令牌的散列,則會接受下一個請求。
現在,這不會保護你免受IP地址欺騙,以及許多其他我可能沒有想到的事情。但是,它會給你一點安全感(如果你相信這種事,通過默默無聞的方式來保證一點安全)。您可以在superuser
0
上詢問(稍微)更詳細的計劃。您也許只能使用基於共享密鑰構建的身份驗證消息。該消息將至少包含消息類型,消息體,時間戳和消息摘要。您通過HMAC使用共享密鑰創建摘要。 (將HMAC Arduino鍵入Google的libaries和code。)該消息通過TCP或UDP發送(我更喜歡它)。 Arduino計算消息的摘要,檢查它,驗證數據,然後對消息進行操作。
我喜歡做的一件事是在應用程序服務器前的網絡層實現端口敲擊或其他操作。這可以防止不需要的流量到達自定義(可能易受攻擊的)命令服務器。這可以隱身(見無聲敲)或顯然。網絡保護也可以通過一個專門的設備來實現,該設備在到達Arduino之前會大量提升並且使流氓流量不合格。
相關問題
- 1. 在C++應用程序和服務器之間傳輸數據
- 2. iPhone應用程序和服務器之間的圖像傳輸
- 3. Web服務器和數據庫服務器之間的安全數據傳輸
- 4. 安全客戶端/服務器數據傳輸iphone應用
- 5. 服務器之間的安全數據傳輸
- 6. 應用程序和服務器之間的安全連接
- 7. iPhone應用程序和Web服務器之間的安全連接?
- 8. Django服務器和iPhone應用程序之間的安全通信
- 9. 在C#應用程序和Web服務器之間傳輸數據
- 10. 移動應用和服務器之間的大數據傳輸
- 11. 服務器之間的數據傳輸
- 12. 本地服務器和AWS服務器之間的數據傳輸
- 13. 應用程序服務器和數據庫服務器之間的安全問題
- 14. 使用RSA加密在瀏覽器和服務器之間安全地傳輸大量數據是否可行?
- 15. 在服務器和iPhone應用程序之間形成通信
- 16. Gitkit和MITM之間的安全和Android應用程序和後端服務器
- 17. 在服務器和iOS應用程序之間同步數據
- 18. iPhone應用程序和AWS服務器之間的通信
- 19. 使用AJAX/PHP/MySQL安全有效地在服務器和客戶端之間傳輸數據?
- 20. 原生iOS應用程序和服務器之間的安全性
- 21. Android應用程序和Apache服務器之間的安全連接
- 22. 本地和服務器應用程序之間的PDF差異
- 23. Android應用程序和外部數據庫之間的安全
- 24. 在iOS之間安全地傳輸數據 - > php - > mySQL
- 25. 應用程序之間的最快數據傳輸方式
- 26. iPhone應用程序,數據層和數據庫服務器
- 27. 登錄表單和服務器之間的安全傳輸在PHP
- 28. 將數據從Arduino傳輸到服務器的最佳方式
- 29. https用於as3和php之間的安全數據傳輸
- 30. 應用程序和媒體服務器之間的文件傳輸
以太網盾+ SSL? – 2013-04-06 20:03:56
不要以爲Arduino有足夠的處理能力/內存來運行SSL。我已經在使用以太網盾了,雖然 – Mason 2013-04-06 20:19:07
USB串口+ PC + SSL? – 2013-04-06 20:21:14