zoukankan      html  css  js  c++  java
  • 软件保护

    大赛题目的理解:

    (猜测,为什么要出这样的一道题目)虽然Windows操作系统是目前世界上使用最广泛的操作系统,但是数据的安全存在风险。Linux操作系统的安全性能会比Windows操作系统的高很多,因为Linux操作系统的权限分配会更严格更细致,而且用户间的相互独立性能很好;Linux可以实现跨平台的硬件支持以及可靠的安全性,Linux系统是一个具有先天病毒免疫能力的操作系统,很少受到病毒攻击。还有windows的商业气息更为严重,闭源一定程度影响了windows的发展。而linux早已开源化。

    目前,在相同平台上,优化过的Linux在性能方面确实远远超过Windows,所以国内的大部分企业服务器,使用的都是Linux平台。

    出于对数据的安全性能的考虑,应该对linux系统的软件进行保护。

    数字签名的使用原因:

    1、软件数字签名可用于验证开发者身份真实性、保护代码的完整性。用户下载软件时,能通过数字签名验证软件来源可信,确认软件没有被非法篡改或植入病毒木马,保护用户不会被病毒、恶意代码和间谍软件所侵害,也保护了软件开发者的利益,让软件能在互联网上快速安全地发布。

    2、数字证书(代码签名证书)是由权威CA机构(属沃通CA)认证开发者身份颁发,开发者使用WoSign代码签名证书和代码签名精灵对软件进行数字签名,可以防止软件被植入病毒木马

     

     

    数字签名的概念:

    数字签名在ISO74982标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。

     

    (通俗的解释数字签名)数字签名要实现的功能是我们平常的手写签名要实现功能的扩展。平常在书面文件上签名的主要作用有两点,一是因为对自己的签名本人难以否认,从而确定了文件已被自己签署这一事实;二是因为自己的签名不易被别人模仿,从而确定了文件是真的这一事实。采用数字签名,也能完成这些功能:

      (1)确认信息是由签名者发送的;

      (2)确认信息自签名后到收到为止,未被修改过;

      (3)签名者无法否认信息是由自己发送的。

    数字签名的技术基础是公钥密码技术

     

     

     

     

     

     

     

     3 公钥密码技术

     

     

    其中加密变换使用的密钥和解密变换使用的密钥是完全相同的,此密钥必须以某种安全的方式告诉解密方。大家熟悉的DES加密标准就是一种对称加密技术。

     4 数字签名的实现方法

      建立在公钥密码技术上的数字签名方法有很多,有RSA签名、DSA签名和椭圆曲线数字签名算法(ECDSA)等等。下面对RSA签名进行详细分析。

      RSA签名的整个过程可以用下图表示:

     

     

    1)发送方采用某种摘要算法从报文中生成一个128位的散列值(称为报文摘要);

    2)发送方用RSA算法和自己的私钥对这个散列值进行加密,产生一个摘要密文,这就是发送方的数字签名;

    3)将这个加密后的数字签名作为报文的附件和报文一起发送给接收方:

    4)接收方从接收到的原始报文中采用相同的摘要算法计算出128位的散列值;

    5)报文的接收方用RSA算法和发送方的公钥对报文附加的数字签名进行解密;如果两个散列值相同,那么接收方就能确认报文是由发送方签名的。

     

     

    最常用的摘要算法叫做MD5Message Digest 5)。MD5采用单向Hash函数将任意长度的字节串变换成一个128位的散列值,并且它是一个不可逆的字符串变换算法,换言之,即使看到MD5的算法描述和实现它的源代码,也无法将一个MD5的散列值变换回原始的字符串。这一个128位的散列值亦称为数字指纹,就像人的指纹一样,它就成为验证报文身份的指纹了。

     

     

     

     

    (补充)

    数字证书是一个经证书授权中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。。

    数字证书颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。

    总结:数字证书,确保了证书持有者的真实身份,也确保了公钥的真实性(通过机构的数字签名来保障)。

     

     

    计划:

    目前想使用RSA加密算法

     

    实例:

    编辑原文件src.txt

     

    “echo "This is a digital signature example." > src.txt”

     

    2、创建私钥

    a、创建私钥:

    (RSA加密算法产生的2048位私钥,并使用F4作为公钥的E参数,将私钥保存在文件key.pri)

    “openssl genrsq -out key.pri -f4 2048”

     

    b、查看私钥:

    (PEM格式显示私钥的明文输出密钥参数)

    “openssl rsa -inform PEM -in key.pri -text”

    3、导出公钥

    a、导出公钥

    (rsa的私钥文件key.pri导出PEM格式的公钥,保存在文件key.pub)

    “openssl rsa -inform PEM -outform PEM -in key.pri -out key.pub -pubout”

    b、查看公钥

    “openssl rsa -inform PEM -in key.pub -pubin -text”

     

    4、私钥签名

    (产生签名文件src.sig)

    “openssl dgst -sha256 -out src.sig -sign key.pri -keyform PEM src.txt”

     

    (查看签名文件)

    “od -v -An -tx1 src.sig”

    5、公钥校验

    发送者将原文件src.txt、公钥文件key.pub和签名文件src.sig传输给接收者,接收者模拟校验操作。

     

    “openssl dgst -sha256 -keyform PEM -verify key.pub -signature src.sig src.txt”

    若显示:Verified OK  则表示用公钥校验签名文件是正常的,即接收到的原文件是无篡改和可信的。

     

    若显示:Verification Failure  则表示接收到的文件有篡改或不可信的。

    (这个是基础)

     

    后续:

     

    对加密过程进行一个可视化的展示,将加密过程解析出来

     

     

  • 相关阅读:
    第23条:通过委托与数据源协议进行对象间通信
    第22条:理解NSCopying协议
    第21条:理解Objective-C错误模型
    第20条:为私有方法名加前缀
    《隐藏键盘》《隐藏PickerView控键》如果是xib中 点击空白处隐藏键盘
    《弹出提示》UIAlertView 弹出提示
    MAC 问题。
    小技巧
    控制器的生命周期
    问题。控制器跳转
  • 原文地址:https://www.cnblogs.com/zjm15511858030/p/12806239.html
Copyright © 2011-2022 走看看