• 关于第三方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算法进行签名。马云创建了一个签名,用马云的私钥加密,可以使用马云的公钥访问。因此保证该签名来自于马云。

     

     

     

     

     

     

      

     

    李彦宏

  • 相关阅读:
    PowerDesigner 找不到Identity列的解决方法
    C# DataTable 和List之间相互转换的方法
    解决Win8无法升级.NET Framework 3.5.1 提示错误0x800F0906
    C#虚方法和抽象方法区别
    VS自带WCF测试客户端
    asp.net读取Excel数据
    输出用户的IP地址,并且判断用户的IP地址是否在192.168.1.100 --- 192.168.1.150之间
    验证电子邮箱正则表达式
    用PHP实现冒泡排序将数组$a=array()按照从小到大的方式排序
    打开a.txt文件在文件中最前面加上hello
  • 原文地址:https://www.cnblogs.com/justinxhan/p/8371057.html
Copyright © 2020-2023  润新知