測試中很多接口需要數(shù)字簽名
在做接口測試時殉疼,大家一定都遇到過需要提供簽名的場景。這時捌年,我們就會被各種名詞比如 簽名和驗簽瓢娜、公鑰和私鑰、加密和解密 沖擊礼预。所以眠砾,了解一下它們很有必要,可以幫助我們知道為什么要這么做托酸,而不是簡單的去當(dāng)一個驗證執(zhí)行者褒颈。甚至,在你了解了它們之后励堡,你也可以在接口的安全性測試上更進一步谷丸。
什么是數(shù)字簽名
數(shù)字簽名其實就是一個別人無法仿造,能夠證明申請者真實性的一段字符串应结。我們在真實生活中刨疼,最常用的簽名應(yīng)該就是手簽我們的姓名了。
所以鹅龄,在接口請求時揩慕,很多接口也不是你來一個請求我就給你返回你要的數(shù)據(jù),而是要驗證你的簽名扮休,進而證明你的身份后才能做出后續(xù)動作迎卤。在此過程中,接口調(diào)用者需要進行的工作就叫做簽名肛炮,而被調(diào)用者需要進行的工作就叫做驗簽止吐。
什么是公鑰和私鑰
公鑰:由接口被調(diào)用方提供,RSA 密鑰體系中對外公開的部分侨糟,通常用于數(shù)據(jù)加密碍扔、驗證數(shù)字簽名。
私鑰:由接口被調(diào)用方提供秕重,RSA 密鑰體系中非公開的部分不同,需由接口調(diào)用方嚴密保存,通常用于數(shù)據(jù)解密、數(shù)據(jù)簽名二拐。
什么是加密和解密
這個就很好理解了服鹅,傳遞數(shù)據(jù)時為了保證數(shù)據(jù)的安全性,不進行明文傳遞百新,而是通過某種算法對敏感數(shù)據(jù)進行加密企软,傳遞后再由接收方使用對應(yīng)算法進行解密來獲取明文信息。
將上面的定義總結(jié)為圖饭望,會更加的清晰:
為什么要用私鑰加簽仗哨,公鑰加密
加簽的目的:驗證信息的發(fā)送方是否正確,信息是否被其他人篡改铅辞。
之所以用發(fā)送方的私鑰加簽厌漂,是因為,即便信息被黑客攔截斟珊,黑客修改了信息苇倡,但是加簽需要用發(fā)送方的私鑰,黑客沒有發(fā)送方的私鑰囤踩,所以也無法生成正確的簽名旨椒,接收方驗簽就不用通過。
反之如果用接收方的公鑰加簽高职,如果信息被黑客攔截钩乍,黑客修改了信息,因為接收方的公鑰是公開的怔锌,黑客就可以重新生成新的簽名寥粹,替換原有的簽名,發(fā)送出去埃元,接收方接收到信息涝涤,拿自己的公鑰校驗是通過的,所以接收方無法辨別信息是真正的發(fā)送方還是黑客發(fā)送過來的岛杀,這樣的加簽不能辨別信息是否被篡改過阔拳。
加密的目的:保證信息的隱私,不被別人看到类嗤,只能讓接收方看到正確的信息糊肠。
之所以用接收方的公鑰加密,是因為遗锣,如果信息被黑客攔截货裹,需要用接收方的私鑰來解密,黑客無法獲取接收方的私鑰精偿,即便攔截了信息(情報)弧圆,黑客也無法看到明文赋兵,只能看天書?了。
反之搔预,如果用發(fā)送方的私鑰加密霹期,如果信息被黑客攔截,因為發(fā)送方的公鑰是公開的拯田,黑客就可以用發(fā)送方的公鑰解密密文獲得明文历造,這樣的加密所有的人都可以看到明文,不能保證信息的隱私勿锅。
測試人需關(guān)注
了解了以上這些知識帕膜,在測試過程中就可以更加深入的了解簽名的目的,進而可以更深入的了解簽名的實現(xiàn)等溢十。簽名的實現(xiàn)有很多種,這個要根據(jù)每個團隊選擇哪種具體分析达吞,但作為測試张弛,基本上我們都是可以按照約定的規(guī)則來生成的,這也幫助我們擴展了接口測試覆蓋的廣度(如接口用例覆蓋度酪劫、過期時間等隱藏功能)吞鸭,是非常有意義的。