第十一节密码学基础

第十一节密码学基础

古典密码

古典密码学是密码学的一个分支,主要研究传统的加密和解密方法。这些方法在计算机时代之前使用,主要依赖于手工计算或简单的机械设备。古典密码学的目标是保护信息的机密性,确保只有授权方能够读取加密的信息。以下是几种典型的古典密码算法

  • 凯撒密码(Caesar Cipher)
    • 最简单的替换密码之一。
    • 每个字母在字母表中按固定数目进行偏移。例如,偏移3个位置,A变为D,B变为E,依此类推。
    • 弱点:只有25种可能的偏移量,容易被暴力破解。
  • 维吉尼亚密码(Vigenère Cipher)
    • 使用一个关键词来决定字母的偏移量。
    • 每个字母的偏移量由对应的关键词字母决定,增强了安全性。
    • 弱点:如果关键词较短,可能被频率分析破解。
  • 仿射密码(Affine Cipher)
    • 是凯撒密码的推广,使用线性变换公式 E(x)=(ax+b)modm 进行加密,其中 a 和 b 是密钥,m 是字母表的长度。

      E(x)=(ax+b)mod  mE(x) = (ax + b) \mod m

      aa

      bb

      mm

    • 增加了密钥空间,但如果知道密钥的某些特征,仍然可以被破解。

  • 希尔密码(Hill Cipher)
    • 使用线性代数中的矩阵乘法来进行加密。
    • 明文被分成固定长度的块,每个块用一个矩阵进行加密。
    • 需要矩阵行列式非零且互素,以确保逆矩阵存在。
  • 换位密码(Transposition Cipher)
    • 通过改变明文字母的顺序来加密。
    • 例如列移换密码,将明文写成一个矩阵,然后按列读取密文。
    • 这种方法本身不改变字母的频率,因此容易被频率分析破解。

现代密码

现代密码学是密码学的一个分支,致力于保护信息的机密性、完整性和真实性,主要依赖复杂的数学算法和计算机技术。以下是现代密码学的几个重要概念和算法:

对称加密

对称加密使用相同的密钥进行加密和解密。其主要特点是速度快,适合大数据量的加密。

  1. 高级加密标准(AES)
    • 一种广泛使用的对称加密算法。
    • 支持128位、192位和256位密钥。
    • 采用多轮替换-置换网络,提高了安全性。
  2. 数据加密标准(DES)和三重DES(3DES)
    • DES使用56位密钥,已被认为不安全。
    • 3DES通过多次应用DES提高安全性,但速度较慢,逐步被AES取代。

非对称加密

非对称加密使用一对密钥:公钥用于加密,私钥用于解密。其主要特点是安全性高,适合密钥交换和数字签名。

  1. RSA
    • 基于大素数分解问题的安全性。
    • 常用于密钥交换和数字签名。
    • 由于密钥生成和加密速度较慢,不适合加密大数据量。
  2. 椭圆曲线密码学(ECC)
    • 基于椭圆曲线离散对数问题。
    • 在提供相同安全级别的情况下,使用较短的密钥,提高了效率。
    • 被广泛用于移动设备和资源受限环境。

哈希函数

哈希函数将任意长度的数据映射为固定长度的摘要,用于数据完整性验证。

  1. SHA-256和SHA-3
    • SHA-256是SHA-2家族的一部分,输出256位摘要。
    • SHA-3是NIST新标准,基于Keccak算法,提供了与SHA-2不同的结构和安全性。
  2. MD5和SHA-1
    • MD5输出128位摘要,SHA-1输出160位摘要。
    • 由于发现了安全漏洞,这两种算法不再推荐使用。

数字签名

数字签名用于验证信息的真实性和完整性,通常结合非对称加密使用。

  1. RSA数字签名
    • 通过私钥签名,公钥验证。
    • 安全性基于RSA加密算法。
  2. 椭圆曲线数字签名算法(ECDSA)
    • 基于ECC,提供高效且安全的数字签名。

密钥交换

密钥交换用于在不安全信道上安全地交换加密密钥。

  1. Diffie-Hellman密钥交换(DH)
    • 基于离散对数问题。
    • 双方生成共享的对称密钥,用于后续通信加密。
  2. 椭圆曲线Diffie-Hellman(ECDH)
    • 基于ECC,提高了效率和安全性。

量子密码学

量子密码学利用量子力学原理,提供了理论上无条件安全的通信手段。

  1. 量子密钥分发(QKD)
    • 通过量子纠缠或量子叠加态分发密钥。
    • 任何窃听行为都会被检测到,确保通信安全。

网安中的密码学

哈希

将一种任意长度的消息压缩到某一固定长度的密文

常见的:

  • MD5(Message Digest Algorithm 5)
    • 生成128位(16字节)的哈希值。
    • 快速,但由于碰撞攻击(即不同的输入生成相同的哈希值),不再推荐用于安全性要求高的场景。
  • SHA-1(Secure Hash Algorithm 1)
    • 生成160位(20字节)的哈希值。
    • 比MD5更安全,但同样受到碰撞攻击的威胁,已经被许多机构废弃。
  • SHA-2(包括SHA-224、SHA-256、SHA-384、SHA-512)
    • SHA-256生成256位(32字节)的哈希值。
    • SHA-512生成512位(64字节)的哈希值。
    • 目前仍然被广泛使用且安全性较高。
  • SHA-3
    • 基于Keccak算法,是最新的SHA系列成员。
    • 提供与SHA-2相同的位长度(224、256、384、512)。
    • 设计目标是应对潜在的SHA-2弱点,但SHA-2目前仍然被认为是安全的。
  • HMAC(Hash-based Message Authentication Code)
    • 基于任何加密哈希函数(如SHA-256)构建,提供消息的完整性和真实性验证。
    • 常用于认证和完整性检查,如在TLS和IPsec中使用。
  • bcrypt
    • 基于Blowfish加密算法,专门为密码哈希设计。
    • 引入了盐(salt)和工作因子(work factor),增加了抗暴力破解的难度。
    • 常用于存储用户密码。
  • scrypt
    • 专门为密码哈希设计,且比bcrypt更耗内存。
    • 设计目标是增加暴力破解的难度,通过消耗大量内存和计算资源。
  • Argon2
    • 是密码哈希大赛(PHC)中的获胜算法,分为Argon2d、Argon2i和Argon2id。
    • 提供高安全性和灵活性,能够抵抗各种攻击(如侧信道攻击)。

哈希不可逆

彩虹表

加解密

对称加密

加解密key相同

非对称加密

加解密key不同

一个挖洞思路

抓小程序登陆包(手机号一键登录)——>找到session_key,偏移量iv—>利用脚本或者bp插件加密目标手机号——>修改数据包——>实现未授权访问

session

Session是在服务器端维护的用户状态。它通过一个唯一的会话ID(通常存储在Cookie中)将用户的每个请求关联起来。以下是一些关键点:

  1. 存储位置:Session数据存储在服务器端,通常在内存或数据库中。
  2. 数据量限制:Session数据量较大,不受客户端存储限制。
  3. 使用场景
    • 用户身份验证:在用户登录后维护其登录状态。
    • 购物车:跟踪用户添加到购物车中的商品。
    • 临时数据存储:在多步骤表单中保存临时数据。
  4. 生命周期
    • 会话超时:服务器会设置会话的超时时间,如果用户在指定时间内没有活动,会话将失效。
    • 手动销毁:用户注销时,会话可以手动销毁。
  5. 安全性:Session数据存储在服务器端,比Cookie更安全,但需要保护会话ID不被劫持。

工作原理

  1. 创建会话:用户首次请求时,服务器创建一个会话并生成一个唯一的会话ID。
  2. 返回会话ID:服务器将会话ID返回给客户端,通常存储在Cookie中。
  3. 后续请求:客户端在后续请求中发送会话ID,服务器根据会话ID检索和维护会话数据。

cookie

Cookie是一种由服务器发送并存储在客户端浏览器中的小数据文件。它们用于在不同请求之间保持状态。以下是一些关键点:

  1. 存储位置:Cookie存储在客户端的浏览器中。
  2. 数据量限制:每个Cookie的大小通常限制为4KB。
  3. 使用场景
    • 身份验证:存储用户登录凭证。
    • 用户偏好:保存用户选择的界面语言、主题等。
    • 追踪和分析:用于广告跟踪和分析用户行为。
  4. 生命周期
    • 会话Cookie:在浏览器关闭时自动删除。
    • 持久Cookie:指定了过期时间,可以在多个会话中保留。
  5. 安全性:Cookie数据容易被窃取或篡改,通常需要通过HTTPS传输和设置HttpOnlySecure属性来提高安全性。

比较与结合

  • 存储位置:Cookie在客户端,Session在服务器端。
  • 安全性:Session更安全,因为数据存储在服务器端;Cookie容易被窃取,需要额外的安全措施。
  • 数据量:Cookie有存储限制(约4KB),Session可以存储更多数据。
  • 生命周期:Cookie可以持久化,Session通常在会话结束时或超时后失效。

结合使用

  • 身份验证:登录时服务器创建会话,并将会话ID存储在Cookie中。后续请求中,服务器根据会话ID识别用户。
  • 持久化会话:可以使用持久Cookie来保存会话ID,使得用户在关闭浏览器后重新打开时仍然保持登录状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值