目前app服务器端通信基本上采用的是加密的算法来传输数据包,防止数据包在传输的过程中被篡改,app加密传输方式一般采用硬编码在apk和服务端,可以解决通过逆向被获取,为了保证服务端的安全性,需要截获app与服务端间的通信,进行重放操作和改包,由于数据包被加密,即使安全人员取得了加密方式,也需要每个包进行解密操作才能进行安全测试,因此还需要使用多个工具协调测试导致测试效率低,不方便进行接口分析。
“对称式”和“非对称式”
对称式加密就是加密和解密使用同一个密钥,被称为“Session Key” 这种加密技术是目前广泛使用的,
非对称式加密就是加密和解密所使用的不是同一个密钥,通常是两个密钥。一个是公钥另一个是私钥 两个密钥需配对使用,否则不能打开文件,“公钥”是指可以对外公布的,“私钥”则不能,只能有持有人一个人知道,他的优越性就在这里,因为对称式的加密方法如果在网络上传输密文就很难把密钥告诉对方,不管用什么方法都有可能被倾听 ,而非对称式的加密方法有两个密钥,且其中的公钥是可以公开的,不怕别人知道 ,收件人解密是只要用自己的私钥就可以,这样能避免密钥的传输的安全性问题。一般的数据加密可以在通信的链路加密,节点加密,端到端加密三层来实现。
链路加密:链路加密也叫在线加密是传输数据仅在物理层前的数据链路层进行加密,接收对方是传送路径上的各台节点机,信息在每台节点机内都要被解密和在加密,以此进行,直至到达木的地。
节点加密:节点加密能给网络数据提供较高的安全性,但他在操作方式上与链路加密是类似的两者均在通信链路上为传输的消息提供安全性,都在中间节点先对消息进行解密,然后进行加密,因为要对所有传输的数据进行加密,所以加密过程对用户是透明的,然而,与链路加密不同节点加密不允许消息在网络节点已明文形式存在,是要先把收到的消息进行解密,然后采用另一个不同的密钥进行机密,这一过程是在节点上的一个安全模块中进行,节点加密要求报头和路由信息以明文形式传输,以便中间节点能得到如何处理消息的信息,这种方法对于防止攻击者分析通信业务是脆弱的。
端到端加密:端到端加密允许数据在从源点到终点的传输过程中始终已密文形式存在,采用端到端加密(也叫脱线加密或包加密),消息在被传输是到达终点之前不进行解密,因为消息在整个传输过程中均受到保护,所以即使有节点被损坏也不会使消息泄露,端到端加密系统的价格相对便宜,并且与链路加密和节点加密相比更可靠,更容易设计,实现和维护,端到端加密还避免了其他加密系统所固有的同步问题,因为每个报文爵士独立被加密的,所以一个报文包所发生的传输错误不会影响后续的报文包,此外,从用户对安全需求的直觉上将,端到端加密更加自然,单个用户可能会选用这种加密方法,以便不影响网络上的其他用户,此方法只要源点和终点是保密的就行,端对端加密系统通常不允许对消息的目的地地址进行加密,是因为每一个消息所经过的节点都要用此地址来确定怎样传输消息,由于这种机密方法不能掩盖被传输消息的源点与终点,所以他对于防止攻击者分析通信业务是脆弱的。