首页 > 代码库 > 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安全考虑