測(cè)試中很多接口需要數(shù)字簽名
在做接口測(cè)試時(shí),大家一定都遇到過(guò)需要提供簽名的場(chǎng)景。這時(shí),我們就會(huì)被各種名詞比如 簽名和驗(yàn)簽、公鑰和私鑰、加密和解密 沖擊。所以,了解一下它們很有必要,可以幫助我們知道為什么要這么做,而不是簡(jiǎn)單的去當(dāng)一個(gè)驗(yàn)證執(zhí)行者。甚至,在你了解了它們之后,你也可以在接口的安全性測(cè)試上更進(jìn)一步。
什么是數(shù)字簽名
數(shù)字簽名其實(shí)就是一個(gè)別人無(wú)法仿造,能夠證明申請(qǐng)者真實(shí)性的一段字符串。我們?cè)谡鎸?shí)生活中,最常用的簽名應(yīng)該就是手簽我們的姓名了。
所以,在接口請(qǐng)求時(shí),很多接口也不是你來(lái)一個(gè)請(qǐng)求我就給你返回你要的數(shù)據(jù),而是要驗(yàn)證你的簽名,進(jìn)而證明你的身份后才能做出后續(xù)動(dòng)作。在此過(guò)程中,接口調(diào)用者需要進(jìn)行的工作就叫做簽名,而被調(diào)用者需要進(jìn)行的工作就叫做驗(yàn)簽。
什么是公鑰和私鑰
公鑰:由接口被調(diào)用方提供,RSA 密鑰體系中對(duì)外公開的部分,通常用于數(shù)據(jù)加密、驗(yàn)證數(shù)字簽名。
私鑰:由接口被調(diào)用方提供,RSA 密鑰體系中非公開的部分,需由接口調(diào)用方嚴(yán)密保存,通常用于數(shù)據(jù)解密、數(shù)據(jù)簽名。
什么是加密和解密
這個(gè)就很好理解了,傳遞數(shù)據(jù)時(shí)為了保證數(shù)據(jù)的安全性,不進(jìn)行明文傳遞,而是通過(guò)某種算法對(duì)敏感數(shù)據(jù)進(jìn)行加密,傳遞后再由接收方使用對(duì)應(yīng)算法進(jìn)行解密來(lái)獲取明文信息。
將上面的定義總結(jié)為圖,會(huì)更加的清晰:
為什么要用私鑰加簽,公鑰加密
加簽的目的:驗(yàn)證信息的發(fā)送方是否正確,信息是否被其他人篡改。
之所以用發(fā)送方的私鑰加簽,是因?yàn)椋幢阈畔⒈缓诳蛿r截,黑客修改了信息,但是加簽需要用發(fā)送方的私鑰,黑客沒(méi)有發(fā)送方的私鑰,所以也無(wú)法生成正確的簽名,接收方驗(yàn)簽就不用通過(guò)。
反之如果用接收方的公鑰加簽,如果信息被黑客攔截,黑客修改了信息,因?yàn)榻邮辗降墓€是公開的,黑客就可以重新生成新的簽名,替換原有的簽名,發(fā)送出去,接收方接收到信息,拿自己的公鑰校驗(yàn)是通過(guò)的,所以接收方無(wú)法辨別信息是真正的發(fā)送方還是黑客發(fā)送過(guò)來(lái)的,這樣的加簽不能辨別信息是否被篡改過(guò)。
加密的目的:保證信息的隱私,不被別人看到,只能讓接收方看到正確的信息。
之所以用接收方的公鑰加密,是因?yàn)椋绻畔⒈缓诳蛿r截,需要用接收方的私鑰來(lái)解密,黑客無(wú)法獲取接收方的私鑰,即便攔截了信息(情報(bào)),黑客也無(wú)法看到明文,只能看天書?了。
反之,如果用發(fā)送方的私鑰加密,如果信息被黑客攔截,因?yàn)榘l(fā)送方的公鑰是公開的,黑客就可以用發(fā)送方的公鑰解密密文獲得明文,這樣的加密所有的人都可以看到明文,不能保證信息的隱私。
測(cè)試人需關(guān)注
了解了以上這些知識(shí),在測(cè)試過(guò)程中就可以更加深入的了解簽名的目的,進(jìn)而可以更深入的了解簽名的實(shí)現(xiàn)等。簽名的實(shí)現(xiàn)有很多種,這個(gè)要根據(jù)每個(gè)團(tuán)隊(duì)選擇哪種具體分析,但作為測(cè)試,基本上我們都是可以按照約定的規(guī)則來(lái)生成的,這也幫助我們擴(kuò)展了接口測(cè)試覆蓋的廣度(如接口用例覆蓋度、過(guò)期時(shí)間等隱藏功能),是非常有意義的。