密码学三大核心技术解析

密码学核心技术主要围绕保障信息安全的三大目标(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),以支撑实际的安全通信与应用。

参考来源

相关推荐
qq21084629531 小时前
在python中什么是 self 和 cls?
开发语言·前端·python
nanawinona1 小时前
2026年手工思路量化后,工具重点会怎样变化
人工智能·python
今天AI了吗1 小时前
从聊天到委派:AI Agent 如何推进长期任务
数据库·人工智能·python·sql·rust
傻啦嘿哟2 小时前
王者荣耀爬虫:爬取全英雄皮肤数据,用Python做可视化分析
开发语言·爬虫·python
徒慕风流2 小时前
激光雷达回波信号滤波与时刻鉴别算法:原理、代码实现与仿真验证
python·算法·激光雷达
菜冻鱼2 小时前
Python-pytorch-数据加载
开发语言·人工智能·pytorch·python·深度学习·机器学习
you鬰2 小时前
datawhale--llm-algo-leetcod1️⃣
python·datawhale
南京云森杉木桩3 小时前
水利木桩源头直供,质量可靠价格更优
大数据·python