问个 PGP 相关(或者基于 openPGP 做相关设计开发)的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
allenforrest
V2EX    问与答

问个 PGP 相关(或者基于 openPGP 做相关设计开发)的问题

  •  
  •   allenforrest 2013-12-30 14:13:21 +08:00 3026 次点击
    这是一个创建于 4308 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在考虑一个加解密方案,思路参考了 PGP。

    遇到一个问题,PGP(或基于 openPGP 的类似产品)本质上是适用于一对一的邮件(或文档、数据等)加解密,即使是一对多(比如邮件群发),这个「多」也是相对少量的。毕竟,如果大规模群发,所谓的私密性也就意义不大了。

    但对于一些企业内部还是存在类似场景,比如加密一份文档,权限是企业内一个大部门内,所有人都能解密访问,其他部门不行;或者更甚至,加密一份企业内部公开(所有内部人员均可访问)的文档,但泄露到外部则无法解密访问。

    对于这样的场景,使用 openPGP 的方案加密一份文档:
    1、生成加解密文档的会话密钥(SEK),对文档内容进行加密,生成Symmetrically Encrypted Data Packet。
    2、文档的加密者(所有者、或发送者)对文档进行数字签名,生成Signature Packet。
    3、使用对该文档有访问权限的接收者的公钥加密会话密钥,生成Public-Key Encrypted Session Key Packet。

    将这三者携带在一起,作为加密文档的一部分,传播出去。

    问题来了,如果接收者(有访问权限的人)不止一个,第3部中就要针对每个人都用其公钥加密一份 SEK。少量还可以,如果很多,成千上万,那携带的公钥加密报文就太大了,很麻烦。

    如果换一个思路,用群组来管理这些有访问权限的人,例如对每个部门设立一个群组,群组像一个普通人一样,也有一个公私钥对。

    这样,如果加密这个部门群组都有访问权限的文档,在第3部中就不用对所有该部门的人都生成工公钥加密报文,只需要用这个群组的公钥生成一份报文即可。

    但是这样一来,为了让该群组内的所有人都能解密,必须要让所有人都保存一份该群组的私钥。这一点感觉很不爽,大家都保存同一份私钥,必然存在私钥的分发、同步更新问题,很麻烦。

    想问问大家,类似这种大规模或者群组性质的加解密方案,有没有什么其他的好思路?
    8 条回复    1970-01-01 08:00:00 +08:00
    julyclyde
        1
    julyclyde  
       2013-12-31 15:06:13 +08:00
    你这种需求就不是PGP的安全模型适用的
    你这种甚至不能直接放加密过的文件出去,而只能是每次登录判断权限再决定给不给看
    allenforrest
        2
    allenforrest  
    OP
       2013-12-31 16:17:16 +08:00
    @julyclyde 是的,后来我仔细想过了一个在线加解密的方案,针对群组都有访问权限的文件,先用服务器公钥加密会话密钥,将会话密钥保存在服务器侧,该群组内的用户如果要解密访问文件,需要在线与服务器交换会话密钥,服务器先判断该用户的合法性(用户是否合法、是否属于该群组、文件访问期限是否有效等等),如果都合法,将会话密钥用该用户的公钥加密发给该用户,用户才有权限和方法解密访问该文件。

    这种方案便利性不如 PGP 的模型,但是优点是可以由服务器端做很多策略控制,也便于对已加密的文件做访问期限的控制、访问权限人的变更等等。
    julyclyde
        3
    julyclyde  
       2014-01-03 10:40:31 +08:00
    期限咋控制?
    allenforrest
        4
    allenforrest  
    OP
       2014-01-03 10:56:36 +08:00
    @julyclyde 在文档拥有者发起文档加密时,向服务器提交文档的发行者 ID、访问权限者 ID 列表(或群组 ID),访问期限。访问权限者在发起解密时,服务器来检查访问期限。
    julyclyde
        5
    julyclyde  
       2014-01-03 11:06:21 +08:00
    人家在限期内访问一次存下来就能多次查看了,下次都不需要过来
    allenforrest
        6
    allenforrest  
    OP
       2014-01-03 11:47:49 +08:00
    @julyclyde 用我的加解密软件不可以,除非自己 crack。
    julyclyde
        7
    julyclyde  
       2014-01-03 11:51:49 +08:00
    “呵呵”
    allenforrest
        8
    allenforrest  
    OP
       2014-01-03 12:06:07 +08:00
    @julyclyde 有啥更好的思路吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5376 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 06:58 PVG 14:58 LAX 23:58 JFK 02:58
    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