最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

IC卡秘鑰算法破解的一次嘗試

2021-07-18 08:38 作者:LMark07  | 我要投稿


? ??

個人博客:https://ladeng07.github.io/


哈嘍大家好,這里是Lanternmark,今天給大家分享一下我的一次破解經(jīng)歷。(本文只技術(shù)交流分享,濫用者自行承擔(dān)責(zé)任,與本文作者無關(guān))


0x0.前言

? ? IC卡,?即Integrated Circuit Card,集成電路卡,像我們平??吹降你y行卡,地鐵卡,還有校園里的飯卡,智能?;盏鹊龋@些都屬于IC卡。想必大家一定不陌生,但是大家有沒有關(guān)注過IC卡的原理以及安全性。希望通過這篇文章,給大家一些啟發(fā)。


0x1.準(zhǔn)備工作

? ? 工欲善其事,必先利其器。在開始讀卡之前,先準(zhǔn)備好以下的東西:

  • ?一塊讀卡芯片

  • 一臺有NFC功能的手機,和配套的軟件(比如MCT)

  • 一張水卡

  • 一顆耐心(很重要)

? ? 芯片這里我用的是PN532,一塊很便宜的讀卡芯片,某寶上30多就能買到了,都準(zhǔn)備好之后,就可以開始破解了。


0x2.開始破解

? ? 首先,先打開手機的NFC功能,讀取一下這張水卡,會得到以下的結(jié)果。

? ? 可以看到,除了13扇區(qū)之外,其他扇區(qū)都是用的默認(rèn)密鑰,這就給這張卡片帶來了很大的安全風(fēng)險,因為像這種沒有全部加密(半加密)的卡片,是可以利用IC卡漏洞輕松破解的,這里我們來用PN532配套的上位機嘗試破解一下。


結(jié)果如下圖

很輕松就能獲取13扇區(qū)的密鑰

? ? 用了三分鐘,秘鑰就很輕松的被破解出來了,可見這種IC卡的安全性真的不高。不過用漏洞破解不是本文的重點,本文主要分享一個業(yè)余的人破解秘鑰的過程。

0x3.數(shù)據(jù)分析

? ? 通過上面一張卡的數(shù)據(jù),我還是看不出來有什么聯(lián)系,所以我又找了另外一些卡來破解尋找UID和密鑰的關(guān)系。在掃了10+張卡片后,我可以初步知道UID和密鑰的映射關(guān)系。

第一行是UID,第二行是Key

? ? 由于這種卡的KeyB都是相同的,只有KeyA不一樣,所以UID決定的是KeyA,而且KeyA有六位,而UID只有四位,通過上圖,我們可以清晰地看到UID地每一位都決定著Key的一位。

映射關(guān)系

? ?知 道了這個以后,事情就變得簡單了起來(也許吧),只要找出每一位Key的映射關(guān)系,就能破解出密鑰的計算公式。接下來就來講講我破解密碼的過程,在IC卡中,運算關(guān)系無非是加減乘除,異或和取反等等,只要有足夠的數(shù)據(jù),連蒙帶猜,應(yīng)該能推算出來,就拿第一位來說,通過UID和對應(yīng)的Key位進行運算,可以很容易看出是有規(guī)律的。

異或結(jié)果都是1E

? ? 異或結(jié)果都相同,也就是說,由UID XOR 1E == 對應(yīng)的Key,這樣第一個映射關(guān)系就找出來了。第一位key的對應(yīng)關(guān)系被這么容易找出來了,使我備受鼓舞,可開始找第二位Key的對應(yīng)關(guān)系的時候,就遇到了困難。


? ? 作為一名高三學(xué)生,對于這方面并沒有太多的專業(yè)知識,就連異或也是只了解一丟丟。對于密鑰破解,只能是不停的猜測,比如破解第二位Key。

第二位Key

? ??可以看到,第二個數(shù)字是通過 異或 1得到的結(jié)果,而第一位,就顯得沒有規(guī)律了,比如圖中的

60? --->? 81? ??

6B ---> B1?

? ??

? ? 出現(xiàn)了兩個自變量對一個因變量的情況,這就很麻煩了,無法直接地觀察。于是乎,我就把這些數(shù)據(jù)對應(yīng)關(guān)系列出來,得到了以下的對應(yīng)表

看起來毫無規(guī)律的表

? ? 這使得我當(dāng)時破解工作陷入了低迷,,,但是,我沒有放棄,我想:我看不懂的東西,應(yīng)該是我不會的東西,那就只有異或是我沒掌握的了。為此,我開始去鉆研異或,還特意畫了一張異或關(guān)系表

我知道字不好看

? ?正是這張表,為后來的破解工作提供了很大的幫助,通過這張表,我了解到了異或的一些規(guī)律,比如相鄰的兩個數(shù)字對應(yīng)的異或值也是相鄰的。有了這張表,在結(jié)合上面的對應(yīng)關(guān)系,我隱隱約約感覺到Key的計算是和異或有些關(guān)系,于是我開始了頭腦風(fēng)暴。我試了很多種模型,沒有成功,但每次失敗,都讓我感受到離成功更近一步,終于,在一個炎熱的午后(沒錯,南方的十二月還是很熱的),一次英語聽力即將開始的時候,我終于看出來了。


? ?首先,我發(fā)現(xiàn)雖然這些數(shù)沒有直接的異或關(guān)系,但是不同異或結(jié)果之間的絕對距離是不變的,也就是說,只要我根據(jù)結(jié)果的數(shù)據(jù)之間相隔多少距離,可以反推出對應(yīng)的異或的數(shù)字,比如說2往上數(shù)剛好隔了五個單位到8,又隔了三個單位到12(C),又隔了一個單位到14(E),這樣的關(guān)系,讓我聯(lián)想到了凱撒密碼

交錯對應(yīng)

? ? 這樣的結(jié)果,都可以由UID 異或 0 得到結(jié)果,再類比凱撒密碼,我得到了以下的對應(yīng)關(guān)系

左邊是數(shù)據(jù),右邊是猜測

? ? 可以看到,大部分?jǐn)?shù)據(jù)還是符合關(guān)系的,只有一小部分不符合關(guān)系,而這不符合關(guān)系的一小部分?jǐn)?shù)字,都是對應(yīng)著下一位的數(shù)字,也就是說,由于某種原因,導(dǎo)致了數(shù)字進了一位,接下來,只要找出為什么進位就可以了,這是又要進行大數(shù)據(jù)分析了,列表

清晰明了

? ? 通過對比,不難發(fā)現(xiàn),要進位的UID第二位數(shù)都大于8,而不用進位的數(shù)字第二位數(shù)都小于9,至此,這位Key的映射關(guān)系已經(jīng)出來了,接下來要做的,就是用數(shù)據(jù)驗證猜想,為此,我又去找了10+張卡來驗證,發(fā)現(xiàn)都符合我的結(jié)論,可以說,在一定范圍內(nèi),我的猜想是成立的。Key的第二位破解工作圓滿完成!

? ? 剩下的4位Key也可以了這樣類似的方法破解出來的,這里我就不一一贅述了。



0x4.結(jié)果驗證

在破解出了Key的算法后,我用Python寫了一個計算程序

一個很水的算法



? ? 經(jīng)過我已有的數(shù)據(jù)驗證,這個計算方法都是成立的,

成立了
又成立了呢



0x5.后記

? ? 像這種M1卡,也是十幾年前的發(fā)明了。時代日新月異,被破解也是無法避免的事情。只是現(xiàn)在在很多地方,比如校園,都還在大范圍使用這種卡,而且溯源性不強。希望能盡快升級成CPU卡,這樣安全性就高很多了。


? ? 破解是一個很有趣的過程,鍛煉了我的思維能力,也加深了我對IC卡的了解,還讓我懂得了數(shù)學(xué)的重要性。盡管過程很有趣,得到結(jié)果也很能讓人獲得成就感,但破解過程還是充滿著艱辛。光推算秘鑰的過程都寫滿了四張紙。

草 稿 紙



? ? 最后,當(dāng)你登上山頂后,收獲的風(fēng)景遠(yuǎn)比你付出的艱辛多得多。

IC卡秘鑰算法破解的一次嘗試的評論 (共 條)

分享到微博請遵守國家法律
黎川县| 沾化县| 吴江市| 安陆市| 河南省| 内乡县| 蛟河市| 台江县| 县级市| 新郑市| 银川市| 富蕴县| 太和县| 石屏县| 洛宁县| 冕宁县| 宁武县| 鲁山县| 龙泉市| 新化县| 莎车县| 巧家县| 敖汉旗| 淳化县| 蛟河市| 雷波县| 项城市| 綦江县| 马鞍山市| 芦山县| 镇坪县| 湘西| 昌吉市| 漳浦县| 如东县| 大城县| 临潭县| 青海省| 吉林省| 德令哈市| 新营市|