基于公钥认证体系的开源云生态设计(信息、关系、查询、信任与分享) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
err1y
V2EX    开源软件

基于公钥认证体系的开源云生态设计(信息、关系、查询、信任与分享)

  •  
  •   err1y 2020-11-30 13:34:41 +08:00 2984 次点击
    这是一个创建于 1845 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本系统的本质就是一个由图数据库支撑的云文件系统。

    github 地址:third

    文章有一点长和墨迹,不善表达,先表示抱歉,但是内容中包含我最近的很多思考,希望可以看完。

    以下为仓库正文:


    一个关于信息存储、查询与分享的生态设想,按照固定方式的分享与存储信息,任意自选存储服务,基于公钥证书体系的生态系统。

    在这个生态中,信息应该属于每个人,而服务商应该只提供计算(高级查询)和存储功能。每个人都能选择任何接入协议的任意工具进行编辑,每个人对自己的信息安全负责,信息的安全问题(仅泄漏问题,不包括安全问题)仅依赖自己,不需要运维或开发人员介入。

    相关链接

    杂谈

    • 2020 年 04 月 15 日 13:29

    看楼下的小姑娘在骑车,骑着车的时候她能进行刹车、向前、向左、向右等等操作,但是只是一堆选项合集,人脑的决定只能根据输入(当前环境)进行生成一系列选择,永远也跳脱不出当前环境的影响,所以说人脑思维不自由。依照 I(nput 输入)-P(rocess 处理)-O(utput 输出)模型来看,多拓宽视野,多找点没了解过的事情,当经历沉淀成记忆的时候,你的思维才会相对来说更自由一些。多接触牛人,多看些历史,多去些地方去采集不同的环境输入,沉淀成记忆影响处理,最终输出一些不简单的东西。广度决定处理方法,深度决定是否专业。

    • 2020 年 04 月 17 日 12:19

    世间发明大多都是仿生学,环境如此,你很难跳脱出当前环境去思考问题,大部分发明无非是现有的东西的模拟并加一点点小小的突破。就如《三体》所说的“三与三十万综合症”一般,在三维空间这个环境里你无法真正理解四维空间,光速本身的限制让你无法超脱出光速之外去思考问题。我们所做的一切,都是在既有的框架之内,通过理解已存在的事物本身,再加上一点点思维上的突变,创造出一个世界上本不存在的东西。而这个东西,也将是下一次突破的基石。但如果世界本身不是这个样子,那个世界的未来和这个世界的未来是否有一些共通性?单纯从智慧体的角度来考虑,最重要的不是任何的外在展示形式,而是数据本身。数据内容会变,但数据永远存在,而数据处理也将永不停歇。说到底,世界自身也只是数据聚合体罢了。

    可信

    在了解 https 和 git 的时候,我觉得这两样东西很美,类似的还有拟态防御和 spacex 火箭的 cpu 冗余机制。

    • https 在不可信网络上提供可信连接(公钥 /非对称加密)
    • git 在不可信设备上提供可信存储(多地冗余,主要关注分布式多地备份理念)
    • 拟态防御在可能存在漏洞和后门的主机上提供可信服务(异构计算冗余)
    • spacex 火箭使用工业级 cpu 进行多芯片冗余来对抗粒子翻转(多芯片冗余)

    以上所有的设计理念都是一致的,就是在相对不可信的环境上提供可信服务,主要涉及两种策略:

    1. 基于数学理论上的难以破解
    2. 基于冗余机制

    信息与人

    人的决定取决与他所了解信息的广度与深度。信息深度需要时间去理解与学习,很难快速提升,但是信息广度取决于周围的信息输入,可以通过增加信息输入快速提升,有时候你知道另一种方式会更容易理解一些信息或做出更好的决定。

    有一段时间看微积分相关的一些基础知识时,看到一个有关加速度与距离的说法,求距离等同于几何求面积,所以从零匀加速一定时间后的移动距离本质上就是求三角形面积(以上内容我已经忘记了课程中是否包含)。

    你现在做什么行业,本质并非是因为喜欢,而是因为接触过这个概念,知道有这个行业。如果对于一件事的解决方案,你可能只知道 a,b 两种,但是实际上还有 c 和 d,一共四种。你的决定,取决于你知道两种还是四种解决方案。举例来讲,前段时间给手机换电池,但是手机螺丝滑丝了,查了下发现用胶水粘,实在不行就把周边挖出个坑然后用指甲刀拧出来(用的这个方法)。过后了一个月,我才又知道还有别的方法,用焊锡,还有专门处理滑丝的工具。

    信息在不同的时间是有不同价值的,你要用到的时候能浮现的信息才是有用的信息。在看《真实一刻》纪录片的时候,看到两个场景很有感触。冰面塌陷时,人最好的解决方式应该是趴着去救,增加接触面积降低压强,降低自己脚下冰面也碎裂的风险。有山体滑坡风险的地方,游客可能并不知道,但是这些事却是很重要的事情。基于时间、地点、事件、声音、情景等触发器触发的信息更有价值。

    基于情景触发可能很难,但是未来终有一天会实现,而我们要做的其实就是为未来的要使用的数据做好储备。

    信息要辩证地看,特别是在信息泛滥的今天。可能今天你想购买一件物品,查到的数据全都是说这个商品有多好有多好的宣传文,而买到手之后才发现各种各样的问题。1000 个好评应该跟 1 个差评并列展示,查找信息的时候应该有正反两方向结果,也能避免一部分类似魏则西事件的悲剧发生。(此处因 seo 和水军刷评等原因,需要设计信任链机制,详见下方信任链解释)

    空间与速度与轮回

    看《人类简史》后,理解了一份理念,当文字这种工具出现以后,人的思维得以延续,外置性的存储机制得以实现,这是一个 0 到 1 的过程,而造纸术是从 1 到 10 的过程,数据量急剧增加,各种典籍层出不穷。而近代计算机的发展,是 10 到 100 的过程,量变引起质变,在计算机体系下,不仅可以存储大量的数据,最重要的是快速通信以及自动化,不论是使用工具还是某些公司的服务,真正意义上的可以达到只要数据产生,就可以“永远”无法消失的“永恒”状态。

    纵观人类历史,发展都是极其相似的:

    • 东非大裂谷 > 跨海到达澳大利亚 > 跨空间之海到达月球,探索宇宙(人类生存空间越来越大)
    • 徒步 > 骑马 > 汽车 > 火车 > 高铁 > 飞机 > 飞船 (人类运动速度越来越快)
    • 大脑记忆 > 文字记录以及传输(书籍、信件) > 音频记录及传输 > 图像、视频记录及传输(数据存储空间越来越大,数据传输速度越来越快)

    总结来讲,我对人类世界的认知是空间以及速度的变化,是一遍又一遍不断提升的轮回,像自相似分形,每一部分都自相似,像佛教中的一花一世界。

    整理与查找与收藏与分享

    随着科技的进步,每个人的数据也越来越多(照片、视频、笔记、节选内容、收藏文档),分布在不同的平台上,松散且难以管理,一个人的数据尚且如此,更何况将所有数据聚合到一起的互联网。互联网是现代人的共有记忆,互联网是一本书,一本由无数个节点拼接而成,由无数个人去读与写的一本书,一个不属于某个人而是全人类共有的一个数据存储装置。

    一个乱堆东西的屋子和整理有序的仓库的查找效率是不一致的,就如同平衡二叉树一样,东西在存放的时候就应该考虑用的时候如何去查找的问题,按固定的方式去整理数据,回头数据才能真正的产生用处。

    每个人搜索数据时,都是一种整理和过滤。每个人在收藏或分享某些数据的时候,都是对数据的一个认可。网络爬虫与人的行为一致,都是爬取数据的过程,反过来看也是这样,人浏览的行为本身就是在爬取数据,分享与收藏就是在过滤、筛选数据,我们可以拿人采集的数据构建一个更优良的人人为我、我为人人的搜索引擎。

    为什么做(目前存在的问题)

    可靠性

    你的数据安全,不仅仅取决于你自己,依赖于公司运营状况,网络情况,开发、运维人员的安全意识。

    • 服务商问题

      数据未备份而导致的数据丢失 /被勒索者病毒加密;服务停运,限期下载;正常内容被错误的审核机制拦截,导致数据丢失

    • 网络不可达

      网络拥堵、断网 /局域网环境(线下比赛、家庭内部网络、高铁、飞机)或极端环境下(星际移民,高延迟通信)数据无法使用

    • 恶意攻击

      身份信息中心化认证,信息没有安全验证机制,导致身份信息冒用,信息泄露等情况发生。

      某某平台用户信息被拖库;某某平台身份认证服务器被攻击导致身份冒用( twitter:我-秦始皇-打比特币)

    体验限制

    你的体验取决于运营人员的 kpi

    • 服务涨价
    • 平台推广 /广告
    • 推荐算法使用户画地为牢
    • 不同平台的优秀功能无法跨平台使用

    信息快速获取

    信息应该在你需要的时候自动浮现,而非主动查询。人与人的一个重大区别是查询能力而不是理解能力。

    1. 怪圈:我不知道才去查,但是我需要知道一些东西才能查到
    2. 有些事情你以为你知道,但其实你可能并不知道(举例:‘两肋插刀’由来)

    组合查询

    数据是有相关性的。一个人做出一个决定不仅取决于他自己,也跟当时的社会环境有关。历史的发展轨迹需要多个人掺杂在一起去看。

    • 看人物传记(或百科),多个人物事迹混合成一条时间线的组合查询
    • 看历史上的决策,与当时重大事件组合查看

    信息追踪

    • 跨平台追踪

      你关注的人(亲朋好友、up 、明星等)、事(新闻、重要通知)在不同平台下的数据的线性查看。

    • 时间线理顺

      看到某些事情,不明白之前发生了什么,事件应该是以时间线的形式来查看的

    做成什么

    一个由图数据库支撑的云文件系统,采用 gpg 体系进行身份以及完整性验证,基于触发器的数据自动展示,数据可控,来源可验证,多设备间同步。

    用户自己拥有所有数据,可以选择服务商提供的空间和计算能力,也可自行在本机或云主机上搭建服务。

    怎么做

    涉及技术

    • 公钥证书体系(主要是 pgp 加密和 gpg 实现)
    • 图数据库(本系统主要使用 neo4j 社区版)

    重要概念

    节点 /基础信息

    存储节点的基本信息,类似已有文件系统中的文件内容,包含本节点内的一些信息或基础属性信息。

    节点包括签名,内容可为任意内容(包括加密后的信息)

    以小明同学举例:

    属性 /字典式(更直观且方便解析,亦可直接生成表格,推荐):

    • 姓名:小明
    • 出生年份:2010 年
    • 住址:天津市

    描述文本:

    • 小明在 2010 年出生,现在住在天津市

    关系 /链接信息

    与基本节点相关联的节点信息。

    以小明同学和他的老师王老师为例:

    • 名称:王老师

    加入链接信息的小明的信息

    • 姓名:小明
    • 出生年份:2010 年
    • 住址:天津市
    • [老师]:(王老师)

    本质与节点的基础信息没有区别,但因为是关联实体,所以是链接信息,而非基本的属性信息。

    信任(链 /网)

    类 gpg 体系的信任链。

    如存在一下信任关系(指向则为信任):

    • a->b->c->d

    当你作为一个新用户,信任 a 的时候,则可以通过信任深度来过滤信息:

    • 信任深度为-1 或未指定,展示所有信息
    • 信任深度为 0,展示自己认可的信息
    • 信任深度为 1,展示自己和 a 所认可的信息
    • 信任深度为 2,展示自己、a 、b 所认可的信息
    • 信任深度为 3,展示自己、a 、b 、c 所认可的信息
    • 信任深度为 4,展示自己、a 、b 、c 、d 所认可的信息

    假设每人信任十个人,则深度为 1 时,信任网络中的人为 11 个;信任深度为 4 时,信任网络中的人为 11111 个。

    按照四 /六度分隔理论(本例以 4 层为例),最多 4 层网络足以筛选掉所有的未经信任的数据。

    重要结构

    • seed

      { // json 序列化后的 seed,防止不同语言因 json 序列化结果不一致而导致的签名无法验证 // 对象内部结构见下方 json_seed 'json': '...', // 签名信息列表,如果 json 结构中包含作者信息,则必须包含这个作者的签名,否则视为无效 'sign': [...], // 全 id 为 metadata.id.value-fingerprint(代表使用这个 id 的人)-sha256(json 字段的 sha256)-timestamp(更新版本时间戳) // metadata.id.value = // id 可由 seed 计算出,传输过程中无需携带 'id': '...' } 
    • seed.json

      { // 元信息 'metadata': { // 字段 id 'id': { // 类别,例如 url,默认不指定为 seedid 'type': '...', // id,唯一性 id,如果是 url 类型,则 id 为 url 值 // fingeprint_short(代表最初创建这个 id 的人或一些人的指纹)_randomstring(随机字符串,防止极端条件下产生的冲突)_metadata.time.update.ts(第一次创建时的时间戳,以秒为单位) 'value': '...' }, // 作者信息,作者的证书指纹列表,全部大写 'author': ['...'], // 时间相关信息 'time': { // 更新 /创建事件 'update': { // 时间戳 'timestamp': ..., // 时间精度,比如 year,month,day,hour 'accuracy': '...' }, // 开始相关信息,结构同 update "start": {...}, // 结束相关信息,结构同 update "end": {...} }, // 地点相关信息 "position": { // 后续如果有超脱于经纬度的数据,比如宇宙空间坐标,再增加字段进行描述 // 经度 "longitude": 1.111, // 纬度 "latitude": -1.111 }, // 指向的链接 'link': [ { // 指向的 seedid 'id': '...', // 关系名称 'name': '...' } ] }, // 数据信息,可以为对象、列表或数据 'data': ... } 

    生态架构

    软件

    • 客户端
      • 移动端
        • 文件映射
        • 剪贴板管理
        • 文本编辑
        • 基于 gps 或其他触发器的自动触发
      • pc 端
        • 网关
          • 文件映射(网盘)
          • 剪贴板管理器
          • 服务自发现( ssdp,类似内网 TV 自发现)
          • 多地备份
        • 浏览器插件
          • 划选采集内容
          • 高亮显示划选内容
          • 批注(对页面的批注,对高亮内容的批注,对批注的批注,对批注的批注的批注)
    • 服务端( hub )

    参与者

    • 使用者

      • 内容消费
      • 内容产出
      • 内容搬运 /整理
      • 内容筛选
    • 开发者

      • 定制开发
      • 卖客户端
    • 服务商(整合服务)

      不是所有的人都愿意自建服务,也不是所有的自建服务都能高效利用

      服务商主要提供廉价(自建服务利用率不高)和稳定(专门对数据进行备份)的服务。

      服务本身也是互动社区。

      • 售卖空间和计算能力
      • 保证数据安全(用户依然可以本地自建服务或对数据进行冷存储)

    数据自动拉取(依赖于 keyserver,根据指纹拉取)

    当然也可以不拉取,直接使用多个服务器,结果在客户端汇总。

    注意:目前还不支持,等服务端完善之后做后续支持

    利用 keyserver 实现类似 dns 的功能,以公钥中的 uid.comment 进行“域名”解析,实现效果:根据指纹信息自动解析到其使用的服务器和发布的内容。

    abc 三个人使用 s1,def 三人使用 s2

    当 a 关注 d 的时候:

    1. s1 根据 d 的指纹信息去 keyserver 中拉取 d 的公钥
    2. s1 解析 d 公钥中的 uid 信息中包含的 comment 信息获得 d 所使用的服务器信息(标记为 ds )
    3. s1 根据 ds 去 s2 中拉取 d 的信息并保存

    Q&A

    证书过期或吊销了之前的数据无法验证怎么办

    对身份认证极其敏感的信息,自行将 seedid 压入受信区块链。seedid 包含作者指纹和 json 的 sha256,可确定信息发布时间在证书吊销或过期之前。

    研发计划

    后端 v0.1.0b ( 2020 年 12 月 6 日)

    • [ ] 并集查询
    • [ ] 管理员接口
      • [ ] 证书访问权限配置

    移动端 v0.1.0 ( 2020 年 12 月 7 日开始,预计 2-3 周时间)

    • [ ] 创建内容(笔记、日记等功能)
    • [ ] 分享内容,对内容进行打标签(人人索引计划)
    • [ ] 内容查询,多级信任链机制
    第 1 条附言    2020-11-30 14:17:46 +08:00

    演示数据

    第 2 条附言    2020-11-30 15:20:06 +08:00
    9 条回复    2021-04-12 22:29:27 +08:00
    dawn009
        1
    dawn009  
       2020-11-30 14:44:29 +08:00
    我目前的理解:
    这是一个用于发布和获取信息的网络协议,使用分布式存储,使用 GPG 签名保证信息来源可信,使用多节点存储抗灾。

    关于触发器的概念没太看懂。
    是指客户端可以根据正在浏览的内容,自动提炼出关键词,自动根据关键字搜索相关信息吗?
    err1y
        2
    err1y  
    OP
       2020-11-30 14:56:20 +08:00
    @dawn009 举例来讲
    比如每年的今天,或者某个 时间提醒,这个是基于时间触发的信息显示
    比如周围某个地点有危险信息,某个地点有塌方风险,周围发生了什么事情,这个是基于地点触发的信息显示
    比如图像识别到某种物体或者 ocr 文字识别的时候,识别到了什么东西,然后做信息自动展示
    比如在搜索引擎中搜索关键字‘key'的时候,浏览器插件自动在服务器中也搜索’key‘的相关内容
    还有就是你提到的,文本 /文件内容的关键字识别自动提醒
    本质上就是基于某种条件触发信息的自动展示,无论是基于时间、地点、图像识别、音频识别还是事件,或是周围的蓝牙、wifi 信息,基于任意条件 /传感器状态触发的信息展示
    EPr2hh6LADQWqRVH
        3
    EPr2hh6LADQWqRVH  
       2020-11-30 17:15:15 +08:00
    Linked Data

    楼主你这想法我也有过。

    Linked Data 已经被谷歌成体系成规模地实践过了,现在搜谷歌右侧出现的就是。

    所以也被证明了效果有限。


    还有,楼主组邪教吗,感觉你这方面很有前途
    err1y
        4
    err1y  
    OP
       2020-11-30 18:04:53 +08:00 via iPhone
    @avastms
    我知道那个,然后还有叫 magi ( https://magi.com )的。但是这些自动化的东西我觉得不够好,而人做的分析才是最好的(现阶段)。最重要其实也不是分析与否,应该是有一个统一化的分享和索引方式,然后由官方自己去按照这种方式去分享自己的信息。

    以之前我去公园转的例子来讲,官方说有活动,但是我没看到需要线上预约,到了公园内,才看到要预约,他们没在官网上说需要预约这件事情,但是公众号上说了。各个平台之间的信息很分裂,一种更好的方式应该是有一个类似 wiki 百科或者百度百科的样式,然后把所有的有用的消息都分门别类的地方在里面,这个靠自动化以现阶段还是做不到的,但是人可以。

    类似“全历史”或“后续”这种平台,他们也有问题,就是只有自己的团队在维护,如果不是一个开放平台,那么信息量一定是有限的,需要每个人都可以参与编辑并且可以编辑,无需审核,才能算是人类共有的东西。平台只能提供数据,信任与否是需要信息查看者本身去判断的,而信任链机制可以保证你可以筛选出一批你相对可信的数据。

    抱歉说得有点混乱,表达能力有些不好,接下来我先用 electron+vue 做一个基于本协议的笔记应用,慢慢做成理想的样子。
    err1y
        5
    err1y  
    OP
       2020-11-30 18:15:12 +08:00 via iPhone
    @avastms

    这个平台的本质应该是个文件系统,一套基于图数据库的云文件系统,这套系统的目的其一是存储自己要存储的数据,二是归类、索引要找的数据。三是分享。

    我的手机里有从 10 年到现在的三万张照片,苹果的人像自动识别本身有问题,就算能 100%识别,但是没有脸的背影还是没有办法自动归类到某个人,而它又不提供一个你添加标签的功能,有的时候想找照片真的很烦。这个有 ios 的第三方应用做了,忘记叫什么了,但是他还有个问题,就是只能对照片归类,我可能还有相关的录音和记录的文字,都没有办法做到。

    这一整套想做的事情,其实是 icloud 应该做的事情,但是我觉得 icloud 没有完全的做到这个样子,而我想实现这个东西。
    baobao1270
        6
    baobao1270  
       2020-12-01 10:15:47 +08:00 via Android
    不错的想法,但是难以实现
    感觉楼主要颠覆互联网的秩序
    资本主义的存在必然导致互联网中心化,而互联网的中心化不过是帝国资本主义时期拖拉斯的再演。
    err1y
        7
    err1y  
    OP
       2020-12-01 14:11:37 +08:00 via iPhone
    @baobao1270

    我觉得这是一个漫长的过程,虽然缓慢,但是只要一直坚持下去,理想状态下数据应该是指数级增长的,起步可能很艰难,但是只要出来了东西,人们意识到价值了,就好说了。(当然也可能是我自嗨了)
    firefox12
        8
    firefox12  
       2021-04-09 17:58:07 +08:00
    你忽略了 最重要的 2 点, 你能生成的证书,别人也能生成一个, 你怎么证明 这份证书代表你?

    第二 当暴力机关找到 keyserver 的时候, 你这个系统就没有意义了。
    err1y
        9
    err1y  
    OP
       2021-04-12 22:29:27 +08:00 via iPhone
    @firefox12 gpg 公钥体系
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     834 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 20:10 PVG 04:10 LAX 12:10 JFK 15:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86