【基础原理】会话秘钥

【前言】

           最近在做民生银行密盾的项目, 业务中反复听到会话秘钥加密与用户秘钥加密。 比较好奇会话秘钥是什么,所以查询了一下相关的概念。

【正文】

          

会话密钥(session key)也称为 数据加密密钥 或者工作密钥,是保证用户跟其它计算机或者两台计算机之间安全通信会话而随机产生的加密和解密密钥,它可由通信用户之间进行协商得到。它一般是动态地、仅在需要进行会话数据加密时产生。
会话密钥(session key)是保证用户跟其它计算机或者两台计算机之间安全通信会话而随机产生的加密和解密密钥。会话密钥有时称对称密钥,因为同一密钥用于加密和解密。会话密钥可使用CryptDeriveKey函数从杂乱信号数值中导出(这一方法称会话密钥推导方案)。贯穿各个会话始终,这个密钥与各个消息一起传输,并使用接收者的公共密钥加密。由于其大部分安全性依赖于其使用时间的短暂性,会话密钥常常频繁更改。各个消息可能使用不同的会话密钥。 

### 非对称加密算法 RSA 的原理 非对称加密算法 RSA 是一种基于大整数因子分解难题的密码体制,其安全性依赖于将两个大素数相乘容易而因式分解该乘积却极其困难这一事实[^2]。 #### 数学基础 RSA 算法的核心在于模幂运算以及欧拉定理的应用: - **密钥生成** 假设选取两个不同的大质数 \( p \) 和 \( q \),计算它们的乘积 \( n=pq \)[^3]。接着求得 \( φ(n)=(p−1)(q−1) \),这里 \( φ \) 表示欧拉函数。选择一个小于 \( φ(n) \) 并且与其互质的小奇数 e ,使得 gcd(e,φ(n))=1 。最后通过扩展欧几里得算法找到 d 满足 ed≡1(mod φ(n)) 即可得到私钥 (d,n) 而公开部分则为 (e,n) 形成公钥。 - **加解密过程** 对于明文消息 M (假设已经转换成了小于 n 的正整数形式),利用公钥 (e,n) 进行加密操作 C=M^e mod n 得到密文 C;接收方收到密文之后再用对应的私钥 (d,n) 执行 M=C^d mod n 来恢复原始信息 M[^4]。 ```python from sympy import isprime, mod_inverse def generate_keys(p, q): """Generate public and private keys.""" if not (isprime(p) and isprime(q)): raise ValueError('Both numbers must be prime.') n = p * q phi_n = (p - 1) * (q - 1) # Choose an integer e such that 1 < e < phi_n and gcd(e, phi_n) = 1; # here we choose a common value of e which satisfies these conditions. e = 65537 d = mod_inverse(e, phi_n) return ((e, n), (d, n)) def encrypt(public_key, plaintext): """Encrypt the message using the public key""" e, n = public_key cipher_text = pow(plaintext, e, n) return cipher_text def decrypt(private_key, ciphertext): """Decrypt the message using the private key""" d, n = private_key plain_text = pow(ciphertext, d, n) return plain_text ``` ### 应用领域 除了基本的数据保密功能之外,RSA还被广泛应用到了以下几个方面: - 数据完整性验证:通过对文件或数据包附加数字签名来确保发送者身份的真实性并防止篡改行为发生; - 密钥交换机制:在网络通信过程中用来协商临时会话秘钥以保障后续交互内容的安全性; - 认证服务提供:如SSL/TLS协议中客户端向服务器证明自己合法性的环节就采用了类似的思路实现双向认证流程。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农胖虎-java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值