`
ShXin
  • 浏览: 12935 次
  • 性别: Icon_minigender_2
  • 来自: 天津
社区版块
存档分类
最新评论
阅读更多

        上篇RSA中提出的数字签名技术,它是一个应用很广泛的技术,数字签名的目的是对数字对象的合法性、真实性进行标记,并提供签名者的承诺。那如何实现呢?

        我们常用的是基于公钥密码算法的数字签名方法,即非对称密码体制,这里我们用RSA来实现。那么,数字签名又分为直接数字签名和可仲裁数字签名两大类,后面一一讲解。

        简而言之,前面其实就是用RSA的私钥加密,发送给对方,对方用你的公钥解密,这就可以唯一的确定消息时你发出的,而不会被他人伪造。

 

--------------------------------------------------------直接数字签名-----------------------------------------------------------

        在签名的同时,当然也要保证消息的保密性,那为了不泄露消息,发送方就要对发送的所有内容进行加密,这里我们使用对称密钥来加密(DES或者流密码),进一步说,在传递消息的过程中,即使可以认证发送人,那消息是否完整,是否被篡改过呢?这又是一个需要解决的问题,即消息完整性验证,那可以先对消息进行散列(MD5或者SHA-1),形成消息摘要,再进行签名。

        简单的介绍一下散列算法,其实散列算法就是对变长的消息进行摘要,并且有固定长度的输出。并且知道消息正向求出散列值很容易,但反向推到在计算上不可行,且对于任意两个不同的消息m和m‘,它们的散列值不可能相同。

具体算法如下:

        A(发送方)--> B(接收方):Ek [ M || Eka [ H(M) ] ] 或 Ek [ M ] || Eka [ H(M) ]

        [注]:Ek是对称密钥加密,Eka是用A的私钥加密,H(M)为散列算法,

                 前后两者均可,前者保密性较高,后者效率较高,这里讲解前者。

       显然,B收到这个消息时,首先可以用对称密钥将M || Eka [ H(M) ]提取出来,那由于H(m)长度是固定的,进行Eka操作后长度也是固定的,那B就可以根据长度还原出明文M,以及Eka [ H(M) ]。此时,B就可以对发送者进行认证了,用A的公钥(网络上公开)对Eka [ H(M) ]解密,若解密成功,即消息时A发来的,否则认证失败。最后一步,完整性如何验证?

       在认证完来源后,B可获得H(M),那根据之前提前到的明文M,在进行一次散列算法,求出新的H(M),若两者相等,即消息完整,验证成功,否则失败。

       这样,消息的来源及完整性就验证完了。那么,试想,如果发送方抵赖发送某一消息或者他的私钥丢失,有人伪造他签署文件,这时该怎么办呢?这就要引入可信第三方,即仲裁者了,如果某人的私钥丢失,他要在第一时刻通知仲裁者,仲裁者可在网络上公布:该人私钥丢失,此刻以后看到他签署的文件,统统不可信!那么问题又来了,如果伪造者伪造了一份在该时间之前的文件,又该如何辨别呢?其实就是时间戳。由仲裁者给每份签名的文件附上时间戳,这样就可以避免这个问题。所以,以上这些问题都可以由可仲裁数字签名方法来解决。

------------------------------------------------------可仲裁数字签名-----------------------------------------------------------

 

敬请期待~~~~~~~~~~~~~~~~  

分享到:
评论

相关推荐

    代码签名数字证书(含私钥)_过期证书_过期数字签名强制签名工具_数字签名_证书

    本文将深入探讨过期证书、过期数字签名的处理、强制签名工具以及数字签名证书的相关知识。 首先,我们要理解什么是代码签名数字证书。这是一种由权威的证书颁发机构(CA)颁发的证书,用于验证软件的开发者身份和...

    数字签名和数字证书

    在IT安全领域,数字签名和数字证书是两个关键概念,它们在确保数据的完整性和身份验证方面发挥着至关重要的作用。本文将详细解释这两个概念,以及它们之间的关系,并结合C#编程语言,探讨如何实现证书和签名功能。 ...

    如何对驱动进行数字签名和禁用数字签名强制

    在计算机和信息技术领域,数字签名是一种用于验证软件驱动程序完整性和来源的技术。它能够保证用户安装和使用的是经过认证、未经修改的驱动程序,增强系统的安全性。对于开发者来说,为驱动进行数字签名是一项重要的...

    数字签名克隆工具

    数字签名在IT行业中扮演着至关重要的角色,尤其是在软件开发、安全验证和数据完整性保护方面。在深入探讨"数字签名克隆工具"之前,我们先理解什么是数字签名。 数字签名并非传统意义上的签名,而是一种用于验证电子...

    winform实现数字签名实例

    在IT领域,数字签名是一种用于验证数据完整性和发送者身份的技术。它在网络安全、软件发布以及电子文档签署等方面起着至关重要的作用。本实例将详细讲解如何使用C#语言和WinForm来实现数字签名功能。 首先,让我们...

    ,易语言软件的数字签名

    在IT行业中,数字签名是一种重要的安全机制,尤其在软件开发和分发领域。它主要用于验证软件的来源和完整性,防止恶意篡改。易语言作为一款中国本土的编程环境,也支持对编译后的软件进行数字签名,以提高软件的可信...

    代码签名数字证书(含私钥),数字签名是使用自己的私钥签名,C,C++

    数字签名并非我们日常生活中手写的签名,而是通过一种加密算法,使用私钥对数据进行的一种特殊标记。这个过程类似于物理世界中的印章,但具有更高的安全性。在C或C++编程中,开发人员可以使用代码签名证书来为他们的...

    基于RSA算法的数字签名系统 C#实现

    在IT领域,数字签名是一种重要的安全机制,它用于验证数据的完整性和发送者的身份。这里我们聚焦于一个基于RSA算法的数字签名系统,该系统已用C#编程语言实现。RSA算法是公钥密码学中的基石,而数字签名则是其在确保...

    数字签名复制工具V1.0绿色版

    数字签名复制工具是一款功能强大、便捷实用的数字签名克隆工具,此款软件能够将一个有数字签名的文件中的数字签名克隆到另一个没有数字签名的文字上。软件方便简单,可复制多重签名,快来下载体验吧。 功能介绍 ...

    (纯算法,没有调用库)python实现RSA数字签名代码、ppt、文档.rar

    在这个资源包中,包含的是使用Python纯算法实现RSA数字签名的代码、相关的PPT演示文稿以及文档,这些内容将帮助我们深入理解RSA数字签名的工作原理和实现过程。 1. **RSA算法基础** RSA算法基于大数因子分解的困难...

    给CAB文件加上数字签名

    ### 给CAB文件加上数字签名 在软件开发过程中,为CAB文件添加数字签名是一项重要的安全措施。本文将详细介绍如何使用简单的工具为CAB文件(通常用于分发ActiveX控件)添加数字签名,以及这一过程的重要性和具体步骤...

    数字签名文件,数字签名文件

    在IT领域,数字签名是一种重要的安全技术,它用于验证文件的完整性和来源的可靠性。数字签名文件,如标题所示,通常是指已经应用了数字签名的文件,这种签名能确保文件在传输过程中没有被篡改,并且能证明文件的发布...

    RSA数字签名源代码

    在C#编程环境中,我们可以利用.NET框架提供的类库来实现RSA算法的各种功能,包括数字签名。 数字签名是一种用于验证数据完整性和发送者身份的技术,它是通过将哈希函数和非对称加密相结合来实现的。在RSA数字签名中...

    微软驱动数字签名失败解决补丁

    Windows无法验证文件数字签名而无法启动,无法验证此驱动的数字签名的网络上的解决方案一般都是下面几种: 第一种: 开机时按F8键,在弹出的菜单中有 禁用驱动程序签名强制 选项,使用上下键选中之后,再按回车键...

    java数字签名(签名生成,用证书验证签名)

    "java数字签名(签名生成,用证书验证签名)" java数字签名是指使用公钥加密技术,通过证书认证和签名验证来确保数据的安全和可靠性。数字签名的生成和验证过程 涉及到证书的申请、颁发和验证等多个方面。 在数字...

    PDF中数字签名设置步骤

    ### PDF中数字签名设置步骤详解 #### 一、前言 在数字时代,电子文档的安全性和可信度变得尤为重要。PDF格式作为最常用的电子文档之一,提供了丰富的功能来确保文档的真实性和完整性,其中数字签名就是一项重要的...

    获取数字签名信息

    在IT行业中,数字签名是一种重要的安全机制,用于验证软件或数据的完整性和来源。当我们谈论“获取数字签名信息”时,通常是指通过编程接口(如DLL接口)来访问和解析包含在可执行文件或库中的数字签名数据。下面将...

Global site tag (gtag.js) - Google Analytics