173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

加密算法安全性要求有哪些

keros@mark 2022-11-07 资讯中心

本篇文章给大家谈谈加密算法安全性要求有哪些以及对应的知识点,希望对各位有所帮助。

本文目录一览

常见的加密算法、原理、优缺点、用途

在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段。利用该手段能够保障数据安全通信的三个目标:

而常见的密钥加密算法类型大体可以分为三类:对称加密、非对称加密、单向加密。下面我们来了解下相关的算法原理及其常见的算法。

在加密传输中最初是采用对称密钥方式,也就是加密和解密都用相同的密钥。

1.对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方

2.接收方收到加密后的报文后,结合解密算法使用相同密钥解密组合后得出原始数据。

图示:

非对称加密算法采用公钥和私钥两种不同的密码来进行加解密。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密,那么只有对应的私钥(不能公开)才能解密,反之亦然。N 个用户通信,需要2N个密钥。

非对称密钥加密适合对密钥或身份信息等敏感信息加密,从而在安全性上满足用户的需求。

1.甲使用乙的公钥并结合相应的非对称算法将明文加密后发送给乙,并将密文发送给乙。

2.乙收到密文后,结合自己的私钥和非对称算法解密得到明文,得到最初的明文。

图示:

单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应(少量消息位的变化会引起信息摘要的许多位变化)。

单向加密算法常用于提取数据指纹,验证数据的完整性、数字摘要、数字签名等等。

1.发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。

2.接收方将用于比对验证的明文使用相同的单向加密算法进行加密,得出加密后的密文串。

3.将之与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。

图示:

MD5、sha1、sha224等等

密钥交换IKE(Internet Key Exchange)通常是指双方通过交换密钥来实现数据加密和解密

常见的密钥交换方式有下面两种:

将公钥加密后通过网络传输到对方进行解密,这种方式缺点在于具有很大的可能性被拦截破解,因此不常用

DH算法是一种密钥交换算法,其既不用于加密,也不产生数字签名。

DH算法通过双方共有的参数、私有参数和算法信息来进行加密,然后双方将计算后的结果进行交换,交换完成后再和属于自己私有的参数进行特殊算法,经过双方计算后的结果是相同的,此结果即为密钥。

如:

安全性

在整个过程中,第三方人员只能获取p、g两个值,AB双方交换的是计算后的结果,因此这种方式是很安全的。

答案:使用公钥证书

公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合

用于实现基于公钥密码机制的密钥和证书的生成、管理、存储、分发和撤销的功能

签证机构CA、注册机构RA、证书吊销列表CRL和证书存取库CB。

公钥证书是以数字签名的方式声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务身份。公钥证书的生成遵循X.509协议的规定,其内容包括:证书名称、证书版本、序列号、算法标识、颁发者、有效期、有效起始日期、有效终止日期、公钥 、证书签名等等的内容。

1.客户A准备好要传送的数字信息(明文)。(准备明文)

2.客户A对数字信息进行哈希(hash)运算,得到一个信息摘要。(准备摘要)

3.客户A用CA的私钥(SK)对信息摘要进行加密得到客户A的数字签名,并将其附在数字信息上。(用私钥对数字信息进行数字签名)

4.客户A随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。 (生成密文)

5.客户A用双方共有的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给乙。(非对称加密,用公钥对DES密钥进行加密)

6.银行B收到客户A传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。(用私钥对DES密钥解密)

7.银行B然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。(解密文)

8.银行B用双方共有的公钥(PK)对客户A的数字签名进行解密,得到信息摘要。银行B用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。(用公钥解密数字签名)

9.银行B将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。(对比信息摘要和信息)

答案是没法保证CA的公钥没有被篡改。通常操作系统和浏览器会预制一些CA证书在本地。所以发送方应该去那些通过认证的CA处申请数字证书。这样是有保障的。

但是如果系统中被插入了恶意的CA证书,依然可以通过假冒的数字证书发送假冒的发送方公钥来验证假冒的正文信息。所以安全的前提是系统中不能被人插入非法的CA证书。

END

对称加密算法加密所面临到两个问题是什么?

1、当通信对象很多时会面临到密钥如何管理问题

对称加密算法的安全性取决于加密密钥的保存情况,放在一个企业使用环境,要求企业当中每一个持有密钥的员工都保守秘密是不可能的,拥有密钥的员工很有可能会有意无意地把密钥泄漏出去。

2、对于一个新的数据通信对象,密钥怎样进行传输的问题

对称加密的做法一般是解密方生成密钥传输给加密方,加密方对明文加密,然后把密文发送给解密方,解密方使用密钥对密文解密,得到明文。而密钥在传输过程中很可能被入侵者截获,截获后便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性就会很低。所以对称加密的安全性就不仅仅取决于加密算法本身的强度,更取决于密钥是否被安全地传输。

若帮助到您,求采纳~

常见加密算法原理及概念

在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段。利用该手段能够保障数据安全通信的三个目标:

而常见的密钥加密算法类型大体可以分为三类:对称加密、非对称加密、单向加密。下面我们来了解下相关的算法原理及其常见的算法。

对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收方收到加密后的报文后,结合密钥和解密算法解密组合后得出原始数据。由于加解密算法是公开的,因此在这过程中,密钥的安全传递就成为了至关重要的事了。而密钥通常来说是通过双方协商,以物理的方式传递给对方,或者利用第三方平台传递给对方,一旦这过程出现了密钥泄露,不怀好意的人就能结合相应的算法拦截解密出其加密传输的内容。

对称加密算法拥有着算法公开、计算量小、加密速度和效率高得特定,但是也有着密钥单一、密钥管理困难等缺点。

常见的对称加密算法有:

DES:分组式加密算法,以64位为分组对数据加密,加解密使用同一个算法。

3DES:三重数据加密算法,对每个数据块应用三次DES加密算法。

aes:高级加密标准算法,是美国联邦政府采用的一种区块加密标准,用于替代原先的DES,目前已被广泛应用。

Blowfish:Blowfish算法是一个64位分组及可变密钥长度的对称密钥分组密码算法,可用来加密64比特长度的字符串。

非对称加密算法采用公钥和私钥两种不同的密码来进行加解密。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密,那么只有对应的私钥才能解密,反之亦然。

下图为简单非对称加密算法的常见流程:

发送方Bob从接收方Alice获取其对应的公钥,并结合相应的非对称算法将明文加密后发送给Alice;Alice接收到加密的密文后,结合自己的私钥和非对称算法解密得到明文。这种简单的非对称加密算法的应用其安全性比对称加密算法来说要高,但是其不足之处在于无法确认公钥的来源合法性以及数据的完整性。

非对称加密算法具有安全性高、算法强度负复杂的优点,其缺点为加解密耗时长、速度慢,只适合对少量数据进行加密,其常见算法包括:

RSA :RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,可用于加密,也能用于签名。

DSA :数字签名算法,仅能用于签名,不能用于加解密。

DSS :数字签名标准,技能用于签名,也可以用于加解密。

ELGamal :利用离散对数的原理对数据进行加解密或数据签名,其速度是最慢的。

单向加密算法常用于提取数据指纹,验证数据的完整性。发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。接收方在收到加密的报文后进行解密,将解密获取到的明文使用相同的单向加密算法进行加密,得出加密后的密文串。随后将之与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应。常见的算法包括:MD5、sha1、sha224等等,其常见用途包括:数字摘要、数字签名等等。

密钥交换IKE(Internet Key Exchange)通常是指双方通过交换密钥来实现数据加密和解密,常见的密钥交换方式有下面两种:

1、公钥加密,将公钥加密后通过网络传输到对方进行解密,这种方式缺点在于具有很大的可能性被拦截破解,因此不常用;

2、Diffie-Hellman,DH算法是一种密钥交换算法,其既不用于加密,也不产生数字签名。DH算法的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。DH算法通过双方共有的参数、私有参数和算法信息来进行加密,然后双方将计算后的结果进行交换,交换完成后再和属于自己私有的参数进行特殊算法,经过双方计算后的结果是相同的,此结果即为密钥。

如:

在整个过程中,第三方人员只能获取p、g两个值,AB双方交换的是计算后的结果,因此这种方式是很安全的。

公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合,用于实现基于公钥密码机制的密钥和证书的生成、管理、存储、分发和撤销的功能,其组成包括:签证机构CA、注册机构RA、证书吊销列表CRL和证书存取库CB。

PKI采用证书管理公钥,通过第三方可信任CA中心,把用户的公钥和其他用户信息组生成证书,用于验证用户的身份。

公钥证书是以数字签名的方式声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务身份。公钥证书的生成遵循X.509协议的规定,其内容包括:证书名称、证书版本、序列号、算法标识、颁发者、有效期、有效起始日期、有效终止日期、公钥 、证书签名等等的内容。

CA证书认证的流程如下图,Bob为了向Alice证明自己是Bob和某个公钥是自己的,她便向一个Bob和Alice都信任的CA机构申请证书,Bob先自己生成了一对密钥对(私钥和公钥),把自己的私钥保存在自己电脑上,然后把公钥给CA申请证书,CA接受申请于是给Bob颁发了一个数字证书,证书中包含了Bob的那个公钥以及其它身份信息,当然,CA会计算这些信息的消息摘要并用自己的私钥加密消息摘要(数字签名)一并附在Bob的证书上,以此来证明这个证书就是CA自己颁发的。Alice得到Bob的证书后用CA的证书(自签署的)中的公钥来解密消息摘要,随后将摘要和Bob的公钥发送到CA服务器上进行核对。CA在接收到Alice的核对请求后,会根据Alice提供的信息核对Bob的证书是否合法,如果确认合法则回复Alice证书合法。Alice收到CA的确认回复后,再去使用从证书中获取的Bob的公钥加密邮件然后发送给Bob,Bob接收后再以自己的私钥进行解密。

加密能力 体现的安全哪种特性 ?健壮?难攻破?隐私性?

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的主页()上下载

openssl-version.tar.gz软件包来编译安装,与Apache服务器配合可以建立支持SSL的Web服务器,

并可以使用自我签订的证书做认证,关于如何编译、安装OpenSSL服务器,可以参考一下OpenSSL HOWTO

文档。

SSL 程序设计初步介绍

SSL 通讯模型为标准的C/S 结构,除了在 TCP 层之上进行传输之外,与一般的通讯没有什么明显的区

别。在这里,我们主要介绍如何使用OpenSSL进行安全通讯的程序设计。关于OpenSSL 的一些详细的信

息请参考OpenSSL的官方主页 。

在使用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原理解密

本文出自:

范晓明

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

使用公钥加密法认证

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

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

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

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

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

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

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

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

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

乙——〉甲:甲,我是乙

乙的私钥

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

提交公钥

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

甲——〉乙:你好

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

甲——〉乙:prove it

乙——〉甲:甲,我是乙 乙的私钥

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

* 证书的发行者姓名

* 发行证书的组织

* 标题的公钥

* 邮戳

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

这些是修订后的协议:

甲——〉乙:你好

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

甲——〉乙:prove it

乙——〉甲:甲,我是乙 乙的私钥

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

如果一个黑客,叫H

甲——〉H:你好

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

交换密码(secret)

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

甲——〉乙:乙的公钥

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

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

甲——〉乙:你好

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

甲——〉乙:prove it

乙——〉甲:甲,我是乙 乙的私钥

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

乙——〉甲:secret-key

黑客窃听

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

甲——〉H:你好

H——〉乙:你好

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

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

甲——〉H:prove it

H——〉乙:prove it

乙——〉H:甲,我是乙 乙的私钥

H——〉甲:甲,我是乙 乙的私钥

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

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

乙——〉H:secret-key

H——〉甲:Garble[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-key

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

OpenSSL FAQ

产品的开发快则一个月,慢则一年,那么如何杜绝市面上各种山寨也成为了我们必须要关注的问题,加密芯片可以做到这点,在保障开发者权益的同时也保护了消费者权益,KEROS加密芯片作为该领域的领头者,一直在尽力贡献一份力。特点如下:接口:标准I2C协议接口;算法: 标准aes256 / KAS算法;特殊接口:Random Stream Cipher for Interface;工作温度:工业级 -40℃ ~+85℃;频率:400Khz;存储:2K字节EEPROM(可选);电压:1.8V~3.6V;封装:SOT23-6,SOP8,TDFN-6。加密算法安全性要求有哪些的介绍就聊到这里吧,感谢你花时间阅读本站内容,谢谢。

产品列表
产品封装
友情链接