甲方要求我这边设计开发一套密信系统,密信仅限收件人查阅,其他所有人都无法看到,包括但不限于能接触到数据库,线上代码,服务器、开发人员、运费人员,包括一人有全部权限也无法查看某人密信。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TOTOP
20D
V2EX    问与答

甲方要求我这边设计开发一套密信系统,密信仅限收件人查阅,其他所有人都无法看到,包括但不限于能接触到数据库,线上代码,服务器、开发人员、运费人员,包括一人有全部权限也无法查看某人密信。

  •  
  •   TOTOP 2023-01-29 17:19:08 +08:00 2268 次点击
    这是一个创建于 1036 天前的主题,其中的信息可能已经有所发展或是发生改变。
    24 条回复    2023-01-30 10:11:25 +08:00
    TOTOP
        1
    TOTOP  
    OP
       2023-01-29 17:21:23 +08:00
    不能采用第三方资源,或者去中心方案。要独立完整可执行。
    Ranying
        2
    Ranying  
       2023-01-29 17:22:27 +08:00
    收件人私钥不能在服务器,不好弄啊
    ThirdFlame
        3
    ThirdFlame  
       2023-01-29 17:23:09 +08:00
    PGP
    westoy
        4
    westoy  
       2023-01-29 17:24:27 +08:00
    单个都能满足, 全部权限就没戏了, 直接告诉对方不行吧, 这种要调整人事权限去适配系统的, 反过来就有问题了
    duke807
        5
    duke807  
       2023-01-29 17:25:26 +08:00 via Android
    要想实现这个要求,只能用第三方开源加密工具
    想复杂一点就 rsa 非对称加密
    想简单一点就 aes 对称加密,输入字符串密码解密

    简单的对称加密可以看这个免安装开源小工具:
    t/832302
    cvooc
        6
    cvooc  
       2023-01-29 17:28:16 +08:00
    本地加密上传, 密码第三方自行通知?
    Ranying
        7
    Ranying  
       2023-01-29 17:28:39 +08:00
    1. 服务器生成公私钥,公钥保存,私钥发到收件人本地
    2. 用收件人密码加盐去加密私钥,这一步在本地完成,然后向服务器提交加密私钥
    3. 收件人登录时取得加密私钥并在本地解密
    4. 收件人修改密码时用新密码加密私钥并提交
    5. 发件人取得公钥加密消息并发往收件人
    fgwmlhdkkkw
        8
    fgwmlhdkkkw  
       2023-01-29 17:29:26 +08:00
    u 盾
    werls
        9
    werls  
       2023-01-29 17:31:25 +08:00 via Android
    GPG 就行了 给邮箱装一个
    libook
        10
    libook  
       2023-01-29 17:34:58 +08:00   2
    采用非对称加密,每个用户生成独立的公私钥对,公钥存储到服务器上,私钥存储在客户端。
    发送密信的时候,按照收件人下载其公钥,把信息在本机加密再发到服务器上,收件人将密文下载到本地,使用私钥解密查看。
    如果需要移动使用,比如支持换另一个客户端使用,可以把公钥使用用户的密码在本地加密后,将密文发送到服务器上储存,用户换其他设备的时候会将私钥密文下载到本地,再用用户密码解密使用。
    duke807
        11
    duke807  
       2023-01-29 17:37:31 +08:00 via Android
    @libook
    有全部权限的人,稍微改一下产品代码,就可以把客户端存放的密钥拿到手
    更不用说初始产品可能就留有后门
    clearc
        12
    clearc  
       2023-01-29 17:39:01 +08:00 via iPhone
    这个需求如果是理想状态其实挺简单的,描述复杂化了,把它抽象一层,就是“一个端到端的加密系统,且用户私钥不离开本地”。

    考虑到实现,本质上就要做一套双层加解密,用于密文的非对称密钥由用户本地生成本地保存,自行上传公钥,服务器做用户识别和绑定。

    但是有这么个需求的甲方,做起来肯定不是这么理想……
    GopherDaily
        13
    GopherDaily  
       2023-01-29 17:41:10 +08:00
    1. 生成公私钥,私钥让用户保存,系统只保存公钥;
    2. 发给用户的信息用公钥加密,用户收到后要在客户端输入私钥才能看到

    类似于云厂商的 AccessKey ,逆向
    leoleoasd
        14
    leoleoasd  
       2023-01-29 17:42:35 +08:00
    GPG+硬件密码学工具 本身不就是为了解决这个问题的
    libook
        15
    libook  
       2023-01-29 17:46:39 +08:00
    @duke807 #11 那按照你这么说,这个需求无解。

    正常开发涉密产品都会有严格的代码审查流程的,如果开发过程能随意到像你所说的程度,那任何所谓银行项目、国防项目都不可能做到相对安全。
    duke807
        16
    duke807  
       2023-01-29 17:48:25 +08:00 via Android
    @clearc 只要楼主做的产品,客户端能接触到加密前的明文、解密后的明文、甚至是可以扫描本地电脑文件找到密钥,理论上就是不安全的,拥有全部权限的人就可以增加恶意代码查看到历史通讯内容。
    duke807
        17
    duke807  
       2023-01-29 17:50:46 +08:00 via Android
    @libook
    > 那任何所谓银行项目、国防项目都不可能做到相对安全

    两码事,你说的这些是防止外部不安全因素,内部用机制保障

    而楼主明确说了要防止内贼,且拥有产品的一切权限
    meeop
        18
    meeop  
       2023-01-29 18:25:25 +08:00
    很简单啊,甚至你用 qq 都行

    就用非对称加密,收信人持有私钥,发信人用公钥加密数据内容然后发送
    这样除了收信人,其他任何人都无法获取信件内容

    唯一的风险是客户端有后门可能读取客户端的私钥,但是这一点可以通过代码开源检查发现

    另一个风险是因为黑客攻击泄漏私钥,这个可以通过比如专门密钥保管软件硬件处理,不然各种基于非对称加密的服务都没法用了

    再保险点,就要求涉密电脑不能上网,不能安装不可信程序等手段进一步约束
    hjtao889
        19
    hjtao889  
       2023-01-29 19:32:14 +08:00
    发件人可回看吗
    SenLief
        20
    SenLief  
       2023-01-29 21:00:52 +08:00
    给每个收件人寄一份硬件加密解密设备。
    TOTOP
        21
    TOTOP  
    OP
       2023-01-30 00:04:37 +08:00
    @hjtao889 确认信息发出,无法撤回,也不可再查看。
    Zy143L
        22
    Zy143L  
       2023-01-30 02:44:14 +08:00 via Android
    上加密狗吧 内置公私钥 服务器信息下发均通过公钥加密
    用户使用加密狗私钥解密
    Damn
        23
    Damn  
       2023-01-30 10:03:47 +08:00
    @DreamCMS 发信人自己都不能回看,那不就是阅后即焚,如何实现上下文对话?
    那做这系统意义何在,不如直接线下交头接耳得了。。。
    TOTOP
        24
    TOTOP  
    OP
       2023-01-30 10:11:25 +08:00
    @Damn 无需现上下文对话
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3330 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitud
    VERSION: 3.9.8.5 39ms UTC 04:45 PVG 12:45 LAX 20:45 JFK 23:45
    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