密码学三大核心技术解析

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

参考来源

相关推荐
广州山泉婚姻1 小时前
Python序列号源码分析
python
计算机源码社1 小时前
【大数据项目实战】基于大数据的影视内容生态综合质量分析与可视化-基于数据挖掘的影视内容类型共现与口碑聚类分析系统
大数据·人工智能·python·数据挖掘·数据分析·毕业设计·课程设计
C^h2 小时前
pytorch 适合初学者 0基础学习
人工智能·pytorch·python
小柯南敲键盘2 小时前
跨马翻译:AI批量图片翻译工具,跨境电商视频字幕翻译与智能抠图一体搞定
人工智能·python·音视频
2601_962297252 小时前
Python里behave和pytest-bdd哪个更适合中大型项目?为什么?
python·bdd·行为驱动开发·behave·pytest-bdd
YCOSA20254 小时前
系统工具使用检测.exe (仅供娱乐)
python·microsoft
2601_962295334 小时前
如何python实现网页的自动化
python·selenium·beautifulsoup·requests·网页自动化
ofoxcoding4 小时前
GPT Image 2.5 API 实战:Python 调用实现图片生成与编辑
人工智能·python·gpt·ai
张小姐的猫5 小时前
【AI大模型接入SDK】 —— Gemini接入封装
android·数据结构·数据库·c++·人工智能·python
Elastic 中国社区官方博客5 小时前
Elasticsearch Python DSL 客户端开发
大数据·数据库·python·elasticsearch·搜索引擎·全文检索