首页 >雅湾新闻网>科技>产品经理需要了解的接口知识

产品经理需要了解的接口知识

2019-11-11 10:00:45 作者:匿名

作为后台产品经理,通常需要连接外部系统。在设计开放平台接口的过程中,经常会涉及到与接口传输安全性相关的问题。在详细查阅了大量数据后,结合自己以往的经验,作者对接口加密和签名的相关知识做了系统的总结。在方便我查阅的同时,我还与您分享了一些参考资料,以解释不恰当的地方。

接口安全问题主要来自几个方面:

从实现接口安全的角度出发,将分别说明加密解密和签名算法的以下两个方面。

当客户端与服务器交互时,它将不可避免地包含交互消息(或者,通俗地说,请求数据并返回数据)。如果您不希望消息以明文形式传输,您需要对消息进行加密和解密。

因此,加密的主要功能是避免明文传输。即使被拦截的消息,被拦截方也不知道消息的具体内容。

加密分为对称加密和非对称加密:

1.2.1对称加密

使用单密钥加密方法,同一密钥可以同时用于加密和解密。这种加密方法称为对称加密,也称为单密钥加密。

也就是说,密钥是一致的。客户端使用这个密钥来加密传输参数,并将它们提交给服务器,服务器使用相同的密钥来解密它们。

1)常用的对称加密算法:

2)算法特征:

3)加密工具:

Openssl,使用libcrypto加密库、libssl库,即tls/ssl协议实现库等。Tls/ssl是一个基于会话的tls/ssl库,它实现了身份验证、数据机密性和会话完整性。

1.2.2单向哈希加密

单向加密也称为不可逆加密算法,其密钥由加密哈希函数生成。单向散列函数通常用于生成消息摘要、密钥加密等

1)常用的单向散列加密算法:

2)算法特征:

3)加密工具:

md5sumsha1sumopenssl dgst

1.2.3不对称加密

不对称加密是公钥加密,只有私钥可以解密。私钥加密,只有公钥才能解密。首先生成一对公钥和私钥,然后将公钥公开给其他人进行加密。另一些人用公钥加密信息,然后发送给甲方。甲方用私钥解密。反之亦然。(发送给某人,用某人的公钥加密。为了证明自己的身份,用自己的私钥加密)

不对称加密很少用于加密数据,而且速度太慢。它通常用于实现身份认证。发送方用对方的公钥加密,可以保证数据的机密性(公钥加密);发送方用自己的私钥加密,可以实现认证(数字签名);

1)算法特征:

基于非对称加密的特点,出现了以下两个问题:

问题1:如何确认记者证书的合法性?

在第三方组织:ca(认证机构)的帮助下。Ca向每个使用公钥的用户颁发带有ca签名的证书。证书的功能是证明证书中的用户合法拥有证书中的公钥。ca组织的数字签名使得攻击者不可能伪造和篡改证书。

Ca本身有证书和私钥。任何人都可以获得ca证书并使用它来验证它颁发的证书的有效性。

假设代理a向ca发出证书颁发请求:(证书颁发过程)

利用ca颁发的数字证书,ca可以确认证书所有者的身份,从而解决了通信中的身份确认问题。

问题2:认证是通过ca实现的。如何保证数据的机密性?

确保数据的机密性只不过是加密数据。不对称加密的加密速度慢,不适合加密通信数据。在实际的通信过程中,对称加密通常用于在身份被确认后对数据进行加密。如何协商对称加密的密钥?通常有以下两种方法。

方法1:互联网密钥交换算法

diffie-hellman算法密钥协商过程假设a/b双重传输进行通信。

1)在甲乙交流之前,张先生变成了两个大质数,P和G,作为生成数

2) a选择数字x,b选择数字y。

3) a/b加密结果如下:

注:互联网上的用户可以看到:p,g,g x% p,g y% p

4)a/b获得数据后,解密获得相同的结果

这样,a/b协商了一个公共密钥G xy% p。在两个a/b都用非对称加密确认了它们的身份之后,它们可以用该密钥加密通信数据。

方法2:通过公钥加密协商密钥

1)甲随机生成一个字符串作为密钥,甲用自己私钥对字符串加密得到st1,甲用乙的公钥对st2加密得到st2,甲将st2发送给乙;

2) b接收str2,用B的私钥解密,用A的公钥解密,最后得到密钥STR;

这样,甲乙双方就完成了密钥的协商,协商的密钥就是随机字符串。

常见的不对称加密算法

Ecc在许多方面都比rsa有绝对优势,主要体现在以下几个方面:

(1)des加密算法

Des加密算法是一种分组密码,用于加密64位数据包中的数据。它的密钥长度是56位。加密和解密使用相同的算法。

Des加密算法是对密钥保密,而公开算法包括加密和解密算法。这样,只有那些与发送者拥有相同密钥的人才能解释由des加密算法加密的加密数据。

因此,解码des加密算法实际上是对搜索密钥的编码。对于56位密钥,如果通过穷举方法进行搜索,操作数为256。

随着计算机系统能力的不断发展,des比它最初出现时要不安全得多。然而,从非批判性的现实来看,这仍然可以被认为是足够的。然而,des现在仅用于旧系统的认证,并且选择了更多新的加密标准。

(2)aes加密算法

Es加密算法是密码学中的一种高级加密标准。加密算法采用对称分组密码系统。对密钥长度的最小支持是128、192、256,块长度是128位。该算法应易于通过各种硬件和软件实现。

这种加密算法是美国联邦政府采用的块加密标准。本标准用于替代原始des,已被许多缔约方分析并在世界范围内广泛使用。

Aes加密算法旨在支持128/192/256位(/32=nb)数据块大小(即数据包长度);支持128/192/256位(/32=nk)密码长度,相当于十进制中的34×1038、62×1057和1.1×1077键。

(3)rsa加密算法

Rsa加密算法是目前最有影响力的公钥加密算法,被普遍认为是目前最好的公钥方案之一。

Rsa是第一种既可用于加密又可用于数字签名的算法。它可以抵御迄今为止所有已知的加密攻击,并被iso推荐为公钥数据加密标准。

Rsa加密算法基于一个非常简单的数论事实:将两个大质数相乘非常容易,但当时是需要的,但当时分解该产品极其困难,因此该产品可以作为加密密钥公开。

(4)base64加密算法

Base64加密算法是用于在网络上传输8位字节代码的最常见的编码方法之一。base64编码可用于在http环境中传输较长的标识信息。

例如,在hibemate中,javapersistence系统base64用于将长的唯一标识符编码成字符串,该字符串在http表单和httpgeturl中用作参数。

在其他应用程序中,通常需要将二进制数据编码成适合放置在url中的形式(包括隐藏的形式字段)。此时,base64编码不仅相对较短,而且不可读,也就是说,编码后的数据肉眼无法直接看到。

(5)md5加密算法

Md5是一种散列函数,广泛应用于计算机安全领域,为消息提供完整性保护。

md5加密算法的简要描述如下:md5处理512位数据包中的输入信息,每个数据包进一步分为16个32位数据包。经过一系列处理后,该算法的输出由四个32位数据包组成,这些数据包串联在一起生成一个128位哈希值。

Md5广泛应用于各种软件的密码认证和密钥识别。Md5使用散列函数,其典型应用是为一条信息生成信息摘要,以防止篡改。

md5的典型应用是为一条消息生成指纹,以防止“篡改”。如果有另一个第三方认证机构,md5也可以防止文档作者的“拒绝”,即所谓的数字签名应用程序。

Md5也广泛用于操作系统的登录认证,如unix、各种bsd系统登录密码、数字签名等。

1)当客户端与服务器交互时,尽管消息是加密的,但我们无法确认是谁发送了消息。例如,当与第三方服务器B交互时,我们收到了一个加密的请求,但是我们无法确认消息是由服务器B发送的。此时,我们可以通过数字签名来验证它。角色:身份验证数据源

2)如果我们收到一个由B服务器签名的请求,那么B服务器不能拒绝该请求,因为它有自己的签名。它的功能是抵制否认。

3)我们已经收到来自服务器B的签名请求,但是我们无法确认该请求是否被篡改(尽管消息是加密的,但也可能被篡改)。此时,我们可以使用签名来验证签名中的消息是否与传入消息一致。角色:确保数据完整性

签字的方式有很多,常见的形式如下:

2.2.1 appkey签名验证

1)除签名外,所有请求参数都是按键升序排列的,不需要对值进行编码。(假设当前时间的时间戳是12345678)

例如,有三个参数:c=3,b=2,a=1。添加时间戳后,按键排序为:a=1,b=2,c=3,和_timestamp=12345678。

2)将参数名称和参数值连接到字符串中,得到组装后的字符:a1b2c3_timestamp12345678

3)将应用的应用密钥连接到拼接字符串的头部和尾部,然后执行32位md5加密,最后将获得的md5加密摘要转换为大写。

示例:假设appkey=test,md5(test 1b 3c 3 _ timestamp 12345678 test),获取MD5摘要值C5 F3 EB 5d 7 DC 2748 aed 89 e 90 af 00081 e 6。

风险在于,一旦appkey被其他人获得,它就会模仿签名,从而导致安全问题。

2.2.2令牌签名认证

令牌签名认证的主要原则是:

1)提供认证服务和认证的webapi。用户提交相关的身份信息,如供应商代码,并首先访问它。

2)服务器接收验证相关身份信息的请求。验证成功后,服务器将发出令牌,令牌可以存储在缓存或数据库中,以便于以后查询验证。然后将这个令牌发送给客户端

3)接收令牌后,客户端可以将其存储在例如cookie或本地存储器中;每次客户端向服务器请求资源时,它都会使用相应的令牌、请求的参数和服务器提供的签名算法来计算签名,然后访问指定的api。当接收到请求时,服务器获得令牌和相应用户的请求参数。服务器再次计算签名,并将其与客户端的签名进行比较。如果验证通过,它通常访问相应的api,如果验证失败,它返回特定的失败信息。

安全的关键在于参与签名的令牌。令牌在整个过程中不参与通信,所以只要令牌没有泄露,请求就不会被伪造。然后我们使用时间戳来验证请求是否已经过期,所以即使有人获取了完整的请求链接,它也是无效的。

2.2.3 https模式

安全性的追求可以考虑https的双向认证模式参数签名规则双重认证来保护请求背景

这篇文章由@ Buradial独创性公司发表。每个人都是产品经理。未经允许禁止复制。

主题地图来自unsplash,基于cc0协议。

湖南幸运赛车 新疆11选5投注 浙江快乐十二开奖结果 陕西十一选五 台湾宾果网址

© Copyright 2018-2019 zebnc.com雅湾新闻网 Inc. All Rights Reserved.