加密和認證是信息安全領域兩大主題,加密保證數據的隱祕性,認證簽名保證數據的完整性,二者每每密不可分,主要工做模式有三種:安全
一、先加密後對密文簽名(encrypt-then-mac)ide
二、先對明文簽名,而後對明文和簽名進行加密(mac-then-encrypt)加密
三、先對明文簽名,而後對明文加密,最後將簽名附在密文以後(mac-and-encrypt)it
三種方式都能在必定程度上保證信息的隱祕和完整,但各有特色。分析下三種模式,首先是1,它能夠保證接收方在解密以前驗證數據的完整性,對沒法經過HMAC驗證的數據直接丟棄,提升了處理速度,可是,一旦HMAC密鑰泄露,將威脅通訊的安全,由於***者能夠將一段隨機的數據HMAC以後發送給接收方,並能夠經過接收方的認證,從而是接收方認爲這是一段合法的數據。可是在2和3中就不會有這種狀況發生,即便HMAC密鑰泄露,方案2和3同樣能夠保證通訊的安全,由於***者不知道加密密鑰,沒法僞造出能經過認證的數據。可是方案二、3在應用中速度會比1慢。class