0

我是一名年轻的专业人​​士,涉足嵌入式设计、IT 网络、控制/监控系统等等。目前,我正在使用 Tibbo Techonology 的 DS1102 设备开发一个监控系统。

http://tibbo.com/products/controllers/ds110x/ds1102

它是一种可编程设备,涵盖串行和以太网通信。对于我的项目,它的主要任务是串行数据收集和数据库填充。串行通信通过 RS485 完成,使用的数据库是 MySQL 5.5。我的数据库托管在一个公共 IP 上,当我的设备位于 NAT 后面时,该 IP 还为该接口运行一个网络服务器。它使用公共 IP 直接连接到数据库。

我想征求意见,以便我可以增强和升级它。现在这些是我想问的问题。

  1. 哪个更好?将服务器放在公共 IP 上还是使用端口转发?我还将它用作我的监控系统接口的网络服务器。

  2. 为了与设备通信(重启、更改 IP 等),我使用 UDP(使用设备的端口 65535)在 python 中编写了一个应用程序,并将设备设置为与特定命令的应用程序通信。我担心的是我想加密我的 python 应用程序和设备之间的通信。DS1102 上唯一可用的加密和解密功能是 RC4。您对在此应用程序中使用 RC4 有何想法?另外,我打算在端口 65535 上进行端口转发,以便我可以从外部使用我的 python 应用程序。RC4 也能可靠吗?我真的很想学习如何正确使用加密。

  3. 我还计划为警报消息实施 SMTP。Tibbo 有一个示例代码,我以此为基础。问题是,它在 AUTH PLAIN LOGIN 上。我想我以后想把它变成 STARTTLS。你能推荐一些关于 STARTTLS 算法的课程吗?

  4. MAIL FROM:<> 和 RCPT TO:<> 的详细信息是什么?因为在使用命令 DATA 时,程序员无论如何都可以写 From: 和 To: 这可以使他的身份成为其他人。

现在就是这样。非常欢迎提出建议。您还可以分享一些不错的阅读材料和链接。我总是渴望学习。:)

谢谢你的时间。

4

1 回答 1

0

2. 加密用少量数据(密钥)的机密性替代任意数量数据(明文)的机密性。换句话说,您的通信仅与密钥一样机密——如果共享密钥泄露,加密将毫无价值。更多关于这一点。

另请注意,纯 RC4 不提供真实性(消息完整性)。对手可以随心所欲地修改消息。他甚至可以发送他自己的消息,这些消息将被密码认为是完全有效的。验证消息的有效性取决于解析消息的代码。

如果您的消息很简单(只有几个字节左右),攻击者可以简单地发送随机字节,直到它们解密以形成有效消息,而无需了解密钥的任何信息。例如,对于 1 字节消息,这种情况平均发生在 100 次尝试之后。

您显然必须使用某种随机数来防止微不足道的重放攻击。

RC4本身也相当古怪。我猜你已经知道许多“drop -n ”变体等等。

简而言之,协议设计是危险的。甚至专家也经常弄错(例如看WEP)。解决此问题的最直接方法是找到可以处理现有协议(例如TLS )的硬件。

于 2013-07-01T14:39:21.787 回答