RSA加密算法
定义
RSA体制是一种分组密码,其明文和密文均是0值某n-之间的整数。RSA使用算法使用乘方运算,没耐高温以分组为单位进行加密。
数学基础:
大整数因子分解的困难性——任何大于1的整数总可以唯一分解成素因数乘积的形式。
算法描述
- 生成密钥 KeyGen:
选择一对不同的素数p和q,n=pq,φ(n)=φ(pq)=(p-1)(q-1)
公钥:n,e; e<φ(n),(e, φ(n)) = 1 (e与φ(n)互素)
私钥:d; d*e = 1 mod φ(n)
即pk = (n, e), sk = d (pk指代公钥,sk指代私钥) - 加密 Enc
En(pk, m): m ∈ M = Zn, c = m^e mod n - 解密 Dec
De(sk, c): m = c^d mod n
验证正确性
要验证正确性,则我们需要验证该等式:m = c^d mod n = (m^e mod n)^d mod n 成立即可。
c^d mod n = (m^e mod n)^d mod n
=m^(1 + kφ(n))mod n (->ed = 1 mod φ(n))
=m(m^φ(n))^k mod n
=m mod n (->gcd(m,n)=1->m^φ(n) = 1 mod n)
RSA的安全性
对RSA算法的攻击可能有以下5种方式:
- 穷举攻击:试图穷举所有可能的私钥
- 数学攻击:试图分解两个素数的乘积
- 计时攻击:依赖于算法的运行时间
- 基于硬件故障的攻击:应用在产生前面过程中处理器发生的故障
- 选择密文攻击:利用RSA算法的性质
ElGamal密码体制
ElGamal密码体制是一种基于离散对数的公开密钥体制,常应用于数字签名标准(DSS)和S/MIME电子邮件标准中。
ElGamal密码体制算法描述
- 生成密钥 KeyGen:
选择一个素数p,q是p的素根,随机生成整数x
y = g^x mod p
pk = (p, g, y)
sk = x - 加密 Enc
En(pk, m): m ∈ M = Zp* , c = (c1, c2)
c1 = g^r mod p(r为随机数)
c2 = m*y^r mod p (密文消息不固定,因为r是随机数) - 解密 Dec
De(sk, c): m = c2/(c1^x mod p)
RSA加密与ElGamal加密的区别
- 对于一个确定的消息,RSA加密出来的密文是确定的,而ElGamal是不确定的,因为ElGamal引入了随机数
- RSA加密出来的密文长度与明文长度一样,而ElGamal加密出来的密文是明文长度的两倍
公钥基础PKI
PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的网络环境。
PKI 主要包括四个部分:
- X.509 格式的证书(X.509 V3)和证书废止列表CRL(X.509 V2)
- CA 操作协议;
- CA 管理协议
- CA 政策制定
一个典型、完整、有效的PKI 应用系统至少应具有以下五个部分:
- 认证中心CA
CA 是PKI 的核心,CA 负责管理PKI 结构下的所有用户(包括各种应用程序)的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份,CA 还要负责用户证书的黑名单登记和黑名单发布,后面有CA 的详细描述。 - X.500 目录服务器
X.500 目录服务器用于发布用户的证书和黑名单信息,用户可通过标准的LDAP 协议查询自己或其他人的证书和下载黑名单信息。 - 具有高强度密码算法(SSL)的安全WWW服务器
Secure socket layer(SSL)协议最初由Netscape 企业发展,现已成为网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通讯的全球化标准。 - Web(安全通信平台
Web 有Web Client 端和Web Server 端两部分,分别安装在客户端和服务器端,通过具有高强度密码算法的SSL 协议保证客户端和服务器端数据的机密性、完整性、身份验证。 - 自开发安全应用系统
自开发安全应用系统是指各行业自开发的各种具体应用系统,例如银行、证券的应用系统等。完整的PKI 包括认证政策的制定(包括遵循的技术标准、各CA 之间的上下级或同级关系、安全策略、安全程度、服务对象、管理原则和框架等)、认证规则、运作制度的制定、所涉及的各方法律关系内容以及技术的实现等。
- 认证中心CA