每一個可以努力的日子,都是一份厚禮。
信息安全
應用密碼學:加密,解密,數字簽名,證書……
VPS 防止 SSH 暴力登錄嘗試攻擊
2012 8月 22nd
VPS 屏蔽掃描網站的 IP
2012 8月 17th
前段時間博客經常性地無法訪問,網站宕機。SSH 上去看進程,發現大量 php-fpm 佔用系統資源,查看服務器的 Nginx 日誌,就知道發生了什麼事情。個別 IP “友情”為我的站點掃描漏洞,瞬時並發連接很大。我知道大家也沒什麼惡意,只是用黑客工具比較興奮,拿 www.lovelucy.info 練練手而已嘛。但是博主很窮,小站搭建在一個配置並不高的免費 VPS 上,折騰不起,壓力很大,結果一不小心讓各位搞成 DoS 拒絕服務攻擊了,真是慚愧。
又一次運維,惡意 js 腳本注入訪問偽隨機域名
2012 7月 8th
我們的服務器又出入侵事故了。有客戶的 html 網頁底部被插入了一段 js 腳本,導致訪客打開網頁時被殺毒軟件警告網站上有惡意代碼。在黑鏈 SEO 中這是常見的手法,但奇特的地方就在於我們這次捕獲到的代碼,會根據當前的時間戳生成一個(偽)隨機域名,然後定時訪問。看上去目的並非是 SEO。
記一次運維,一個 Linux 木馬
2012 4月 22nd
上個月數據中心的多台服務器接連被人掛馬,又有客戶的網站被 DDOS,公司的運維整個都處於一種被打了雞血的亢奮狀態,連我手上的項目都被部門老大停了,調去幫運維。第一次見到 Linux 下面的木馬,突然想起來,還是值得記錄一下。
FlySSH領翔網絡優惠碼
2012 1月 3rd
Nginx配置SSL證書部署HTTPS網站
2011 10月 1st
RSA讀取密鑰——使用openssl編程
2011 1月 4th
RSA是基於數論中大素數的乘積難分解理論上的非對稱加密法。在此密碼術中,使用公鑰(public key)和私鑰(private key)兩個不同的密鑰:公鑰用於加密,它是向所有人公開的;私鑰用於解密,只有密文的接收者持有。
舉例:小紅希望安全地發送一條消息給小明,消息明文為m,小明的公鑰為K+,小明的私鑰為K-。通信過程為,小紅使用K+加密m,成為密文K+(m),傳送給小明,小明收到後使用K-解密這個密文得到原始消息明文,即m = K-(K+(m))。
具體的密鑰生成算法如下。隨機選擇兩個大素數p和q(比如每個都是1024 bit),計算n = pq, n’ = (p-1)(q-1). 選擇一個e (e小於n) 與n’互質。計算d使得ed = 1 mod n’.則公鑰為(n, e),私鑰為(n, d). 注意p和q都應該保密。
加密過程為c = m^e mod n
解密過程為m = c^d mod n
以上為原理簡介。下面是openssl API編程應用讀取密鑰文件的示例源代碼: 更多 >
DSA簽名與驗證——使用openssl編程
2011 1月 4th
和手寫簽名一樣,數字簽名可以為我們驗證文檔的作者、簽名的時間,從而鑒明消息的內容是真實可靠的。它的目的和MAC類似,只是使用的是公鑰加密體系。
和RSA加密解密過程相反,在DSA數字簽名和認證中,發送者使用自己的私鑰對文件或消息進行簽名,接受者收到消息後使用發送者的公鑰來驗證簽名的真實性。這個方法完全可以基於RSA來實現,但是在DSA中,我們會更有效率地做這件事情。 更多 >
MD5哈希散列生成摘要——使用openssl編程
2011 1月 3rd
取任意長度的消息,生成一個固定長度的散列值,或者叫做摘要。哈希函數的實現都是公開的,它廣泛應用於文件完整性檢測、數字簽名中。登錄密碼也有用到哈希函數,一般網站在數據庫中不是直接存儲的用戶密碼,而是密碼的哈希值,這樣即使數據庫暴露,攻擊者仍然是不知道密碼的明文的。
這要求Hash函數擁有以下特性:一是單向性,即不可逆性,我們無法從哈希值反過來得到原文。二是衝突碰撞抵禦能力,即找到兩個不同的消息原文,他們的哈希值相同,這在計算上不可行。
實際上,MD5已經不再安全。在2005年,我國山東大學王小雲教授成功破解MD5算法,使得使用普通電腦在數小時內即可找到哈希碰撞,這在國際密碼學領域引發地震。 更多 >