基于区块链的端到端加密去中心化的无需第三方认证账号密码系统的及时通讯软件的构想
前言
最近对个人信息的隐私保护很敏感,因为不管什么都可以在网上通过社会工程学来获取到一个人的信息。
即使现在有了飞机,但总感觉还是不够安全,信息篡改的安全担心还是会在。
所以我就在构想,能不能制造一个基于区块链的,不可篡改信息的端对端加密的即时通讯软件
而且飞机需要翻出去才可以使用,我们可以联想到分布式哈希表(DHT)定位节点来解决这个问题。
想要的目标
- 完全无需第三方认证、存储的自证账号验证
- 分散式存储文件系统,无需存储在任何中心化的服务器
- 完全的去中心化,完全不可以审查和管理的系统
- 绝无篡改可能性质的聊天链
设计
寻找目标设计
流程解释:客户端
向服务器列表
查询可用服务器,然后与其通讯获取到目标客户端
的唯一ID
客户端
接下通过DHT网络发现到目标客户端
,唯一ID验证通过后,开始通讯。
客户端ID设计
既然每一个客户端都需要一个截然不同,唯一的id,那么就可以利用客户端
所在的物理网卡MAC地址
+客户端所在网络环境的网关MAC地址
简单相加,再做一次SHA256运算,我们就可以得到这个宇宙里 勉强 唯一的个人ID了。
计算方式:本机MAC地址
拼接 网关MAC地址
例如:
- 本机MAC: AA-BB-CC-DD-EE-FF
- 网关MAC: GG-HH-II-JJ-KK-LL
拼接后的结果:AA-BB-CC-DD-EE-FF-GG-HH-II-JJ-KK-LL
运算:((AA-BB-CC-DD-EE-FF-GG-HH-II-JJ-KK-LL)SHA3-512)SHA3-512)
import hashlib
def double_sha3_512(data: str) -> str:
# 首次哈希:将字符串编码为字节后计算 SHA3-512
first_hash = hashlib.sha3_512(data.encode()).digest() # 返回二进制摘要
# 二次哈希:将首次结果再次哈希并转为十六进制字符串
return hashlib.sha3_512(first_hash).hexdigest()
# 示例用法
text = "AA-BB-CC-DD-EE-FF-GG-HH-II-JJ-KK-LL"
result = double_sha3_512(text)
print(result)
输出结果:8a7f74daa02b8e93d511eaff8f80bcfcfda158c03e70f29c4b27f4297247218484f36d953b4d4779949cbb038f6c68741628e707a0324b79ac768dfad4fbe9dc
这个就可以作为唯一的客户端ID
账号密码设计
我觉得账号和密码不需要任何可信任的第三方认证和存储,所以我想让账号密码自我认证。
账号设计
账号即为登录凭证,是以(客户端ID + (密码SHA3)SHA3)
计算得来的,可以保证其绝对的唯一性。
密码设计
账号则为简单的SHA3
计算后得出。
用户输入明文密码 -> 软件SHA3计算 -> 加密后的密码。
自我认证机制
前面讲到,账号是由客户端ID
和密码SHA3
拼接在一起后做SHA3计算后得出的账号,那么自我认证机制就变得很简单了。
目前已知的条件有:账号,客户端ID,则只需要将用户在登录时输入的密码加客户端ID就可以登录了。
将客户端ID加密码SHA3作运算后,会得到绝对一样的跟账号一样的SHA3字符,这就是自我认证机制,也可以成为自我证明;从而证明:我是我。