zoukankan      html  css  js  c++  java
  • 关于第三方Api接口对接安全性的总结

    公司搬东莞了没办法年底还要找工作,这周周一面试周二入职,入职第一天,就让对接前海征信的接口,本周上线,压力山大。

    而且那边提供的是demo都是java和php版,证书也是.jks格式,瞬间蒙蔽。

    经过这几天研究,装了jdk通过工具把jks证书转成.net可识别的pfx格式,各种加密解密,签名认证,每天从8:30到晚上8:30,终于联调成功。

    现在总结一下关于安全性方面的知识,参考资料是《C#高级编程(第10版)》。

    安全性有几个方面需要考虑。一是程序的用户,访问应用程序的是一个真正的用户,还是伪装成用户的某个人?如何确定这个用户是可以信任的?确保程序安全的用户方面是两阶段过程:

    1.用户首先要进行身份验证

    2.进行授权。

    本文主要讨论授权方面的知识。

    加密数据

    加密数据分为对称密钥和不对称密钥。对称密钥使用公钥/私钥来进行加密和解密。

    如果使用一个公钥进行加密,就应该使用对应的私钥进行解密,而不是使用公钥解密;同样如果使用私钥加密,就应该使用对应的公钥解密。不可能从私钥中计算出公钥,也不可能从公钥中计算出私钥。

    公钥可以由任何人使用,私钥必须安全的加锁。举个例子:

    如果马云给李彦宏发了一封邮件,并且马云希望除了李彦宏外,其他人都不能查看该邮件,所以马云使用了李彦宏的公钥。

    邮件是使用李彦宏的公钥加密,李彦宏打开该邮件并使用秘密存储的私钥解密。这种方式可以确保除李彦宏外,其他人都不能阅读马云的邮件。

    这里有个问题:李彦宏不能确保邮件是马云发送的。马化腾可以使用 李彦宏的公钥 加密 发送给李彦宏的邮件 并 假装是马云。

    我们使用公钥/私钥把这条规则扩展一下。再次从马云给李彦宏发送邮件开始。

    在马云使用李彦宏的公钥加密邮件之前,马云添加了自己的签名,再使用自己的私钥加密该签名。然后使用李彦宏的公钥加密邮件。

    这样就保证了除李彦宏外,其他人都不能阅读该邮件。在李彦宏解密邮件时,他检测到一个加密的签名。这个签名可以使用马云的公钥来解密

    而李彦宏可以访问马云的公钥,因为这个密钥是公钥。在揭秘了签名后,李彦宏就可以确定是马云发送的邮件。

    对称密钥的加解密比非对称密钥的算法快很多。在网络通信中,一种方式是先使用非对称密钥进行密钥互换,再使用对称密钥加密网络发送的数据。

    散列 

    MD5

    SHA

    RIPEMD

    散列算法的目标是从任意长度的二进制字符串中 创建一个长度固定的散列值。这些算法那和数字签名一起用于保证数据的完整性。如果再次散列相同的二进制字符串,会返回想用的散列结果。

    MD5由RSA实验室开发,比SHA1快。MD5使用128位的散列长度。

    SHA1在抵御暴力攻击方面比较强大,SHA算法由美国国家安全局(NSA)设计。SHA使用160位的散列长度。

    RIPEMD使用160位的散列长度。

    对称

    DES

    AES

    Rijandel

    对称密钥算法使用相同的密钥进行数据的加密和解密。现在认为DES是不安全的,因为它只使用56位的密钥长度,可以在24小时内被破解。

    AES的密钥长度是128、192或256位。是美国政府采用的加密标准。

    Rijandel非常类似于AES。

    非对称  

    DSA

    ECD

    RSA

    非对称算法使用不同的密钥进行加密和解密。

    RSA是第一个用于签名和加密的算法。广泛用于电子商务协议。

    DSA使用基于椭圆曲线组的算法。密钥长度为1024位。

    创建和验证签名

    下面例子说明如何使用ECDSA算法进行签名。马云创建了一个签名,用马云的私钥加密,可以使用马云的公钥访问。因此保证该签名来自于马云。

     

     

     

     

     

     

      

     

    李彦宏

  • 相关阅读:
    mongodb 记录
    php保存文件
    调用AngularJS的API
    angular修改数据
    大小写转换
    使用Properties类动态加载配置文件里的内容
    org.apache.commons.cli.Options
    Google guava和Apache commons
    orc格式文件
    shell的awk命令使用
  • 原文地址:https://www.cnblogs.com/justinxhan/p/8371057.html
Copyright © 2011-2022 走看看