`
hyl198611
  • 浏览: 228474 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

加密与数字签名

阅读更多
加密与数字签名



一、加密
 
  数据加密技术从技术上的实现分为在软件和硬件两方面。按作用不同,数据加密技术主要分为数据传输、数据存储、数据完整性的鉴别以及密钥管理技术这四种。
 
  在网络应用中一般采取两种加密形式:对称密钥和公开密钥,采用何种加密算法则要结合具体应用环境和系统,而不能简单地根据其加密强度来作出判断。因为除了加密算法本身之外,密钥合理分配、加密效率与现有系统的结合性,以及投入产出分析都应在实际环境中具体考虑。
 
   对于对称密钥加密。其常见加密标准为DES等,当使用DES时,用户和接受方采用64位密钥对报文加密和解密,当对安全性有特殊要求时,则要采取 IDEA和三重DES等。作为传统企业网络广泛应用的加密技术,秘密密钥效率高,它采用KDC来集中管理和分发密钥并以此为基础验证身份,但是并不适合 Internet环境。
 
  在Internet中使用更多的是公钥系统。即公开密钥加密,它的加密密钥和解密密钥是不同的。一般对于每 个用户生成一对密钥后,将其中一个作为公钥公开,另外一个则作为私钥由属主保存。常用的公钥加密算法是RSA算法,加密强度很高。具体作法是将数字签名和 数据加密结合起来。发送方在发送数据时必须加上数据签名,做法是用自己的私钥加密一段与发送数据相关的数据作为数字签名,然后与发送数据一起用接收方密钥 加密。当这些密文被接收方收到后,接收方用自己的私钥将密文解密得到发送的数据和发送方的数字签名,然后,用发布方公布的公钥对数字签名进行解密,如果成 功,则确定是由发送方发出的。数字签名每次还与被传送的数据和时间等因素有关。由于加密强度高,而且并不要求通信双方事先要建立某种信任关系或共享某种秘 密,因此十分适合Internet网上使用。
 
  下面介绍几种最常见的加密体制的技术实现:
 
  1.常规密钥密码体制
 
  所谓常规密钥密码体制,即加密密钥与解密密钥是相同的。
 
  在早期的常规密钥密码体制中,典型的有代替密码,其原理可以用一个例子来说明:
 
  将字母a,b,c,d,…,w,x,y,z的自然顺序保持不变,但使之与D,E,F,G,…,Z,A,B,C分别对应(即相差3个字符)。若明文为student则对应的密文为VWXGHQW(此时密钥为3)。
 
  由于英文字母中各字母出现的频度早已有人进行过统计,所以根据字母频度表可以很容易对这种代替密码进行破译。
 
  2.数据加密标准DES
 
  DES算法原是IBM公司为保护产品的机密于1971年至1972年研制成功的,后被美国国家标准局和国家安全局选为数据加密标准,并于1977年颁布使用。ISO也已将DES作为数据加密标准。
 
  DES对64位二进制数据加密,产生64位密文数据。使用的密钥为64位,实际密钥长度为56位(有8位用于奇偶校验)。解密时的过程和加密时相似,但密钥的顺序正好相反。
  
  DES的保密性仅取决于对密钥的保密,而算法是公开的。DES内部的复杂结构是至今没有找到捷径破译方法的根本原因。现在DES可由软件和硬件实现。美国AT&T首先用LSI芯片实现了DES的全部工作模式,该产品称为数据加密处理机DEP。
 
  3.公开密钥密码体制
 
  公开密钥(public key)密码体制出现于1976年。它最主要的特点就是加密和解密使用不同的密钥,每个用户保存着一对密钥 ? 公开密钥PK和秘密密钥SK,因此,这种体制又称为双钥或非对称密钥密码体制。
 
  在这种体制中,PK是公开信息,用作加密密钥,而SK需要由用户自己保密,用作解密密钥。加密算法E和解密算法D也都是公开的。虽然SK与PK是成对出现,但却不能根据PK计算出SK。公开密钥算法的特点如下:
 
  1、用加密密钥PK对明文X加密后,再用解密密钥SK解密,即可恢复出明文,或写为:DSK(EPK(X))=X  
  2、加密密钥不能用来解密,即DPK(EPK(X))≠X
 
  3、在计算机上可以容易地产生成对的PK和SK。
 
  4、从已知的PK实际上不可能推导出SK。
 
  5、加密和解密的运算可以对调,即:EPK(DSK(X))=X
 
  在公开密钥密码体制中,最有名的一种是RSA体制。它已被ISO/TC97的数据加密技术分委员会SC20推荐为公开密钥数据加密标准。
 
二、数字签名
 
  数字签名技术是实现交易安全的核心技术之一,它的实现基础就是加密技术。在这里,我们介绍数字签名的基本原理。
 
  以往的书信或文件是根据亲笔签名或印章来证明其真实性的。但在计算机网络中传送的报文又如何盖章呢?这就是数字签名所要解决的问题。数字签名必须保证以下几点:
 
  接收者能够核实发送者对报文的签名;发送者事后不能抵赖对报文的签名;接收者不能伪造对报文的签名。
  
  现在已有多种实现各种数字签名的方法,但采用公开密钥算法要比常规算法更容易实现。下面就来介绍这种数字签名。
 
   发送者A用其秘密解密密钥SKA对报文X进行运算,将结果DSKA(X)传送给接收者B。B用已知的A的公开加密密钥得出 EPKA(DSKA(X))=X。因为除A外没有别人能具有A的解密密钥SKA,所以除A外没有别人能产生密文DSKA(X)。这样,报文X就被签名了。
 
   假若A要抵赖曾发送报文给B。B可将X及DSKA(X)出示给第三者。第三者很容易用PKA去证实A确实发送消息X给B。反之,如果是B将X伪造成 X',则B不能在第三者面前出示DSKA(X')。这样就证明B伪造了报文。可以看出,实现数字签名也同时实现了对报文来源的鉴别。
  
   但是上述过程只是对报文进行了签名。对传送的报文X本身却未保密。因为截到密文DSKA(X)并知道发送者身份的任何人,通过查问手册即可获得发送者的 公开密钥PKA,因而能够理解报文内容。则可同时实现秘密通信和数字签名。SKA和SKB分别为A和B的秘密密钥,而PKA和PKB分别为A和B的公开密 钥。
 
三、密钥的管理
 
  对称密钥加密方法致命的一个弱点就是它的密钥管理十分困难,因此它很难在电子商务的实践中得 到广泛的应用。在这一点上,公开密钥加密方法占有绝对的优势。不过,无论实施哪种方案,密钥的管理都是要考虑的问题。当网络扩得更大、用户增加更多时尤其 如此。一家专门从事安全性咨询的公司Cypress Consulting的总裁CyArdoin说:“在所有加密方案中,都必须有人来管理密钥。”
 
  目前,公认的有效方法是通过密钥分配中心KDC来管理和分配公开密钥。每个用户只保存自己的秘密密钥和KDC的公开密钥PKAS。用户可以通过KDC获得任何其他用户的公开密钥。
 
   首先,A向KDC申请公开密钥,将信息(A,B)发给KDC。KDC返回给A的信息为(CA,CB),其 中,CA=DSKAS(A,PKA,T1),CB=DSKAS(B,PKB,T2)。CA和CB称为证书(Certificate),分别含有A和B的公 开密钥。KDC使用其解密密钥SKAS对CA和CB进行了签名,以防止伪造。时间戳T1和T2的作用是防止重放攻击。
 
  最后,A将证书CA和CB传送给B。B获得了A的公开密钥PKA,同时也可检验他自己的公开密钥PKB。

转载:http://www.cnblogs.com/sunsonbaby/archive/2004/09/26/46729.html

分享到:
评论

相关推荐

    数据加密与数字签名系统

    数据加密与数字签名系统是信息安全领域中的核心技术,用于保护数据的隐私性和完整性,以及验证信息来源的可靠性。在本文中,我们将深入探讨这两个概念及其在C++编程中的应用。 首先,我们来理解数据加密。数据加密...

    电子邮件加密与数字签名.kdh

    电子邮件加密与数字签名.kdh(757 KB )

    非对称加密算法 数字签名算法

    非对称加密算法和数字签名是信息技术中两个关键的安全概念,尤其在网络安全和数据保护方面起着至关重要的作用。在Java编程环境中,这些技术被广泛应用于实现安全通信、身份验证和数据完整性保护。 非对称加密算法,...

    公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.zip

    数字签名是一种非对称加密的应用,用于验证数据的完整性和发送者的身份。发送者通过自己的私钥对消息的哈希值进行加密,接收者可以使用发送者的公钥来解密这个签名,如果解密后的哈希值与原始消息的哈希值一致,就...

    Java加密和数字签名编程快速入门.rar_Java加密_java 数字 签名_java 数字签名_数字 签名_数字签名

    Java作为一种广泛使用的编程语言,提供了丰富的加密和数字签名功能来确保数据的安全传输和存储。本教程将带你快速入门Java中的加密和数字签名编程。 首先,让我们了解什么是加密。加密是一种将明文数据转化为难以...

    不对称加密及数字签名的实例应用

    不对称加密和数字签名是两种广泛使用的安全技术,它们为数据提供了强大的保护。本实例应用聚焦于如何在C#编程环境中实现这些技术。 不对称加密,也称为公钥加密,是一种基于两个密钥(公钥和私钥)的加密方法。公钥...

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...

    公钥私钥加密解密数字证书数字签名详解.docx

    - 数字签名与原文数据一起发送给接收方。 **2. 数字签名的验证:** - 接收方使用发送方的公钥对数字签名进行解密,得到原始的摘要。 - 接收方独立地对收到的数据计算摘要,并与解密后的摘要进行比较。 - 如果...

    加密 RSA 数字签名 数字证书 实例

    在IT领域,加密、RSA数字签名以及数字证书是网络安全中至关重要的概念,它们共同构建了互联网上安全通信的基础。下面将详细阐述这些知识点,并结合"EncryptMethod"这一压缩包文件中的可能内容进行分析。 首先,加密...

    java通信安全 加密 数字签名 消息摘要

    java通信安全主要包括:md5 密码加密与验证 对称加密与解密 非对称加密以解密 基于MD5信息摘要算法实现密码加密与验证 凯撒加密算法 数字签名与验证 消息验证码 消息摘要 所有程序都经过了测试

    客户端实现邮件的加密和数字签名.docx

    "客户端实现邮件的加密和数字签名" 客户端实现邮件的加密和数字签名是指在客户端实现邮件的加密和数字签名,以确保邮件的安全和机密性。在 Exchange 服务器上安装 CA 证书,客户端申请证书,然后发布到全球通讯簿。...

    邮件加密和签名的原理

    3. **签名附带发送**:最后,发件人将数字签名与邮件一起发送给收件人。 **验证过程**: 1. **公钥解密**:收件人使用发件人的公钥解密数字签名,得到最初的消息摘要。 2. **散列比对**:收件人同样使用相同的散列...

    数字签名 数字 签名 wod加密 加密

    在IT领域,数字签名和加密技术是网络安全与数据保护的核心组成部分。它们对于确保信息的完整性和验证发送者身份至关重要。让我们深入探讨这两个概念及其在实际应用中的重要性。 首先,我们来理解“数字签名”。数字...

    数字签名和加密的基本原理及其区别

    在信息安全领域,数字签名和加密是两种至关重要的技术,它们分别用于确保数据的完整性和机密性。这两种技术虽然在目的上有所重叠,但在实际应用中却有着明显的区别。 首先,我们来看数字签名的基本原理。数字签名的...

    Java加密和数字签名编程快速入门

    4. 签名与证书:数字签名通常与X.509证书结合使用,证书包含公钥和颁发者的身份信息,确保公钥的来源可信。 三、示例代码 在学习过程中,通过编写实际的Java代码来练习加密和数字签名的使用,例如: - 创建一个简单...

    客户端实现邮件的加密和数字签名.pdf

    客户端实现邮件的加密和数字签名 在信息安全领域中,保护电子邮件的隐私和真实性是非常重要的。为了实现这一点,需要使用加密和数字签名技术。本文将介绍客户端如何实现邮件的加密和数字签名,并提供了在 Exchange ...

    Java加密和数字签名编程 Java

    Java加密和数字签名编程是信息安全领域中的重要技术,它们在软件开发中扮演着不可或缺的角色,尤其是在保护数据安全、验证信息完整性和确保身份真实性方面。在Java中,这些功能主要通过Java Cryptography ...

    PGP加密、数字签名、数字水印

    PGP(Pretty Good Privacy)是一种广泛使用的加密软件,它提供了数据加密和数字签名服务,确保信息的安全传输。在本文中,我们将深入探讨PGP的工作原理、数字签名的概念以及数字水印的应用。 首先,我们来理解PGP...

    课设:C#实现文件加密解密 数字签名

    在本课程设计中,我们将探讨如何使用C#编程语言实现文件的加密与解密功能,同时结合硬件信息的集成以及数字签名技术。这些是信息安全领域中的核心概念,对于保护数据安全至关重要。 首先,让我们深入了解C#中的加密...

    java加密和数字签名

    Java加密和数字签名是网络安全领域中的重要概念,用于保护数据的完整性和确保信息发送者的身份。在Java中,这些功能主要由Java Cryptography Architecture (JCA) 和 Java Cryptography Extension (JCE) 提供。本篇...

Global site tag (gtag.js) - Google Analytics