2011/9/30
資訊學院的30堂課-資料庫管理 DataBase
資料庫管理系統,課程主要精神就是在教EDR與正規化,正規化很重要,一個系統的效能在於適當地切割資料表,沒有正規化的資料庫,很容易發生資料不匹配的問題,而導致於coding時事倍工半。修課當時,也只是照著課本做,其實對於如何合適地使用SQL語法,是上班之後的事了,不過我覺得對於語法效能最有幫助的課反而是Data Structure,order by就不用說了,排序最少是O(N*logN)當我下了一個group by或者union,腦袋瓜要馬上閃過,這樣子在實際上執行時,花費的時間複雜度是否可以接受。另外,偶而會幫忙同事turning語法,新手最容易犯的錯誤,就是查詢網頁時,資料看不到,原因就在於inner join與left join的不同。
再來是索引的運作,大部分的所以都是使用B-Tree結構來節省查詢的時間,樹狀結構可以把線性搜詢所需要的O(n)時間,reduce到O(logN),如果資料結構B-Tree的那個章節有認真學的話,使用B-Tree的好壞處很快就可以理解,自然也知道最適合加入索引的時間。
之前開發一套車輛管理系統,車籍資料超過80個欄位了,資深的長官指示車籍資料分成會異動的一個表格,不會變動的另外一個表格,當時剛出社會時,被年長20歲的前輩,稱為小朋友,長官說甚麼,就只好幹甚麼,這卻是災難的開始。這樣設計的下場是甚麼呢,就是超級慢的查詢速度,車籍資料有4000筆,兩個表格進行join後,產生4000*4000這麼大的笛卡耳積,先不論資料庫系統進行的什麼優化,或者有設定索引,光就時間複雜度的觀點,就慢了4000倍,這80欄的車籍資料,在大部分的頁面,都需要讀取兩個表格,後來跟我同組的同事討論後,決定合併這兩個表格,結果速度就馬上有明顯的提升,因為長官這一個決策錯誤,全部的code翻起來review一次。
不知道CS哪一門課,教把會變動的資料與不會變動的資料,分開來存放的,是!有的,剛好我們大學開了一門很冷門的課課,叫做檔案結構,不是資料結構喔,這樣存放的確可以減少讀取到記憶體的資料量,但是我們系統的最終儲存目的地是資料庫,而不是自己維護的檔案,所以長官應該是沒有修過資料庫管理系統,甚至於資料結構,經後來他的談話之後,還真的耶,他的開發經驗就是C語言加檔案結構,後來他就沒有再插手系統設計的部分了,只安排了我們做什麼工作,什麼時候交出來而已。
crapto1.c
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, US$
Copyright (C) 2008-2008 bla <blapost@gmail.com>
*/
#include "crapto1.h"
#include <stdlib.h>
#if !defined LOWMEM && defined __GNUC__
static uint8_t filterlut[1 << 20];
static void __attribute__((constructor)) fill_lut()
{
uint32_t i;
for(i = 0; i < 1 << 20; ++i)
filterlut[i] = filter(i);
}
#define filter(x) (filterlut[(x) & 0xfffff])
crypto1破解軟體
而且開宗明義說 機乎是沒有保護狀態
http://www.dexlab.nl/downloads.html#emulator
這邊把演算法說的很清處
http://www.sos.cs.ru.nl/applications/rfid/2008-esorics.pdf
冰淇淋三明治之後,Android下一代作業系統要叫做Jelly Bean?
了關係,代號極有可能為「Jelly Bean」(雷根糖),也意味著跟著I系列(Ice Cream
Sandwich,冰淇淋三明治)之後,「J」系列作業系統蓄勢待發。
再說回還未推出的冰淇淋三明治作業系統,今年五月Google開發者大會首次公開系統功
能,大家普遍認為這是要將智慧型手機和平板電腦不同的Android版本合併的開端,目
前智慧型手機採行的Android系統代號為「Gingerbread」,平板電腦則為
「Honeycomb」。最新傳出三星將會推出Ice Cream Sandwich平台的Nexus Prime智慧型
手機,就連董事長施密特也親自表示十月或十一月就要推出。
以目前來看,Google新版Android「Ice Cream Sandwich」將整合手機與平板平台使用
情境,其中也包含了不少有趣的應用,例如對應NFC、透過相機進行圖像辨識或是整合
數位家電控制等。而在目前,Google下一個以「J」為開頭的Android版本似乎也準備開
始有消息?
相關情報從This is my網站的消息來源所透露,表示接續整合手機與平板使用情境的
「Ice Cream Sandwich」的下一版Android,其名稱將會是「Jelly Bean (雷根糖)」。
不過,由於目前Google官方尚未正式公佈「Ice Cream Sandwich」實際版本編號,因此
目前也無法確認「Jelly Bean」將會是什麼版本。
而從相關消息來源所透露說法,「Jelly Bean」主要將會著重於「遊戲規則」方面上的
改革,不過並沒有太多關於這方面的消息,從Google去年便一直強化針對以HTML5打造
web遊戲內容的應用,甚至目前在Chrome Web Store中也有不少遊戲存在 (而且今年的
Google I/O大會也請來《Angry Bird》開發商Rovio執行長Peter Vesterbacka擔任背
書),後續也針對Google+開設了遊戲服務,或許下一步將會透過Android平台進軍行動
遊戲市場?
但目前看起來,「Jelly Bean」僅只是其中一種可能的名稱,至少Google似乎還沒有作
出最後決定,但可以確定下一版Android名稱一定是以「J」為開頭的甜點名稱。
現在還沒有比較確定的「Ice Cream Sandwich」正式釋出時程,即便先前的傳聞已經有
消息"透露"下一款Nexus手機仍為三星製作,不過進一步消息可能還是要等Google官方
公佈。至於時間的部份,先前傳聞最快會是在今年10月,而Google董事長Eric Schmidt
的說法則是表示會在10月或11月之間,但看起來應該會比先前兩款Nexus手機發表時間
還要早一些?
2011/9/29
第一代悠遊卡Mifare卡每個金鑰長度太短,只有48位元
工程師,涉嫌利用電腦跟獨卡機,竄改3張悠遊卡的儲值金額,悠遊卡公司發現後主動
報案,警方在內湖某超商逮捕嫌犯,對此,悠遊卡公司強調,內部的儲值加密系統並沒
有被破解,所以嫌犯竄改儲值金額還是會被逮到。
內湖這家超商的監視器拍到這名身穿黑色上衣、短褲的年輕男子正在用悠遊卡消費,他
就是國內第一個破解悠遊卡的駭客,不花一毛錢就能加值卡片。悠遊卡公司一再強調,
加密系統沒被破解,但糗的是,4道防護機制還是被破到第2關。
這名男子24歲,目前在台北市一家科技公司擔任資安部門的工程師,平常專門在抓門禁
漏洞,警方認為,他的電腦實力不容小覷。
男子成功把3張卡片都改到9000元,在8月25日查詢餘額,9月10日正式出手,但第一張
卡片沒改好失敗,再拿出第二張卡片就能消費,此時悠遊卡公司察覺不對,暗中觀察,
12日,男子拿出第3張卡消費,前後共消費5次,22日,悠遊卡公司主動報案,23日,第
6次消費時,被警方埋伏逮捕,移送法辦。
為了39元的不法所得,年輕工程師最重可處10年有期徒刑,得併科罰金2億,實在是得
不償失,另一方面,也突顯出悠遊卡公司的儲值機制有待加強。
~~~~~~~~~~~~~~~~~~~~~但
這並不是臺灣第一起破解Mifare卡事件。早在2010年臺灣駭客年會上,臺大電機系教授
鄭振牟便公開了如何破解Mifare的論文。
發行超過2,700多萬張的臺北悠遊卡,日前傳出有駭客破解悠遊卡所使用的第一代
Mifare晶片卡,竄改票面金額、予以加值使用。這也引發許多人對其安全性的質疑。臺
北悠遊卡公司公關室科長林諭林表示,第二代悠遊卡目前發行進度仍須等金管會審核通
過,即使日前已發生悠遊卡遭駭事件,該公司仍有其他配套措施,確保悠遊卡的安全
性。
林諭林表示,在晶片卡安全防護上,除了記憶體內建的加解密演算法Crypto 1的安全防
護外,透過基碼多樣化,每張悠遊卡都是不同金鑰,一次只能破解一張悠遊卡,無法大
量複製已破解的卡片使用。另外,他說,悠遊卡本身也有獨特的防偽機制,即便同為
Mifare卡,要破解悠遊卡只能拿現成的悠遊卡來破解,無法把非悠遊卡當成悠遊卡使
用。最後一關則是透過後臺進行每天交易查核,若有異常資料則會先進行鎖卡。此外,
前臺的讀卡機也有設定檢查流程,藉此判定有問題的卡片。
此次事件並非是臺灣第一起破解Mifare卡事件。早在2010年臺灣駭客年會上,臺大電機
系教授鄭振牟便公開了如何破解Mifare的論文,使用千萬等級的設備,包括6臺內建8個
GPU的伺服器加上側錄資料,在7秒內便可以破解密碼。
智慧卡專家倪萬昇表示,第一代Mifare卡每個金鑰長度太短,只有48位元,有心人士可
以購買市面上的RF讀卡機,用暴力方式解開密碼,預計幾個月∼2年就可破解。
他認為,悠遊卡原本僅供交通應用使用,但只要跨足小額支付時,就必須使用類似二代
金融卡、晶片信用卡等內建3DES、AES或RSA先進加解密標準的晶片卡,才能提供較高的
安全度。