简介
公钥加密也被称为非对称加密。下面是一个例子:
- Bob生成一个密钥对,发布他的公钥𝑃𝐾𝐵, 保管密钥𝑆𝐾𝐵 私有的
- Alice使用𝑃𝐾𝐵 加密明文M,得到密文C,并将其发送给Bob
- 假设:𝑃𝐾𝐵 是真实的
- Bob使用𝑆𝐾𝐵 解密密文C得到M
- 目标:保密
密钥生成算法生成的密钥对由两部分组成,即允许公开的公钥和必须保密的私钥。
IND-CPA安全
加密方案有3种算法:
- 对手被给予𝑝𝑘
- 它可以运行𝐸𝑛𝑐, 即免费的加密查询(不同于对称加密)
- 不可区分性:对手获胜的概率与偶然获胜的概率相差可忽略不计,比如二分之一。确定性PKE不能是IND-CPA。
IND-CCA安全
- 对手被给予𝑝𝑘 以及访问解密预言机
- 它可以运行𝐸𝑛𝑐 它本身
- 它可以要求解密除质询密文之外的任何密文
- 不可区分性:对手获胜的概率与偶然获胜的概率相差可忽略不计,比如二分之一。
- IND-CCA相当于非延展性,即能够为相关明文找到密文。
ElGamal加密
ElGamal加密方案
- 密钥生成:随机选取𝑥, 设置ℎ =
- 随机选取𝑦, 将密文计算为:
- 解密:给定一个密文𝑐 = (𝑐1,𝑐2) ,将明文恢复为:
最终式: