从gRPC安全设计理解双向证书方案

  • 序言

  • 安全需求

  • 安全方案

    • 敏感数据加密传输

    • 认证

    • 鉴权

    • 数据完整性和一致性

  • 证书的基本原理

    • 单向证书

    • 双向证书

  • gRPC安全机制

    • SSL/TLS认证

    • GoogleOAuth2.0

    • 自定义安全认证策略

序言

网络安全领域在攻和防对抗规模群体已经成熟,但是两端从业者对于安全原理掌握程度参差不齐,中间鸿沟般的差距构成了漏洞研究领域的主战场。笔者“三省吾身”,在工作中会犯错误把一些加密、认证、鉴权的概念和实现方案搞混,尤其是加解密涉及算法和公私钥机制的概念不深入细节。

最近的几个影响颇大的安全漏洞,Apache Shiro 权限绕过漏洞、CVE-2020-14882weblogic 绕过登录、微软ZeroLogon,这些漏洞原理的共同点都是和基本的安全算法、认证鉴权方案缺陷有关。也许未来的漏洞攻防将转移到安全基础领域的对抗,从业人员除了要求推进安全方案的必要性,涉及安全建设的可用性更为重要,所以特此开专栏系列,为大家普及一些安全基本功。

本文主要通过介绍gRPC的双向认证方案,理清证书领域的知识。

安全需求

RPC是一种技术思想,实现有阿里的 Dubbo/SOFA、Google gRPC、Facebook 的 Thrift,实现时的远程通信规范和协议可以用RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。这种服务间通信机制为企业内部各系统、模块之间的微服务和接口之间互相调用,RPC实现需要考虑安全性,RPC 调用安全主要涉及如下三点:

  1. 个人 / 企业敏感数据加密:例如针对个人的账号、密码、手机号等敏感信息进行加密传输,打印接口日志时需要做数据模糊化处理等,不能明文打印;

  2. 对调用方的身份认证:调用来源是否合法,是否有访问某个资源的权限,防止越权访问;

  3. 数据防篡改和完整性:通过对请求参数、消息头和消息体做签名,防止请求消息在传输过程中被非法篡改。

安全方案

常见的安全攻防重视rpc协议的反序列漏洞,但是如果业务方问道如果做以上的安全需求,SDL同学就傻眼了,正确的做法是区分加密传输、认证、鉴权、数据完整性和一致性四个方向:

敏感数据加密传输

基于SSL/TLS的通道加密

当存在跨网络边界的 RPC 调用时,往往需要通过 TLS/SSL 对传输通道进行加密,以防止请求和响应消息中的敏感数据泄漏。跨网络边界调用场景主要有三种:

  1. 后端微服务直接开放给端侧,例如手机 App、TV、多屏等,没有统一的 API 网关/SLB 做安全接入和认证;

  2. 后端微服务直接开放给 DMZ 部署的管理或者运维类 Portal;

  3. 后端微服务直接开放给第三方合作伙伴 / 渠道。

除了跨网络之外,对于一些安全等级要求比较高的业务场景,即便是内网通信,只要跨主机 /VM/ 容器通信,都强制要求对传输通道进行加密。在该场景下,即便只存在内网各模块的 RPC 调用,仍然需要做 SSL/TLS。

使用 SSL/TLS 的典型场景如下所示:

通道加密的的实现技术难度稍大,对性能有损耗,定制化程度高,但是效果显著,建设收益明显

针对敏感数据的单独加密

有些 RPC 调用并不涉及敏感数据的传输,或者敏感字段占比较低,为了最大程度的提升吞吐量,降低调用时延,通常会

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值