首页 > 代码库 > Open API安全考虑
Open API安全考虑
很初级的简单想法,先记下来。
需要有个年轻聪明的青年才俊论证一下:
1、是否用HTTPS,这些就没有必要了。
2、严谨性:是否有漏洞,这么做安全性依赖哪些要素,能多大程度上保证。
3、必要性:是否有冗余环节。
4、性能:压一下,注意监控CPU。
以下是正文。
一、管理
1、所有的秘钥都由我们生成并颁发。2、我们需要存储:
(1)我们自己的私钥、公钥。
(2)别人的公钥。
(3)所有公钥和实体(如:某组织、某组织中的某人、我们自己等)的对应关系。
3、颁发出去的私钥由安全的方法传递给对方(U盘拷贝?)。最大限度保护对方公钥和映射关系的私密性。
二、过程
1、身份认证过程:
(1)不需要账号、密码神马的。
(2)请求发起过程:
该用户在我们系统的编号设为uuid。
Step 1,对方自己生成一个种子,设为 seed,需确保Seed的随机 。
Step 2,用我们的公钥加密,结果设为 token1。
Step 3,用用户自己的私钥加密,结果设为token2。
用户发 uuid,seed,token1和token2给我们。
(3)验证过程:
Step 1:用自己私钥对token1解密,得到seed。
Step 2:通过uuid获得公钥,用这个公钥解密token2,也得到seed。
Step 3:比对Step 1和Step 2获得的Seed是否相同。如果相同,传输成功。
Step 4:验证成功后,将Token用用户公钥加密,发给用户。我们的服务器保存Token 20分钟。
2、发送数据给我们
(1)发送过程:
数据设为Data。
Step 1:用我们的公钥对Data加密,得到密文C1(需要验证一下效率)。
Step 2:对密文生成数字摘要,设为Z1。
Step 3:用用户自己的私钥对摘要加密,得到密文Z2。
Step 4:用我们的公钥对C2和Token加密,得到密文C3.
Step 5:发送C1和C3给我们。
(2)接收过程:
Step 1:用我们自己的私钥解密得到Data、Z2和Token。
Step 2:通过Token获得用户公钥,对Z2解密得到Z1。
Step 3:对Data生成数字摘要,设为Z1’。
Step 4:比较Z1‘和Z1,如果相同,则接受Data。
3、反馈数据给对方:
blabla
附录:扫盲
(以下内容转自互联网,原始链接... Err...随手把网页关了...)
公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。用电子邮件的方式说明一下原理。
使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的:
1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。
2. 必须保证是我发送的邮件,不是别人冒充我的。
要达到这样的目标必须发送邮件的两人都有公钥和私钥。
公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上 密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能 用公钥解密。
比如说,我要给你发送一个加密的邮件。首先,我必须拥有你的公钥,你也必须拥有我的公钥。
首先,我用你的公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。你收到邮件后,用你的私钥就可以解密,就能看到内容。
其次我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。
当A->B资料时,A会使用B的公钥加密,这样才能确保只有B能解开,否则普罗大众都能解开加密的讯息,就是去了资料的保密性。验证方面则是使用签 验章的机制,A传资料给大家时,会以自己的私钥做签章,如此所有收到讯息的人都可以用A的公钥进行验章,便可确认讯息是由 A 发出来的了。
Open API安全考虑