项目笔记:Webgoat靶场通关教程之Cryptographic Failures

 0x02.Cryptographic Failures(失败的加密)

         1. 页面给的意思是让我们熟悉几种加密方式,往后走第二个是base64加密,直接解码复制粘贴

2.往后走,他给了其他几种编码,最重要的是xor解码

        XOR(异或)加密是一种基础的对称加密方式,其核心逻辑是明文与密钥逐位异或得到密文,解密时密文与同一密钥再次异或即可还原明文。由于XOR操作具有自反性,因此加密与解密使用相同算法。

        所以要破解xor编码,就要穷举他的密钥,这边成功找到了他的密钥为”_“(下划线)

3.再往后是哈希值,因为hash是不可逆的,但是目前网络上有很强大的彩虹表,就是将各种字符串的hash值进行计算后存起来,然后在提供明文查询,而且在题目里明确表示没有加Salt,因此我们在网上随便找个破解MD5的网站进行解密

  4.这里讲的是对称加密和非对称加密这里简单介绍

 对称加密(Symmetric Encryption)

        核心原理:加密与解密使用同一密钥(如K),算法是公开的,安全性依赖密钥保密性。

典型算法

  • AES(高级加密标准):128/192/256位密钥,高效安全,全球通用(如TLS/SSL、文件加密)。
  • DES/3DES:56位密钥(已不安全,易被暴力破解),3DES通过三次DES加密增强安全性(逐步淘汰中)。
  • ChaCha20:基于流加密,抗侧信道攻击,常用于移动端和物联网(如TLS 1.3)

 工作流程

加密:
Ciphertext=E(Plaintext,K)
解密:
Plaintext=D(Ciphertext,K)

非对称加密(Asymmetric Encryption)

        核心原理:基于数学难题(如大整数分解、椭圆曲线离散对数),使用公钥(Public Key)加密,私钥(Private Key)解密;或私钥签名,公钥验证。

典型算法

  • RSA:基于大整数分解,支持加密和签名,广泛用于数字证书、SSH密钥。
  • ECC(椭圆曲线加密):基于椭圆曲线离散对数,同等安全下密钥更短(如256位ECC≈3072位RSA),效率更高(如比特币、TLS 1.3)。
  • DSA/ECDSA:专用于数字签名(如区块链交易签名)。

工作流程

加密:
Ciphertext=E(Plaintext,PK)
(仅私钥持有者可解密)
签名:
Signature=Sign(Hash(Data),SK)
,验证:
Verify(Hash(Data),Signature,PK)

混合加密

核心思想:结合对称与非对称加密优势,解决“安全+效率”矛盾。
典型应用

  • TLS/SSL
    1. 非对称加密交换临时对称密钥(如ECDHE密钥协商)。
    2. 对称加密(如AES-GCM)加密实际数据。
    3. 哈希(如SHA-256)验证数据完整性。
  • PGP/GPG:用RSA加密对称密钥,对称加密加密邮件内容。
5.签名

        签名作为数字世界的“防伪印章”,通过密码学技术确保数据完整性、身份认证与不可否认性。

1. RAW签名:最基础的数字签名

  • 原理
    • 发送方(A)对原始数据计算哈希值(如SHA-256),用私钥加密该哈希生成签名。
    • 接收方(B)用公钥解密签名得到哈希值,同时重新计算数据哈希值,两者比对一致则验证通过。
    • 典型流程:数据 → 哈希 → 私钥加密 → 签名验证:数据 → 哈希 → 公钥解密签名 → 比对哈希
  • 特点
    • 需单独传输数据、签名、公钥证书三要素,适合简单场景(如API接口签名)。
    • 安全性依赖私钥保密性与哈希算法强度(如SHA-256抗碰撞性)。
  • 场景:软件开发包签名、命令行工具验证(如GPG签名)、自定义协议安全扩展。

2. CMS签名:标准化的“数字信封”

  • 原理
    • 基于PKCS#7标准,将数据、签名、证书(含公钥)打包为单一文件(如.p7s/.p7m),支持S/MIME格式。
    • 接收方通过解析CMS容器,自动获取公钥并验证证书链有效性(如是否由可信CA签发、是否过期/吊销)。
  • 优势
    • 集成数据与签名,简化传输流程;支持多级证书链验证,增强信任传递。
    • 广泛用于电子邮件加密(S/MIME)、文档数字签名(如Adobe PDF签名)。
  • 案例:企业合同电子签章系统,通过CMS格式确保合同内容与签名不可分割。

3. SOAP签名:XML负载的“动态防护”

  • 原理
    • 针对SOAP XML消息的特殊性(如可能包含动态时间戳、会话ID),采用XML Signature标准(如WS-Security)。
    • 允许对XML的不同部分(如Body、Header)单独签名,支持多签名方协作(如多方会签场景)。
    • 哈希计算需排除非内容元素(如时间戳),通过Canonicalization(规范化)确保相同内容生成一致哈希。
  • 特点
    • 灵活适配复杂XML结构,支持消息级身份认证与防篡改。
    • 常用于企业服务总线(ESB)、B2B集成平台的安全通信。

4. 电子邮件签名:身份认证的“数字身份证”

  • 原理
    • 发送方使用私钥对邮件内容(含头部、正文、附件)进行签名,接收方通过公钥证书验证。
    • 依赖第三方CA(如DigiCert、GlobalSign)颁发邮件签名证书,绑定发件人邮箱与公钥。
    • 邮件客户端(如Outlook、Thunderbird)自动验证签名并显示“发件人已验证”标识。
  • 价值
    • 防止钓鱼攻击(如伪造发件人地址),确保邮件来源可信;
    • 支持法律证据留存(如电子合同邮件确认)。

5. PDF/Word签名:文档的“永久性防篡改标记”

  • 原理
    • Adobe PDF使用PDF Signature标准,Microsoft Word使用数字签名功能,将签名嵌入文档元数据。
    • 签名过程:计算文档哈希 → 私钥加密哈希 → 将签名与证书写入文档特定区域。
    • 打开文档时,阅读器(如Adobe Reader)自动验证签名有效性(如证书状态、文档是否被修改)。
  • 场景
    • 政府公文、法律合同、财务报告等需要长期存证的文件;
    • 支持时间戳服务(如RFC 3161),确保签名时间可信。

对比总结:选择签名的关键考量

维度RAW签名CMS签名SOAP签名邮件签名PDF/Word签名
集成度低(需三要素)高(自包含)中(XML嵌入)中(邮件头嵌入)高(文档内嵌)
适用数据类型任意二进制任意二进制XML负载邮件内容文档内容
验证复杂度中(需公钥)低(自动验证)高(需解析XML)中(依赖客户端)低(自动验证)
典型场景API接口电子合同企业服务集成安全邮件政府公文

        题目提供一个private RSA key,把这个RSA key的modulus作为十六进制字符串,然后计算一个signature。这个作业需要一些openssl经验,直接写python脚本实现

核心代码:

        

try:
    # 加载私钥
    private_key = serialization.load_pem_private_key(
        private_key_pem.encode(),
        password=None,
        backend=default_backend()
    )
    
    # 生成公钥
    public_key = private_key.public_key()
    print("你的公钥是:")
    print(public_key.public_bytes(
        encoding=serialization.Encoding.PEM,
        format=serialization.PublicFormat.SubjectPublicKeyInfo
    ).decode())
    
    # 提取公钥的modulus
    modulus = public_key.public_numbers().n
    print("\n您的modulus为:")
    print(hex(modulus)[2:])  # 移除'0x'前缀
    
    # 使用私钥对示例数据签名
    data = b"hello world"  # 示例数据
    signature = private_key.sign(
        data,
        padding.PSS(
            mgf=padding.MGF1(hashes.SHA256()),
            salt_length=padding.PSS.MAX_LENGTH
        ),
        hashes.SHA256()
    )

6. default

        因为我用的不是docker,所以一时半会也没找到解决此问题的办法(出题人口味独特)此问题其实就是默认配置问题,默认端口暴露,未加密私钥,默认管理员密码,和配置文件等。

未完待续...

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值