APP下载

物联网安全课程中的密码学算法教学改革

2018-09-21余健

物联网技术 2018年7期
关键词:密码学物联网信息安全

余健

摘 要:针对物联网安全课程《密码学算法实验》教学中存在的问题,分析目前《密码学算法实验》教学中采用的软件所存在的弊病,提出以Python语言为实验编程工具的观点。

关键词:信息安全;密码学;Python;物联网

中图分类号:TP393 文献标识码:A 文章编号:2095-1302(2018)07-0-03

0 引 言

密码学算法是物联网安全等信息安全课程教学的基础[1]。密码学算法的教学效果直接影响到学生对物联网安全课程的掌握程度。目前密码学算法的实验教学采用现成的密码学算法软件演示[2],或采用C,C++及Matlab等编程实现,但是密码学算法软件的演示只是使学生了解算法的最终结果,无法使学生理解算法原理;采用C,C++等高级语言编程实现密码学算法,有利于学生掌握算法原理,但在实验教学当中,学生普遍反映编程难度大,算法实现繁琐等问题;而采用Matlab编程的优点是编程语言简单、算法容易实现,缺点是无法直接应用于实际项目中。

因此,采用合适的编程语言对密码学算法的实践教学改革是极其重要的[3]。Python语言被称为胶水语言[4],它具有Matlab语言的优点,并且应用范围广,采用Python语言编程可直接应用于各个领域[5]。考虑到Python语言的简单易用性,以及包含了大量的算法包,密码学算法实验教学全部采用Python编程实现。这样既能够加深学生对密码学算法的理解,提高学生的编程能力和应用能力,也有利于学生编写软件参加学科竞赛及各种项目,提高学生的职业素养和职业能力。

密码学算法实验主要包括古典密码学实验、DES和AES对称密码学算法实验和RSA公钥密码学算法实验[6-8]。

1 古典密码学实验

古典密码学算法主要包括凯撒密码、维吉尼亚密码和Hill矩阵加密算法。采用Python语言编程实现,以凯撒密码为例,代码如下所示:

def Encrypt(P,key)://加密函数

P = list(P)

P = map(ord,P)

import numpy as np

P = np.array(P)

P = P - ord(‘a)

C =(P + key)%26

C = C + ord(‘A)

C = map(chr,C)

C = ‘.join(C)

return C

def Decrypt(C,key): //解密函数

C = list(C)

D = map(ord,C)

import numpy as np

D = np.array(D)

D = D-ord(‘A)

D =(D-key)%26

D = D + ord(‘a)

D = map(chr,D)

D =‘.join(D)

return D

#主函数

user_input=raw_input(‘加密请按E,解密请按D:);

while(user_input!=‘E and user_input!=‘D):

//输入合法性判断

user_input=raw_input(‘输入有误!请重新输入:)

key=raw_input(‘请输入密钥:)

while(int(key.isdigit()==0))://输入合法性判断

key=raw_input(‘输入有误!密钥为数字,请重新输入:)

if user_input==‘E://加密

P=raw_input(‘请输入明文:)

C=Encrypt(P,int(key))

print ‘密文为:\n%s % C

else://解密

C=raw_input(‘请输入密文:)

P=Decrypt(C,int(key))

print ‘明文为:\n%s % P

学生完成了凯撒密码算法的实现之后,可让在以上程序的基础上,进一步实现维吉尼亚密码。

2 DES和AES对称加密算法实验

数据加密标准(Data Encryption Standard,DES),除了被广泛应用于金融交易中,它还被嵌入到许多商业应用中。1977年美国国家标准局正式公布实施了美国的数据加密标准(DES),公开了它的加密算法,并批准用于非机密单位和商业上的保密通信。高级加密标准(Advanced Encryption Standard,AES)又称为Rijndael加密法,是美国联邦政府采用的一种区块加密标准。该标准用来替代日益不安全的DES算法。

DES和AES算法的实现比较复杂,采用Python语言做实验时,可以调用Crypto密码学算法包的相关函数来实现,具体的编程代码如下所示:

# DES加密解密

from Crypto.Cipher import DES

from Crypto import Random

key =‘keyskeys//必須为8 B

plaintext = ‘计算机与信息工程

print ‘明文:,plaintext

cipher = DES.new(key,DES.MODE_ECB)

ciphertext = cipher.encrypt(plaintext)

print ‘密文:,ciphertext.encode(‘hex) //16进制表示

decrypttext = cipher.decrypt(ciphertext)

print ‘解密结果:,decrypttext

# AES 加密解密

from Crypto.Cipher import AES

from binascii import b2a_hex,a2b_hex

from Crypto import Random

def encrypt(text,key,IV):

cryptor = AES.new(key,AES.MODE_CBC,IV)

length = 16

count = len(text)

add = length-(count% length)

text = text +(‘\0 * add)

ciphertext = cryptor.encrypt(text)

return b2a_hex(ciphertext)

def decrypt(text,key,IV):

cryptor = AES.new(key,AES.MODE_CBC,IV)

plain_text = cryptor.decrypt(a2b_hex(text))

return plain_text.rstrip(‘\0)//解密后,去掉补足的空格

key = ‘keyskeyskeyskeys

#初始化密钥,密钥长度必须16,24或32 B长

plaintext = ‘韩山师范学院

print ‘明文:,plaintext

IV = Random.new().read(AES.block_size)

//加密或解密的初始化向量

ciphertext = encrypt(plaintext,key,IV)

decrypttext = decrypt(ciphertext,key,IV)

print‘密文:,ciphertext

print‘解密结果:,decrypttext

在DES和AES对称密码算法实验中,要强调DES的密钥必须为8 B,而AES的密钥为16,24或32 B,DES的加密文本长度必须为8 B的倍数,而AES的加密文本长度必须为16,24或32 B的倍数。

3 RSA公钥密码学算法实验

RSA公钥密码学算法广泛应用于信息安全领域,包括非对称加密解密、认证技术以及数字签名等。RSA算法主要通过求乘法逆元、加密和解密函数实现。这三个函数的Python代码如下所示:

def multip_inverse(e,fn):

A=0; B=1; m=fn;

b=e; Q=m/b; R=m%b;

while(R>1):

X=A-Q×B; A=B;

B=X; m=b; b=R;

Q=m/b; R=m%b;

if(R == 1):

X=A-Q×B

return X% fn

if(R == 0):

print ‘乘法逆元不存在!

return ‘none

def Encrypt(P,e,n)://加密函数

C =( P×e)%n//加密得出密文C

return C

def Decrypt(C,d,n)://解密函数

D =(C×d)%n//解密得出明文P

return D

另外,学生在完成RSA公钥密码学算法的基础上,让学生完成RSA数字签名程序,进一步提高学生的实践能力。

4 结 语

通过以上示例,我们可以发现,使用Python语言实现密码学算法,简单易用,学生容易掌握,可降低使用高级语言编写密码学法的难度,又能提高学生的学习兴趣。除了古典密码学实验,DES和AES对称密码学算法实验和RSA公钥密码学算法实验,还可布置一些趣味密码学问题,例如分别采用蛮力破解和字典攻击方法破解压缩文件密码,破解无线WiFi密码和破解谷哥浏览器登录密码等,提高学生对这些课程的学习兴趣,增强实践能力和应用能力。通过在物联网安全的实验教学中采用Python编程工具,锻炼了学生的实际编程能力。笔者指导的学生参加2106年和2017年全国信息安全竞赛(作品赛),共获得了3个三等奖。对其他高校物联网安全课程中的密码学算法教学改革具有一定借鉴意义。

参考文献

[1]胡小明,杨寅春,吴秀梅,等. 信息安全专业密码学课程教学改革[J]. 计算机教育,2014(1):49-52.

[2]李曦. 密码学课程实践教学存在的問题及改进措施[J]. 高等教育研究:成都,2011(2):23-24.

[3]王少辉,王志伟. 密码学课程设计探索与实践[J]. 课程教育研究,2013(1):15-16.

[4]嵩天,黄天羽,礼欣. Python语言:程序设计课程教学改革的理想选择[J]. 中国大学教学,2016(2).

[5]叶磊,文涛,刘立亮,等. 基于Python的网络及信息系统安全过程管理工具[J]. 数字技术与应用,2011(9):293.

[6]徐鹏,薜伟.抗差分功耗攻击的DES算法研究[J]. 计算机仿真,2018(1)282-286.

[7]付春燕,宋英雄,郭鹏程,等. 基于AES数据加密的网关通信设计[J]. 电子测量技术,2018(2):55-60.

[8]石井,吴哲,谭璐,等. RSA数据加密算法的分析与改进[J]. 济南大学学报(自然科学版),2013(3):66-69.

猜你喜欢

密码学物联网信息安全
图灵奖获得者、美国国家工程院院士马丁·爱德华·海尔曼:我们正处于密钥学革命前夕
保护信息安全要滴水不漏
密码学课程教学中的“破”与“立”
高校信息安全防护
中国或成“物联网”领军者
保护个人信息安全刻不容缓
矩阵在密码学中的应用
信息安全
密码学的课程特点及教学方法探讨