IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:密码学

共 8 篇相关文章

IT 累计浏览 2,806

密码学及公钥基础设施入门

这篇文章从互联网安全成为标配(如Chrome对HTTP标记“不安全”)但多数人仅止于工具使用的现状切入,旨在为读者厘清密码学与公钥基础设施(PKI)背后的核心概念。它并非一篇操作指南,而是着重讲解构成安全通信的三大支柱:**保密性**(防窥探)、**完整性**(防篡改)与**身份认证**(防伪装),并通过Alice与Eve的经典故事生动阐释了每个特性为何不可或缺。 文章系统梳理了加密体系的脉络。它对比了**对称加密**(如AES、ChaCha20,同一密钥加解密,速度高效)与**非对称加密**(如RSA,公私钥配对,计算开销大但便于密钥分发)的原理、优劣及典型应用场景,例如后者常用于在TLS中安全交换对称密钥。文中还强调了**随机性(信息熵)** 对于生成安全密钥的基础性作用,甚至提到了利用熔岩灯墙收集随机性的趣闻。最后,文章引出了实现完整性与身份认证的关键工具——**密码散列函数**,并解释了其单向性、抗碰撞性等核心要求。 作者的目的是帮助开发者超越“货物崇拜”式的盲目使用,真正理解Let's Encrypt等现代安全方案赖以运作的数学与逻辑根基,从而建立更扎实的安全认知。

IT 累计浏览 2,722

RSA 算法是如何诞生的

这篇讲的是RSA算法背后那段堪比励志小说的诞生史。作者从三个性格迥异的发明者说起:痴迷新技术的Rivest、学啥都快的Shamir,以及起初只想当“泼冷水”评委的Adleman。 故事的核心冲突在于,他们为Diffie提出的公钥密码概念寻找可行的单向函数。从1976年底开始,Rivest和Shamir构想,Adleman负责破解,这个循环竟重复了42次。每一次方案被Adleman击破,都是一次挫折,但也排除了一条错误路径。 直到1977年逾越节派对后,Rivest在深夜获得关键灵感,一气呵成完成了最终方案,这次Adleman终于无法破解。更有趣的细节是,论文署名按字母顺序排列,若非Adleman的坚持,这个后来改变互联网安全的技术或许就叫“ARS”了。 文章还揭示了历史的另一个面貌:早在1973年,英国数学家Clifford Cocks在半小时内就得出了几乎相同的算法,却因政府保密协议,其成果被尘封了二十多年。这让RSA的荣耀与一段无名英雄的遗憾交织在一起,也让算法的诞生故事更显厚重。

IT 累计浏览 4,076

数论的应用-RSA公钥算法

这篇讲的是RSA公钥算法背后的数学之美。作者从伟大的数学家欧拉切入,引出了现代非对称加密的基石——RSA算法。文章首先点明了对称加密的局限,随后介绍了1976年公钥密码思想的诞生,以及1977年RSA算法的正式提出。 核心部分,文章深入浅出地拆解了RSA所依赖的数论工具:欧拉函数用于计算与某数互质的数的个数,而欧拉定理(费马小定理的推广)则为算法的数学正确性提供了保证。随后,文章分步展示了RSA密钥生成与加解密的全过程:如何选取两个大素数p和q来构造模数n,并由此推导出公钥e和私钥d;以及如何用公钥加密、私钥解密。 为了让理论落地,文中还用了一个具体数字例子(M=52, p=17, q=11, e=7, d=23)演示了整个加密解密流程,让抽象公式变得清晰可感。最终,文章回归数学原理,简要说明了为何这样构造能实现解密的正确性。 整篇文章将深奥的数论概念与实际的密码学应用串联起来,展现了从纯理论到关键技术的奇妙旅程,让你理解为什么这个看似无用的数学分支,最终能成为守护互联网安全的隐形卫士。

IT 累计浏览 6,482

md5到md5破解的一些科普

这篇讲的是如何正确理解MD5这一经典哈希函数及其“被破解”事件。文章作者从MD5的多对一映射本质出发,解释了为何它是“不可逆”的,进而引出了密码学中关键的“碰撞”概念。 核心对比在于“无弱碰撞”与“无强碰撞”的区别。作者用生动的生日悖论说明,找到一对碰撞(强碰撞)的复杂度约为O(sqrt(m)),远低于遍历的O(m),这为攻击提供了理论可能性。文章重点阐述了王小云教授的突破性贡献:她找到的算法能比生日攻击更快地构造出强碰撞,而非通过密文反推明文。这并不意味着MD5可以直接“解密”,而是破坏了它在验证文件完整性或数字签名时的可靠性基础。 后续提到的“预测大选”实验,正是利用了快速构造前缀碰撞的技术,以一种巧妙的方式展示了算法漏洞的实际应用。最终文章落脚于现实影响:尽管MD5在部分安全场景已弃用,但其漏洞提醒我们,从非官方渠道下载文件时,仅比对MD5值已不足以保证安全。

IT 累计浏览 4,353

跨越千年的RSA算法

作者从古希腊几何学中“可公度线段”的概念出发,讲述了数论中一系列精妙思想的演进。文章首先通过欧几里得求最大公度单位的直观例子,自然引出“辗转相除法”这一核心算法,并证明其效率。随后,以正方形边长与对角线不可公度的发现为例,揭示了无理数在古希腊时期就已出现的历史趣闻。 作者进而将话题转向数论中更深入的概念——互质与中国剩余定理。文中用生活中的公交车班次例子,生动解释了互质与最小公倍数的关系,并引出了《孙子算经》中的经典问题,展示了中国剩余定理的雏形与魅力。 这篇长文并非对教科书内容的简单复述,而是作者基于为《程序员》杂志撰写文章时积累的大量素材与个人思考,重新梳理的一条连贯知识脉络。他以牺牲部分严谨性为代价,力求用更直观、可读的方式,展现从古典数论走向现代公钥加密(如RSA算法)的奇妙旅程。

IT 累计浏览 3,859

TCP SYN-Cookie背后的人和事 - 续

这篇讲的是TCP SYN-Cookie机制一次深入的“祛魅”与理解修正。作者坦言,在早前一篇相关文章中,自己认为SYN-Cookie完全不保存会话信息,而是用一个32位的Cookie作为替代。其推理依据是:若本机不保存任何秘密,攻击者就能伪造出合法的第三次ACK包,从而发起攻击。 然而,在深入代码和调试之后,作者发现了自己原先理解的局限。这篇文章正是围绕着这个认知的转变展开,探讨了在实际的工程实现中,SYN-Cookie机制为了确保安全性,究竟需要(并确实)维护哪些关键的秘密信息。作者的反思指出,仅仅停留在理论推导或文档描述层面,很容易对协议的具体实现产生偏差;只有结合源码剖析与实践验证,才能真正吃透一个技术的内核。 文中对秘密信息的讨论,直指SYN-Cookie抵御攻击的核心,揭示了教科书式原理与工业级实现之间那道需要亲手跨越的沟壑。

IT 累计浏览 1,364

Diffie-Hellman算法的效率

这篇讲的是Diffie-Hellman(DH)算法中一个容易混淆但至关重要的细节:私钥的生成策略。作者从一个常见的误解出发——他原先认为DH私钥的长度必须与公钥参数一致。文章澄清了这个点,指出私钥的长度选择其实是一个独立于公钥参数的安全设计。 具体来说,公钥是由大素数模数和生成元决定的,其强度主要取决于模数位数。而私钥是一个随机选取的指数,它的长度(即比特数)直接决定了暴力破解的难度。作者指出,一个典型的2048位DH交换,其私钥可以选得更短,例如256位,这已能提供足够的安全强度,同时能显著提升计算效率。关键在于,私钥长度的选择需要平衡安全性与性能,过短会降低安全性,而过长则无谓增加计算开销。 通过纠正这一误解,文章实际上对比了DH算法中公钥参数与私钥指数的不同设计目标:前者构建一个坚不可摧的“数学问题”,后者则是在此框架内选择一个既安全又高效的“解”。这帮助读者在实现或评估DH时,能更精准地把握安全与效率的权衡点。

IT 累计浏览 2,697

加密服务学习笔记

这篇笔记从公共网络的不安全性切入,探讨了加密服务的基础原理。作者指出,在Internet等公共网络上,通信容易被未授权第三方读取或修改,而加密技术提供了关键保护:它不仅能防止数据泄露,还能检测篡改,从而在非安全信道上建立安全通信。 文章具体说明了加密的工作流程:使用加密算法对数据进行加密,然后以密文形式传输,预定接收方再进行解密。例如,即使第三方截获了加密数据,破解也极为困难,这确保了信息的机密性和完整性。笔记强调,加密通过这一机制,为现代网络通信奠定了安全基础,是抵御常见威胁的实用手段。 通过这篇学习笔记,读者可以快速掌握加密的核心概念和实际作用,为理解更复杂的安全协议或应用场景如VPN、HTTPS等提供起点。