成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

為你的PHP程序選擇合適的密碼庫(初稿)

岳光 / 2246人閱讀

摘要:我們不會提及任何糟糕的密碼庫的。僅對而言如果你一定要安裝對稱密鑰加密,請使用上述的的密碼庫。的密碼庫為你提供了認(rèn)證加密,而的實施并不會驗證密文。當(dāng)前的最佳密碼庫之一是內(nèi)建的。這種散列算法對的編程者或企業(yè)來說都是穩(wěn)定有效的。

如果本文中的術(shù)語讓你感到疑惑,請先參閱密碼學(xué)術(shù)語及概念一文。

密碼學(xué)不是魔術(shù)。加密一個應(yīng)用程序并不能保證它在襲擊下的安全(特別是在你沒有設(shè)置驗證密文的情況下)。但如果出于商業(yè)需求你要確保程序的安全,傳統(tǒng)做法會建議你最好不要嘗試設(shè)計你自己的密碼。你應(yīng)該使用已有的密碼庫。

好了,以上我都了解了。那么我應(yīng)該用哪個PHP密碼庫呢?

這取決于你的實際需求。讓我們來看一下一些好的選擇。(我們不會提及任何糟糕的密碼庫的。)

安全的PHP密碼庫建議

下面是一個安全信任度較高的可部署在生產(chǎn)環(huán)境中的PHP密碼庫清單。本清單基于以下三項標(biāo)準(zhǔn)進(jìn)行優(yōu)先排序。

若正確使用,此密碼庫的安全程度如何?

風(fēng)險行為的困難度如何?

一個非密碼破譯者最大限度使用之的簡易度如何?

Halite – 來自 Paragon Initiative Enterprises

我們推薦此密碼庫不僅是因為它是我們自寫的,首推它是因為你可以通過簡單直觀的接口獲取使用libsodium的全部安全保護(hù)。這是一款免費(fèi)軟件,并且源碼是可以直接獲取的。

使用Halite的好處

? 主線

對稱密鑰認(rèn)證加密

對稱密鑰認(rèn)證(例如:API 消息)

非對稱密鑰認(rèn)證加密

非對稱密鑰匿名加密

非對稱密鑰數(shù)字簽名

? 全文件加密(見:所有主線特征)

? 加密cookies

? 密碼存儲

? 你不需要知道現(xiàn)時值是什么,你也不需要特別關(guān)注認(rèn)證加密。Halite會幫你做好一切。

我們創(chuàng)建Halite以供PHP開發(fā)者通過一個更簡單的接口獲取libsodium拓展的所有安全性優(yōu)勢。查看Halite的相關(guān)文件就能知道它的使用是多么簡便。(盡管 API 是固定的,Halite幫助文件依然是不完善的。然而它已經(jīng)足以涵蓋入門級的內(nèi)容。)

唯一的缺陷是你必須安裝PHP的libsodium擴(kuò)展包才能使用Halite。因此對于很多項目來說,Halite方式是行不通的。

安裝指南:

安裝PHP的libsodium擴(kuò)展包

需要 paragoniehalite`

很顯然,如果你不喜歡我們對于Halite所做的決策,那么可以考慮直接使用libsodium。

使用libsodium的優(yōu)勢

? 對稱密鑰加密認(rèn)證(同:AEAD)

? 對稱密鑰認(rèn)證

? 非對稱密鑰認(rèn)證加密

? 非對稱密鑰匿名加密

? 非對稱密鑰數(shù)字簽名

? 加密哈希函數(shù)

? 密碼存儲

? 瑞士軍刀式的密碼學(xué)原語(比如:基于Curve25519的Diffe-Hellman密鑰交換協(xié)議的橢圓曲線)

? 在PHP中的內(nèi)存清除(補(bǔ)零)能力

? 還有好多

請向Frank Denis以及創(chuàng)作了NaCl(libsodium由此分生)的小組致敬,因為libsodium一直是世界上最可靠的,跨平臺的密碼學(xué)庫。

安裝指南

請參閱相關(guān)文件。

PHP Encryption – 來自 Defuse Security

如果你不能從PECL(也就是永遠(yuǎn)不能安裝libsodium)安裝PHP拓展包,這個密碼庫應(yīng)該是你的備用選擇。通常情況下,不論你的框架提供了什么方案,你都應(yīng)該優(yōu)先考慮它,因為我們的安全小組經(jīng)常能發(fā)現(xiàn)PHP框架提供的對稱密鑰加密功能的缺陷。

使用Defuse Security 的 PHP密碼庫的優(yōu)勢:

? Symmetric-key authenticated encryption

? 對稱密鑰認(rèn)證加密

它解決了大多數(shù)人都會遇到的一個問題(并且解決得非常棒)。該密碼庫的第二版(即將發(fā)布?。⑼瑯雍w全文件加密,但是由于它還未發(fā)布,因此我們還不能以此為加分項。

Phpseclib - Jim Wigginton, et al. (僅對 RSA 而言)

如果你一定要安裝對稱密鑰加密,請使用上述的Defuse的密碼庫。Defuse Security的密碼庫為你提供了認(rèn)證加密,而phpseclib的AES實施并不會驗證密文。因此如果你使用它,你對選擇密文攻擊的抵抗力將十分脆弱。(他們的交互文件在ECB模式下同樣出錯嚴(yán)重,是我們提過的最壞分組密碼模式。)

盡管phpseclib為通用對稱秘鑰加密方式提供的 API 等級過低,使得我們不愿向缺乏密碼學(xué)背景的PHP開發(fā)者在這種使用方式下推薦它,但是它相對extopenssl而言提供了一種更好的非對稱秘鑰加密方式。

如果你堅持必須使用非對稱秘鑰加密方式(公共秘鑰加密,電子簽名)并且出于各種原因無法使用libsodium,那么你就應(yīng)該考慮安裝phpseclib,并且嚴(yán)格遵循Colin Percival提出的密碼算法的正確解答。

特別注意

RSA加密算法:RSA-OAEP(最優(yōu)不對稱加密填充),首先考慮
$rsa-setMGFHash("sha256")

RSA
簽名加密:RSA-PSS(probabilistic

signature scheme),再次明確指定使用MGF1+SHA256

如果你剛好是一位密碼學(xué)專家,那你可以忽略我們的警示信息,使用phpseclib提供的對稱秘鑰加密方式。但是對大多數(shù)非密碼學(xué)專家的編程者來說,請最好不要忽略我們的提示。

使用PHPSecLib的優(yōu)勢:

對稱秘鑰認(rèn)證(通過HMAC秘鑰,PHP同樣提供)

非對稱秘鑰匿名加密(RSA)

非對稱秘鑰電子簽名方式(RSA)

更新內(nèi)容 (2015-11-19) Easy RSA

在本篇博客發(fā)布以后,我們又針對建議開發(fā)了插入式安裝包,EasyRSA。EasyRSA是一種方向確定且默認(rèn)安全設(shè)置的phpseclib使用。

EasyRSA加密過程

問題:使用RSA加密一段超大字符串,即使RSA本身也不支持加密超大字符串?dāng)?shù)據(jù)。

原始解決方案是將你輸入的字符串切分分塊并多帶帶分別加密。然而這和可怕的電碼本(ECB)模式十分相似。同樣的:它的處理進(jìn)程也十分緩慢。這是個非常糟糕的解決方案。

我們的解決方案

生成臨時秘鑰

使用Defuse Security的PHP對稱秘鑰加密密碼庫加密您的消息

使用已有RSA公共秘鑰加密臨時秘鑰(一種對padding oracles攻擊方式抵抗效果良好的方式)

基于64位編碼,并且使用版本標(biāo)記前綴來連接密文

附加第四步中的校驗和(截取的哈希SHA256加密算法)來增強(qiáng)傳輸存儲錯誤檢測能力。

要解密一段消息

驗證檢驗和和版本標(biāo)記

使用正確RSA私鑰來解密臨時秘鑰

使用上一步獲取的解密秘鑰來獲取明文

EasyRSA只使用RSAES-OAEP + MGF1-SHA256 with e = 65537來進(jìn)行公鑰加密,已知此種加密方式對任何padding oracle攻擊都是有良好抵抗力的。

EasyRSA 簽名方式

RSA簽名方式是相對直接的:使用RSASS-PSS + MGF1-SHA256 with e = 65537來計算RSA簽名,然后校驗它是否設(shè)定為僅接受此種簽名。

但是認(rèn)真講,如果你真的想為你的PHP程序找到一種確保安全的加密方式,請嘗試尋找能使用libsodium的方式。我們正推動使libsodium成為PHP7.1中的核心拓展包,因此希望它的使用能夠在將來同“更新新版PHP”一樣簡單。

關(guān)于我們提供的PHP加密庫建議 那其他密碼庫呢?

任何未在上文提及的密碼庫的落選原因都可以由以下三條可能原因解釋:

我們審核了該密碼庫,但是憑心而論并不足以讓我們進(jìn)行推薦。(有可能我們已經(jīng)告知創(chuàng)作者其密碼庫存在缺陷,以便他們加以改進(jìn)。)

密碼庫使用范圍太窄(比如Crypt GPG),或者盡管安全,它和加密的廣泛使用情況并不相關(guān)。

我們太忙了,還沒審核該密碼庫。(我們可能還不知道有這個密碼庫的存在。)

如果你對我們認(rèn)定有缺陷的密碼庫感興趣,請查看安全建議頁以獲取更多信息。

在PHP中,我們應(yīng)該使用何種方式加密密碼?

你不需要加密密碼,你只需要用合適的密碼散列算法(哈希密碼算法)來雜亂密碼。當(dāng)前的最佳密碼庫之一是PHP內(nèi)建的: password_hash() andpassword_verify()。這種散列算法對99%的編程者或企業(yè)來說都是穩(wěn)定有效的。這個算法就是這么棒。

然而,如果你將數(shù)據(jù)庫中的密碼存儲在你網(wǎng)頁應(yīng)用的不同服務(wù)器中,你可以通過加密散列(而不是加密密碼本身)來減輕密碼入侵風(fēng)險。要使用這種方式,請查看Halite密碼課程。

重要的安全建議免責(zé)聲明

盡管我們雇傭了一些PHP開發(fā)安全的行業(yè)頂尖專家(并且我們精于應(yīng)用密碼學(xué)),在不了解你的特定項目要求和風(fēng)險模型的前提下,他們在寫作這篇向?qū)r并不能指引你選取最符合需求的解決方案。

因此如果,比如,你需要使用非對稱加密算法,還執(zhí)意選擇使用Defuse Security的對稱加密密碼庫,請不要說“是Paragon Initiative Enterprises讓我這么干的!”

如果你想根據(jù)自己的特定項目獲得我們的安全建議,請考慮雇用我們進(jìn)行安全咨詢服務(wù)。

或者用法律術(shù)語說:此文信息不提供任何擔(dān)保,使用風(fēng)險自負(fù)。

原文地址:Choosing the Right Cryptography Library for your PHP Project: A Guide

本文系 OneAPM 工程師編譯整理。OneAPM 是應(yīng)用性能管理領(lǐng)域的新興領(lǐng)軍企業(yè),能幫助企業(yè)用戶和開發(fā)者輕松實現(xiàn):緩慢的程序代碼和 SQL 語句的實時抓取。想閱讀更多技術(shù)文章,請訪問 OneAPM 官方博客。
本文轉(zhuǎn)自 OneAPM 官方博客

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21417.html

相關(guān)文章

  • ThinkSNS Plus PHP開發(fā)概述

    摘要:讀音,全稱,是系列產(chǎn)品一個重要版本,其軟件識別名稱為即是一個基于框架進(jìn)行開發(fā)的一個功能強(qiáng)大易于開發(fā)和強(qiáng)拓展的社交系統(tǒng)。另一方面,程序采用嚴(yán)格模式,從根本上盡量避免弱級錯誤的產(chǎn)生。哪怕你不會框架,也能讓你入門框架基礎(chǔ),并勝任應(yīng)用開發(fā)。 Plus (讀音:[pl?s],全稱:ThinkSNS+ [θ??k es en es pl?s],是 ThinkSNS 系列產(chǎn)品一個重要版本,其軟...

    Taste 評論0 收藏0
  • git webhooks 實現(xiàn)自動拉取代碼

    摘要:而利用的功能,能夠讓我們省去這一步,下面我就以碼云的為例,實現(xiàn)服務(wù)端的代碼自動同步部署。查看是哪個用戶執(zhí)行該命令參考文章使用腳本遠(yuǎn)程部署項目利用實現(xiàn)自動部署代碼碼云通過實現(xiàn)自動同步代碼部署執(zhí)行系統(tǒng)外部命令函數(shù) 當(dāng)進(jìn)行開發(fā)的環(huán)境在本地,而運(yùn)行的環(huán)境要在服務(wù)端時,每一次提交代碼都需要在服務(wù)端pull一次。而利用git的hooks功能,能夠讓我們省去這一步,下面我就以碼云的webhooks為...

    marek 評論0 收藏0
  • 看吧,這就是現(xiàn)代化 PHP 該有樣子

    摘要:這大概是我沒有及早使用,或多數(shù)開發(fā)者流連現(xiàn)狀造成的。它就是,一個的框架。行為驅(qū)動開發(fā)是來自測試驅(qū)動開發(fā)的開發(fā)過程。簡單的說,它就是經(jīng)常可能一天幾次將小塊代碼整合進(jìn)基礎(chǔ)代碼當(dāng)中的行為。 showImg(https://segmentfault.com/img/remote/1460000013769815); 這是一篇社區(qū)協(xié)同翻譯的文章,已完成翻譯,更多信息請點擊?協(xié)同翻譯介紹?。 文章...

    Tangpj 評論0 收藏0
  • 開發(fā)一款圖片上傳+用戶反饋(留言)小程序,附前端+后端代碼

    摘要:之前幫別人開發(fā)的,只是花了一天的時間,做好了前端后端,還有后臺哦很簡單的一個小程序,就是表單圖片上傳。留言板小程序部署教程打開服務(wù)端文件夾,打開,修改第二行的數(shù)據(jù)庫地址,數(shù)據(jù)庫賬號,數(shù)據(jù)庫密碼,以及第行的數(shù)據(jù)庫名,保存。 之前幫別人開發(fā)的,只是花了一天的時間,做好了前端+后端,還有后臺哦?。?!很簡單的一個小程序,就是表單+圖片上傳。下面是小程序的界面。 showImg(https://...

    bluesky 評論0 收藏0
  • PHP 擴(kuò)展開發(fā)檢測清單(擴(kuò)展開發(fā)必讀)

    摘要:以下清單的內(nèi)容將有助于完善你的擴(kuò)展,并且在社區(qū)中得到更多的重視。編寫單元測試覆蓋大部分的代碼。使用,一個常用的單元測試框架。使用持續(xù)集成使用服務(wù)來自動檢查編碼是否標(biāo)準(zhǔn)并且能否通過運(yùn)行測試。 showImg(https://segmentfault.com/img/bV880X?w=1240&h=755); 想要做出一個成功的 PHP 擴(kuò)展包,不僅僅是簡單的將代碼放進(jìn)文件夾中就可以了,除...

    lucas 評論0 收藏0

發(fā)表評論

0條評論

岳光

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<