找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1659|回復(fù): 12
打印 上一主題 下一主題
收起左側(cè)

關(guān)于簽名認(rèn)證的一點(diǎn)思考

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:74687 發(fā)表于 2024-1-6 17:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近客戶(hù)又提了一個(gè)需求,這個(gè)需求不好搞,而且因?yàn)槌杀镜土,可能?huì)賣(mài)不上一個(gè)好價(jià)格,但是可以綁上我的板子一起賣(mài)。所以費(fèi)神費(fèi)力地幫客戶(hù)解決這個(gè)問(wèn)題。想了好久,才把一些原理的東西理順一點(diǎn)。

客戶(hù)想將上中下位機(jī)各部件做成一個(gè)整體,想替換成別人的設(shè)備就不能正常工作,要我開(kāi)發(fā)一個(gè)簽名認(rèn)證的設(shè)備。

因?yàn)槲业陌遄犹幱谥杏危B接的是設(shè)備,客戶(hù)的需求,是我的一個(gè)板子要識(shí)別8個(gè)左右的設(shè)備,我想,如果一個(gè)設(shè)備,搞個(gè)加密的EEPROM,嵌進(jìn)設(shè)備里就可以了,但是一個(gè)芯片要帶8個(gè)EEPROM,我好像搞不了。

那就換一個(gè)方案,用個(gè)SOP8的芯片,做個(gè)小板子嵌進(jìn)設(shè)備里,通過(guò)串口與主板通信,當(dāng)時(shí)想將認(rèn)證信息加密后,發(fā)送給我板子的單片機(jī),經(jīng)解密比對(duì)后,判斷設(shè)備是否是我客戶(hù)生產(chǎn)的。因?yàn)槭鞘褂昧舜谕ㄐ,發(fā)送的數(shù)據(jù)都是可以被截取,別人也可以偽造一個(gè)一模一樣的數(shù)據(jù)發(fā)送過(guò)來(lái)。

所以問(wèn)題就卡在發(fā)送的這個(gè)數(shù)據(jù)是什么,如果是序列號(hào),根本阻止不了別人偽造密文。在這個(gè)問(wèn)題上困擾了很久,后來(lái)在研究HMAC算法的時(shí)候,有人介紹過(guò)可以使用時(shí)間戳,可以防止別人偽造我們加密的信息。終于解決了我的問(wèn)題了,如果別人通過(guò)監(jiān)聽(tīng)我的串口通信,截取的信息因?yàn)槭羌用艿膶?shí)時(shí)時(shí)間戳,等他寫(xiě)好程序,再發(fā)給我上位機(jī)的時(shí)候,我板子芯片就能輕松判斷這是一個(gè)偽造的數(shù)據(jù),因?yàn)樗且粋(gè)過(guò)時(shí)的時(shí)間戳。

所以,簽名認(rèn)證中一個(gè)重要的內(nèi)容,加密信息的選取最好是選時(shí)間戳,然后經(jīng)過(guò)HMAC算法加密后,再發(fā)給驗(yàn)證芯片,經(jīng)解密后再驗(yàn)證芯片實(shí)時(shí)時(shí)間戳進(jìn)行比對(duì),如果差太多,肯定是偽造的,注意這里比對(duì)的方法是兩個(gè)時(shí)間戳相減的絕對(duì)值要小于一個(gè)范圍,才符合要求。這個(gè)范圍一般是通信及加、解密過(guò)程中的耗時(shí)。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2024-1-6 19:33 | 只看該作者
最后不對(duì)頭吧?時(shí)間戳小于某個(gè)值才算對(duì),那么中間發(fā)生點(diǎn)什么意外,比如電纜接觸不良你的設(shè)備不就掛了?
回復(fù)

使用道具 舉報(bào)

板凳
ID:1059989 發(fā)表于 2024-1-7 08:22 | 只看該作者
可以這樣:上位機(jī)發(fā)送一段原始數(shù)據(jù)給單片機(jī),單片機(jī)對(duì)這個(gè)原始數(shù)據(jù)進(jìn)行加密,形成密文,然后把密文傳給上位機(jī),上位機(jī)
回復(fù)

使用道具 舉報(bào)

地板
ID:1059989 發(fā)表于 2024-1-7 08:28 | 只看該作者
可以這樣:
1. 上位機(jī)使用時(shí)間戳作為明文,發(fā)送明文數(shù)據(jù)給單片機(jī)。
2. 單片機(jī)對(duì)明文數(shù)據(jù)加密為密文,把密文發(fā)給上位機(jī)。
3. 上位機(jī)對(duì)明文加密為密文,和單片機(jī)發(fā)過(guò)來(lái)的密文比對(duì)是否一致。
因?yàn)闀r(shí)間戳是動(dòng)態(tài)的,不是固定值,所以即使被截取到,也無(wú)法直接使用。除非破解了加密算法。
這樣不用比對(duì)時(shí)間戳的差值,比較可靠。
還可以同時(shí)內(nèi)置幾種加密算法,每次通訊時(shí)隨機(jī)選一種加密算法,在通訊協(xié)議里指明是哪種加密算法,雙方用同一種加密算法就行。這樣更安全,更難破解。
回復(fù)

使用道具 舉報(bào)

5#
ID:74687 發(fā)表于 2024-1-7 10:36 | 只看該作者
FrankJi 發(fā)表于 2024-1-7 08:22
可以這樣:上位機(jī)發(fā)送一段原始數(shù)據(jù)給單片機(jī),單片機(jī)對(duì)這個(gè)原始數(shù)據(jù)進(jìn)行加密,形成密文,然后把密文傳給上位 ...

密文傳輸,都是可以監(jiān)聽(tīng)讀取出來(lái)的,然后就可偽造一個(gè)一樣的密文。
回復(fù)

使用道具 舉報(bào)

6#
ID:74687 發(fā)表于 2024-1-7 10:37 | 只看該作者
Hephaestus 發(fā)表于 2024-1-6 19:33
最后不對(duì)頭吧?時(shí)間戳小于某個(gè)值才算對(duì),那么中間發(fā)生點(diǎn)什么意外,比如電纜接觸不良你的設(shè)備不就掛了?

這種掛了就要修電纜
回復(fù)

使用道具 舉報(bào)

7#
ID:1059989 發(fā)表于 2024-1-7 11:29 | 只看該作者
zyftank 發(fā)表于 2024-1-7 10:36
密文傳輸,都是可以監(jiān)聽(tīng)讀取出來(lái)的,然后就可偽造一個(gè)一樣的密文。

之前回復(fù)時(shí),沒(méi)輸完就發(fā)出去了。
上位機(jī)用時(shí)間戳做原始數(shù)據(jù),發(fā)給單片機(jī)(可變換后發(fā)給單片機(jī)更安全),單片機(jī)加密后發(fā)給上位機(jī),上位機(jī)也對(duì)時(shí)間戳加密為密文,檢查和單片機(jī)發(fā)來(lái)的密文是否相同。因?yàn)闀r(shí)間戳是動(dòng)態(tài)的,不是固定值,每次密文都不同,監(jiān)聽(tīng)到也沒(méi)用,除非破解加密算法。
回復(fù)

使用道具 舉報(bào)

8#
ID:476415 發(fā)表于 2024-1-7 12:08 | 只看該作者
好的點(diǎn)子。
1、兩端的時(shí)間如何能保證統(tǒng)一?
2、防復(fù)制問(wèn)題怎么解決:別人買(mǎi)一個(gè)你客戶(hù)的設(shè)備,然后實(shí)時(shí)截獲他們的認(rèn)證階段通信,然后再?gòu)?fù)刻到其它設(shè)備的認(rèn)證階段。
回復(fù)

使用道具 舉報(bào)

9#
ID:276663 發(fā)表于 2024-1-8 09:31 | 只看該作者
isyido 發(fā)表于 2024-1-7 12:08
好的點(diǎn)子。
1、兩端的時(shí)間如何能保證統(tǒng)一?
2、防復(fù)制問(wèn)題怎么解決:別人買(mǎi)一個(gè)你客戶(hù)的設(shè)備,然后實(shí)時(shí)截 ...

1.時(shí)間應(yīng)該是有一個(gè)提供參考時(shí)間就行了
2.認(rèn)證貫穿整個(gè)使用過(guò)程,隨機(jī)增加二次驗(yàn)證
回復(fù)

使用道具 舉報(bào)

10#
ID:123036 發(fā)表于 2024-1-8 09:55 | 只看該作者
PC軟件有一萬(wàn)種破解方法
回復(fù)

使用道具 舉報(bào)

11#
ID:74687 發(fā)表于 2024-1-8 10:03 | 只看該作者
isyido 發(fā)表于 2024-1-7 12:08
好的點(diǎn)子。
1、兩端的時(shí)間如何能保證統(tǒng)一?
2、防復(fù)制問(wèn)題怎么解決:別人買(mǎi)一個(gè)你客戶(hù)的設(shè)備,然后實(shí)時(shí)截 ...

1.兩端使用一個(gè)時(shí)鐘芯片實(shí)現(xiàn)時(shí)間戳同步。

2.復(fù)制的密文因?yàn)闀r(shí)間戳是固定,你不懂加密規(guī)則,不知道修改,這個(gè)時(shí)間就是死的,發(fā)送回來(lái)經(jīng)解密后,與實(shí)時(shí)時(shí)間戳一對(duì)比就有很大差異,時(shí)間越長(zhǎng),差異越大。
回復(fù)

使用道具 舉報(bào)

12#
ID:74687 發(fā)表于 2024-1-8 10:07 | 只看該作者
FrankJi 發(fā)表于 2024-1-7 11:29
之前回復(fù)時(shí),沒(méi)輸完就發(fā)出去了。
上位機(jī)用時(shí)間戳做原始數(shù)據(jù),發(fā)給單片機(jī)(可變換后發(fā)給單片機(jī)更安全), ...

你的理解和我想的差不多,因?yàn)閱纹\(yùn)算能力有限,我準(zhǔn)備采用AES加密,然后對(duì)加密的密文調(diào)整順序,并插入隨機(jī)數(shù),這樣就更難破解了。
回復(fù)

使用道具 舉報(bào)

13#
ID:883242 發(fā)表于 2024-1-8 12:19 | 只看該作者
zyftank 發(fā)表于 2024-1-7 10:37
這種掛了就要修電纜

仔細(xì)想想你的認(rèn)證邏輯,這時(shí)候修電纜已經(jīng)來(lái)不及了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表