V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
err1y
V2EX  ›  开源软件

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

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

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

    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   ·   实用小工具   ·   2609 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:51 · PVG 10:51 · LAX 18:51 · JFK 21:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.