版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
chap.6
身份认证编程网络信息安全本章内容要点概述
口令认证编程人脸识别编程说话人识别编程抗击被动攻击:加密抗击主动攻击:消息认证防火墙访问控制数据完整性与防病毒入侵探测认证技术实体:指一个程序、设备、系统或用户等。标识:实体的数字化指代。身份认证、访问控制、审计技术、网络协议等都需要利用标识对程序、设备、网络、用户和资源等进行识别并进行相应的操作;在网络安全防护中,也需要使用主机、网络和连接标识。6.1概述系统资源标识信息系统资源包括电子文件、数据库和程序等,它们在各种状态有相应的标识。在操作系统中,文件通常以文件名和存储路径为标识。数据库和其中的数据库表可以分别用数据库名和表名为标识。在操作系统中,当可执行程序文件运行时(进程),系统对这个运行实例产生相应的内部标识,例如,在Unix系统中它是PID(ProcessIdentity)。系统实体标识任务管理器中的PID号用户、组和角色标识用户登录操作系统或信息系统后,系统一般会给用户分配相应的内部标识。这些内部标识对应或记录了登录用户的访问权限信息。组用户是指用一个标识代表的系统管理者希望同时管理的多个用户。角色是特殊的分组,具有一个角色的用户或进程被授予特定的功能。例如,一些操作系统设置了协助超级管理员管理系统的特殊用户。与数字证书相关的标识数字证书用于绑定证书所有者情况及其公钥,它在数字签名和认证中用于向签名验证者或身份认证者提供这些信息。证书签发者将对证书签名,所以与数字证书相关的标识具有抵制篡改的功能。公钥密码的认证模型:主机标识:
00AA870C9023
myhost网络资源标识URI:
。连接标识:连接端口用于标识主机所提供的连接或一个交互中的连接。网络实体标识利用netstat命令查阅本地连接用户在登录时需要向验证者证明其掌握了相应的口令,或提供相应的证明。认证技术实现身份证明的基本途径通过这三者之一或组合实现所知:个人掌握的知识,如口令,秘密所有:个人所具有的东西,如身份证、护照等个人特征:指纹、笔迹等服务质量评价指标:拒绝率(FRR)漏报率(FAR)15.1.2身份证明系统的要求
1.最大可能正确识别合法示证者5.通信有效性
3.最大可能防止攻击者伪装欺骗
4.计算有效性
2.不具有可传递性10.可证明安全性6.秘密参数能安全存储8.第三方实时参与7.交互识别9.第三方的可信性认证系统的组成出示证件的人示证者P(Prover)检验证件的合法性和正确性验证者V(Verifier)窃听并伪装示证者骗取验证者的信任攻击者A(Attacker)必要时,有第四方参与,即可信者,参与纠纷调解。身份认证具有实时性,证实实体本身;消息认证不具时间性,除认证消息的合法和可靠还要知道其含义。1.定义口令一般由一串可输入的数字和字符或它们的混合组成,它由认证机构颁发给系统用户,用户也可以自行编制。用户在申请权限时,需要向验证者证明其掌握了相应的口令。2.口令挑战口令认证最简单的方法就是由验证者存储口令,当声称者请求认证时,对声称者提交的口令与存储口令进行比对。然而,在实践中这样的实现安全性是不足的,因为口令作为一种安全手段,必须面临着以下挑战。1)外部泄露2)口令猜测3)线路窃听4)重放攻击5)对验证方的攻击5.2口令认证3.挑战-响应口令方案按照图6-1的方案,口令认证的编程代码如下。importosfromhashlibimportmd5,sha1importrandom
PSW=""#密码为"!QAZ@WSX"ID="ID123456"rcd_q="d1e355e8ff53925fdbf1686bb1deec56"#非明文状态存储的ID|q值
deffun_g(psw,id):m=md5()m.update(id.encode('utf-8'))m.update(psw.encode('utf-8'))returnm.hexdigest()
deffun_h(q,nrv):new_sha1=sha1()new_sha1.update(q.encode("utf-8"))new_sha1.update(nrv.encode("utf-8"))returnnew_sha1.hexdigest()defproof_output(r,id):rpn=[r,id]fileObject=open('sampleList.txt','w')foripinrpn:fileObject.write(str(ip))fileObject.write('\n')fileObject.close()
defproof_input(vrf_file):f=open(vrf_file,"r")table=f.readline()f.close()returntableif__name__=='__main__':#❶声称者发出认证请求(来自网络或系统应用系统界面)#print(“接收到认证请求…”)
#❷验证者产生NRV询问的随机消息NRV=str(random.randrange(1,10000))
#❸声称者生成验证口令PSW=input("请输入认证密码!\n")proof_output(fun_h(fun_g(PSW,ID),NRV),ID)print("验证口令生成!")input("请输入回车开始认证!")
#❹验证者利用记录的口令哈希记录进行比对r2=proof_input("sampleList.txt")r=fun_h(rcd_q,NRV)print("声称者值=",r2.strip(),"验证者者值=",r.strip())ifr2.strip()==r.strip():print("认证通过!")else:print("认证失败!")5.3人脸识别1、人脸识别与安全人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像识别、面部识别。人脸识别系统的研究始于20世纪60年代。80年代后随着计算机技术和光学成像技术的发展得到提高,但真正进入初级的应用阶段则在90年后期。人脸识别系统成功的关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度;“人脸识别系统”集成了人工智能、机器识别、机器学习、模型理论、专家系统、视频图像处理等多种专业技术,同时需结合中间值处理的理论与实现,是生物特征识别的最新应用。2、人脸识别工具鉴于人脸识别的重要价值,国内外很多公司、机构、高校都开展了人脸识别的研究,其中比较成熟的工具包括以下。AnimetricsBetafaceEyedea识别Face++FaceMarkFaceRectIBMWatsonVisualRecognitionKairosSkybiometryFaceRecognitionFaceRecognition是为Linux设计的,在Github网址为/ageitgey/face_recognition。FaceRecognition在Windows操作系统上也能安装,需要基于Dlib的环境搭建和FaceRecognition模块安装两个步骤,具体如下。如果python使用的是Anaconda,因其会自动获取dlib,所以安装可以直接跳到2)步。1.定位人脸位置利用face_locations函数,定位图像中所有找到的脸的位置,示例代码如下。fromPILimportImage,ImageDrawimportface_recognition
image=face_recognition.load_image_file("scientists.jpg")face_locations=face_recognition.face_locations(image)#❶print("Ifound{}face(s)inthisphotograph.".format(len(face_locations)))
#创建一个PILImageDraw对象,后面用于图像绘制pil_image=Image.fromarray(image)d=ImageDraw.Draw(pil_image)
forface_locationinface_locations:#❷top,right,bottom,left=face_locationprint("脸部位置Top:{},Left:{},Bottom:{},Right:{}".format(top,left,bottom,right))#注意矩形框的坐标排列与face_location有所区别d.rectangle((left,top,right,bottom),None,'red')
pil_image.show()2.识别单张图片中人脸的关键点可以利用face_recognition的face_landmarks函数找出图片中人脸的面部特征,示例代码如下。image=face_recognition.load_image_file("Einstein.jpg")#❶找出图片中所有人脸的面部特征face_landmarks_list=face_recognition.face_landmarks(image)print("Ifound{}face(s)inthisphotograph.".format(len(face_landmarks_list)))
#❷创建一个PILImageDraw对象,后面用于图像绘制pil_image=Image.fromarray(image)d=ImageDraw.Draw(pil_image)forface_landmarksinface_landmarks_list:#打印出图片中每个脸部特征的位置forfacial_featureinface_landmarks.keys():print("The{}inthisfacehasthefollowingpoints:{}"\.format(facial_feature,face_landmarks[facial_feature]))
#用线段描出图像中的每个脸部特征forfacial_featureinface_landmarks.keys():d.line(face_landmarks[facial_feature],'red',width=5)#❸显示图像pil_image.show()3.图片中的人身份认证可以利用face_recognition的compare_faces方法识别两张人脸是否是同一人,代码如下。importface_recognition
known_image=face_recognition.load_image_file("Einstein.jpg")unknown_image=face_recognition.load_image_file("unknown.jpg")
Einstein_encoding=face_recognition.face_encodings(known_image)[0]unknown_encoding=face_recognition.face_encodings(unknown_image)[0]
results=face_pare_faces([Einstein_encoding],unknown_\
encoding,tolerance=0.63)ifresults[0]==True:print("It'sapictureofEinstein!")else:print("It'snotapictureofEinstein!")5.4说话人识别1.定义说话人识别(或称声纹识别)作为生物认证技术的一种,是根据语音波形中反映说话人生理和行为特征,鉴别说话人身份的一项技术。研究表明,声纹虽然不如指纹、人脸这样,个体差异明显,但是由于每个人的声道、口腔和鼻腔(发音要用到的器官)也具有个体差异性。因为反映到声音上,也是具有差异性的。就比如说,当我们在接听电话的时候,通过一声"喂",就能准确的分辨出接电话的是谁。人耳作为身体的接收器,与生俱来就有分辨声音的能力。同理,也可以通过技术的手段,使声纹也可以像人脸、指纹那样作为“个人身份认证”的重要信息。说话人识别可以说是一种交叉运用心理学、生理学、语音信号处理、模式识别、统计学习理论和人工智能的综合性研究。2.分类自提出以来,人们已经发展出不同种类的说话人识别技术与方法,说话认识别的分类可以依据任务和内容对其进行划分。如果根据说话人识别实现的任务不同,可分为说话人辨认(speakeridentification)和说话人确认(speakerverification)两种类型。前者即判定待测试说话人的语音属于几个参考说话人其中之一,是一个多选一问题,而后者即确定待测说话人的语音与其特定参考说话人是否相符,是二选一的是非问题,即确认(肯定)或拒绝(否定)。基于安全认证需求,本书的实现属于说话人确认。3.工作原理说话人识别从各个说话人的发音中找出说话人之间的个性差异,这涉及到对说话人发音器官、发音通道和发音习惯之间等不同级别上的个性差异提取与计算。正常人类说话是通过声道产生声音的,主要的的发音器官包括:声带、喉头、口腔和鼻腔(如图6-13所示)。4.工作过程一般,说话人识别系统可分为两个阶段:训练阶段和识别阶段,如图6-14所示。在具体实现中,语音中说话人个性特征的分离与提取以及精准的模型建模是决定系统性能的两个关键环节。1)特征分离与提取在声纹识别,包括语音识别领域,传统的声学特征包括梅尔倒谱系数MFCC(Mel-frequencycepstralcoefficients)、感知线性预测系数PLP、近几年的逐渐受到关注的深度特征DeepFeature、以及最新的能量规整谱系数PNCC等,都能作为声纹识别在特征提取层面可选且表现良好的声学特征。2)识别模型基于提取的特征可以实现的说话人识别的模型,包括:模板匹配法、统计概率模型法、人工神经网络法、支持向量机法、稀疏表示法等,具体算法常见的包括:GMM、UBM、I-Vector、神经网络方法。1.常见说话人识别工具目前,说话人识别主要的开源工具有:1)MSRIdentityToolkit:这是微软开源的工具箱,支持MATLAB版本,包含GMM-UBM和I-vector的demo,简单易用。2)Alize:主要包括GMM-UBM、I-vectorandJFA三种传统的方法,采用C++实现,简单易用。3)kaldi:是当下十分流行的语音识别工具包,也包括声纹识别的功能,覆盖了主流的声纹识别算法(I-vector、x-vector等),采用脚本语言实现,使用不非常方便。4)SIDEKIT:SIDEKIT(主页https://projets-lium.univ-lemans.fr/sidekit/)基于Python开发,将功能集中在数量不多的几个类的设计,大大提高了说话认识别工具的易用性。它试图为开发者提供一个完整的工具链,包括特征提取、建模和分类、结果表示等功能。5)Tensorflow:是一个基于数据流编程的符号数学系统,被广泛应用于各类机器学习算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。基于Tensorflow也可以实现声音分类,主要是利用了其强大的机器学习算法。1.语言录制首先需要获取说话人的语音数据。可以利用pyrec_audio模块的函数rec录制说话人话音,代码如下。defrec(file_name):p=pyaudio.PyAudio()#❶stream=p.open(format=FORMAT,#❷channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)input("开始录音,请敲回车并说话......")frames=[]foriinrange(0,int(RATE/CHUNK*RECORD_SECONDS)):data=stream.read(CHUNK)frames.append(data)#❸print("录音结束!")
2.语言特征提取对于输入的语音,其处理过程如下图6-15所示,经过DFT—>取对数—>逆DFT的过程,这个过程通常采用倒谱(cepstrum)分析的方法。1)语音信号时频域分析对于信号的识别一般是通过频域特性进行分析的。原始声音信号是一维时域信号,直观上很难看出频率变化规律。下面代码original_amplitude_envelope.py实现了对一段声音的读取,绘制出该声音的时域波形图(如图6-16所示)。importlibrosaimportmatplotlib.pyplotaspltimportlibrosa.display
audio_path='./wildflower.wav'x,sr=librosa.load(audio_path,sr=16000,mono=True)plt.figure(figsize=(14,5))librosa.display.waveplot(x,sr=sr)plt.show()y,sr=librosa.load(audio_path,sr=8000,mono=True,offset=0,duration=20)fft_y=fft(y)N=np.arange(0,sr,sr/fft_y.shape[0])#横坐标频率,个数为采样点的个数,频率最大值是采样频率,生成等差数列abs_y=np.abs(fft_y)#取复数的绝对值,即复数的模(双边频谱)normalization_y=abs_y/fft_y.shape[0]#归一化,angle_y=np.angle(fft_y)#取复数的角度
plt.figure()plt.plot(N,normalization_y[:N.shape[0]])#双边谱plt.xlabel('Frequency/Hz')plt.ylabel('Amplitude')plt.show()x,sr=librosa.load(audio_path,sr=16000,mono=True)X=librosa.stft(x)Xdb=librosa.amplitude_to_db(abs(X))plt.figure(figsize=(14,5))librosa.display.specshow(Xdb,sr=sr,x_axis='time',y_axis='hz')plt.colorbar()plt.show()audio_path='./wildflower.wav'x,sr=librosa.load(audio_path,sr=16000,mono=True)X=librosa.stft(x)ps=librosa.feature.melspectrogram(y=x,sr=sr,n_mels=128)Xdb=librosa.amplitude_to_db(abs(X))psdb=librosa.amplitude_to_db(abs(ps))
plt.figure(figsize=(14,5))plt.subplot(2,1,1)plt.title("withoutMeltransformation",x=0.9)librosa.display.specshow(Xdb,sr=sr,y_axis='hz')
plt.subplot(2,1,2)plt.title("Meltransformation",x=0.9)librosa.display.specshow(psdb,sr=sr,x_axis='time',y_axis='hz')plt.show()defload_data(data_path):wav,sr=librosa.load(data_path,sr=16000)intervals=librosa.effects.split(wav,top_db=20)wav_output=[]forslicedinintervals:wav_output.extend(wav[sliced[0]:sliced[1]])assertlen(wav_output)>=8000,"有效音频小于0.5s"wav_output=np.array(wav_output)ps=librosa.feature.melspectrogram(y=wav_output,sr=sr,hop_length=256).astype(np.float32)ps=ps[np.newaxis,...,np.newaxis]returnps
definfer(audio_path):data=load_data(audio_path)feature=intermediate_layer_model.predict(data)returnfeatureif__name__=='__main__':#要预测的两个人的音频文件person1='dataset/ST-CMDS-20170001_1-OS/20170001P00011A0001.wav'person2='dataset/ST-CMDS-20170001_1-OS/201
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五年级数学(小数四则混合运算)计算题专项练习及答案汇编
- 2025年广东省清远市连南瑶族自治县招聘工会社会工作者11人笔试题库及参考答案详解
- 软考高级配置经理资源调配测试试题及答案
- 2026年机械工程师安全防护装置缺陷整改实操考核试题及答案
- 2026年内科主治医师考试《专业知识》备考题及答案
- 浙教版高中化学实验报告评估试题及答案
- 2026年R1快开门式压力容器操作证操作理论考试试题及答案
- 2026年专业监理工程师考试题及答案
- 2025年广东省梅州市平远县招聘工会社会工作者11人笔试题库含答案详解
- 减肥专业知识考试试题及答案
- 2026年上海市初三语文二模试题汇编《综合运用》含答案
- (2026版)《煤矿重大事故隐患判定标准》培训课件
- 2026年无锡小升初语文小升初分班考卷:语文阅读写作与基础积累(冲刺讲评版第2套)含参考答案、逐题解析与评分细则
- 2026贵州遵义余庆县公安局面向社会公开招聘警务辅助人员18人笔试备考题库及答案解析
- 2026年安全月知识竞赛试题附答案
- 2026年北京市西城区初三下学期二模英语试卷和答案
- 2026年新版应急处置卡共31项含管理和操作岗位
- 2026年江苏省宿迁市泗洪县中考数学二模试卷(含答案)
- 2025年湖北省中考生物、地理合卷试卷真题(含答案)
- 单层厂房抗震设计
- 公路水运工程施工企业(主要负责人和安全生产管理人员)考核大纲及模拟题库
评论
0/150
提交评论