發表文章

目前顯示的是 8月, 2012的文章

[Android] 清理圖片庫暫存

這陣子做了些測試,導致圖片庫一直讀到舊的照片(已刪除的照片),所以翻了手機的設定功能,我想應該可以手動去清除暫存空間吧。 總算是找到了↓ "設定>管理應用程式> 全部> 媒體儲存空間"

[Security] openssl test (續三)

好的,先排除任何版本的bug,簡單解釋一下openssl程式的架構,其實我也不是很熟,只是為了硬加入一個功能,大致上簡單瞭解了一些,怕自己忘記,就把我瞭解的紀錄下來了。 在openssl的程式目錄中,各種加密的方式在crypto/下都有獨立的目錄,但是把這些加密方式串連起來的核心是在apps/和ssl/目錄下的程式。 但,如果你是直接呼叫openssl library的人,基本上是用不到apps/下的東西,因為apps下的程式,通常是給在系統下要呼叫openssl的命令去進行一些簡單的測試。 先提一下... 由於openssl是在網路封包上,將Data channel的部分透過加密後,再封裝至socket中,我指的socket就是網路程式的一個介面,必須經過create socket -> bind socket -> listen socket -> accept socket,才能完成一條跟Client互相溝通的Session。 當然這個過程socket自然就會跟network的driver進行互動了。而openssl為了將加密後的封包包入socket中,自然他就會有自己的socket library,而我們只要透過ssl_read或ssl_write的方式就能透過已經建立的加密連線去丟送封包。 好的,接下來就是我真正想講的重點了。假定你是使用linux的user,那你呼叫openssl的命令時,其實你就是呼叫了apps/openssl.c這隻程式的main function,進而帶入參數後,它就會再跳轉到你帶入參數的下一隻程式中。 比如我們先前的Command是#openssl s_server xxxxx.... 它就會先進到openssl.c的main function中,再帶轉到s_server.c的程式中,而s_server跟s_client也就在apps下的s_server.c跟s_client.c。 我簡單拉出幾個openssl s_server從init到等待client中間會用到的幾個重要function。 Server - apps/s_server.c : MAIN() >  meth=SSLv23_server_method(), SSLv3_server_method(

[Security] openssl test (續二)

繼 上一篇 ,事實上openssl在0.9.8x版似乎是不支援DTLS,而到了1.0.0版終於開始支援DTSL,但我印象中要到1.0.0d才解掉了DTLS大多數的Bug。而x509的bug則是在0.9.8i才解決,否則會無法使用x509 server端的cert key。 基礎的加密、解密過程我就不作解釋,有興趣的朋友可以研究一下密碼學的發展跟運作。 當初我為了讓x509的功能可以正常運作,就把0.9.8e版的openssl升級到0.9.8i,就把一版psk key可以運作的版本加到我們的Device中。 而讓我最頭痛的問題是將openssl 0.9.8i版加入DTLS的功能。 我們生來只在學校讀過密碼學,對openssl極為陌生,於是我從測試命令開始學習。在 上一篇 大至瞭解了指令後,我們便可以透過 #openssl s_server -h的方式得到s_server的參數說明。 就在這時候我該拿出程式說明一下了,程式是怎麼開始進到s_server呢? 我們把從openssl組織download下來的壓縮檔解開後,可以看到一大堆資料夾,我們測試角度來看,只需要關注apps/。因為大多數的測試指令都是由裡面的openssl.c開始帶起。 而整個openssl加密的原則跟運作都是被寫在ssl/中的程式中。 (待續)