【发布时间】:2021-01-06 00:40:55
【问题描述】:
我一直在设计一种基于区块链的加密货币,区块链上的一些区块可以由区块的所有者更新其数据。我尝试实现一种 ssh 样式的公钥身份验证:客户端生成一个密钥对并将公钥发送到块,在该块中它允许“管理员”下列出的公钥更改块的元数据。这样做的问题是有人可以发送随机的已知公钥以查看他们是否被允许编辑元数据,ssh 如何防止人们仅发送带有已知公钥的某种字符串来访问 ssh 的内容? (我问这个是因为我想实现类似于我的上下文的东西)
【问题讨论】:
-
“这个问题是有人可以随机发送已知的公钥来查看他们是否被允许编辑元数据” 你为什么这么认为?区块链的核心属性之一是它在被链上更高的块签名后是不可更改的。这意味着“管理员”部分中的公钥无法更改。因此,如果您想将消息添加到稍后引用“您的”块的块,您必须使用与存储在“您的”块中的公钥对应的私钥对消息进行签名。您可以有一个消息类型来添加也签名的公钥
-
我做的架构安全性很差。当私有实体拥有的块更新时,它将查询一个公钥(存储在块中的一个字段中),并随之追加、删除或更改存储在块中的特定密钥和/或字段。因此,如果您知道允许更改数据的公钥(容易发生在分布式账本上),您可以更改不属于您的块并在链的下游对其进行更新。我确信我可能已经想到了一种更安全的方法,当它奏效时我会分享我的发现。感谢您的回复。
标签: ssh cryptography blockchain public-key-encryption public-key