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