安全传输是libp2p的组件,可在通过网络发送数据时对数据进行加密。Libp2p提供建立连接后协商安全传输的能力,从而使节点能够支持多种安全传输。一旦协商了安全传输,就对所有发送和接收的数据进行加密,只有目标对等方可以对其解密。
SECIO是一种类似于TLS的安全性传输,于2014年为IPFS和libp2p开发,以缓解与要求证书颁发机构的TLS1.2的差距。SECIO已成为所有libp2p实现的主要安全传输方式,因为其基础算法得到了广泛支持。
在2019年5月,go-ipfs0.4.21添加了对TLS1.3的支持,在2020年4月的go-ipfs0.5中,它成为默认的安全传输方式。但是,TLS1.3仍在libp2p实现中获得支持,并且无法在浏览器上下文中访问,因此并非所有libp2p实现都可以使其成为默认的安全传输。尽管Web浏览器引入了对TLS1.3的支持,但我们无法为libp2p附加必要的身份信息。
Go-ipfs0.6还增加了对QUIC传输的支持,该传输在内部使用TLS1.3。QUIC尚未得到广泛支持,因此我们本身仍然存在与TLS1.3相同的问题。
因此,如果我们不能在任何地方都支持TLS1.3或QUIC,那么如何才能成功弃用SECIO并继续使用更现代和更广泛使用的安全性传输?答案是噪声安全传输,它是根据噪声协议框架创建的。噪声提供了一组模式,用于组成广泛支持的密码原语,这使我们能够更轻松地在各种libp2p实现中添加支持。在go-ipfs0.6,js-ipfs0.47中增加了对Noise的支持,并已在主要IPFS网络基础结构中进行了更新。
SECIO从未被视为永久性的安全传输工具。现在我们有了Noise可以广泛支持,而TLS1.3可以支持它的实现,现在该弃用SECIO了。
在0.7发行版中,SECIO将从go-ipfs中删除,您可以在Github问题中进行跟踪。该版本暂定于8月25日发布。我们还将在大约同一时间协调js-ipfs的发行,以在那里也删除SECIO。
Go-ipfs 0.7之后,仅支持SECIO的网络上的较旧节点将不再能够与IPFS节点进行通信。如果您运行的Go-ipfs版本早于0.5,强烈建议您尽快升级。虽然go-ipfs节点0.4.21及更高版本支持TLS1.3,但如果您的IPFS至少不是0.5,则连接时会遇到延迟问题。这是由于协议协商默认为SECIO(将无法连接到最近的节点),并且需要使用TLS1.3重做。
如果运行的IPFS早于0.4.21,则将完全无法连接到较新的节点,其中包括DHT引导程序节点和IPFS公共网络基础结构的其他关键部分。
对于JavaScript-ipfs,如果运行的版本早于0.41,则将无法连接到不支持SECIO的节点。您仍然可以暂时使用websocket-star服务器。
要更新IPFS,您可以从IPFS分发页面下载最新的go-ipfs。要更新Node.js或浏览器上的js-ipfs,可以按照此链接中提供的安装说明进行操作:“https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs#install”。