【后台开发拾遗】C/S架构中接入层的安全体系

前阵子,同事对某App与后台通信的数据进行了抓包分析,由于该App与后台通信使用的是http协议,且未对数据进行安全加密,因此通过抓包分析可直接获取其后台请求的接口及参数,通过构造Http请求,爬取其App内的数据。

平日的工作里,接触的比较多的都是业务逻辑,很少关注接入层这一块,经过上面这件事,激起了我对接入层的一些兴趣,要是哪一天自己做一个App,如何能做到安全接入呢?

总的来说,我们需要一种能够提供下列功能的 HTTP 安全技术:

  • 服务器认证 (客户端知道它们是在与真正的而不是伪造的服务器通话)。
  • 客户端认证 (服务器知道它们是在与真正的而不是伪造的客户端通话)。
  • 完整性 (客户端和服务器的数据不会被修改)。
  • 加密 (客户端和服务器的对话是私密的,无需担心被窃听)。
  • 效率 (一个运行的足够快的算法,以便低端的客户端和服务器使用)。
  • 管理的可扩展性 (在任何地方的任何人都可以立即进行安全通信)。

一、基础知识

1. 数字加密

  • 密钥:改变密码行为的数字化参数。
  • 对称密钥加密系统:编/解码使用相同密钥的算法。
  • 不对称密钥加密系统:编/解码使用不同密钥的算法。
  • 公开密钥加密系统:一种能够使数百万计算机便捷地发送机密报文的系统。
  • 数字签名:用来验证报文未被伪造或篡改的校验和。
  • 数字证书:由一个可信的组织验证和签发的识别信息。

密码

密码是一套编码方案,加密之前的原始报文通常被称为 明文(plaintext 或 cleartext)。使用了密码之后的编码报文通常被称作 密文(ciphertext)

密钥

在现实中,编/解码算法一般是公开的,我们可以为其设置大量不同的参数值以改变密码的工作方式,这个密码参数被称为 密钥(key)。给定一段明文报文 P、一个编码函数 E 和一个数字编码密钥 e,就可以生成一段经过编码的密文 C。通过解码函数 D 和解码密钥 d,可以将密文 C 解码为原始的明文 P。当然,编/解码函数都是互为反函数的,对 P 的编码进行解码就会回到原始报文 P 上去。

对称密钥加密技术

很多数字加密算法都被称为 对称密钥(symmetric-key) 加密技术,这是因为它们在编码时使用的密钥值和解码时一样(e=d)。我们就将其统称为密钥 k。
保持密钥的机密状态是很重要的。在很多情况下,编 / 解码算法都是众所周知的,因此密钥就是唯一保密的东西了。好的加密算法会迫使攻击者试遍每一个可能的密钥,才能破解代码。用暴力去尝试所有的密钥值称为枚举攻击(enumeration attack)

对称密钥加密技术的缺点之一就是发送者和接收者在互相对话之前,一定要有一个共享的保密密钥。
比如 A、B、C三个人都想与 J 对话,则A、B 和 C 都要建立自己与 J 之间的保密密钥。每对通信实体都需要自己的私有密钥。如果有 N 个节点, 每个节点都要和其他所有 N-1 个节点进行安全对话,总共大概会有 N^2 个保密密钥,这将是一个管理噩梦。

公开密钥加密技术

公开密钥加密技术没有为每对主机使用单独的加密/解密密钥,而是使用了两个非对称密钥:一个用来对主机报文编码,另一个用来对主机报文解码。
其中私钥和公钥是一对的,都可以加解密,配对使用。

所有公开密钥非对称加密系统所面临的共同挑战是,要确保即便有人拥有了下面所有的线索,也无法计算出保密的私有密钥:

  • 公开密钥(公有的,所有人都可以获得);
  • 一小片拦截下来的密文 (可通过对网络的嗅探获取);
  • 一条报文及与之相关的密文(对任意一段文本运行加密器就可以得到)。

RSA算法就是一个满足了所有这些条件的流行的公开密钥加密系统,它是在 MIT 发明的,后来由 RSA 数据安全公司将其商业化。即使有了公共密钥、任意一段明文、用公共密钥对明文编码之后得到的相关密文、RSA 算法自身,甚至 RSA 实现的源代码,破解代码找到相应的私有密钥的难度仍相当于对一个极大的数进行质因数分解的困难程度,这种计算被认为是计算机科学中最难的问题之一。

混合加密系统和会话密钥

任何人只要知道了公开密钥,就可以向一台公共服务器发送安全报文,所以非对称的公开密钥加密系统是很好用的。两个节点无须为了进行安全的通信而先交换私有密钥。
但是由于公开密钥加密算法的计算可能会很慢,所以实际应用中,一般都是采用对称和非对称加密混合使用策略。
比较常见的做法是,在两节点间通过便捷的公开密钥加密技术建立起安全通信, 然后再用那条安全的通道产生并发送临时的随机对称密钥,通过更快的对称加密技术对其余的数据进行加密。

2. 消息摘要

消息摘要算法(Message Digest Algorithm)是一种能产生特殊输出格式的算法,其原理是根据一定的运算规则对原始数据进行某种形式的信息提取,被提取出的信息就被称作原始数据的消息摘要。

著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体。

消息摘要的主要特点有:

  • 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出。
  • 一般来说(不考虑碰撞的情况下),只要输入的原始
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值