單向散列加密
單向散列加密是指通過對不同輸入長度的信息進行散列計算缀去,得到固定長度的輸出履恩,散列計算過程是單向的港庄,即不能對固定長度輸出進行計算獲得輸入信息倔既。
場景:密碼加密保存
這樣保存在數(shù)據(jù)庫中的是用戶輸入的密碼的密文,且不能逆向計算得到密碼的明文鹏氧,因此即使數(shù)據(jù)庫被“拖庫”渤涌,也不會泄漏用戶的密碼信息。
雖然不能通過算法將單向散列密文反算得到明文把还,但可以通過彩虹表(人們常用密碼和對應(yīng)密文關(guān)系表)等手段可猜測破解实蓬。
通過給散列算法加點鹽(salt)〉趼模可以增加破解的難度安皱。
常用的單向散列算法有 MD5、SHA 等率翅。單向散列算法還有一個特點就是輸入任何微小變化都會導致輸出完成不同练俐,這個特性有時也會被用來生成信息摘要袖迎、計算具有高離散程度的隨機數(shù)等冕臭。
對稱加密
所謂對稱加密是指加密和解密使用的密鑰是同一個密鑰(或者可以互相推算)腺晾。
對稱加密通常用在信息需要安全交換或存儲的場合,如 Cookie 加密辜贵、通信加密等悯蝉。
優(yōu)點:加解密效率高,系統(tǒng)開銷小托慨,適合大量數(shù)據(jù)加密鼻由。
缺點:加解密使用同一個密鑰,遠程通信的情況下如何安全地交換密鑰是個難題厚棵。
常用算法:DES蕉世、RC 等。
非對稱加密
加密和解密使用的密鑰不是同一密鑰婆硬,一個公鑰狠轻,一個私鑰。
非對稱加密技術(shù)通常用在信息安全傳輸彬犯,數(shù)字簽名等場合向楼。
信息發(fā)送者 A 通過公開渠道獲得信息接收者 B 的公鑰,對提交信息進行加密谐区,然后通過非安全傳輸通道將密文信息發(fā)送給 B湖蜕,B 得到密文信息后,用自己的私鑰對信息進行解密宋列,獲得原始的明文信息昭抒。即使密文信息在傳輸過程匯總被竊取,沒有解密密鑰也無法還原明文炼杖。
數(shù)字簽名過程則相反戈鲁,簽名者用自己的私鑰對信息進行加密,然后發(fā)送給對方嘹叫,接收方用簽名者的公鑰對信息進行解密婆殿,獲得原始明文信息,由于私鑰只有簽名者擁有罩扇,因此該信息是不可抵賴的婆芦,具有簽名的性質(zhì)。
在實際應(yīng)用中喂饥,常常會混合使用對稱加密和非對稱加密消约。先使用非對稱加密技術(shù)對對稱密鑰進行安全傳輸,然后使用對稱加密技術(shù)進行信息加解密與交換员帮。而有時或粮,對同一個數(shù)據(jù)兩次使用非對稱加密,可同時實現(xiàn)信息安全傳輸與數(shù)字簽名的目的捞高。
非對稱加密的常用算法有 RSA 算法等氯材。HTTPS 傳輸中瀏覽器使用的數(shù)字證書實質(zhì)上是經(jīng)過權(quán)威機構(gòu)認證的非對稱加密的公鑰渣锦。
密鑰安全管理
信息的安全是靠密鑰保證的。但在實際中經(jīng)城庀看到袋毙,工程師經(jīng)常把密鑰直接寫在源代碼中,稍好一點的寫在配置文件中冗尤,線上和開發(fā)環(huán)境配置不同密鑰听盖。總之密鑰本身是以明文的方式保存的裂七,并且很多人可以接觸到皆看,至少在公司內(nèi)部,密鑰不是秘密背零。
改善密鑰安全性的手段有兩種:
一種方案是把密鑰和算法放在一個獨立的服務(wù)器悬蔽,甚至做成一個專用的硬件設(shè)施,對外提供加密和解密服務(wù)捉兴,應(yīng)用系統(tǒng)通過調(diào)用這個服務(wù)蝎困,實現(xiàn)數(shù)據(jù)的加解密。由于密鑰和算法獨立部署倍啥,由專人維護禾乘,使得密鑰泄漏的概率大大降低。但是這種方案成本較高虽缕,而且有可能成為應(yīng)用的瓶頸始藕,每次加密、解密都需要進行一次遠程服務(wù)調(diào)用氮趋,系統(tǒng)性能開銷也較大伍派。
另一種方案是將加解密方法放在應(yīng)用系統(tǒng)中,密鑰則放在獨立服務(wù)器中剩胁,為了提高密鑰的安全性诉植,實際存儲時,密鑰被切分成數(shù)片昵观,加密后分別保存在不同存儲介質(zhì)中晾腔,兼顧密鑰安全性的同時又改善了性能。
應(yīng)用程序調(diào)用密鑰安全管理系統(tǒng)提供的加解密服務(wù)接口對信息進行加解密啊犬,該接口實現(xiàn)了常見的加解密算法并可根據(jù)需求任意擴展灼擂。加解密服務(wù)接口通過密鑰服務(wù)器的密鑰服務(wù)取得加解密密鑰,并緩存在本地(定時更新)觉至。而密鑰服務(wù)器中的密鑰則來自多個密鑰存儲服務(wù)器剔应,一個密鑰分片后存儲在多個存儲服務(wù)器中,每個服務(wù)器都有專人負責管理。密鑰申請者峻贮、密鑰管理者席怪、安全審核人員通過密鑰管理控制臺管理更新密鑰,每個人各司其事月洛,沒人能查看完整的密鑰信息何恶。