密码学三大核心技术解析

密码学核心技术主要围绕保障信息安全的三大目标(CIA三元组:机密性、完整性、不可否认性)展开,其核心支柱包括加密算法、哈希函数和数字签名。

一、核心目标:CIA三元组

目标 含义 核心技术支撑
机密性 确保信息不被未授权方访问。 对称与非对称加密算法。
完整性 确保信息在传输或存储过程中未被篡改。 哈希函数、消息认证码。
不可否认性 确保信息发送方无法否认其行为。 数字签名。

二、核心技术详解

  1. 加密算法

加密算法是实现机密性的核心,分为对称加密和非对称加密。

  • 对称加密

    加密和解密使用同一密钥,速度快,适合大数据量加密。

    python 复制代码
    from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
    from cryptography.hazmat.primitives import padding from cryptography.hazmat.backends import default_backend
    import os
    
    # 生成随机密钥和初始化向量(IV)
    key = os.urandom(32)  # AES-256密钥 iv = os.urandom(16)   # CBC模式需要的IV
    
    # 创建加密器 cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
    encryptor = cipher.encryptor()
    
    # 对明文进行填充并加密
    padder = padding.PKCS7(128).padder()
    padded_data = padder.update(b"Sensitive Data") + padder.finalize()
    ciphertext = encryptor.update(padded_data) + encryptor.finalize()
    print(f"密文: {ciphertext.hex()}")

    AES是当前最常用的对称加密标准。

  • 非对称加密

    使用公钥和私钥对,解决了密钥分发问题。公钥加密,私钥解密;或私钥签名,公钥验签。

    python 复制代码
    from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import serialization, hashes # 生成RSA密钥对
    private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
    public_key = private_key.public_key()
    
    # 使用公钥加密一段数据(例如一个对称密钥)
    message = b"A secret symmetric key"
    ciphertext = public_key.encrypt(
        message,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA256()),
            algorithm=hashes.SHA256(),
            label=None
        )
    )
    print(f"RSA加密后的密文: {ciphertext.hex()}")

    在区块链等领域,椭圆曲线密码学(ECC)因其更短的密钥长度和更高的安全性而广泛应用。

  1. 哈希函数

哈希函数将任意长度输入映射为固定长度的输出(哈希值),具有单向性和抗碰撞性,是保证数据完整性的基石。

python 复制代码
# 示例:使用SHA-256计算哈希值
import hashlib

data = b"Hello, Cryptography!"
hash_object = hashlib.sha256(data)
hash_hex = hash_object.hexdigest()
print(f"SHA-256哈希值: {hash_hex}")

# 验证数据完整性
def verify_integrity(original_data, stored_hash):
    new_hash = hashlib.sha256(original_data).hexdigest()
    return new_hash == stored_hash

print(f"完整性验证结果: {verify_integrity(data, hash_hex)}")

在密码存储中,常使用加盐的增强哈希算法(如PBKDF2、bcrypt)来抵御彩虹表攻击。Merkle树结构也利用哈希函数来高效验证大数据集的完整性,广泛应用于区块链。

  1. 数字签名

数字签名结合了非对称加密和哈希函数,用于实现身份认证、完整性和不可否认性。

python 复制代码
# 示例:使用RSA私钥签名,公钥验签
from cryptography.hazmat.primitives.asymmetric import paddingfrom cryptography.hazmat.primitives import hashes
from cryptography.exceptions import InvalidSignature

# 待签名的消息
message = b"Important transaction details"

# 1. 发送方使用私钥生成签名
signature = private_key.sign(
    message,
    padding.PSS(
        mgf=padding.MGF1(hashes.SHA256()),
        salt_length=padding.PSS.MAX_LENGTH ),
    hashes.SHA256()
)
print(f"数字签名: {signature.hex()}")

# 2. 接收方使用公钥验证签名
try:
    public_key.verify(
        signature,
        message,
        padding.PSS(
            mgf=padding.MGF1(hashes.SHA256()),
            salt_length=padding.PSS.MAX_LENGTH ),
        hashes.SHA256()
    )
    print("签名验证成功,消息完整且来自私钥持有者。")
except InvalidSignature:
    print("签名验证失败!消息可能被篡改或来源不可信。")

三、关键数学基础与组件

  • 随机数生成:安全的密码学操作依赖于高质量的随机数,用于生成密钥、盐和初始化向量等。伪随机数生成器(PRNG)的安全性至关重要。
  • 数学结构:模运算、群、有限域等代数结构是许多加密算法(如RSA、椭圆曲线密码学)的理论基础。
  • 密码协议与基础设施:上述核心技术被组合成更复杂的协议和系统,如SSL/TLS、数字证书和公钥基础设施(PKI),以支撑实际的安全通信与应用。

参考来源

相关推荐
小白快快跑哦9 小时前
python-字符串全解(六):正则表达式-量词
python·正则表达式·字符串
禹凕9 小时前
机器学习之Selenium(Machina Learning about Selenium)
爬虫·python·selenium·测试工具·机器学习
ebiobiz11 小时前
基于 GD32 Embedded Builder (GEB) 与 Nimmake 的 MCU 工程搭建指南
c++·python·单片机·嵌入式硬件·mcu
老歌老听老掉牙11 小时前
穿越时空的物流密码:VRP与VRPTW的深度剖析及实战求解
python·物流·vrp
FYKJ_201012 小时前
django电影推荐系统55066-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·typescript·spark·django
ShyanZh12 小时前
【Python3基础】13-Python 常用设计模式
开发语言·python·设计模式
小静AI工程实验室12 小时前
RSA 算法详解:从模幂原理到 OAEP 加密、PSS 签名与 Python 实验
python·算法
xzal1212 小时前
GESP Python笔记
笔记·python·算法
半日闲dusknook13 小时前
我给 AI 写了个「音频编译器」:把「听起来还行」变成 PASS/FAIL
python
在世修行13 小时前
干货:信号槽
python·信号槽