APP和后端HTTP通信加密思路

这篇博客主要介绍笔者做app加密的具体思路

1.浅谈https

    https是目前应用最广泛的接口通信加密方式之一了,优点我就不说了(大家自行百度)。

    主要的两个缺点 a.有一定的技术门槛 b.花钱(最不想用的东西无非是太难或者太贵)

2.常用的加密算法

    1.MD5   

    2. AES 

    3. RSA  

    4.DES (3DES就是用3个不同的秘钥进行3次DES加密) 

    5.SHA-1

    简单地说2和4是对称(能加密能解密)的,1,3,5非对称,1存在暴力破解的可能性,3(公钥只能加密,私钥能加解密)

    任何一种加密方式都不是完美的,都有其应用方向,虽然MD5存在暴力破解的可能性,但是在笔者接触的大多数app和web项目中它却是现在应用次数最多的加密方式 . 一般通过增加加密次数来提高安全系数,例如:MD5(MD5(x))

    大多数产品提高安全性能的思路之一就是增加犯罪成本,加密也是如此。

3.确认加密的内容

    1.  关键信息是否单独加密 例:手机号,身份号,卡号,金额,具体什么是关键信息只能根据业务去判断

    2.  是否全报文加密

               不采用全报文加密意味着你的接口信息总是暴露的

               采用全报文加密会增加服务器的开销,也不能完全保证接口安全

 4.简单加密方案

        1.在app端生成一个随机码 R

        2.用AES+R加密全报文,比如得到加密后全报文data

        3.用RSA+公钥加密R,比如得到RR(app不保存R)

        4.data+RR

        后端解密就是反向操作了,

    由于RSA开销远大于AES所以只用RSA加解密随机码,用AES加密报文

 5.复杂加密方案

        上述的简单加密方案存在一个的风险,由于秘钥不固定不保存,所以一旦发生秘钥解密失败我们就无法获取报文内容。大部分时候当我们受到dos攻击时都是在报文里寻找攻击者的信息,所以大部分系统都不会采用动态的秘钥。

        一旦秘钥确定了加上安卓解包,理论上说接口是能破解的,所以接口安全的思路有一部分是在方法调用上设计

        1.混淆方法名,将aes加密方法名改成rsa,混淆秘钥名,将aes的秘钥命名为RSA_KEY

            混淆各种加密加密方法和秘钥就像郭靖当前写给欧阳锋的九阴真经一样

        2.让秘钥更加可控,首先将秘钥分类例如ZMK(主密钥简称Z)MARK(关键信息加密M),TMK(全报文加密T)用不同的秘钥加密不同的信息,秘钥本身也是密文的,存在后端数据库或者缓存,所有秘钥都受到主密钥的保护,主密钥可以设置分量保护。这样在APP端获取密文秘钥后解密成明文秘钥就不是件容易的事了。秘钥可以采用部分永久有效+部分时效性秘钥,当然这和你对系统的安全性要求是一致的,笔者接触过的系统中有一个用户一套秘钥,也有整个系统就一套秘钥。

        笔者也是新人,才学疏浅,经验不足,希望多多指正

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 基于原生前端和Python Flask后端的文件服务器源码+使用说明+详细注释.zip 一、简介 基于原生前端和 Python Flask 后端的文件服务器,可远程访问、下载和上传文件,可用于某一设备向其他设备开放的文件访问。局域网搭配内网穿透可实现公网访问。<br> (2023.04.09 更新:本项目仅推荐在 windows 环境下使用。读取硬盘分区的代码不是跨平台的,在其他系统可能出现未知问题。另外,本项目我没有继续更新的意愿,但如果你遇到了 bug 或者提交 pull requests,我会第一时间响应) 二、说明 最开始是想着,实现电脑不在身边的时候直接访问、操作电脑文件。等到做完了才想起来用 ftp 协议配置也更方便,也更稳定;但既然都做完了(;′⌒`)...也就权当一个练手项目吧。<br> 使用 http 实现确实麻烦了,但正好也能用最近学的前端知识做一做交互界面。使用 Windows 自带的 ftp 服务或网上的其他 ftp 客户端 UI 也就那样,自己从零设计 ftp 服务客户端又太麻烦了,选择前端 http 实现正好可以满足 UI 这个需求。<br> 同时不同设备访问只需要浏览器就可以了。~~当然移动端体验可能不太好,因为我没做移动端网页(懒),但是用还是能用的...~~ (2021.09.15 更新:增加了移动端适配,移动端使用体验大幅提升) 三、功能 (1)~~炫酷、人性化使用界面,赏心悦目(划掉)~~<br><br> (2)类似 ftp 服务的文件访问、下载和上传功能,没有删除(没这个需求) 四、使用 (1)安装依赖: ```cmd pip install flask ``` (2)[app.py](app.py) 中设置 SECRET_KEY 值,关于该值 flask 官方的说明: > SECRET_KEY 配置变量是通用密钥,可在 Flask 和多个第三方扩展中使用,如其名所示,加密的强度取决于变量值的随机密度。<br> > 不同的程序要使用不同的密钥,而且要保证其他人不知道你所用的字符串,其主要作用应该是在各种加密过程中加盐以增加安全性。在实际应用中最好将这个参数存储为系统环境变量。 建议通过随机方法获取值,采用系统变量方式存储,然后使用 `os.getenv('SECRET_KEY')` 读取<br><br> (3)定义登录用户名和密码:给 [app.py](app.py) 中的 `SPECIFY_UNAME` `SPECIFY_UPWD` 常量赋值<br><br> (4)运行 [app.py](app.py) 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值