可否认加密

来自吾萌百科
镜华酱讨论 | 贡献2024年6月27日 (四) 23:34的版本 →‎非对称加密:​ // Edit via Wikiplus

想象一下,你是一位身怀绝技的特工,掌握着国家机密。突然有一天,邪恶组织把你抓住了!他们逼问你情报,还威胁说要对你挠痒痒直到你笑趴下!这时候,你需要的就是可否认加密!

简单来说,可否认加密是一种加密技术,它让你可以隐藏数据的存在,或者让数据看起来像是别的东西。 即使攻击者破解了你的加密数据,你也可以理直气壮地否认其中隐藏着其他秘密,让他们无功而返,怀疑人生。 想象一下,你把一份绝密情报藏在看似无害的猫片里,即使敌人拿到了照片,也只会看到一只毛茸茸的可爱生物,而不会发现你的秘密!

原理

隐写术 (Steganography)

  1. 原理: 像变魔术一样,将秘密信息藏起来! 把你的秘密信息藏在看似无害的图片、音频、视频甚至文本中,就像把一滴水藏进大海,让人难以察觉。
  2. 举例: 把你的银行账户密码藏在一张猫娘图片的像素中,即使有人查看这张图片,也只会看到一只可爱的猫娘,而不会发现其中隐藏的秘密。

密码学技术

非对称加密

PGP加密:打败窥探狂魔的终极武器(大概?)

厌倦了你的邮件像明信片一样在互联网上裸奔?担心你的秘密情书被老妈截获?想要体验一把谍战片里的加密通话?别担心,PGP加密来拯救你(和你的中二之魂)!

PGP是啥?能吃吗?

PGP(Pretty Good Privacy,良好隐私)加密是一种强大的加密技术,用于保护电子邮件、文件和其他敏感数据的机密性和完整性。它利用非对称加密和数字签名技术,为通信提供机密性、完整性和身份验证。就像给你的信息穿上了一套防弹衣,让别人只能看到一堆乱码,可以有效保护你的隐私和信息安全。

想象一下,你给女神写了一封充满爱意的邮件,但你不想让任何人,包括你的情敌和你的邮箱服务商看到。这时PGP就派上用场了!理论上,PGP的加密算法非常强大,想要破解需要花费的时间比宇宙的年龄还长(大概吧)。

PGP怎么用?需要会写代码吗?

当然不用!你又不是黑客帝国里的救世主(如果你是,请联系我们)。目前主流的PGP加密软件(如GnuPG等)均支持图形化用户界面(GUI)。

PGP加密的运作机制

密钥生成

用户使用PGP软件生成一对密钥:公钥和私钥。公钥可以公开分享,而私钥必须严格保密。

密钥的生成基于复杂的数学算法,例如RSA、DSA或ECDSA,这些算法确保从公钥推导出私钥是极其困难的。

加解密

发送方使用接收方的公钥加密信息。只有拥有对应私钥的接收方才能解密信息。

发送方使用接收方的公钥对信息进行加密。

加密过程将信息转换为不可读的密文,只有拥有对应私钥的人才能解密。 常用的加密算法包括AES、IDEA和CAST-128。

数字签名(可选但推荐)

发送方使用自己的私钥对信息进行数字签名,以验证信息来源和完整性。接收方使用发送方的公钥验证数字签名,确保信息来自预期的发送者,并且在传输过程中没有被篡改。

PGP加密之所以安全有效,是因为:

非对称加密:加密和解密使用不同的密钥,保证只有私钥持有者才能解密信息。

强大的算法:PGP使用经过时间检验的加密算法,这些算法被认为是高度安全的。

密钥管理:私钥的安全性完全掌握在用户手中,降低了密钥泄露的风险。

PGP中的两种重要算法:RSA和ECDSA

PGP加密中,RSA和ECDSA是两种常用的密钥生成算法,它们都属于非对称加密体系,但原理和特点有所不同。

RSA算法

原理

基于大数分解的数学难题。

生成密钥时,选择两个大的随机质数,并通过一系列运算生成公钥和私钥。解密信息需要用私钥对加密信息进行模幂运算,其效率取决于密钥长度和模数大小。破解RSA算法需要对极大整数进行质因数分解,目前这被认为是计算上不可行的。截至 2022 年,已知被破解的最大 RSA 密钥是 829 位的 RSA-250,但有预测在2030年左右会出现能够破解2048位密钥的算力。

举例来说,你可以对3233进行因数分解(61×53),但是你很可能没法对下面这个整数进行因数分解:1230186684530117755130494958384962720772853569595334792197322452151726400507263657518745202199786469389956474942774063845925192557326303453731548268507917026122142913461670429214311602221240479274737794080665351419597459856902143413

它等于这样两个质数的乘积:33478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489

36746043666799590428244633799627952632279158164343087642676032283815739666511279233373417143396810270092798736308917

这是人类已经分解的最大整数之一(232个十进制位,768个二进制位),破解它相当于破解了768位的RSA密钥。

值得注意的是,此密钥的破解并不完全依赖于计算芯片的升级,而是更多地借助于改进的计算软件。

特点

应用广泛,历史悠久,被认为是高度安全的算法。

密钥长度较长,通常为2048位或更长,以保证安全性。

加密和解密速度相对较慢,尤其是在处理大量数据时。(废话,你密钥那么长能快吗?)

ECDSA算法

原理

ECDSA(Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名算法)是一种基于椭圆曲线密码学的数字签名算法,其安全性依赖于椭圆曲线离散对数问题的难解性。

椭圆曲线

ECDSA 使用特定的椭圆曲线方程,形如 y² = x³ + ax + b (mod p) ,其中 p 是一个大质数,a 和 b 是曲线参数。 椭圆曲线上的点满足特定的加法规则,形成一个有限的循环群。 选择不同的曲线参数和基点会产生不同的椭圆曲线和安全级别。

密钥生成

选择曲线参数: 选择一条预定义的椭圆曲线和一个基点 G,该点是曲线上一个预先选择的生成元。

生成私钥: 随机选择一个大整数 d 作为私钥,范围在 1 到 n-1 之间,其中 n 是基点 G 的阶数 (即满足 nG = O 的最小正整数)。

生成公钥: 计算 Q = dG,其中 Q 是公钥,d 是私钥,G 是基点。公钥 Q 也在椭圆曲线上。

签名生成

准备消息: 对要签名的消息进行哈希运算,得到一个固定长度的消息摘要 z。

生成随机数: 随机选择一个大整数 k,范围在 1 到 n-1 之间。

计算点 R: 计算点 R = kG,其中 G 是基点。

计算签名值 r: r 是点 R 的 x 坐标对 n 取模的结果 (r = xR mod n)。

计算签名值 s: s = k-1 (z + rd) mod n,其中 k-1 是 k 对 n 的模逆元 (即满足 k * k-1 ≡ 1 (mod n) 的整数)。

输出签名: (r, s) 即为消息的数字签名。

签名验证

获取公钥和签名: 获取签名者的公钥 Q 和消息的数字签名 (r, s)。

计算 w: w = s-1 mod n。

计算 u1 和 u2: u1 = zw mod n, u2 = rw mod n。

计算点 P: P = u1G + u2Q。

验证签名: 如果点 P 的 x 坐标等于 r (xP = r),则签名有效,否则签名无效。

特点

在提供相同安全级别的前提下,ECDSA可以使用比RSA更短的密钥长度。例如,256位的ECDSA密钥提供的安全性与3072位的RSA密钥相当。

更短的密钥意味着更快的计算速度,更小的存储空间和更低的带宽消耗,尤其适用于移动设备和资源受限的环境。

相对RSA算法,ECDSA的历史较短,但已逐渐被认可和采用。

PGP中RSA和ECDSA的选择

两者都是可靠且安全的算法,选择哪种取决于具体需求和场景。

如果优先考虑兼容性和广泛应用,RSA是更传统的选择。

如果追求更高的效率和更短的密钥长度,ECDSA则更具优势。

随着计算能力的提高和对更高安全性的需求,ECDSA算法在PGP和其他加密应用中越来越受欢迎。

总而言之,RSA和ECDSA都是强大的加密算法,为PGP提供了坚实的安全基础。理解它们的特点可以帮助用户根据自身需求选择合适的算法,更好地保护信息安全。

局限性

PGP加密的安全性基于私钥的保密,如果使用者遭遇了冷启动攻击或遭到暴力胁迫而泄露了私钥,则安全性会化为乌有。可以换用更加安全的可否认加密来应对。 同时,由于PGP为商业软件,故在实际使用中更加常见的是GPG加密。

多重密钥 (Multiple Keys)

使用不同的密钥来加密不同的信息,即使攻击者获取了其中一个密钥,也只能看到部分信息,而无法窥探你隐藏的真正秘密。 就像一个迷宫,只有所有的钥匙能带你找到最终的宝藏。

密钥派生函数 (KDF)

  1. 原理: 从一个主密码派生出多个子密码,每个子密码可以解密不同的加密层级。
  2. 举例: 你的主密码就像一把万能钥匙,可以打开一个保险箱。但保险箱里还有多个隔层,每个隔层都需要用不同的钥匙(子密码)才能打开。

格式化硬碟加密(FDE)

  1. 原理: 将整个硬盘加密,但预留一部分空间用于存放诱饵文件,这部分空间使用一个“虚假”的密码加密。
  2. 举例: 你的硬盘就像一个房间,你用一个密码锁住了整个房间。但你在房间里放了一个保险柜,并告诉攻击者保险柜的密码。攻击者打开保险柜后,发现里面只有一些无关紧要的东西,就会以为自己已经得到了所有信息,而不会怀疑房间的地板下面还藏着秘密。

虚假信息 (Decoy Data)

  1. 原理: 故意留下一些看似真实但其实是误导性的信息,诱使攻击者上当。
  2. 举例: 假设你是一位特工,接到秘密任务要去炸毁一座桥。为了确保任务的隐秘性,你会尽量避免留下任何指向你的证据。但如果爆炸发生后,有人发现了一些蛛丝马迹,比如你在现场附近出现过,这时候你就可以说:“我只是碰巧路过那里,我对爆炸事件一无所知!”因为你并没有留下直接证据,这个解释也说得过去,所以你拥有 “貌似有理的可否认性”。
    在可否认加密的语境下,这意味着即使攻击者发现了你的加密文件,你也可以否认你知道真实信息的存在,并辩称你使用的只是普通的加密技术,而那些被加密的看似敏感的信息只是你用来掩盖真实目的的幌子。 就像战场上的烟雾弹,迷惑敌人的视线。

优势

  1. 极高的安全性: 即使攻击者获得了你的加密数据,也无法确定是否存在其他隐藏信息,更无法破解。
  2. 合理的推诿性 (Plausible Deniability): 你可以否认你知道其他信息的存在,并辩称你只是在使用普通的加密技术。
  3. 广泛的应用场景: 保护商业机密、个人隐私等,尤其适用于高风险环境。

应用

保护商业机密: 企业可以使用可否认加密来保护他们的商业机密,例如产品设计图纸、客户数据等,即使公司内部人员泄露数据,也无法证明他们泄露的是真实信息。(理论上也可以用来保护个人信息)

局限性

  1. 技术门槛较高: 实现可否认加密需要较高的密码学知识和技术水平。
  2. 操作复杂: 设置和使用可否认加密系统相对复杂,需要用户具备一定的计算机操作经验。
  3. 存在被破解的风险: 随着攻击技术的不断发展,可否认加密也面临着被破解的风险。

结语

可否认加密就像是一场谍战游戏,需要你斗智斗勇,如果你想保护你的秘密,不妨试试这个技术,但请务必遵守当地法律法规,不要用它做违法乱纪的事情!