《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap6_第1頁
《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap6_第2頁
《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap6_第3頁
《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap6_第4頁
《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap6_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

chap.6

身份認(rèn)證編程網(wǎng)絡(luò)信息安全本章內(nèi)容要點(diǎn)概述

口令認(rèn)證編程人臉識(shí)別編程說話人識(shí)別編程抗擊被動(dòng)攻擊:加密抗擊主動(dòng)攻擊:消息認(rèn)證防火墻訪問控制數(shù)據(jù)完整性與防病毒入侵探測認(rèn)證技術(shù)實(shí)體:指一個(gè)程序、設(shè)備、系統(tǒng)或用戶等。標(biāo)識(shí):實(shí)體的數(shù)字化指代。身份認(rèn)證、訪問控制、審計(jì)技術(shù)、網(wǎng)絡(luò)協(xié)議等都需要利用標(biāo)識(shí)對程序、設(shè)備、網(wǎng)絡(luò)、用戶和資源等進(jìn)行識(shí)別并進(jìn)行相應(yīng)的操作;在網(wǎng)絡(luò)安全防護(hù)中,也需要使用主機(jī)、網(wǎng)絡(luò)和連接標(biāo)識(shí)。6.1概述系統(tǒng)資源標(biāo)識(shí)信息系統(tǒng)資源包括電子文件、數(shù)據(jù)庫和程序等,它們在各種狀態(tài)有相應(yīng)的標(biāo)識(shí)。在操作系統(tǒng)中,文件通常以文件名和存儲(chǔ)路徑為標(biāo)識(shí)。數(shù)據(jù)庫和其中的數(shù)據(jù)庫表可以分別用數(shù)據(jù)庫名和表名為標(biāo)識(shí)。在操作系統(tǒng)中,當(dāng)可執(zhí)行程序文件運(yùn)行時(shí)(進(jìn)程),系統(tǒng)對這個(gè)運(yùn)行實(shí)例產(chǎn)生相應(yīng)的內(nèi)部標(biāo)識(shí),例如,在Unix系統(tǒng)中它是PID(ProcessIdentity)。系統(tǒng)實(shí)體標(biāo)識(shí)任務(wù)管理器中的PID號(hào)用戶、組和角色標(biāo)識(shí)用戶登錄操作系統(tǒng)或信息系統(tǒng)后,系統(tǒng)一般會(huì)給用戶分配相應(yīng)的內(nèi)部標(biāo)識(shí)。這些內(nèi)部標(biāo)識(shí)對應(yīng)或記錄了登錄用戶的訪問權(quán)限信息。組用戶是指用一個(gè)標(biāo)識(shí)代表的系統(tǒng)管理者希望同時(shí)管理的多個(gè)用戶。角色是特殊的分組,具有一個(gè)角色的用戶或進(jìn)程被授予特定的功能。例如,一些操作系統(tǒng)設(shè)置了協(xié)助超級(jí)管理員管理系統(tǒng)的特殊用戶。與數(shù)字證書相關(guān)的標(biāo)識(shí)數(shù)字證書用于綁定證書所有者情況及其公鑰,它在數(shù)字簽名和認(rèn)證中用于向簽名驗(yàn)證者或身份認(rèn)證者提供這些信息。證書簽發(fā)者將對證書簽名,所以與數(shù)字證書相關(guān)的標(biāo)識(shí)具有抵制篡改的功能。公鑰密碼的認(rèn)證模型:主機(jī)標(biāo)識(shí):

00AA870C9023

myhost網(wǎng)絡(luò)資源標(biāo)識(shí)URI:

。連接標(biāo)識(shí):連接端口用于標(biāo)識(shí)主機(jī)所提供的連接或一個(gè)交互中的連接。網(wǎng)絡(luò)實(shí)體標(biāo)識(shí)利用netstat命令查閱本地連接用戶在登錄時(shí)需要向驗(yàn)證者證明其掌握了相應(yīng)的口令,或提供相應(yīng)的證明。認(rèn)證技術(shù)實(shí)現(xiàn)身份證明的基本途徑通過這三者之一或組合實(shí)現(xiàn)所知:個(gè)人掌握的知識(shí),如口令,秘密所有:個(gè)人所具有的東西,如身份證、護(hù)照等個(gè)人特征:指紋、筆跡等服務(wù)質(zhì)量評價(jià)指標(biāo):拒絕率(FRR)漏報(bào)率(FAR)15.1.2身份證明系統(tǒng)的要求

1.最大可能正確識(shí)別合法示證者5.通信有效性

3.最大可能防止攻擊者偽裝欺騙

4.計(jì)算有效性

2.不具有可傳遞性10.可證明安全性6.秘密參數(shù)能安全存儲(chǔ)8.第三方實(shí)時(shí)參與7.交互識(shí)別9.第三方的可信性認(rèn)證系統(tǒng)的組成出示證件的人示證者P(Prover)檢驗(yàn)證件的合法性和正確性驗(yàn)證者V(Verifier)竊聽并偽裝示證者騙取驗(yàn)證者的信任攻擊者A(Attacker)必要時(shí),有第四方參與,即可信者,參與糾紛調(diào)解。身份認(rèn)證具有實(shí)時(shí)性,證實(shí)實(shí)體本身;消息認(rèn)證不具時(shí)間性,除認(rèn)證消息的合法和可靠還要知道其含義。1.定義口令一般由一串可輸入的數(shù)字和字符或它們的混合組成,它由認(rèn)證機(jī)構(gòu)頒發(fā)給系統(tǒng)用戶,用戶也可以自行編制。用戶在申請權(quán)限時(shí),需要向驗(yàn)證者證明其掌握了相應(yīng)的口令。2.口令挑戰(zhàn)口令認(rèn)證最簡單的方法就是由驗(yàn)證者存儲(chǔ)口令,當(dāng)聲稱者請求認(rèn)證時(shí),對聲稱者提交的口令與存儲(chǔ)口令進(jìn)行比對。然而,在實(shí)踐中這樣的實(shí)現(xiàn)安全性是不足的,因?yàn)榭诹钭鳛橐环N安全手段,必須面臨著以下挑戰(zhàn)。1)外部泄露2)口令猜測3)線路竊聽4)重放攻擊5)對驗(yàn)證方的攻擊5.2口令認(rèn)證3.挑戰(zhàn)-響應(yīng)口令方案按照圖6-1的方案,口令認(rèn)證的編程代碼如下。importosfromhashlibimportmd5,sha1importrandom

PSW=""#密碼為"!QAZ@WSX"ID="ID123456"rcd_q="d1e355e8ff53925fdbf1686bb1deec56"#非明文狀態(tài)存儲(chǔ)的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__':#?聲稱者發(fā)出認(rèn)證請求(來自網(wǎng)絡(luò)或系統(tǒng)應(yīng)用系統(tǒng)界面)#print(“接收到認(rèn)證請求…”)

#?驗(yàn)證者產(chǎn)生NRV詢問的隨機(jī)消息NRV=str(random.randrange(1,10000))

#?聲稱者生成驗(yàn)證口令PSW=input("請輸入認(rèn)證密碼!\n")proof_output(fun_h(fun_g(PSW,ID),NRV),ID)print("驗(yàn)證口令生成!")input("請輸入回車開始認(rèn)證!")

#?驗(yàn)證者利用記錄的口令哈希記錄進(jìn)行比對r2=proof_input("sampleList.txt")r=fun_h(rcd_q,NRV)print("聲稱者值=",r2.strip(),"驗(yàn)證者者值=",r.strip())ifr2.strip()==r.strip():print("認(rèn)證通過!")else:print("認(rèn)證失??!")5.3人臉識(shí)別1、人臉識(shí)別與安全人臉識(shí)別是基于人的臉部特征信息進(jìn)行身份識(shí)別的一種生物識(shí)別技術(shù)。用攝像機(jī)或攝像頭采集含有人臉的圖像或視頻流,并自動(dòng)在圖像中檢測和跟蹤人臉,進(jìn)而對檢測到的人臉進(jìn)行臉部識(shí)別的一系列相關(guān)技術(shù),通常也叫做人像識(shí)別、面部識(shí)別。人臉識(shí)別系統(tǒng)的研究始于20世紀(jì)60年代。80年代后隨著計(jì)算機(jī)技術(shù)和光學(xué)成像技術(shù)的發(fā)展得到提高,但真正進(jìn)入初級(jí)的應(yīng)用階段則在90年后期。人臉識(shí)別系統(tǒng)成功的關(guān)鍵在于是否擁有尖端的核心算法,并使識(shí)別結(jié)果具有實(shí)用化的識(shí)別率和識(shí)別速度;“人臉識(shí)別系統(tǒng)”集成了人工智能、機(jī)器識(shí)別、機(jī)器學(xué)習(xí)、模型理論、專家系統(tǒng)、視頻圖像處理等多種專業(yè)技術(shù),同時(shí)需結(jié)合中間值處理的理論與實(shí)現(xiàn),是生物特征識(shí)別的最新應(yīng)用。2、人臉識(shí)別工具鑒于人臉識(shí)別的重要價(jià)值,國內(nèi)外很多公司、機(jī)構(gòu)、高校都開展了人臉識(shí)別的研究,其中比較成熟的工具包括以下。AnimetricsBetafaceEyedea識(shí)別Face++FaceMarkFaceRectIBMWatsonVisualRecognitionKairosSkybiometryFaceRecognitionFaceRecognition是為Linux設(shè)計(jì)的,在Github網(wǎng)址為/ageitgey/face_recognition。FaceRecognition在Windows操作系統(tǒng)上也能安裝,需要基于Dlib的環(huán)境搭建和FaceRecognition模塊安裝兩個(gè)步驟,具體如下。如果python使用的是Anaconda,因其會(huì)自動(dòng)獲取dlib,所以安裝可以直接跳到2)步。1.定位人臉位置利用face_locations函數(shù),定位圖像中所有找到的臉的位置,示例代碼如下。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)))

#創(chuàng)建一個(gè)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))#注意矩形框的坐標(biāo)排列與face_location有所區(qū)別d.rectangle((left,top,right,bottom),None,'red')

pil_image.show()2.識(shí)別單張圖片中人臉的關(guān)鍵點(diǎn)可以利用face_recognition的face_landmarks函數(shù)找出圖片中人臉的面部特征,示例代碼如下。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)))

#?創(chuàng)建一個(gè)PILImageDraw對象,后面用于圖像繪制pil_image=Image.fromarray(image)d=ImageDraw.Draw(pil_image)forface_landmarksinface_landmarks_list:#打印出圖片中每個(gè)臉部特征的位置forfacial_featureinface_landmarks.keys():print("The{}inthisfacehasthefollowingpoints:{}"\.format(facial_feature,face_landmarks[facial_feature]))

#用線段描出圖像中的每個(gè)臉部特征forfacial_featureinface_landmarks.keys():d.line(face_landmarks[facial_feature],'red',width=5)#?顯示圖像pil_image.show()3.圖片中的人身份認(rèn)證可以利用face_recognition的compare_faces方法識(shí)別兩張人臉是否是同一人,代碼如下。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說話人識(shí)別1.定義說話人識(shí)別(或稱聲紋識(shí)別)作為生物認(rèn)證技術(shù)的一種,是根據(jù)語音波形中反映說話人生理和行為特征,鑒別說話人身份的一項(xiàng)技術(shù)。研究表明,聲紋雖然不如指紋、人臉這樣,個(gè)體差異明顯,但是由于每個(gè)人的聲道、口腔和鼻腔(發(fā)音要用到的器官)也具有個(gè)體差異性。因?yàn)榉从车铰曇羯希彩蔷哂胁町愋缘?。就比如說,當(dāng)我們在接聽電話的時(shí)候,通過一聲"喂",就能準(zhǔn)確的分辨出接電話的是誰。人耳作為身體的接收器,與生俱來就有分辨聲音的能力。同理,也可以通過技術(shù)的手段,使聲紋也可以像人臉、指紋那樣作為“個(gè)人身份認(rèn)證”的重要信息。說話人識(shí)別可以說是一種交叉運(yùn)用心理學(xué)、生理學(xué)、語音信號(hào)處理、模式識(shí)別、統(tǒng)計(jì)學(xué)習(xí)理論和人工智能的綜合性研究。2.分類自提出以來,人們已經(jīng)發(fā)展出不同種類的說話人識(shí)別技術(shù)與方法,說話認(rèn)識(shí)別的分類可以依據(jù)任務(wù)和內(nèi)容對其進(jìn)行劃分。如果根據(jù)說話人識(shí)別實(shí)現(xiàn)的任務(wù)不同,可分為說話人辨認(rèn)(speakeridentification)和說話人確認(rèn)(speakerverification)兩種類型。前者即判定待測試說話人的語音屬于幾個(gè)參考說話人其中之一,是一個(gè)多選一問題,而后者即確定待測說話人的語音與其特定參考說話人是否相符,是二選一的是非問題,即確認(rèn)(肯定)或拒絕(否定)?;诎踩J(rèn)證需求,本書的實(shí)現(xiàn)屬于說話人確認(rèn)。3.工作原理說話人識(shí)別從各個(gè)說話人的發(fā)音中找出說話人之間的個(gè)性差異,這涉及到對說話人發(fā)音器官、發(fā)音通道和發(fā)音習(xí)慣之間等不同級(jí)別上的個(gè)性差異提取與計(jì)算。正常人類說話是通過聲道產(chǎn)生聲音的,主要的的發(fā)音器官包括:聲帶、喉頭、口腔和鼻腔(如圖6-13所示)。4.工作過程一般,說話人識(shí)別系統(tǒng)可分為兩個(gè)階段:訓(xùn)練階段和識(shí)別階段,如圖6-14所示。在具體實(shí)現(xiàn)中,語音中說話人個(gè)性特征的分離與提取以及精準(zhǔn)的模型建模是決定系統(tǒng)性能的兩個(gè)關(guān)鍵環(huán)節(jié)。1)特征分離與提取在聲紋識(shí)別,包括語音識(shí)別領(lǐng)域,傳統(tǒng)的聲學(xué)特征包括梅爾倒譜系數(shù)MFCC(Mel-frequencycepstralcoefficients)、感知線性預(yù)測系數(shù)PLP、近幾年的逐漸受到關(guān)注的深度特征DeepFeature、以及最新的能量規(guī)整譜系數(shù)PNCC等,都能作為聲紋識(shí)別在特征提取層面可選且表現(xiàn)良好的聲學(xué)特征。2)識(shí)別模型基于提取的特征可以實(shí)現(xiàn)的說話人識(shí)別的模型,包括:模板匹配法、統(tǒng)計(jì)概率模型法、人工神經(jīng)網(wǎng)絡(luò)法、支持向量機(jī)法、稀疏表示法等,具體算法常見的包括:GMM、UBM、I-Vector、神經(jīng)網(wǎng)絡(luò)方法。1.常見說話人識(shí)別工具目前,說話人識(shí)別主要的開源工具有:1)MSRIdentityToolkit:這是微軟開源的工具箱,支持MATLAB版本,包含GMM-UBM和I-vector的demo,簡單易用。2)Alize:主要包括GMM-UBM、I-vectorandJFA三種傳統(tǒng)的方法,采用C++實(shí)現(xiàn),簡單易用。3)kaldi:是當(dāng)下十分流行的語音識(shí)別工具包,也包括聲紋識(shí)別的功能,覆蓋了主流的聲紋識(shí)別算法(I-vector、x-vector等),采用腳本語言實(shí)現(xiàn),使用不非常方便。4)SIDEKIT:SIDEKIT(主頁https://projets-lium.univ-lemans.fr/sidekit/)基于Python開發(fā),將功能集中在數(shù)量不多的幾個(gè)類的設(shè)計(jì),大大提高了說話認(rèn)識(shí)別工具的易用性。它試圖為開發(fā)者提供一個(gè)完整的工具鏈,包括特征提取、建模和分類、結(jié)果表示等功能。5)Tensorflow:是一個(gè)基于數(shù)據(jù)流編程的符號(hào)數(shù)學(xué)系統(tǒng),被廣泛應(yīng)用于各類機(jī)器學(xué)習(xí)算法的編程實(shí)現(xiàn),其前身是谷歌的神經(jīng)網(wǎng)絡(luò)算法庫DistBelief?;赥ensorflow也可以實(shí)現(xiàn)聲音分類,主要是利用了其強(qiáng)大的機(jī)器學(xué)習(xí)算法。1.語言錄制首先需要獲取說話人的語音數(shù)據(jù)。可以利用pyrec_audio模塊的函數(shù)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("錄音結(jié)束!")

2.語言特征提取對于輸入的語音,其處理過程如下圖6-15所示,經(jīng)過DFT—>取對數(shù)—>逆DFT的過程,這個(gè)過程通常采用倒譜(cepstrum)分析的方法。1)語音信號(hào)時(shí)頻域分析對于信號(hào)的識(shí)別一般是通過頻域特性進(jìn)行分析的。原始聲音信號(hào)是一維時(shí)域信號(hào),直觀上很難看出頻率變化規(guī)律。下面代碼original_amplitude_envelope.py實(shí)現(xiàn)了對一段聲音的讀取,繪制出該聲音的時(shí)域波形圖(如圖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])#橫坐標(biāo)頻率,個(gè)數(shù)為采樣點(diǎn)的個(gè)數(shù),頻率最大值是采樣頻率,生成等差數(shù)列abs_y=np.abs(fft_y)#取復(fù)數(shù)的絕對值,即復(fù)數(shù)的模(雙邊頻譜)normalization_y=abs_y/fft_y.shape[0]#歸一化,angle_y=np.angle(fft_y)#取復(fù)數(shù)的角度

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__':#要預(yù)測的兩個(gè)人的音頻文件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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論