导航:首页 > 文档加密 > 加密技术的工业标准

加密技术的工业标准

发布时间:2023-02-24 02:11:22

⑴ 什么是ssl

ssl加密的方法
关键词: ssl加密的方法
随着计算机网络技术的发展,方便快捷的互连网使人们渐渐习惯了从Web页上收发E-mail、购物和
交易,这时Web页面上需要传输重要或敏感的数据,例如用户的银行帐户、密码等,所以网络安全
就成为现代计算机网络应用急需解决的问题。

现行网上银行和电子商务等大型的网上交易系统普遍采用HTTP和SSL相结合的方式。服务器端采用
支持SSL的Web服务器,用户端采用支持SSL的浏览器实现安全通信。
SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。
Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公
开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支
持。目前,利用公开密钥技术的SSL协议,已成为Internet上保密通讯的工业标准。本文着重在
SSL协议和SSL程序设计两方面谈谈作者对SSL的理解。

SSL协议初步介绍
安全套接层协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,
还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于
它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于
SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证
工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
通过以上叙述,SSL协议提供的安全信道有以下三个特性:
1.数据的保密性
信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要
用到密匙来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密匙
要用一个安全的方法传送。加密过的数据可以公开地传送。
2.数据的一致性
加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可
以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。
3.安全验证
加密的另外一个用途是用来作为个人的标识,用户的密匙可以作为他的安全验证的标识。
SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。
目前,大部分的Web 服务器及浏览器都广泛支持SSL 技术。当浏览器试图连接一个具有SSL认证加
密的服务器时,就会唤醒一个SSL会话,浏览器检查认证,必须具备下面三个条件:
1)有一个权威机构发放证书,当然可以创建自我签订的证书(x509 结构)。
2)证书不能过期。
3)证书是属于它所连接的服务器的。
只有全部具备了这三个条件,浏览器才能成功完成认证。通过这三个条件,用户能确认其浏览器连接
到正确的服务器,而不是连接到一些想盗取用户密码等重要信息的虚假的服务器上。
在当今的电子商务中还有一项被广泛使用的安全协议是SET协议。SET(Secure Electronic Transaction,
安全电子交易)协议是由VISA和MasterCard两大信用卡公司于1997年5月联合推出的规范。SET能在电
子交易环节上提供更大的信任度、更完整的交易信息、更高的安全性和更少受欺诈的可能性。SET交
易分三个阶段进行:用户向商家购物并确定支付;商家与银行核实;银行向商家支付货款。每个阶段都
涉及到RSA对数据加密,以及RSA数字签名。使用SET协议,在一次交易中,要完成多次加密与解密操作,
故有很高的安全性,但SET协议比SSL协议复杂,商家和银行都需要改造系统以实现互操作。
在Linux 下,比较流行支持SSL认证的是OpenSSL服务器。OpenSSL项目是一个合作的项目,开发一个
健壮的、商业等级的、完整的开放源代码的工具包,用强大的加密算法来实现安全的Socket层
(Secure Sockets Layer,SSL v2/v3)和传输层的安全性(Transport Layer Security,TLS v1)。
这个项目是由全世界的志愿者管理和开发OpenSSL工具包和相关文档。
如何在Linux下配置OpenSSL服务器,首先从OpenSSL的主页(http://www.openssl.org/)上下载
openssl-version.tar.gz软件包来编译安装,与Apache服务器配合可以建立支持SSL的Web服务器,
并可以使用自我签订的证书做认证,关于如何编译、安装OpenSSL服务器,可以参考一下OpenSSL HOWTO
文档。

SSL 程序设计初步介绍
SSL 通讯模型为标准的C/S 结构,除了在 TCP 层之上进行传输之外,与一般的通讯没有什么明显的区
别。在这里,我们主要介绍如何使用OpenSSL进行安全通讯的程序设计。关于OpenSSL 的一些详细的信
息请参考OpenSSL的官方主页 http://www.openssl.org。
在使用OpenSSL前,必须先对OpenSSL 进行初始化,以下的三个函数任选其一:
SSL_library_init(void);
OpenSSL_add_ssl_algorithms();
SSLeay_add_ssl_algorithms();
事实上 后面的两个函数只是第一个函数的宏。
如果要使用OpenSSL的出错信息,使用SSL_load_error_strings (void)进行错误信息的初始化。以后
可以使用void ERR_print_errors_fp(FILE *fp) 打印SSL的错误信息。
一次SSL连接会话一般要先申请一个SSL 环境,基本的过程是:
1. SSL_METHOD* meth = TLSv1_client_method(); 创建本次会话连接所使用的协议,如果是客户端可
以使用
SSL_METHOD* TLSv1_client_method(void); TLSv1.0 协议
SSL_METHOD* SSLv2_client_method(void); SSLv2 协议
SSL_METHOD* SSLv3_client_method(void); SSLv3 协议
SSL_METHOD* SSLv23_client_method(void); SSLv2/v3 协议
服务器同样需要创建本次会话所使用的协议:
SSL_METHOD *TLSv1_server_method(void);
SSL_METHOD *SSLv2_server_method(void);
SSL_METHOD *SSLv3_server_method(void);
SSL_METHOD *SSLv23_server_method(void);
需要注意的是客户端和服务器需要使用相同的协议。
2.申请SSL会话的环境 CTX,使用不同的协议进行会话,其环境也是不同的。申请SSL会话环
境的OpenSSL函数是
SSLK_CTX* SSL_CTX_new (SSL_METHOD*); 参数就是前面我们申请的 SSL通讯方式。返回当前
的SSL 连接环境的指针。
然后根据自己的需要设置CTX的属性,典型的是设置SSL 握手阶段证书的验证方式和加载自己
的证书。
void SSL_CTX_set_verify (SSL_CTX* , int , int* (int, X509_STORE_CTX*) )
设置证书验证的方式。
第一个参数是当前的CTX 指针,第二个是验证方式,如果是要验证对方的话,就使用
SSL_VERIFY_PEER。不需要的话,使用SSL_VERIFY_NONE.一般情况下,客户端需要验证对方,而
服务器不需要。第三个参数是处理验证的回调函数,如果没有特殊的需要,使用空指针就可以了。
void SSL_CTX_load_verify_locations(SSL_CTX*, const char* , const char*);
加载证书;
第一个参数同上,参数二是证书文件的名称,参数三是证书文件的路径;
int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);
加载本地的证书;type 指明证书文件的结构类型;失败返回-1
int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);
加载自己的私钥;type 参数指明私钥文件的结构类型;失败返回-1
加载了证书和文件之后,就可以验证私钥和证书是否相符:
BOOl SSL_CTX_check_private_key (SSL_CTX*);
3.既然SSL 使用TCP 协议,当然需要把SSL attach 到已经连接的套接字上了:
SSL* SSL_new (SSL_CTX*); 申请一个SSL 套节字;
int SSL_set_rfd (SSL*); 绑定只读套接字
int SSL_set_wfd (SSL*); 绑定只写套接字
int SSL_set_fd ( SSL*); 绑定读写套接字
绑定成功返回 1, 失败返回0;
4. 接下来就是SSL 握手的动作了
int SSL_connect (SSL*); 失败返回 -1
5. 握手成功之后,就可以进行通讯了,使用SSL_read 和SS_write 读写SSL 套接字代替传统的
read 、write
int SSL_read (SSL *ssl, char *buf, int num );
int SSL_write (SSL *ssl, char *buf, int num);
如果是服务器,则使用 SSL_accept 代替传统的 accept 调用
int SSL_accept(SSL *ssl);
6. 通讯结束,需要释放前面申请的 SSL资源
int SSL_shutdown(SSL *ssl); 关闭SSL套接字;
void SSL_free (ssl); 释放SSL套接字;
void SSL_CTX_free (ctx); 释放SSL环境;
OpenSSL 虽然已经发展到了0.9.96版本,但是它的文档还很少,甚至连最基本的man 函数手
册都没有完成。所以,本文紧紧是讲述了使用OpenSSL 进行程序设计的框架。更加详细的资
料可以参考OpenSSL 的文档或者 Apache mod_ssl 的文档。
通过以上的介绍,我想读者对SSL协议已经有了一定的了解,作者有机会将会继续给大家介绍
SSL协议的其他方面的内容。

SSL原理解密
本文出自:
http://noc.cstnet.net.cn/
范晓明

RSA公钥加密在计算机产业中被广泛使用在认证和加密。可以从RSA Data Security Inc.获得的RSA公钥加密许可证。公钥加密是使用一对非对称的密码加密或解密的方法。每一对密码由公钥和私钥组成。公钥被广泛发布。私钥是隐密的,不公开。用公钥加密的数据只能够被私钥解密。反过来,使用私钥加密的数据只能用公钥解密。这个非对称的特性使得公钥加密很有用。

使用公钥加密法认证

认证是一个身份认证的过程。在下列例子中包括甲和乙,公钥加密会非常轻松地校验身份。符号{数据} key意味着"数据"已经使用密码加密或解密。假如甲想校验乙的身份。乙有一对密码,一个是公开的,另一个是私有的。乙透露给甲他的公钥。甲产生一个随机信息发送给乙。甲——〉乙:random-message

乙使用他的私钥加密消息,返回甲加密后的消息。 乙——〉甲:{random-message}乙的私钥

甲收到这个消息然后使用乙的以前公开过的公钥解密。他比较解密后的消息与他原先发给乙的消息。如果它们完全一致,就会知道在与乙说话。任意一个中间人不会知道乙的私钥,也不能正确加密甲检查的随机消息。

除非你清楚知道你加密的消息。用私钥加密消息,然后发送给其他人不是一个好主意。因为加密值可能被用来对付你,需要注意的是:因为只有你才有私钥,所以只有你才能加密消息。所以,代替加密甲发来的原始消息,乙创建了一个信息段并且加密。信息段取自随机消息(random-message)并具有以下有用的特性:

1. 这个信息段难以还原。任何人即使伪装成乙,也不能从信息段中得到原始消息;

2. 假冒者将发现不同的消息计算出相同的信息段值;

3. 使用信息段,乙能够保护自己。他计算甲发出的随机信息段,并且加密结果,并发送加密信息段返回甲。甲能够计算出相同的信息段并且解密乙的消息认证乙。

这个技术仅仅描绘了数字签名。通过加密甲产生的随机消息,乙已经在甲产生的消息签名。因此我们的认证协议还需要一次加密。一些消息由乙产生:

甲——〉乙:你好,你是乙么?

乙——〉甲:甲,我是乙

{信息段[甲,我是乙] } 乙的私钥

当你使用这个协议,乙知道他发送给乙的消息,他不介意在上面签名。他先发送不加密的信息,"甲,我是乙。",然后发送信息段加密的消息版本。甲可以非常方便地校验乙就是乙,同时,乙还没有在他不想要的信息上签名。

提交公钥

那么,乙怎样以可信的方式提交他的公钥呢?看看认证协议如下所示:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的公钥

甲——〉乙:prove it

乙——〉甲:甲,我是乙 {信息段[甲,我是乙] } 乙的私钥

在这个协议下,任何人都能够成为"乙"。所有你所要的只是公钥和私钥。你发送给甲说你就是乙,这样你的公钥就代替了乙的密码。然后,你发送用你的私钥加密的消息,证明你的身份。甲却不能发觉你并不是乙。为了解决这个问题,标准组织已经发明了证书。一个证书有以下的内容:

* 证书的发行者姓名

* 发行证书的组织

* 标题的公钥

* 邮戳

证书使用发行者的私钥加密。每一个人都知道证书发行者的公钥(这样,每个证书的发行者拥有一个证书)。证书是一个把公钥与姓名绑定的协议。通过使用证书技术,每一个人都可以检查乙的证书,判断是否被假冒。假设乙控制好他的私钥,并且他确实是得到证书的乙,就万事大吉了。

这些是修订后的协议:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的校验

甲——〉乙:prove it

乙——〉甲:甲,我是乙 {信息段[甲, 我是乙] } 乙的私钥

现在当甲收到乙的第一个消息,他能检查证书,签名(如上所述,使用信息段和公钥解密),然后检查标题(乙的姓名),确定是乙。他就能相信公钥就是乙的公钥和要求乙证明自己的身份。乙通过上面的过程,制作一个信息段,用一个签名版本答复甲。甲可以校验乙的信息段通过使用从证书上得到的公钥并检查结果。

如果一个黑客,叫H

甲——〉H:你好

H——〉不能建立一个令甲相信的从乙的消息。

交换密码(secret)

一旦甲已经验证乙后,他可以发送给乙一个只有乙可以解密、阅读的消息:

甲——〉乙:{secret}乙的公钥

唯一找到密码的方法只有使用乙的私钥解码上述的信息。交换密码是另一个有效使用密码加密的方法。即使在甲和乙之间的通讯被侦听,只有乙才能得到密码。

使用密码作为另一个secret-key增强了网络的安全性,但是这次这是一个对称的加密算法(例如DES、RC4、IDE甲)。因为甲在发送给乙之前产生了密码,所以甲知道密码。乙知道密码因为乙有私钥,能够解密甲的信息。但他们都知道密码,他们都能够初始化一个对称密码算法,而且开始发送加密后的信息。这儿是修定后的协议:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的校验

甲——〉乙:prove it

乙——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私钥

甲——〉乙:ok 乙,here is a secret {secret}乙的公钥

乙——〉甲:{some message}secret-key

黑客窃听

那么如果有一个恶意的黑客H在甲和乙中间,虽然不能发现甲和乙已经交换的密码,但能干扰他们的交谈。他可以放过大部分信息,选择破坏一定的信息(这是非常简单的,因为他知道甲和乙通话采用的协议)。

甲——〉H:你好

H——〉乙:你好

乙——〉H:嗨,我是乙,乙的校验

H——〉甲:嗨,我是乙,乙的校验

甲——〉H:prove it

H——〉乙:prove it

乙——〉H:甲,我是乙 {信息段[甲,我是乙] }乙的私钥

H——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私钥

甲——〉H:ok 乙,here is a secret {secret} 乙的公钥

H——〉乙:ok 乙,here is a secret {secret} 乙的公钥

乙——〉H:{some message}secret-key

H——〉甲:Garble[{some message}secret-key ]

H忽略一些数据不修改,直到甲和乙交换密码。然后H干扰乙给甲的信息。在这一点上,甲相信乙,所以他可能相信已经被干扰的消息并且尽力解密。

需要注意的是,H不知道密码,他所能做的就是毁坏使用秘钥加密后的数据。基于协议,H可能不能产生一个有效的消息。但下一次呢?

为了阻止这种破坏,甲和乙在他们的协议中产生一个校验码消息(message authentication code)。一个校验码消息(MAC)是一部分由密码和一些传输消息产生的数据。信息段算法描述的上述特性正是它们抵御H的功能:

MAC= Digest[some message,secret ]

因为H不知道密码,他不能得出正确的值。即使H随机干扰消息,只要数据量大,他成功的机会微乎其微。例如,使用HD5(一个RSA发明的好的加密算法),甲和乙能够发送128位MAC值和他们的消息。H猜测正确的MAC的几率将近1/18,446,744,073,709,551,616约等于零。

这是又一次修改后的协议:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的校验

甲——〉乙:prove it

乙——〉甲:嗨,我是乙,乙的校验

甲,我是乙

{信息段[甲,我是乙] } 乙的私钥

ok 乙,here is a secret {secret} 乙的公钥

{some message,MAC}secret-key

现在H已经无技可施了。他干扰了得到的所有消息,但MAC计算机能够发现他。甲和乙能够发现伪造的MAC值并且停止交谈。H不再能与乙通讯。

OpenSSL FAQ

⑵ 详解加密技术概念、加密方法以及应用

随着网络技术的发展,网络安全也就成为当今网络 社会 的焦点中的焦点,几乎没有人不在谈论网络上的安全问题,病毒、黑客程序、邮件炸弹、远程侦听等这一切都无不让人胆战心惊。病毒、黑客的猖獗使身处今日网络 社会 的人们感觉到谈网色变,无所适从。
但我们必需清楚地认识到,这一切一切的安全问题我们不可一下全部找到解决方案,况且有的是根本无法找到彻底的解决方案,如病毒程序,因为任何反病毒程序都只能在新病毒发现之后才能开发出来,目前还没有哪能一家反病毒软件开发商敢承诺他们的软件能查杀所有已知的和未知的病毒,所以我们不能有等网络安全了再上网的念头,因为或许网络不能有这么一日,就象“矛”与“盾”,网络与病毒、黑客永远是一对共存体。
现代的电脑加密技术就是适应了网络安全的需要而应运产生的,它为我们进行一般的电子商务活动提供了安全保障,如在网络中进行文件传输、电子邮件往来和进行合同文本的签署等。其实加密技术也不是什么新生事物,只不过应用在当今电子商务、电脑网络中还是近几年的 历史 。下面我们就详细介绍一下加密技术的方方面面,希望能为那些对加密技术还一知半解的朋友提供一个详细了解的机会!
一、加密的由来
加密作为保障数据安全的一种方式,它不是现在才有的,它产生的 历史 相当久远,它是起源于要追溯于公元前2000年(几个世纪了),虽然它不是现在我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。
近期加密技术主要应用于军事领域,如美国独立战争、美国内战和两次世界大战。最广为人知的编码机器是German Enigma机,在第二次世界大战中德国人利用它创建了加密信息。此后,由于Alan Turing和Ultra计划以及其他人的努力,终于对德国人的密码进行了破解。当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命。随着计算机的发展,运算能力的增强,过去的密码都变得十分简单了,于是人们又不断地研究出了新的数据加密方式,如利用ROSA算法产生的私钥和公钥就是在这个基础上产生的。
二、加密的概念
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
三、加密的理由
当今网络 社会 选择加密已是我们别无选择,其一是我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上传输。而且这种不安全性是互联网存在基础——TCP/IP协议所固有的,包括一些基于TCP/IP的服务;另一方面,互联网给众多的商家带来了无限的商机,互联网把全世界连在了一起,走向互联网就意味着走向了世界,这对于无数商家无疑是梦寐以求的好事,特别是对于中小企业。为了解决这一对矛盾、为了能在安全的基础上大开这通向世界之门,我们只好选择了数据加密和基于加密技术的数字签名。
加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。一个简单的例子就是密码的传输,计算机密码极为重要,许多安全防护体系是基于密码的,密码的泄露在某种意义上来讲意味着其安全体系的全面崩溃。
通过网络进行登录时,所键入的密码以明文的形式被传输到服务器,而网络上的窃听是一件极为容易的事情,所以很有可能黑客会窃取得用户的密码,如果用户是Root用户或Administrator用户,那后果将是极为严重的。
还有如果你公司在进行着某个招标项目的投标工作,工作人员通过电子邮件的方式把他们单位的标书发给招标单位,如果此时有另一位竞争对手从网络上窃取到你公司的标书,从中知道你公司投标的标的,那后果将是怎样,相信不用多说聪明的你也明白。
这样的例子实在是太多了,解决上述难题的方案就是加密,加密后的口令即使被黑客获得也是不可读的,加密后的标书没有收件人的私钥也就无法解开,标书成为一大堆无任何实际意义的乱码。总之无论是单位还是个人在某种意义上来说加密也成为当今网络 社会 进行文件或邮件安全传输的时代象征!
数字签名就是基于加密技术的,它的作用就是用来确定用户是否是真实的。应用最多的还是电子邮件,如当用户收到一封电子邮件时,邮件上面标有发信人的姓名和信箱地址,很多人可能会简单地认为发信人就是信上说明的那个人,但实际上伪造一封电子邮件对于一个通常人来说是极为容易的事。在这种情况下,就要用到加密技术基础上的数字签名,用它来确认发信人身份的真实性。
类似数字签名技术的还有一种身份认证技术,有些站点提供入站FTP和WWW服务,当然用户通常接触的这类服务是匿名服务,用户的权力要受到限制,但也有的这类服务不是匿名的,如某公司为了信息交流提供用户的合作伙伴非匿名的FTP服务,或开发小组把他们的Web网页上载到用户的WWW服务器上,现在的问题就是,用户如何确定正在访问用户的服务器的人就是用户认为的那个人,身份认证技术就是一个好的解决方案。
在这里需要强调一点的就是,文件加密其实不只用于电子邮件或网络上的文件传输,其实也可应用静态的文件保护,如PIP软件就可以对磁盘、硬盘中的文件或文件夹进行加密,以防他人窃取其中的信息。
四、两种加密方法
加密技术通常分为两大类:“对称式”和“非对称式”。
对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56Bits。
非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难把密钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。
五、加密技术中的摘要函数(MAD、MAD和MAD)
摘要是一种防止改动的方法,其中用到的函数叫摘要函数。这些函数的输入可以是任意大小的消息,而输出是一个固定长度的摘要。摘要有这样一个性质,如果改变了输入消息中的任何东西,甚至只有一位,输出的摘要将会发生不可预测的改变,也就是说输入消息的每一位对输出摘要都有影响。总之,摘要算法从给定的文本块中产生一个数字签名(fingerprint或message digest),数字签名可以用于防止有人从一个签名上获取文本信息或改变文本信息内容和进行身份认证。摘要算法的数字签名原理在很多加密算法中都被使用,如SO/KEY和PIP(pretty good privacy)。
现在流行的摘要函数有MAD和MAD,但要记住客户机和服务器必须使用相同的算法,无论是MAD还是MAD,MAD客户机不能和MAD服务器交互。
MAD摘要算法的设计是出于利用32位RISC结构来最大其吞吐量,而不需要大量的替换表(substitution table)来考虑的。
MAD算法是以消息给予的长度作为输入,产生一个128位的"指纹"或"消息化"。要产生两个具有相同消息化的文字块或者产生任何具有预先给定"指纹"的消息,都被认为在计算上是不可能的。
MAD摘要算法是个数据认证标准。MAD的设计思想是要找出速度更快,比MAD更安全的一种算法,MAD的设计者通过使MAD在计算上慢下来,以及对这些计算做了一些基础性的改动来解决安全性这一问题,是MAD算法的一个扩展。
六、密钥的管理
密钥既然要求保密,这就涉及到密钥的管理问题,管理不好,密钥同样可能被无意识地泄露,并不是有了密钥就高枕无忧,任何保密也只是相对的,是有时效的。要管理好密钥我们还要注意以下几个方面:
1、密钥的使用要注意时效和次数
如果用户可以一次又一次地使用同样密钥与别人交换信息,那么密钥也同其它任何密码一样存在着一定的安全性,虽然说用户的私钥是不对外公开的,但是也很难保证私钥长期的保密性,很难保证长期以来不被泄露。如果某人偶然地知道了用户的密钥,那么用户曾经和另一个人交换的每一条消息都不再是保密的了。另外使用一个特定密钥加密的信息越多,提供给窃听者的材料也就越多,从某种意义上来讲也就越不安全了。
因此,一般强调仅将一个对话密钥用于一条信息中或一次对话中,或者建立一种按时更换密钥的机制以减小密钥暴露的可能性。
2、多密钥的管理
假设在某机构中有100个人,如果他们任意两人之间可以进行秘密对话,那么总共需要多少密钥呢?每个人需要知道多少密钥呢?也许很容易得出答案,如果任何两个人之间要不同的密钥,则总共需要4950个密钥,而且每个人应记住99个密钥。如果机构的人数是1000、10000人或更多,这种办法就显然过于愚蠢了,管理密钥将是一件可怕的事情。
Kerberos提供了一种解决这个较好方案,它是由MIT发明的,使保密密钥的管理和分发变得十分容易,但这种方法本身还存在一定的缺点。为能在因特网上提供一个实用的解决方案,Kerberos建立了一个安全的、可信任的密钥分发中心(Key Distribution Center,KDC),每个用户只要知道一个和KDC进行会话的密钥就可以了,而不需要知道成百上千个不同的密钥。
假设用户甲想要和用户乙进行秘密通信,则用户甲先和KDC通信,用只有用户甲和KDC知道的密钥进行加密 ,用户甲告诉KDC他想和用户乙进行通信,KDC会为用户甲和用户乙之间的会话随机选择一个对话密钥,并生成一个标签,这个标签由KDC和用户乙之间的密钥进行加密,并在用户甲启动和用户乙对话时,用户甲会把这个标签交给用户乙。这个标签的作用是让用户甲确信和他交谈的是用户乙,而不是冒充者。因为这个标签是由只有用户乙和KDC知道的密钥进行加密的,所以即使冒充者得到用户甲发出的标签也不可能进行解密,只有用户乙收到后才能够进行解密,从而确定了与用户甲对话的人就是用户乙。
当KDC生成标签和随机会话密码,就会把它们用只有用户甲和KDC知道的密钥进行加密,然后把标签和会话钥传给用户甲,加密的结果可以确保只有用户甲能得到这个信息,只有用户甲能利用这个会话密钥和用户乙进行通话。同理,KDC会把会话密码用只有KDC和用户乙知道的密钥加密,并把会话密钥给用户乙。
用户甲会启动一个和用户乙的会话,并用得到的会话密钥加密自己和用户乙的会话,还要把KDC传给它的标签传给用户乙以确定用户乙的身份,然后用户甲和用户乙之间就可以用会话密钥进行安全的会话了,而且为了保证安全,这个会话密钥是一次性的,这样黑客就更难进行破解了。同时由于密钥是一次性由系统自动产生的,则用户不必记那么多密钥了,方便了人们的通信。
七、数据加密的标准
随着计算机硬件的速度越来越快,制造一台这样特殊的机器的花费已经降到了十万美元左右,而用它来保护十亿美元的银行,那显然是不够保险了。另一方面,如果只用它来保护一台普通服务器,那么DES确实是一种好的办法,因为黑客绝不会仅仅为入侵一个服务器而花那么多的钱破解DES密文。
另一种非常着名的加密算法就是RSA了,RSA(Rivest-Shamir-Adleman)算法是基于大数不可能被质因数分解假设的公钥体系。简单地说就是找两个很大的质数。一个对外公开的为“公钥”(Prblic key) ,另一个不告诉任何人,称为"私钥”(Private key)。这两个密钥是互补的,也就是说用公钥加密的密文可以用私钥解密,反过来也一样。
假设用户甲要寄信给用户乙,他们互相知道对方的公钥。甲就用乙的公钥加密邮件寄出,乙收到后就可以用自己的私钥解密出甲的原文。由于别人不知道乙的私钥,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面,由于每个人都知道乙的公钥,他们都可以给乙发信,那么乙怎么确信是不是甲的来信呢?那就要用到基于加密技术的数字签名了。
甲用自己的私钥将签名内容加密,附加在邮件后,再用乙的公钥将整个邮件加密(注意这里的次序,如果先加密再签名的话,别人可以将签名去掉后签上自己的签名,从而篡改了签名)。这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和数字签名,然后用甲的公钥解密签名,这样一来就可以确保两方面的安全了。
八、加密技术的应用
加密技术的应用是多方面的,但最为广泛的还是在电子商务和VPN上的应用,下面就分别简叙。
1、在电子商务方面的应用
电子商务(E-business)要求顾客可以在网上进行各种商务活动,不必担心自己的信用卡会被人盗用。在过去,用户为了防止信用卡的号码被窃取到,一般是通过电话订货,然后使用用户的信用卡进行付款。现在人们开始用RSA(一种公开/私有密钥)的加密技术,提高信用卡交易的安全性,从而使电子商务走向实用成为可能。
许多人都知道NETSCAPE公司是Internet商业中领先技术的提供者,该公司提供了一种基于RSA和保密密钥的应用于因特网的技术,被称为安全插座层(Secure Sockets Layer,SSL)。
也许很多人知道Socket,它是一个编程界面,并不提供任何安全措施,而SSL不但提供编程界面,而且向上提供一种安全的服务,SSL3.0现在已经应用到了服务器和浏览器上,SSL2.0则只能应用于服务器端。
SSL3.0用一种电子证书(electric certificate)来实行身份进行验证后,双方就可以用保密密钥进行安全的会话了。它同时使用“对称”和“非对称”加密方法,在客户与电子商务的服务器进行沟通的过程中,客户会产生一个Session Key,然后客户用服务器端的公钥将Session Key进行加密,再传给服务器端,在双方都知道Session Key后,传输的数据都是以Session Key进行加密与解密的,但服务器端发给用户的公钥必需先向有关发证机关申请,以得到公证。
基于SSL3.0提供的安全保障,用户就可以自由订购商品并且给出信用卡号了,也可以在网上和合作伙伴交流商业信息并且让供应商把订单和收货单从网上发过来,这样可以节省大量的纸张,为公司节省大量的电话、传真费用。在过去,电子信息交换(Electric Data Interchange,EDI)、信息交易(information transaction)和金融交易(financial transaction)都是在专用网络上完成的,使用专用网的费用大大高于互联网。正是这样巨大的诱惑,才使人们开始发展因特网上的电子商务,但不要忘记数据加密。
2、加密技术在VPN中的应用
现在,越多越多的公司走向国际化,一个公司可能在多个国家都有办事机构或销售中心,每一个机构都有自己的局域网LAN(Local Area Network),但在当今的网络 社会 人们的要求不仅如此,用户希望将这些LAN连结在一起组成一个公司的广域网,这个在现在已不是什么难事了。
事实上,很多公司都已经这样做了,但他们一般使用租用专用线路来连结这些局域网 ,他们考虑的就是网络的安全问题。现在具有加密/解密功能的路由器已到处都是,这就使人们通过互联网连接这些局域网成为可能,这就是我们通常所说的虚拟专用网(Virtual Private Network ,VPN)。当数据离开发送者所在的局域网时,该数据首先被用户湍连接到互联网上的路由器进行硬件加密,数据在互联网上是以加密的形式传送的,当达到目的LAN的路由器时,该路由器就会对数据进行解密,这样目的LAN中的用户就可以看到真正的信息了。

⑶ 国家鼓励商用密码从业单位采用商用密码什么标准

国家鼓励商用密码从业单位采用商用密码推荐性国家标准、行业标准。
商用密码是指对不涉及国家秘密内容的信息进行加密保护或者安全认证所使用的密码技术和密码产品。
商用密码技术是商用密码的核心,是信息化时代社会团体、组织、企事业单位和个人用于保护自身权益的重要工具。
国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。
密码技术是保护信息安全的主要手段,它通过对信息进行重新编码,在保证信息的完整性和正确性的同时,也保证信息的机密性,防止信息被篡改、伪造和泄露。
加密是使信息在非授权的情况下不可解读的过程。加密依据是一种密码算法和至少应有一种密钥,对于加密信息即使知道了算法,没有密钥,也无法解读信息。
商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。
比如:商用密码可用于企业内部的各类敏感信息的传输加密、存储加密,防止非法第三方获取信息内容;也可用于各种安全认证、网上银行、数字签名等。
商用密码的科研任务由国家密码管理机构指定单位承担;商用密码的科研成果由密码管理机构组织专家审查、鉴定。
商用密码产品必须经国家密码管理机构指定产品质量检测机构检测合格;商用密码产品由国家密码管理机构许可的单位销售(进口需报批准)。
任何单位或者个人只能使用经国家密码管理机构认可的商用密码产品,不得使用自行研制的或者境外生产的密码产品。
法律依据
《中华人民共和国密码法》第二十四条商用密码从业单位开展商用密码活动,应当符合有关法律、行政法规、商用密码强制性国家标准以及该从业单位公开标准的技术要求。国家鼓励商用密码从业单位采用商用密码推荐性国家标准、行业标准,提升商用密码的防护能力,维护用户的合法权益。

⑷ 什么是加密技术

1.什么是加密技术?

加密技术是电子商务采取的主要安全保密措施,是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术包括两个元素:算法和密钥。算法是将普通的文本(或者可以理解的信息)与一窜数字(密钥)的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种算法。在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全。密钥加密技术的密码体制分为对称密钥体制和非对称密钥体制两种。相应地,对数据加密的技术分为两类,即对称加密(私人密钥加密)和非对称加密(公开密钥加密)。对称加密以数据加密标准(DNS,Data Encryption Standard)算法为典型代表,非对称加密通常以RSA(Rivest Shamir Ad1eman)算法为代表。对称加密的加密密钥和解密密钥相同,而非对称加密的加密密钥和解密密钥不同,加密密钥可以公开而解密密钥需要保密。

2.什么是对称加密技术?

对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DNS),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DNS的加密性好,而且对计算机功能要求也没有那么高。IDEA加密标准由PGP(Pretty Good Privacy)系统使用。

3.什么是非对称加密技术?

1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。相对于“对称加密算法”这种方法也叫做“非对称加密算法”。与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密 (privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

⑸ 加密技术06-加密总结

对称密码是一种用相同的密钥进行加密和解密的技术,用于确保消息的机密性。在对称密码的算法方面,目前主要使用的是 AES。尽管对称密码能够确保消息的机密性,但需要解决将解密密钥配送给接受者的密钥配送问题。

主要算法

DES

数据加密标准(英语:Data Encryption Standard,缩写为 DES)是一种对称密钥加密块密码算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的对称算法。

DES现在已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。

原理请参考: 加密技术01-对称加密-DES原理

3DES

三重数据加密算法(英语:Triple Data Encryption Algorithm,缩写为TDEA,Triple DEA),或称3DES(Triple DES),是一种对称密钥加密块密码,相当于是对每个数据块应用三次DES算法。由于计算机运算能力的增强,原版DES由于密钥长度过低容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。

注意:有3个独立密钥的3DES的密钥安全性为168位,但由于中途相遇攻击(知道明文和密文),它的有效安全性仅为112位。

3DES使用“密钥包”,其包含3个DES密钥,K1,K2和K3,均为56位(除去奇偶校验位)。

密文 = E k3 (D k2 (E k1 (明文)))

而解密则为其反过程:

明文 = D k3 (E k2 (D k1 (密文)))

AES

AES 全称 Advanced Encryption Standard(高级加密标准)。它的出现主要是为了取代 DES 加密算法的,因为 DES 算法的密钥长度是 56 位,因此算法的理论安全强度是 56 位。于是 1997 年 1 月 2 号,美国国家标准技术研究所宣布什望征集高级加密标准,用以取代 DES。AES 也得到了全世界很多密码工作者的响应,先后有很多人提交了自己设计的算法。最终有5个候选算法进入最后一轮:Rijndael,Serpent,Twofish,RC6 和 MARS。最终经过安全性分析、软硬件性能评估等严格的步骤,Rijndael 算法获胜。

AES 密码与分组密码 Rijndael 基本上完全一致,Rijndael 分组大小和密钥大小都可以为 128 位、192 位和 256 位。然而 AES 只要求分组大小为 128 位,因此只有分组长度为 128 位的 Rijndael 才称为 AES 算法。

本文 AES 默认是分组长度为 128 位的 Rijndael 算法

原理请参考: 加密技术02-对称加密-AES原理

算法对比

公钥密码是一种用不同的密钥进行加密和解密的技术,和对称密码一样用于确保消息的机密性。使用最广泛的一种公钥密码算法是 RAS。和对称密码相比,公钥密码的速度非常慢,因此一般都会和对称密码一起组成混合密码系统来使用。公钥密码能够解决对称密码中的密钥交换问题,但存在通过中间人攻击被伪装的风险,因此需要对带有数字签名的公钥进行认证。

公钥密码学的概念是为了解决对称密码学中最困难的两个问题而提出

应用场景

几个误解

主要算法

Diffie–Hellman 密钥交换

迪菲-赫尔曼密钥交换(英语:Diffie–Hellman key exchange,缩写为D-H) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。公钥交换的概念最早由瑞夫·墨克(Ralph C. Merkle)提出,而这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年发表,也是在公开文献中发布的第一个非对称方案。

Diffie–Hellman 算法的有效性是建立在计算离散对数很困难的基础上。简单地说,我们可如下定义离散对数。首先定义素数 p 的本原跟。素数 p 的本原根是一个整数,且其幂可以产生 1 到 p-1 之间所有整数,也就是说若 a 是素数 p 的本原根,则

a mod p, a 2 mod p,..., a p-1 mod p 各不相同,它是整数 1 到 p-1 的一个置换。

对任意整数 b 和素数 p 的本原跟 a,我们可以找到唯一的指数 i 使得

b ≡ a i (mod p) 其中 0 <= i <= p-1

其中 a, b, p 这些是公开的,i 是私有的,破解难度就是计算 i 的难度。

Elgamal

1985年,T.Elgamal 提出了一种基于离散对数的公开密钥体制,一种与 Diffie-Hellman 密钥分配体制密切相关。Elgamal 密码体系应用于一些技术标准中,如数字签名标准(DSS) 和 S/MIME 电子邮件标准。

基本原理就是利用 Diffie–Hellman 进行密钥交换,假设交换的密钥为 K,然后用 K 对要发送的消息 M,进行加密处理。

所以 Elgamal 的安全系数取决于 Diffie–Hellman 密钥交换。

另外 Elgamal 加密后消息发送的长度会增加一倍。

RSA

MIT 的罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在 1977 年提出并于 1978 年首次发表的算法。RSA 是最早满足要求的公钥算法之一,自诞生日起就成为被广泛接受且被实现的通用的公钥加密方法。

RSA 算法的有效性主要依据是大数因式分解是很困难的。

原理请参考: 加密技术03-非对称加密-RSA原理

ECC

大多数使用公钥密码学进行加密和数字签名的产品和标准都使用 RSA 算法。我们知道,为了保证 RSA 使用的安全性,最近这些年来密钥的位数一直在增加,这对使用 RSA 的应用是很重的负担,对进行大量安全交易的电子商务更是如此。近来,出现的一种具有强大竞争力的椭圆曲线密码学(ECC)对 RSA 提出了挑战。在标准化过程中,如关于公钥密码学的 IEEE P1363 标准中,人们也已考虑了 ECC。

与 RSA 相比,ECC 的主要诱人之处在于,它可以使用比 RSA 短得多的密钥得到相同安全性,因此可以减少处理负荷。

ECC 比 RSA 或 Diffie-Hellman 原理复杂很多,本文就不多阐述了。

算法对比

公钥密码体制的应用

密码分析所需计算量( NIST SP-800-57 )

注:L=公钥的大小,N=私钥的大小

散列函数是一种将长消息转换为短散列值的技术,用于确保消息的完整性。在散列算法方面,SHA-1 曾被广泛使用,但由于人们已经发现了一些针对该算法理论上可行的攻击方式,因此该算法不应再被用于新的用途。今后我们应该主要使用的算法包括目前已经在广泛使用的 SHA-2,以及具有全新结构的 SHA-3 算法。散列函数可以单独使用,也可以作为消息认证、数字签名以及伪随机数生成器等技术的组成元素来使用。

主要应用

主要算法

MD5

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个 128 位( 16 字节,被表示为 32 位十六进制数字)的散列值(hash value),用于确保信息传输完整一致。MD5 由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于 1992 年公开,用以取代 MD4 算法。这套算法的程序在 RFC 1321 中被加以规范。

2009年,中国科学院的谢涛和冯登国仅用了 2 20.96 的碰撞算法复杂度,破解了MD5的碰撞抵抗,该攻击在普通计算机上运行只需要数秒钟。2011年,RFC 6151 禁止MD5用作密钥散列消息认证码。

原理请参考: 加密技术04-哈希算法-MD5原理

SHA-1

SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦资料处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。

2005年,密码分析人员发现了对SHA-1的有效攻击方法,这表明该算法可能不够安全,不能继续使用,自2010年以来,许多组织建议用SHA-2或SHA-3来替换SHA-1。Microsoft、Google以及Mozilla都宣布,它们旗下的浏览器将在2017年停止接受使用SHA-1算法签名的SSL证书。

2017年2月23日,CWI Amsterdam与Google宣布了一个成功的SHA-1碰撞攻击,发布了两份内容不同但SHA-1散列值相同的PDF文件作为概念证明。

2020年,针对SHA-1的选择前缀冲突攻击已经实际可行。建议尽可能用SHA-2或SHA-3取代SHA-1。

原理请参考: 加密技术05-哈希算法-SHA系列原理

SHA-2

SHA-2,名称来自于安全散列算法2(英语:Secure Hash Algorithm 2)的缩写,一种密码散列函数算法标准,由美国国家安全局研发,由美国国家标准与技术研究院(NIST)在2001年发布。属于SHA算法之一,是SHA-1的后继者。其下又可再分为六个不同的算法标准,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。

SHA-2 系列的算法主要思路和 SHA-1 基本一致

原理请参考: 加密技术05-哈希算法-SHA系列原理

SHA-3

SHA-3 第三代安全散列算法(Secure Hash Algorithm 3),之前名为 Keccak 算法。

Keccak 是一个加密散列算法,由 Guido Bertoni,Joan Daemen,Michaël Peeters,以及 Gilles Van Assche 在 RadioGatún 上设计。

2012年10月2日,Keccak 被选为 NIST 散列函数竞赛的胜利者。SHA-2 目前没有出现明显的弱点。由于对 MD5、SHA-0 和 SHA-1 出现成功的破解,NIST 感觉需要一个与之前算法不同的,可替换的加密散列算法,也就是现在的 SHA-3。

SHA-3 在2015年8月5日由 NIST 通过 FIPS 202 正式发表。

原理请参考: 加密技术05-哈希算法-SHA系列原理

算法对比

⑹ 加密的标准

最早、最着名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,并经政府的加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute,ANSI)承认。
DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的每轮密钥值由56位的完整密钥得出来。DES用软件进行解码需用很长时间,而用硬件解码速度非常快。幸运的是,当时大多数黑客并没有足够的设备制造出这种硬件设备。在1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。当时DES被认为是一种十分强大的加密方法。
随着计算机硬件的速度越来越快,制造一台这样特殊的机器的花费已经降到了十万美元左右,而用它来保护十亿美元的银行,那显然是不够保险了。另一方面,如果只用它来保护一台普通服务器,那么DES确实是一种好的办法,因为黑客绝不会仅仅为入侵一个服务器而花那么多的钱破解DES密文。
另一种非常着名的加密算法就是RSA了,RSA(Rivest-Shamir-Adleman)算法是基于大数不可能被质因数分解假设的公钥体系。简单地说就是找两个很大的质数。一个对外公开的为公钥(Public key) ,另一个不告诉任何人,称为私钥(Private key)。这两个密钥是互补的,也就是说用公钥加密的密文可以用私钥解密,反过来也一样。
假设用户甲要寄信给用户乙,他们互相知道对方的公钥。甲就用乙的公钥加密邮件寄出,乙收到后就可以用自己的私钥解密出甲的原文。由于别人不知道乙的私钥,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面,由于每个人都知道乙的公钥,他们都可以给乙发信,那么乙怎么确信是不是甲的来信呢?那就要用到基于加密技术的数字签名了。
甲用自己的私钥将签名内容加密,附加在邮件后,再用乙的公钥将整个邮件加密(注意这里的次序,如果先加密再签名的话,别人可以将签名去掉后签上自己的签名,从而篡改了签名)。这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和数字签名,然后用甲的公钥解密签名,这样一来就可以确保两方面的安全了。

⑺ 企业加密软件一般采用的是什么加密技术

现在主流的加密技术:驱动层透明加密技术。
金甲企业数据保密系统~~~~也是利用的驱动层透明加密技术,能够对多种类型文件进行加密,同时能够控制加密文件的打印、拷贝、截屏等等一系列操作,能够真正做到数据在办公局域网内正常使用,一旦未获得许可带出加密文件,文件将呈现乱码!
风奥金甲加密软件口碑不错,是一款专业的企业加密软件厂商

⑻ 数据加密技术概述

数据加密技术的包括这样几方面的内容:数据加密、数据解密、数字签名、签名识别以及数字证明等。

在密码学中,把设计密码的技术成为密码编码,把破译密码的技术称为密码分析。密码编码和密码分析合起来称为密码学。在加密系统中,算法是相对稳定的。为了加密数据的安全性,应经常改变密钥,例如,在每加密一个新信息时改变密钥,或每天、甚至每小时改变一次密钥。

1.易位法

2.置换法

现代加密技术则采用十分复杂的算法,将易位法和置换法交替使用多次而形成乘积密码。

1.对称加密算法
最具代表性的对称加密算法是数据加密标准DES。在DES所使用的的密钥长度为64位,它由两部分组成,一部分是实际密钥,占56位;另一部分是8位奇偶校验位。DES属于分组加密算法,它将明文按64位一组分成若干个明文组,每次利用56位密钥对64位的二进制明文数据进行加密,产生64位密文数据。

对比
由于对称加密算法和非对称加密算法各有优缺点,即非对称加密算法比对称加密算法处理速度慢,但密钥管理简单,因而在当前许多新的安全协议中,都同时应用了这两种加密技术。一种常用的方法是利用公开密钥技术传递对称密码,而用对称密钥技术来对实际传输的数据进行加密和解密。例如,由发送者先产生一个随机数(对称密钥),用它来对要传送的数据进行加密;然后再由接收者的公开密钥对对称密钥进行加密。接收者收到数据后,先用私用密钥对对对称密钥进行解密,然后再用对称密钥对所收到的数据进行解密。

⑼ 一般网页中的用户名和登录密码在传输过程中是通过什么加密的

对于打开了某个论坛,输入了用户名和密码,其实如果网站设计者重视安全问题的话一般会对输入的用户名和密码进行加密,加密后的用户名和密码用一连串的字符表示,所以即使别人窃取了你的用户名和密码和密码,他们如果不知道怎么解密,他们只能得到一连串的字符,所以这也是一道防线。
接下来就是网络安全方面的问题:
数据加密(Data Encryption)技术

所谓加密(Encryption)是指将一个信息(或称明文--plaintext) 经过加密钥匙(Encrypt ionkey)及加密函数转换,变成无意义的密文( ciphertext),而接收方则将此密文经过解密函数、解密钥匙(Decryti on key)还原成明文。加密技术是网络安全技术的基石。

数据加密技术要求只有在指定的用户或网络下,才能解除密码而获得原来的数据,这就需要给数据发送方和接受方以一些特殊的信息用于加解密,这就是所谓的密钥。其密钥的值是从大量的随机数中选取的。按加密算法分为专用密钥和公开密钥两种。

专用密钥,又称为对称密钥或单密钥,加密时使用同一个密钥,即同一个算法。如DES和MIT的Kerberos算法。单密钥是最简单方式,通信双方必须交换彼此密钥,当需给对方发信息时,用自己的加密密钥进行加密,而在接收方收到数据后,用对方所给的密钥进行解密。这种方式在与多方通信时因为需要保存很多密钥而变得很复杂,而且密钥本身的安全就是一个问题。

DES是一种数据分组的加密算法,它将数据分成长度为6 4位的数据块,其中8位用作奇偶校验,剩余的56位作为密码的长度。第一步将原文进行置换,得到6 4位的杂乱无章的数据组;第二步将其分成均等两段 ;第三步用加密函数进行变换,并在给定的密钥参数条件下,进行多次迭代而得到加密密文。

公开密钥,又称非对称密钥,加密时使用不同的密钥,即不同的算法,有一把公用的加密密钥,有多把解密密钥,如RSA算法。

在计算机网络中,加密可分为"通信加密"(即传输过程中的数据加密)和"文件加密"(即存储数据加密)。通信加密又有节点加密、链路加密和端--端加密3种。

①节点加密,从时间坐标来讲,它在信息被传入实际通信连接点 (Physical communication link)之前进行;从OSI 7层参考模型的坐标 (逻辑空间)来讲,它在第一层、第二层之间进行; 从实施对象来讲,是对相邻两节点之间传输的数据进行加密,不过它仅对报文加密,而不对报头加密,以便于传输路由的选择。

②链路加密(Link Encryption),它在数据链路层进行,是对相邻节点之间的链路上所传输的数据进行加密,不仅对数据加密还对报头加密。

③端--端加密(End-to-End Encryption),它在第六层或第七层进行 ,是为用户之间传送数据而提供的连续的保护。在始发节点上实施加密,在中介节点以密文形式传输,最后到达目的节点时才进行解密,这对防止拷贝网络软件和软件泄漏也很有效。

在OSI参考模型中,除会话层不能实施加密外,其他各层都可以实施一定的加密措施。但通常是在最高层上加密,即应用层上的每个应用都被密码编码进行修改,因此能对每个应用起到保密的作用,从而保护在应用层上的投资。假如在下面某一层上实施加密,如TCP层上,就只能对这层起到保护作用。

值得注意的是,能否切实有效地发挥加密机制的作用,关键的问题在于密钥的管理,包括密钥的生存、分发、安装、保管、使用以及作废全过程。

(1)数字签名

公开密钥的加密机制虽提供了良好的保密性,但难以鉴别发送者, 即任何得到公开密钥的人都可以生成和发送报文。数字签名机制提供了一种鉴别方法,以解决伪造、抵赖、冒充和篡改等问题。

数字签名一般采用不对称加密技术(如RSA),通过对整个明文进行某种变换,得到一个值,作为核实签名。接收者使用发送者的公开密钥对签名进行解密运算,如其结果为明文,则签名有效,证明对方的身份是真实的。当然,签名也可以采用多种方式,例如,将签名附在明文之后。数字签名普遍用于银行、电子贸易等。

数字签名不同于手写签字:数字签名随文本的变化而变化,手写签字反映某个人个性特征, 是不变的;数字签名与文本信息是不可分割的,而手写签字是附加在文本之后的,与文本信息是分离的。

(2)Kerberos系统

Kerberos系统是美国麻省理工学院为Athena工程而设计的,为分布式计算环境提供一种对用户双方进行验证的认证方法。

它的安全机制在于首先对发出请求的用户进行身份验证,确认其是否是合法的用户;如是合法的用户,再审核该用户是否有权对他所请求的服务或主机进行访问。从加密算法上来讲,其验证是建立在对称加密的基础上的。

Kerberos系统在分布式计算环境中得到了广泛的应用(如在Notes 中),这是因为它具有如下的特点:

①安全性高,Kerberos系统对用户的口令进行加密后作为用户的私钥,从而避免了用户的口令在网络上显示传输,使得窃听者难以在网络上取得相应的口令信息;

②透明性高,用户在使用过程中,仅在登录时要求输入口令,与平常的操作完全一样,Ker beros的存在对于合法用户来说是透明的;

③可扩展性好,Kerberos为每一个服务提供认证,确保应用的安全。

Kerberos系统和看电影的过程有些相似,不同的是只有事先在Ker beros系统中登录的客户才可以申请服务,并且Kerberos要求申请到入场券的客户就是到TGS(入场券分配服务器)去要求得到最终服务的客户。
Kerberos的认证协议过程如图二所示。

Kerberos有其优点,同时也有其缺点,主要如下:

①、Kerberos服务器与用户共享的秘密是用户的口令字,服务器在回应时不验证用户的真实性,假设只有合法用户拥有口令字。如攻击者记录申请回答报文,就易形成代码本攻击。

②、Kerberos服务器与用户共享的秘密是用户的口令字,服务器在回应时不验证用户的真实性,假设只有合法用户拥有口令字。如攻击者记录申请回答报文,就易形成代码本攻击。

③、AS和TGS是集中式管理,容易形成瓶颈,系统的性能和安全也严重依赖于AS和TGS的性能和安全。在AS和TGS前应该有访问控制,以增强AS和TGS的安全。

④、随用户数增加,密钥管理较复杂。Kerberos拥有每个用户的口令字的散列值,AS与TGS 负责户间通信密钥的分配。当N个用户想同时通信时,仍需要N*(N-1)/2个密钥

( 3 )、PGP算法

PGP(Pretty Good Privacy)是作者hil Zimmermann提出的方案, 从80年代中期开始编写的。公开密钥和分组密钥在同一个系统中,公开密钥采用RSA加密算法,实施对密钥的管理;分组密钥采用了IDEA算法,实施对信息的加密。

PGP应用程序的第一个特点是它的速度快,效率高;另一个显着特点就是它的可移植性出色,它可以在多种操作平台上运行。PGP主要具有加密文件、发送和接收加密的E-mail、数字签名等。

(4)、PEM算法

保密增强邮件(Private Enhanced Mail,PEM),是美国RSA实验室基于RSA和DES算法而开发的产品,其目的是为了增强个人的隐私功能, 目前在Internet网上得到了广泛的应用,专为E-mail用户提供如下两类安全服务:

对所有报文都提供诸如:验证、完整性、防抵 赖等安全服务功能; 提供可选的安全服务功能,如保密性等。

PEM对报文的处理经过如下过程:

第一步,作规范化处理:为了使PEM与MTA(报文传输代理)兼容,按S MTP协议对报文进行规范化处理;

第二步,MIC(Message Integrity Code)计算;

第三步,把处理过的报文转化为适于SMTP系统传输的格式。

身份验证技术

身份识别(Identification)是指定用户向系统出示自己的身份证明过程。身份认证(Authertication)是系统查核用户的身份证明的过程。人们常把这两项工作统称为身份验证(或身份鉴别),是判明和确认通信双方真实身份的两个重要环节。

Web网上采用的安全技术

在Web网上实现网络安全一般有SHTTP/HTTP和SSL两种方式。

(一)、SHTTP/HTTP

SHTTP/HTTP可以采用多种方式对信息进行封装。封装的内容包括加密、签名和基于MAC 的认证。并且一个消息可以被反复封装加密。此外,SHTTP还定义了包头信息来进行密钥传输、认证传输和相似的管理功能。SHTTP可以支持多种加密协议,还为程序员提供了灵活的编程环境。

SHTTP并不依赖于特定的密钥证明系统,它目前支持RSA、带内和带外以及Kerberos密钥交换。

(二)、SSL(安全套层) 安全套接层是一种利用公开密钥技术的工业标准。SSL广泛应用于Intranet和Internet 网,其产品包括由Netscape、Microsoft、IBM 、Open Market等公司提供的支持SSL的客户机和服务器,以及诸如Apa che-SSL等产品。

SSL提供三种基本的安全服务,它们都使用公开密钥技术。

①信息私密,通过使用公开密钥和对称密钥技术以达到信息私密。SSL客户机和SSL服务器之间的所有业务使用在SSL握手过程中建立的密钥和算法进行加密。这样就防止了某些用户通过使用IP packet sniffer工具非法窃听。尽管packet sniffer仍能捕捉到通信的内容, 但却无法破译。 ②信息完整性,确保SSL业务全部达到目的。如果Internet成为可行的电子商业平台,应确保服务器和客户机之间的信息内容免受破坏。SSL利用机密共享和hash函数组提供信息完整性服务。③相互认证,是客户机和服务器相互识别的过程。它们的识别号用公开密钥编码,并在SSL握手时交换各自的识别号。为了验证证明持有者是其合法用户(而不是冒名用户),SSL要求证明持有者在握手时对交换数据进行数字式标识。证明持有者对包括证明的所有信息数据进行标识以说明自己是证明的合法拥有者。这样就防止了其他用户冒名使用证明。证明本身并不提供认证,只有证明和密钥一起才起作用。 ④SSL的安全性服务对终端用户来讲做到尽可能透明。一般情况下,用户只需单击桌面上的一个按钮或联接就可以与SSL的主机相连。与标准的HTTP连接申请不同,一台支持SSL的典型网络主机接受SSL连接的默认端口是443而不是80。

当客户机连接该端口时,首先初始化握手协议,以建立一个SSL对话时段。握手结束后,将对通信加密,并检查信息完整性,直到这个对话时段结束为止。每个SSL对话时段只发生一次握手。相比之下,HTTP 的每一次连接都要执行一次握手,导致通信效率降低。一次SSL握手将发生以下事件:

1.客户机和服务器交换X.509证明以便双方相互确认。这个过程中可以交换全部的证明链,也可以选择只交换一些底层的证明。证明的验证包括:检验有效日期和验证证明的签名权限。

2.客户机随机地产生一组密钥,它们用于信息加密和MAC计算。这些密钥要先通过服务器的公开密钥加密再送往服务器。总共有四个密钥分别用于服务器到客户机以及客户机到服务器的通信。

3.信息加密算法(用于加密)和hash函数(用于确保信息完整性)是综合在一起使用的。Netscape的SSL实现方案是:客户机提供自己支持的所有算法清单,服务器选择它认为最有效的密码。服务器管理者可以使用或禁止某些特定的密码。

阅读全文

与加密技术的工业标准相关的资料

热点内容
华为amd云服务器 浏览:495
汉化编程卡是什么意思 浏览:126
python学习pdf 浏览:313
祝绪丹程序员那么可爱拍吻戏 浏览:198
asp源码会员消费系统 浏览:113
java反射设置 浏览:152
python一行文 浏览:439
排序算法优缺点 浏览:563
恶搞加密文件pdf 浏览:674
gif怎么压缩图片大小 浏览:217
命令选择当前不可用 浏览:158
欧几里得算法如何求逆元 浏览:506
男中学生上课解压神器 浏览:373
加密狗拔掉之后怎么办 浏览:27
云储存平台源码 浏览:847
解压文件苹果手机rar 浏览:149
centos开机命令行模式 浏览:697
遍历所有listpython 浏览:660
力控加密文件夹 浏览:517
如何更改移动服务器密码 浏览:686