密码的编制与破译:破译时间的研究

2014-10-11 17:52吴俊杰
中国信息技术教育 2014年19期
关键词:密码信息安全数值

吴俊杰

编码和解码的过程是一个通讯双方都知道编码规则的过程,但是如果通讯的过程是通过开放信道传输的,如声音或者无线电波,任何人都能够接收得到,因此那些信源不希望成为信宿的信号接受者,通过密码的破译,掌握了编码规则,就会对信息安全和保密造成损害。一系列的信息安全事件常常是因为密码失窃而产生的。那么如何设定一个安全的密码,不仅仅是需要将一些规则简单地灌输给学生,更可以通过信息技术实验的方法,发起一场密码攻防站,这样,我们相信,当硝烟散去,学生对密码编制的一些规则也有了更进一步的理解。信息安全已经成为了关系到国计民生的一个重要领域,而密码的破译对于青少年来说既神秘又好奇,如果我们可以通过信息技术实验的方法将其去魅,使其成为一个小实验,这样既提升了学生对程序学习的兴趣,又加深了对一些重要算法的理解。密码破译的过程便可从一个最简单的数字密码开始。

● 密码的设定

如果我们设定的密码是一个由数字0到9构成的三位字符串,则密码应该包含从000到999,共计1000种组合,如果使用的方法,二位数和一位数需要在前面补0,具体的算法是如图1所示。

● 密码的破译

设定了一个三位的密码之后,接下来就是密码破译的工作了,最简单的方法是如果已知这是一个三位的密码,从0逐次增加,直到猜想的密码和设定的密码一致为止(如图2)。当然,在这个过程中也要注意将一位数和二位数补齐的问题,其中涉及一个类似数学上的分类讨论的方法。

● 影响破译时间的因素

1.密码的数值

信息技术实验倡导学生研究稳定的对应关系,一个基本的方法就是信息的全记录,记录过程中的数据,并且探索其中的规律,多次实验是一个重要的方法,如果我们记录每一次破译密码的时间和破译出的密码数值,从当前的算法来看,密码是从小到大枚举的,如果是这样数值越大的密码需要的破译时间就会越长。这需要获取数据并进行研究,用链表记录密码破译的结果和所需时间(如图3)。测定的20组数据的散点图如图4所示。

通过拟合,我们不难看出一次项系数0.027恰好是程序循环一次所需要的时间,而这比标准的循环时间0.025秒多出了一部分时间,产生这种差异的原因应该是循环体内的逻辑判断。

2.执行模式

使用编辑菜单中的设置单步执行程式下的超速模式,执行的速度会明显增加,如果使用多次测量求和的方法,完成20次破译的时间提速为超速模式的6秒,是普通模式的314秒的五十分之一,大大提高了密码破译的速度。

3.改进算法

使用图5的代码,替代了之前的且逻辑的方法,减少了逻辑判断的次数,预计会使得解密的速度加快。

实验发现,破解100次密码,新的方法需要14.5秒,而旧的方法需要23.5秒,因此改进算法也能较大程度上提高程序的破解效率。

● 密码的复杂度

最后,我们回到一个常识上来,密码的位数越复杂,破解所需要的时间越长,我们将密码长度由3位提升到4位之后,对应100次破解的时间也增加了10倍为144.7秒,可以想象,如果密码增加了26个字母的大写或者小写,那么从52个字母中选择其中的一个,密码破解的时间会增大多少倍。

因此进行密码的破译的实验,一方面是让学生通过具体的实践,体味提升密码安全的重要性;另一方面用实验的方法,促使学生了解了影响破译速度的几个因素,即密码数值、循环速度、破译算法和密码位数,并且通过数据分析验证了猜想、获得了新知,对信息技术实验中的核心概念:数据、稳定的对应关系、效率有了进一步的理解。最后,密码学和密码破译是应用数学和信息技术结合的一个重要领域,关系国家安全和每个人的信息素养,如果学生希望进一步研究,还需要补充大量的知识。举个最简单的例子,如果我们将四位的数值增加到五位,增加一个小写字母,插入到四位数字当中的任何一个位置,这个程序的密码设定和密码破解恐怕就超出了Scratch这种图形化编程语言的极限了,学生自然地需要学习Python、C或者Java这种代码语言,这是侧重于一种算法和挑战计算机性能的竞赛,而信息技术实验的一般方法和过程将始终在这个竞赛中充当重要角色。endprint

编码和解码的过程是一个通讯双方都知道编码规则的过程,但是如果通讯的过程是通过开放信道传输的,如声音或者无线电波,任何人都能够接收得到,因此那些信源不希望成为信宿的信号接受者,通过密码的破译,掌握了编码规则,就会对信息安全和保密造成损害。一系列的信息安全事件常常是因为密码失窃而产生的。那么如何设定一个安全的密码,不仅仅是需要将一些规则简单地灌输给学生,更可以通过信息技术实验的方法,发起一场密码攻防站,这样,我们相信,当硝烟散去,学生对密码编制的一些规则也有了更进一步的理解。信息安全已经成为了关系到国计民生的一个重要领域,而密码的破译对于青少年来说既神秘又好奇,如果我们可以通过信息技术实验的方法将其去魅,使其成为一个小实验,这样既提升了学生对程序学习的兴趣,又加深了对一些重要算法的理解。密码破译的过程便可从一个最简单的数字密码开始。

● 密码的设定

如果我们设定的密码是一个由数字0到9构成的三位字符串,则密码应该包含从000到999,共计1000种组合,如果使用的方法,二位数和一位数需要在前面补0,具体的算法是如图1所示。

● 密码的破译

设定了一个三位的密码之后,接下来就是密码破译的工作了,最简单的方法是如果已知这是一个三位的密码,从0逐次增加,直到猜想的密码和设定的密码一致为止(如图2)。当然,在这个过程中也要注意将一位数和二位数补齐的问题,其中涉及一个类似数学上的分类讨论的方法。

● 影响破译时间的因素

1.密码的数值

信息技术实验倡导学生研究稳定的对应关系,一个基本的方法就是信息的全记录,记录过程中的数据,并且探索其中的规律,多次实验是一个重要的方法,如果我们记录每一次破译密码的时间和破译出的密码数值,从当前的算法来看,密码是从小到大枚举的,如果是这样数值越大的密码需要的破译时间就会越长。这需要获取数据并进行研究,用链表记录密码破译的结果和所需时间(如图3)。测定的20组数据的散点图如图4所示。

通过拟合,我们不难看出一次项系数0.027恰好是程序循环一次所需要的时间,而这比标准的循环时间0.025秒多出了一部分时间,产生这种差异的原因应该是循环体内的逻辑判断。

2.执行模式

使用编辑菜单中的设置单步执行程式下的超速模式,执行的速度会明显增加,如果使用多次测量求和的方法,完成20次破译的时间提速为超速模式的6秒,是普通模式的314秒的五十分之一,大大提高了密码破译的速度。

3.改进算法

使用图5的代码,替代了之前的且逻辑的方法,减少了逻辑判断的次数,预计会使得解密的速度加快。

实验发现,破解100次密码,新的方法需要14.5秒,而旧的方法需要23.5秒,因此改进算法也能较大程度上提高程序的破解效率。

● 密码的复杂度

最后,我们回到一个常识上来,密码的位数越复杂,破解所需要的时间越长,我们将密码长度由3位提升到4位之后,对应100次破解的时间也增加了10倍为144.7秒,可以想象,如果密码增加了26个字母的大写或者小写,那么从52个字母中选择其中的一个,密码破解的时间会增大多少倍。

因此进行密码的破译的实验,一方面是让学生通过具体的实践,体味提升密码安全的重要性;另一方面用实验的方法,促使学生了解了影响破译速度的几个因素,即密码数值、循环速度、破译算法和密码位数,并且通过数据分析验证了猜想、获得了新知,对信息技术实验中的核心概念:数据、稳定的对应关系、效率有了进一步的理解。最后,密码学和密码破译是应用数学和信息技术结合的一个重要领域,关系国家安全和每个人的信息素养,如果学生希望进一步研究,还需要补充大量的知识。举个最简单的例子,如果我们将四位的数值增加到五位,增加一个小写字母,插入到四位数字当中的任何一个位置,这个程序的密码设定和密码破解恐怕就超出了Scratch这种图形化编程语言的极限了,学生自然地需要学习Python、C或者Java这种代码语言,这是侧重于一种算法和挑战计算机性能的竞赛,而信息技术实验的一般方法和过程将始终在这个竞赛中充当重要角色。endprint

编码和解码的过程是一个通讯双方都知道编码规则的过程,但是如果通讯的过程是通过开放信道传输的,如声音或者无线电波,任何人都能够接收得到,因此那些信源不希望成为信宿的信号接受者,通过密码的破译,掌握了编码规则,就会对信息安全和保密造成损害。一系列的信息安全事件常常是因为密码失窃而产生的。那么如何设定一个安全的密码,不仅仅是需要将一些规则简单地灌输给学生,更可以通过信息技术实验的方法,发起一场密码攻防站,这样,我们相信,当硝烟散去,学生对密码编制的一些规则也有了更进一步的理解。信息安全已经成为了关系到国计民生的一个重要领域,而密码的破译对于青少年来说既神秘又好奇,如果我们可以通过信息技术实验的方法将其去魅,使其成为一个小实验,这样既提升了学生对程序学习的兴趣,又加深了对一些重要算法的理解。密码破译的过程便可从一个最简单的数字密码开始。

● 密码的设定

如果我们设定的密码是一个由数字0到9构成的三位字符串,则密码应该包含从000到999,共计1000种组合,如果使用的方法,二位数和一位数需要在前面补0,具体的算法是如图1所示。

● 密码的破译

设定了一个三位的密码之后,接下来就是密码破译的工作了,最简单的方法是如果已知这是一个三位的密码,从0逐次增加,直到猜想的密码和设定的密码一致为止(如图2)。当然,在这个过程中也要注意将一位数和二位数补齐的问题,其中涉及一个类似数学上的分类讨论的方法。

● 影响破译时间的因素

1.密码的数值

信息技术实验倡导学生研究稳定的对应关系,一个基本的方法就是信息的全记录,记录过程中的数据,并且探索其中的规律,多次实验是一个重要的方法,如果我们记录每一次破译密码的时间和破译出的密码数值,从当前的算法来看,密码是从小到大枚举的,如果是这样数值越大的密码需要的破译时间就会越长。这需要获取数据并进行研究,用链表记录密码破译的结果和所需时间(如图3)。测定的20组数据的散点图如图4所示。

通过拟合,我们不难看出一次项系数0.027恰好是程序循环一次所需要的时间,而这比标准的循环时间0.025秒多出了一部分时间,产生这种差异的原因应该是循环体内的逻辑判断。

2.执行模式

使用编辑菜单中的设置单步执行程式下的超速模式,执行的速度会明显增加,如果使用多次测量求和的方法,完成20次破译的时间提速为超速模式的6秒,是普通模式的314秒的五十分之一,大大提高了密码破译的速度。

3.改进算法

使用图5的代码,替代了之前的且逻辑的方法,减少了逻辑判断的次数,预计会使得解密的速度加快。

实验发现,破解100次密码,新的方法需要14.5秒,而旧的方法需要23.5秒,因此改进算法也能较大程度上提高程序的破解效率。

● 密码的复杂度

最后,我们回到一个常识上来,密码的位数越复杂,破解所需要的时间越长,我们将密码长度由3位提升到4位之后,对应100次破解的时间也增加了10倍为144.7秒,可以想象,如果密码增加了26个字母的大写或者小写,那么从52个字母中选择其中的一个,密码破解的时间会增大多少倍。

因此进行密码的破译的实验,一方面是让学生通过具体的实践,体味提升密码安全的重要性;另一方面用实验的方法,促使学生了解了影响破译速度的几个因素,即密码数值、循环速度、破译算法和密码位数,并且通过数据分析验证了猜想、获得了新知,对信息技术实验中的核心概念:数据、稳定的对应关系、效率有了进一步的理解。最后,密码学和密码破译是应用数学和信息技术结合的一个重要领域,关系国家安全和每个人的信息素养,如果学生希望进一步研究,还需要补充大量的知识。举个最简单的例子,如果我们将四位的数值增加到五位,增加一个小写字母,插入到四位数字当中的任何一个位置,这个程序的密码设定和密码破解恐怕就超出了Scratch这种图形化编程语言的极限了,学生自然地需要学习Python、C或者Java这种代码语言,这是侧重于一种算法和挑战计算机性能的竞赛,而信息技术实验的一般方法和过程将始终在这个竞赛中充当重要角色。endprint

猜你喜欢
密码信息安全数值
用固定数值计算
密码里的爱
数值大小比较“招招鲜”
密码抗倭立奇功
保护信息安全要滴水不漏
高校信息安全防护
密码藏在何处
保护个人信息安全刻不容缓
基于Fluent的GTAW数值模拟
夺命密码