前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Retrofit/Okhttp API接口加固技术实践(下)

Retrofit/Okhttp API接口加固技术实践(下)

作者头像
开发者技术前线
发布于 2020-11-23 06:49:13
发布于 2020-11-23 06:49:13
74900
代码可运行
举报
运行总次数:0
代码可运行

客官让你久等了,这是接口API加固的下篇,现在可以享用了!

百度首席科学家吴恩达宣布要离职啦,和我有半毛钱关系吗?

上篇加固介绍了APi单纯Post用对称加密(文中用Base64 为简单列子)加密方式,这种加密方式还是存在一定的风险,加密效率虽高,但易破解,本节将介绍怎么用非对称加密 来加解密okhttp的数据,本文采用RSA加密算法为栗子。

对称加密

对称加密是最传统的加密方式,比上非对称加密,缺少安全性,但是它依旧是用的比较多的加密方法。 对称加密采用单密钥加密方式,不论是加密还是解密都是用同一个密钥,即“一把钥匙开一把锁”。对称加密的好处在于操作简单、管理方便、速度快。它的缺点在于密钥在 网络传输中容易被窃听,每个密钥只能应用一次,对密钥管理造成了困难。对称加密的实现形式和加密算法的公开性使它依赖于密钥的安全性,而不是算法的安全性。

对称加密原理以及对称加密算法

对称加密的核心——通信双方共享一个密钥 通信过程: A有明文m,使用加密算法E,密钥key,生成密文c=E(key,m); B收到密文c,使用解密算法D,密钥key,得到明文 m=D(key,c); 比喻: 对称加密是最直观,也是历史最久远的加密手段,类似于加锁和解锁,只不过钥匙的个数非常多(~~2^100),一个人穷其一生也试不完所有可能的钥匙 因此加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘 密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解 密,所以密钥的保密性对通信性至关重要。

主要有DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。

非对称加密

非对称密算法是一种密钥的加密方法。

非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对存在,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用密钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。

另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。 甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

列如 :支付宝的加密方式就采用非对称加密方式,支付宝会给客户提供支付宝证书,作为用户验证是否是来自支付宝的数据,防止第三方假冒支付宝,而客户手中持有私钥,用户支付宝发送的数据经过支付宝的公钥进项加密,则支付宝可以采用自己的的私钥进行解密。

工作过程

  • 1.A要向B发送信息,A和B都要产生一对用于加密
  • 2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
  • 3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
  • 4.A将这个数据发给B(已经用B的公钥加密消息)。
  • 5.B收到这个数据后后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。

通俗点可以这么理解:

  • 浏览器向服务器发出请求,询问对方支持的对称加密算法和非对称加密算法;服务器回应自己支持的算法。
  • 浏览器选择双方都支持的加密算法,并请求服务器出示自己的证书;服务器回应自己的证书。
  • 浏览器随机产生一个用于本次会话的对称加密的钥匙,并使用服务器证书中附带的公钥对该钥匙进行加密后传递给服务器;服务器为本次会话保持
  • 该对称加密的钥匙。第三方不知道服务器的私钥,即使截获了数据也无法解密。非对称加密让任何浏览器都可以与服务器进行加密会话。

浏览器使用对称加密的钥匙对请求消息加密后传送给服务器,服务器使用该对称加密的钥匙进行解密;服务器使用对称加密的钥匙对响应消息加密后传送给浏览器,浏览器使用该对称加密的钥匙进行解密。第三方不知道对称加密的钥匙,即使截获了数据也无法解密。对称加密提高了加密速度

数字证书

数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。 数字证书绑定了公钥及其持有者的真实身份,它类似于现实生活中的居民身份证,所不同的是数字证书不再是纸质的证照,而是一段含有证书持有者身份信息并经过认证中心审核签发的电子数据,广泛用在电子商务和移动互联网中。。 通俗讲就是车管所会给每个车辆进行认证颁发车牌,通过车牌我们可以查到所有车辆和驾驶员的信,二数字证书就辨别唯一身份,支付宝等的数字证书就是公开的,这不是支付宝自己决定,而是由国际组织认证,这样不管是哪个用户首先就可以根据浏览器返回的证书辨别支付宝的真伪。

数字签名

数字签名用来,保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。 数字签名是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。如果中途数据被纂改或者丢失。那么对方就可以根据数字签名来辨别是否是来自对方的第一手信息数据。 数字签名是个加密的过程,数字签名验证是个解密的过程。

参数加解密

首先,Android中生成了对称密钥:

代码语言:javascript
代码运行次数:0
运行
复制

然后将SecretKeySpec转换为Base64字符串格式:

代码语言:javascript
代码运行次数:0
运行
复制

调用函数:

代码语言:javascript
代码运行次数:0
运行
复制

用SecretKeySpec加密数据:

代码语言:javascript
代码运行次数:0
运行
复制

使用拦截器:

然后将字符串秘密AES密钥和加密的数据(用这个AES密钥加密)使用okhttp使POST请求。字符串密钥使用的是RSA加密。

代码语言:javascript
代码运行次数:0
运行
复制

在服务器端可以解密(从RSA)秘密AES密钥,并得到它的字符串表示。在客户端(Android)和服务器端(server)上是一样的。使用这个字符串AES密钥解密数据。

代码语言:javascript
代码运行次数:0
运行
复制

如果客户端对服务端返回的数据解密也是同样的道理。和上面是个逆过程,这里不再累赘了。

总结

完整的非对称加密过程

假如现在 你向支付宝 转账(术语数据信息),为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:

  • 1.首先你要确认是否是支付宝的数字证书,如果确认为支付宝身份后,则对方真实可信。可以向对方传送信息,
  • 2.你准备好要传送的数字信息(明文)计算要转的多少钱,对方支付宝账号等;
  • 3.你 对数字信息进行哈希运算,得到一个信息摘要(客户端主要职责);
  • 4.你 用自己的私钥对信息摘要进行加密得到 你 的数字签名,并将其附在数字信息上;
  • 5.你 随机产生一个加密密钥,并用此密码对要发送的信息进行加密(密文);
  • 6.你用 支付宝的公钥对刚才随机产生的加密密钥进行加密,将加密后的 DES 密钥连同密文一起传送给支付宝;
  • 7.支付宝收到 你 传送来的密文和加密过的 DES 密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 你随机产生的加密密钥;
  • 8.支付宝 然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃;
  • 9.支付宝 用你 的公钥对 你的的数字签名进行解密,得到信息摘要;
  • 10.支付宝用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要;
  • 11.支付宝将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。
  • 12 确定收到信息,然后进行向对方进行付款交易,一次非对称密过程结束。在这后面的流程就不属于本次非对称加密的范畴,算支付宝个人的自我流程,也就是循环以上过程。

技术 - 资讯 - 感悟

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开发者技术前线 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入探讨专利知识和交底书撰写及专利检索
在当今这个创新驱动的时代背景下,专利不仅是保护发明创造的重要法律工具,也是推动科技进步和社会发展不可或缺的力量。随着全球化进程的加速和技术迭代的速度日益加快,知识产权(IP)已经成为企业竞争力的核心要素之一。在这样的大环境下,如何有效地将创新成果转化为具有法律效力的专利权,成为了摆在每位发明人和企业面前的重大课题。
zhouzhou的奇妙编程
2024/07/28
3040
通俗易懂专利分类、专利申请流程
新颖性,是指该发明或者实用新型不属于现有技术;也没有任何单位或者个人就同样的发明或者实用新型在申请日以前向国务院专利行政部门提出过申请,并记载在申请日以后公布的专利申请文件或者公告的专利文件中。
小锋学长生活大爆炸
2020/08/13
6970
通俗易懂专利分类、专利申请流程
如何给我自己开发的测试工具申请专利?
如果自己有专利权益,可以自行设计该发明或者实用新型,也可以委托给他人设计。由于专利申请必须符合专利法规定的条件,只有符合规定才能获得专利证书才有法律效力。那么什么是专利?专利是什么?专利分三个部分构成:发明专利、实用新型专利和外观设计专利。
测试开发囤货
2022/11/07
1.1K0
一文讲透专利写作,申请流程和费用
本文讲解了一般专利申请的流程,专利的基本知识和申请费用,同时也摘录了专利写作各部分的注意要点。
辉哥
2019/12/24
1.5K0
一文讲透专利写作,申请流程和费用
专利讲座笔记
知识产权,包括工业产权、著作权与其他,专利是工业产权下属的概念。专利具体来说是分为三个类型:发明、实用新型、外观设计。
千灵域
2022/06/17
4740
【知识】软件专利写作技巧
本文介绍软件类专利,也就是计算机程序类专利写作的一些要点总结,对培训材料做些记录。
辉哥
2021/02/22
4K0
一文读懂高通苹果专利战背后的专利常识
专利诉讼早就屡见不鲜,暂且放下高通和苹果公司之间的“恩怨情仇”,我们是否有过这些疑惑:到底什么是专利?为何会有专利之争?为何专利战愈演愈烈?专利究竟有什么价值?如何使用他人的专利?本文将为大家解读专利战背后的专利常识。
yuanyi928
2018/12/27
8350
一文读懂高通苹果专利战背后的专利常识
2个实用新型专利可以代替论文评职称吗?
往往对于论文发表来说可以选自的期刊有很多方式我们可以通过期刊的影响因子、难度和时间进行选择;而专利申请只能向国家专利局递交申请材料,审批时间是基本固定的。论文发表到投稿往往只需要几个月时间,而申请专利审批时间长达半个月到2年这个主要是根据专利的类型来决定,所以此时你要就要看你的时间是否充裕了,同时现在专利也可以通过转让的形式来用用等等,对于转让信息情况,之前我咨询过铭一知识产权,介绍说有包授权的业务,不过还退费..........
大葡萄
2018/12/05
1.6K0
一键生成万字专利!中科院发布多智能体框架AutoPatent,含1933个「草稿-专利」数据对
在科技日新月异的今天,专利作为保护创新成果的重要法律工具,其撰写过程却往往繁琐且耗时,传统的专利撰写工作通常由熟悉专利法律和技术领域的专利代理人完成,这一过程耗时费力,且效率较低。因此,开发一种能够自动化生成高质量专利文档的方法,对于提高专利撰写的效率和准确性具有重要意义。
新智元
2025/02/15
1950
一键生成万字专利!中科院发布多智能体框架AutoPatent,含1933个「草稿-专利」数据对
在世界知识产权日,谈谈VR/AR专利之现状
2001年,世界知识产权组织为呼吁人们尊重知识、树立保护知识产权的意识,将每年的4月26日定为“世界知识产权日”。今日,小编将带大家从VR/AR的角度,来看看知识产权之一的“专利权”。
VRPinea
2019/05/13
1.1K0
在世界知识产权日,谈谈VR/AR专利之现状
【信管12.2】知识管理与知识产权
想必你对知识的概念多少都会有一些自己的理解,毕竟我们经过了那么多年的教育,学来学去可不都学习的是“知识”嘛。在今天的学习中,内容还是会比较多,因为除了知识管理相关的内容之外,还有知识产权相关的法律法规的学习,这里必须都是原样摘抄的,所以后面的内容会比较多。不过也不用太过于担心,大家只要把握关键点进行记忆就可以啦!
硬核项目经理
2023/03/02
5000
【信管12.2】知识管理与知识产权
AsicBoost争议– 加速还是不加速?
前言:关于AsicBoost及其专利的种种争议一直是比特币社区的热门话题之一。但到底何为AsicBoost专利?所谓矿机制造厂商侵犯AsicBoost专利的真相到底是什么?本文作者第一次对其中涉及的种种法律问题进行了抽丝剥茧般的分析,拨开重重迷雾,解密其中真相。本文作者是AnonBitcoiner,文章来源于medium.com。
区块链领域
2018/10/22
2.2K0
AsicBoost争议– 加速还是不加速?
Nat Biotechnol|人工智能将如何影响专利撰写
2025年1月17日,美国斯坦福大学的研究人员在Nature Biotechnology发表文章How will AI affect patent disclosures,讨论了用于起草专利的人工智能工具,如何影响专利中有用技术信息的披露。
智药邦
2025/02/06
2290
Nat Biotechnol|人工智能将如何影响专利撰写
ResNet、Faster RCNN、Mask RCNN是专利算法吗?盘点何恺明参与发明的专利
前段时间OpenCV正式将SIFT算法的实现从Non-free模块移到主库,因SIFT专利到期了(专利授权后,从申请日开始有20年的保护期)。
CV君
2020/07/29
1.1K0
ResNet、Faster RCNN、Mask RCNN是专利算法吗?盘点何恺明参与发明的专利
国内知识产权保护的适应性调整与破冰
此部分节选《中国互联网法律政策报告(2014)》,由“腾讯研究院法律研究中心、中国信息通信研究院互联网法律研究中心“联合推出     执笔人:司晓、张钦坤、李海英、田小军、刘娜   1.《信息网络传播权保护条例》修改 加大侵权处罚力度       由于在著作权侵权判定中赔偿数额的确定一直是一个较大的难题。很多侵权诉讼中,权利人所获得的赔偿额小到根本不足以威慑侵权人以制止其再度侵权,例如在侵犯音乐作品的信息网络传播权中,单首歌曲的赔偿额一般只有几百元。这对于侵权人来说,违法成本很低。为了解决司法领域的这一困境
腾讯研究院
2018/03/07
8440
针对“AI专利流氓”,美国专利局出手了:提12大问题征求意见,规范AI专利申请
比如Geoffrey Hinton老爷子搞的DropOut,谷歌兄弟公司DeepMind手里的RNN,在法律层面,专利权都归谷歌所有。
量子位
2019/09/19
1K0
针对“AI专利流氓”,美国专利局出手了:提12大问题征求意见,规范AI专利申请
软考高级架构师:软件著作权、专利权、商业秘密权和商标权的区别
要理解软件著作权、专利权、商业秘密权和商标权之间的区别,我们可以通过一些日常生活中的例子来帮助记忆。
明明如月学长
2024/05/25
2070
软考高级架构师:软件著作权、专利权、商业秘密权和商标权的区别
AI 不可以作为专利认证发明人,“因为它不是人”
英格兰和威尔士上诉法院本周驳回了一名男子的请求,该男子要求法院承认他的人工智能系统为两项专利的发明者。
AI科技大本营
2021/09/27
3360
为人工智能筹划法律保护
●人工智能的法律保护与法律纠纷,已经拉开序幕。科学家、律师、投资人在关注人工智能产业的时候,势必需要回答:如何为自己的人工智能产品制定法律保护战略,法律保护成为人工智能战略的重要组成部分。 ●给机器人
企鹅号小编
2017/12/27
8970
“AI 不是「人」,不能成为「发明家」!”
大数据文摘转载自AI科技大本营 整理:郑丽媛 出品:CSDN 上个月,一位瑞典 AI 研究人员帮 GPT-3 争取论文“一作”的事件还没有下文,这个月美国联邦巡回法院已经确认:AI 系统不能为其发明申请专利,因为它们不是“人类”。 这项裁决是美国联邦巡回法院对美国密苏里州 AI 专家 Stephen Thaler 上诉的多起案件之一的回应——他曾多次试图为其 AI 系统的发明申请专利,均遭到了美国专利局拒绝,从而闹上法庭。 呼吁专利发明者可以是“非人类” Stephen Thaler 研发的 AI 系统名
大数据文摘
2022/08/26
3950
“AI 不是「人」,不能成为「发明家」!”
推荐阅读
相关推荐
深入探讨专利知识和交底书撰写及专利检索
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验