在线激活流程研究, 芯片杂烩, 软件滤波算法
在線激活流程研究
在世界范圍內(nèi),軟件的盜版問(wèn)題都是個(gè)令程序員苦惱的問(wèn)題。相應(yīng)的,很多反盜版的措施也就應(yīng)運(yùn)而生。其中以輸入序列號(hào)、激活碼的產(chǎn)品激活策略應(yīng)用最為廣泛。本文就從流程的角度粗略的描述一下這個(gè)過(guò)程。之所以文章的題目沒(méi)有寫(xiě)成“算法研究”,實(shí)在是因?yàn)槲业乃惴ㄌ肆恕?/p>
首先當(dāng)然是老規(guī)矩,回顧歷史。
1.黑暗時(shí)代
最早采用軟件注冊(cè)流程的,并不是公認(rèn)的被盜版大戶(hù)微軟。微軟早期的銷(xiāo)售策略是向PC廠商按照CPU數(shù)量收費(fèi)。在linux出現(xiàn)之前,能在Intel x86上運(yùn)行的OS基本只有MS的Dos。所以在最初階段,廠商雖然對(duì)這種被戲稱(chēng)為“微軟稅”的收費(fèi)頗有些看法,但卻不得不接受。因此,Dos是沒(méi)有反盜版策略的,因?yàn)橄嚓P(guān)的錢(qián),已經(jīng)由廠商支付了。這種收費(fèi)模式和今天的GPS的收費(fèi)模式類(lèi)似,美國(guó)軍方只向生產(chǎn)GPS芯片的公司收費(fèi),而全球只有數(shù)家公司獲得技術(shù)可以生產(chǎn)該芯片。而這筆費(fèi)用對(duì)一般消費(fèi)者來(lái)說(shuō)是透明的。
這種情況一直延續(xù)到90年代初,當(dāng)其他的Dos替代品出現(xiàn)之后,微軟的這種做法便有壟斷之嫌。在經(jīng)歷了一系列的法律官司之后,其銷(xiāo)售策略逐步過(guò)度到了今天的狀況。但正是這七八年的功夫,奠定了微軟的王朝霸業(yè)。
所以第一批采用軟件注冊(cè)流程的,是其他的商業(yè)公司或者共享軟件的作者,其中尤以后者居多。因?yàn)檫@個(gè)時(shí)代PC還是很昂貴的奢侈品,雖然名為個(gè)人電腦,但擁有的人卻并不多。很少有大公司為PC寫(xiě)代碼。
早期的軟件注冊(cè)流程通常是這樣的:
用戶(hù)將錢(qián)交給共享軟件作者時(shí),會(huì)從他手里獲得密碼,然后輸入密碼,即可運(yùn)行。在我印象中,采用這種方法最典型的是當(dāng)時(shí)的一款Dos游戲——軒轅劍外轉(zhuǎn):楓之舞。游戲開(kāi)始前,你需要完成一個(gè)拼圖游戲,回答程序隨機(jī)提問(wèn)的三塊拼圖的顏色。而答案就在每個(gè)正版用戶(hù)都會(huì)獲得的一張彩色圖片上。
這種方法顯然是相當(dāng)不安全的。如果這張圖被人泄露了,那整個(gè)機(jī)制就會(huì)失去作用。事實(shí)上,當(dāng)時(shí)就有同學(xué)靠強(qiáng)記的方法,完全背下了所有的拼圖顏色。用窮舉方式破解,運(yùn)算量也不大。只不過(guò)它采用隨機(jī)提問(wèn)的方式,避免了人腦的窮舉而已。
2.封建時(shí)代
一元密碼,玩到楓之舞的地步,基本上也就黔驢技窮了。于是類(lèi)似于用戶(hù)名、密碼之類(lèi)的二元密碼出現(xiàn)了。
二元密碼從本質(zhì)上來(lái)說(shuō)可以表示如下:
密碼P = F(用戶(hù)名U)
F表示相關(guān)的算法。只有符合F算法的P和U,才能通過(guò)程序的驗(yàn)證。如果對(duì)U做一些限制和變換,防止破解者的明文窮舉攻擊,以及F足夠復(fù)雜的話,這種方法的安全性還是不錯(cuò)的,至少在不知道匹配的P和U的情況下,窮舉已經(jīng)不太可行了。即使是現(xiàn)在,絕大多數(shù)的軟件注冊(cè),仍然采用這種方法。但這種方法也有缺點(diǎn),首先無(wú)法防止一個(gè)軟件拷貝,在多臺(tái)機(jī)器上使用。其次只要有一對(duì)合法的P和U被泄露,這個(gè)機(jī)制就被破了。
3.城堡時(shí)代
現(xiàn)在比較流行的在線注冊(cè)方法,實(shí)際上是一種三元密碼。典型的就是windows的在線激活方式。在這種方式下,用戶(hù)獲得正版軟件的時(shí)候,會(huì)得到一個(gè)序列號(hào)。輸入序列號(hào)之后,程序會(huì)生成能標(biāo)識(shí)用戶(hù)機(jī)器的特征碼,這個(gè)碼通常稱(chēng)作“注冊(cè)碼”。程序?qū)⑿蛄刑?hào)和注冊(cè)碼發(fā)送到服務(wù)器,如果是合法用戶(hù)的話,會(huì)返回一個(gè)激活碼,從而完成認(rèn)證過(guò)程。這個(gè)過(guò)程也可以通過(guò)電話等手工方式完成。
具體的流程如下圖所示:
1)序列號(hào)的生成。序列號(hào)肯定是要包含產(chǎn)品信息的,通常將這種不變的東西叫做特征值。但是序列號(hào)不是一個(gè)而是一批,如何生成呢?這就需要隨機(jī)數(shù)的介入了。舉個(gè)最簡(jiǎn)單的例子,假設(shè)我們使用橢圓方程來(lái)創(chuàng)建序列號(hào),那么就可以將特征值定為長(zhǎng)軸a和短軸b,使用隨機(jī)數(shù)作為x(當(dāng)然這里的x可能存在一定的有效定義域),根據(jù)方程生成相對(duì)應(yīng)的y。我們就可以將y當(dāng)作序列號(hào)了。只要x符合一定的規(guī)則,不是連續(xù)的,那么生成的y也就不是連續(xù)的。換句話說(shuō),不是隨便一個(gè)號(hào)都是合法的序列號(hào)。這個(gè)步驟通常是用專(zhuān)門(mén)的序列號(hào)生成工具完成的。
2)注冊(cè)碼的生成。選取能夠唯一標(biāo)識(shí)用戶(hù)的設(shè)備硬件信息,如網(wǎng)卡的MAC號(hào)、硬盤(pán)編號(hào)、手機(jī)IMEI號(hào)等。通過(guò)算法F2,生成注冊(cè)碼。為了防止對(duì)注冊(cè)碼編碼方式的破解,可以讓序列號(hào)也參與計(jì)算,這樣即使同一機(jī)器上,序列號(hào)不同,注冊(cè)碼也不同。
3)激活碼的生成與驗(yàn)證。服務(wù)器端將激活碼和注冊(cè)碼,通過(guò)算法F3,生成激活碼。由于引入了服務(wù)器,我們可以很容易的知道某個(gè)序列號(hào)是否已經(jīng)被使用了,從而有效的防止一號(hào)多用。程序通過(guò)算法F4,從激活碼中獲得特征值,如果該值與該產(chǎn)品的特征值一致的話。整個(gè)驗(yàn)證步驟就結(jié)束了。
4.帝王時(shí)代
道和魔的斗爭(zhēng)永無(wú)止境。但是隨著軟件免費(fèi),服務(wù)收費(fèi)模式的興起。越來(lái)越多的軟件開(kāi)始放棄使用反盜版措施。所以或許這個(gè)帝王時(shí)代也就是故事的終點(diǎn)了。
芯片雜燴
我接觸到的芯片分門(mén)別類(lèi)羅列如下:
| Low MCU(追求低價(jià)) | LPC4088 | NXP |
| Hi MCU(追求性能) | ASAP1826T | alphascale |
| MDM9215M | Qualcomm | |
| Wifi Low Power SOC | QCA4002 | Qualcomm Atheros |
| RTL8711AF | Realtek | |
| ESP8266 | Espressif(樂(lè)鑫) | |
| BLE SOC | QN9021 | NXP |
| Wifi SOC | RTL8881AB | Realtek |
| MT7620A | MTK | |
| Nand Flash | MT29F4G08ABBEAH4 | Micron Technology |
| HY27UF081G2A | Hynix | |
| Wifi Audio | RTL8871AM | Realtek |
| RT5350F | Ralink | |
| AR9331 | Qualcomm Atheros | |
| ATV3603 | 炬力 | |
| Audio Codec | WM8728 | Wolfson |
| TAS5731M | Texas Instruments | |
| MAX5556 | MAXIM |
軟件濾波算法
限幅濾波法
方法:根據(jù)經(jīng)驗(yàn)判斷,確定兩次采樣允許的最大偏差值(設(shè)為A),每次檢測(cè)到新值時(shí)判斷:如果本次值與上次值之差<=A,則本次值有效,如果本次值與上次值之差>A,則本次值有效,放棄本次值,用上次值代替本次值。
優(yōu)點(diǎn):能有效克服因偶然要素惹起的脈沖干擾。
缺點(diǎn):無(wú)法抑制那種周期性的干擾,平滑度差。
中位值濾波法
方法:連續(xù)采樣N次(N取奇數(shù)),把N次采樣值按大小陳列,取中位值(第
(N?1)2 個(gè)值)為本次有效值。優(yōu)點(diǎn):能有效克服因偶然要素惹起的波動(dòng)干擾,對(duì)變化緩慢的被測(cè)參數(shù)有良好的濾波效果。
缺點(diǎn):對(duì)快速變化的參數(shù)不宜。
算術(shù)平均濾波法
方法:連續(xù)取N個(gè)采樣值進(jìn)行算術(shù)平均運(yùn)算,N值較大時(shí):信號(hào)平滑度較高,但靈敏度較低;N值較小時(shí):信號(hào)平滑度較低,但靈敏度較高。
優(yōu)點(diǎn):適用于對(duì)普通具有隨機(jī)干擾的信號(hào)進(jìn)行濾波,這樣信號(hào)的特點(diǎn)是有一個(gè)平均值,信號(hào)在某一數(shù)值范圍附近上下波動(dòng)。
缺點(diǎn):對(duì)于測(cè)量速度較慢或要求數(shù)據(jù)計(jì)算速度較快的實(shí)時(shí)控制不適用,比較浪費(fèi)RAM 。
遞推平均濾波法(又稱(chēng)滑動(dòng)平均濾波法)
方法:把連續(xù)取的N個(gè)采樣值看成一個(gè)隊(duì)列,隊(duì)列的長(zhǎng)度固定為N,每次采樣到一個(gè)新數(shù)據(jù)放入隊(duì)尾,并扔掉原來(lái)隊(duì)首的一次數(shù)據(jù)(先進(jìn)先出) 。把隊(duì)列中的N個(gè)數(shù)據(jù)進(jìn)行算術(shù)平均運(yùn)算,就可獲得新的濾波結(jié)果。
優(yōu)點(diǎn):對(duì)周期性干擾有良好的抑制效用,平滑度高,適用于高頻振蕩系統(tǒng)。
缺點(diǎn):靈敏度低,對(duì)偶然出現(xiàn)的脈沖性干擾的抑制效用較差,不易消弭由于脈沖干擾所引起的采樣值偏差,不適用于脈沖干擾比較嚴(yán)重的場(chǎng)合,比較浪費(fèi)RAM。
中位值平均濾波法(又稱(chēng)防脈沖干擾平均濾波法)
方法:相當(dāng)于“中位值濾波法”+“算術(shù)平均濾波法”,連續(xù)采樣N個(gè)數(shù)據(jù),去掉一個(gè)最大值和一個(gè)最小值,然后計(jì)算N-2個(gè)數(shù)據(jù)的算術(shù)平均值。。
優(yōu)點(diǎn):融合了兩種濾波法的優(yōu)點(diǎn),對(duì)于偶然出現(xiàn)的脈沖性干擾,可消弭由于脈沖干擾所惹起的采樣值偏差。
缺點(diǎn):測(cè)量速度較慢,和算術(shù)平均濾波法一樣,比較浪費(fèi)RAM。
限幅平均濾波法
方法:相當(dāng)于“限幅濾波法”+“遞推平均濾波法”,每次采樣到的新數(shù)據(jù)先進(jìn)行限幅處理,再送入隊(duì)列進(jìn)行遞推平均濾波處理。
優(yōu)點(diǎn):融合了兩種濾波法的優(yōu)點(diǎn),對(duì)于偶然出現(xiàn)的脈沖性干擾,可消弭由于脈沖干擾所惹起的采樣值偏差。
缺點(diǎn):比較浪費(fèi)RAM。
一階滯后濾波法
方法:取a=0~1,本次濾波結(jié)果=(1-a)本次采樣值+a上次濾波結(jié)果。
優(yōu)點(diǎn):對(duì)周期性干擾具有良好的抑制造用,適用于波動(dòng)頻率較高的場(chǎng)合。
缺點(diǎn):相位滯后,靈敏度低,滯后程度取決于a值大小,不能消弭濾波頻率高于采樣頻率的1/2的干擾信號(hào)。
加權(quán)遞推平均濾波法
方法:這是對(duì)遞推平均濾波法的改進(jìn),即不同時(shí)刻的數(shù)據(jù)加以不同的權(quán),通常是,越接近現(xiàn)時(shí)刻的材料,權(quán)取得越大,給予新采樣值的權(quán)系數(shù)越大,則靈敏度越高,但信號(hào)平滑度越低。
優(yōu)點(diǎn):適用于有較大純滯后事件常數(shù)的對(duì)象和采樣周期較短的系統(tǒng)。
缺點(diǎn):對(duì)于純滯后事件常數(shù)較小,采樣周期較長(zhǎng),變化緩慢的信號(hào),不能迅速反應(yīng)系統(tǒng)當(dāng)前所受干擾的嚴(yán)重程度,濾波效果差。
消抖濾波法
方法:設(shè)置一個(gè)濾波計(jì)數(shù)器,將每次采樣值與當(dāng)前有效值比較:如果采樣值等于當(dāng)前有效值,則計(jì)數(shù)器清零。如果采樣值不等于當(dāng)前有效值,則計(jì)數(shù)器+1,并判斷計(jì)數(shù)器能否>=下限N(溢出),如果計(jì)數(shù)器溢出,則將本次值交換當(dāng)前有效值,并清計(jì)數(shù)器。
優(yōu)點(diǎn):對(duì)于變化緩慢的被測(cè)參數(shù)有較好的濾波效果,可避免在臨界值附近控制器的反復(fù)開(kāi)/關(guān)跳動(dòng)或顯示器上數(shù)值抖動(dòng)。
缺點(diǎn):對(duì)于快速變化的參數(shù)不宜,如果在計(jì)數(shù)器溢出的那一次采樣到的值恰好是干擾值,則會(huì)將干擾值當(dāng)作有效值導(dǎo)入系統(tǒng)。
限幅消抖濾波法
方法:相當(dāng)于“限幅濾波法”+“消抖濾波法”,先限幅后消抖。
優(yōu)點(diǎn):承繼了“限幅”和“消抖”的優(yōu)點(diǎn),改進(jìn)了“消抖濾波法”中的某些缺陷,避免將干擾值導(dǎo)入系統(tǒng)。
缺點(diǎn):對(duì)于快速變化的參數(shù)不宜。
IIR數(shù)字濾波
方法:確定信號(hào)帶寬,濾之。
Y(n)=a1?Y(n?1)+a2?Y(n?2)+...+ak?Y(n?k)+
b0?X(n)+b1?X(n?1)+b2?X(n?2)+...+bk?X(n?k)
B優(yōu)點(diǎn):高通,低通,帶通,帶阻任意。design簡(jiǎn)單(用matlab)。
C缺點(diǎn):運(yùn)算量大。
總結(jié)
以上是生活随笔為你收集整理的在线激活流程研究, 芯片杂烩, 软件滤波算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: GStreamer(二)
- 下一篇: 硬件杂谈