首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

系统架构设计师:信息安全技术基础知识--密钥的选择

密钥在概念上被分成两大类:数据加密密钥(DK)和密钥加密密钥(KK)。前者直接对数据进行操作,后者用于保护密钥,使之通过加密而安全传递。算法的安全性在于密钥。如果密钥由脆弱的密码程序生成,那么整个系统都将处于极其脆弱的环境中,当攻击者能够分析密钥生成算法时,也就无须分析密码算法了。为对抗攻击者的攻击,密钥生成需要考虑3个方面的因素。

1.增大密钥空间

一个密码算法的密钥若设为N位,那么该密钥空间为2°。显然,若某加密程序限制了密钥的位数,那么密钥空间随之减小,特别是当密钥生成程序比较脆弱的话,将导致密钥能够轻易被破译。例如,采用各种专用蛮力攻击硬件和并行技术,无论是对于一台机器甚至是多台机器并行处理,只要每秒测试100万个密钥,破译8字节以下小写字母和小写字母与数字构成的密钥、7字节以下字母数字密钥、6字节以下可打印字母密钥和ASCIII字符密钥以及5字节以下8位的ASCII字符密钥都是可以的。另外随着计算机设备的不断改进,对破译的时间和条件要求也越来越少。

加长密钥位数,增大密钥空间,对阻止攻击是很有帮助的。例如,采用穷举搜索所有密钥的时间,对于8位ASCII字符(256个)在4字节密钥空间下只需要1.2小时,在6字节密钥空间下需要8.9年,而在8字节情况下需要580000年!明显增加了攻击的难度。

2.选择强钥

在实际应用中,人们为了能方便记忆,往往选择较弱的密钥,如选择“lane”,而不是“9(hlH\A-”。简单的密钥方便了人们的记忆,也方便了攻击者的测试。对于公钥算法,不同的算法对强钥的选择也有不同的规定。

3.密钥的随机性

好的生成密钥是一个随机位串。会话密钥的产生,用随机数作为会话密钥;公钥密码算法也采用随机数作为密钥。密钥位可从可靠的随机源获得,如一些物理噪声产生器、离子辐射脉冲检测器、气体放电关、漏电容等;也可从安全的伪随机数发生器借助于安全的密码算法来产生,只要设计得好,能通过各种随机性检验就具有伪随机性。

随机数序列需满足随机性和不可预测性的要求。首先,均匀分布和独立性可以用来保证随机数的随机性,数列中每个数的出现频率应基本相等且均不能由其他数推出。在设计密码算法时,经常会使用一种称为伪随机数列的数列。例如在RSA算法中素数的产生。一般情况下,决定一个大数N是否为素数是很困难的。最原始的方法就是用每个比N1/2小的数去除N,如果N很大,比如10160,这一方法则超出人类的分析能力和计算能力。另外在相互认证和会话密钥的产生等应用中,更要求数列中以后的数是不可预测的。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OzQVWhKva_3hKGgvRTxn9kJw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券