编辑:似乎我在开始输入我的问题时很仓促,所以这里有一个更新的版本。
我正在开发一个运行在PC上的应用程序,它和其他设备在同一个局域网上。我想连接到这些设备。由于PC机和设备之间的数据是敏感的,所以我想用加密、身份验证和完整性来保护它。所以我用的是TLS。
这个想法是,如果有人设法从外部访问局域网(不知何故),他就不能使用PC和设备之间发送的数据(因为加密)。另外,如果有人从内部访问局域网,他不应该只连接到任何设备。目前设备上没有真正的用户/密码保护,因此我需要一些其他类型的身份验证。我在想这里的证书。其构想如下:
运行局域网的公司代表证书颁发机构。有一个通用的服务器证书存储在设备上。还有一个客户端证书在PC上是私有的,应该允许它连接到设备上(例如,服务笔记本)。公司签署了这两份证书。
现在,如果有人能够访问局域网,他可能能够嗅探出任何流量,但它是加密的,所以他不能使用这些数据。此外,如果他想连接到任何设备,该连接将被拒绝,因为他没有适当的客户证书。然而,客户端可以检查它们连接到的设备是否真的是那些设备,而不是某些入侵者。
我的问题是:这是正确的证书基础结构吗?这有效吗?这些证书是通过加密发送的,还是未经加密发送的?如果它们是未经加密发送的,这有什么用吗?我想入侵者只需记录客户端发送的证书,然后将其保存在自己的机器上。
发布于 2013-11-19 11:23:36
很难在不知道你想要得到什么的情况下给出一个合理的答案。
使用自签名证书,您将获得安全的点对点通信,但是没有固有的身份验证--我可以使用自己的证书使用笔记本电脑进入您的办公室,并开始连接到您的服务。OTOH如果您运行自己的证书颁发机构,那么您就有能力限制基于证书颁发者的通信(在本例中是您的CA)。通用名称只是一个用于断言身份的约定(它不必是一个fqdn),它是由CA认证的。
但是,我没有域名,因为所有的计算机和设备都会在局域网内获得动态的IP地址
胡说:
1)您没有的是在公共DNS中输入一个条目来标识您的网络--没有什么可以阻止您将您的网络称为任何您喜欢的--但是如果您调用您的网络,您可能会遇到连接到另一个google.com的问题。
2) DHCP并不排除对某些主机使用静态IP地址
3) DHCP不排除具有一个具有不同IP地址的一致主机名。
我希望只有在证书后的用户
那我们为什么要谈论FQDN和IP地址呢?这些属性是分配给机器的,而不是分配给人的。
我认为在你提出正确的问题之前,你还有很长的路要走。
发布于 2013-11-19 19:44:40
一种简单的方法是使用预共享密钥。PC机和设备都有相同的密钥,用于加密和保护通信。这避免了公钥密码,这将是有益的,如果设备是低功耗。然而,尽管它可以抵御外部攻击者,但它并不能保护设备和PC之间的相互保护。
您可以通过使用单独的设备共享秘密来改进这一点,而PC只知道所有的秘密。确切的安排将取决于您需要的通信线路(设备之间直接交谈吗?)以及现有的信任(设备是否隐含地信任PC?)
您也可以使用公钥密码。你通常会给个人电脑和每个设备一个单独的证书。在一个简单的设置中,您可以使用自签名证书,如果每个设备都保存了需要连接到的任何其他设备的证书,则可以安全地验证自签名证书。或者,您可以使用您概述的解决方案,并使用内部证书颁发机构。
我预计最大的困难将是你的安装程序。您必须仔细考虑用户体验。从WiFi和蓝牙获得一些关于他们的方法的提示-共享密码和设备配对。一旦PC和设备安装了正确的秘密/密钥/任何日常操作都应该是简单的。
https://security.stackexchange.com/questions/45701
复制相似问题