A. 加密晶元的應用
傳統的加密晶元,都是採用演算法認證的方案,他們所鼓吹的是加密演算法如何復雜,如何難以破解,卻沒有考慮到演算法認證方案本身存在極大的安全漏洞。我們清楚的知道,單片機是一個不安全的載體,可以說對盜版商來講,是完全透明的也不 為過,做演算法認證,勢必要在單片機內部提前寫入密鑰或密碼,每次認證後給單片機一個判斷標志,作為單片機執行的一個判斷依據,那麼盜版商就可以輕松的抓住 這一點進行攻擊,模擬給出單片機一個信號,輕松繞過加密晶元,從而達到破解的目的。如果說,要破解晶元內部數據,那麼通過傳統的剖片、紫外光、調試埠、 能量分析等多種手段,都可以破解。 [4]
採用智能卡晶元平台的加密晶元,本身就可以有效防護這些攻擊手段,將MCU中的部分代碼或演算法植入到加密晶元內部,在加密晶元內部來執行這些程序,使得加密晶元內部的程序代碼成為整個MCU程序的一部分,從而可以達到加密 的目的,因為MCU內部的程序不完整,即便被盜版了,由於缺少關鍵代碼,也無法進行復制,那麼選擇什麼樣的代碼或程序,放入到加密晶元內部,就是考驗 MCU編程者的功力了,盡可能的多植入程序,盡可能的增加演算法的強度,就可以有效防止被破譯的可能。
加密晶元的安全性是取決於晶元自身的安全,同時還取決於加密方案的可靠性。部分公司會給廣大客戶以誤導,過分強調什麼演算法,無論採用對稱演算法 3DES 、AES [5] 還是採用非對稱演算法RSA ECC等,甚至採用國密辦演算法SM2 SM4等等,都是對防抄板來說,是沒有太多的用處的。
對於方案設計公司,是無法使用SM1等國密辦演算法的,銷售國密辦演算法的廠家必須有銷售許可證,這一點是很多方案公司不可能有的,同時認證的方案本身就存在安全隱患,盜版商是不會去破解什麼演算法,而是從加密方案的漏洞去入手,去攻破,所以說,我們一直強調,加密方案的設計是非常重要的環節,不能簡單的只看到加密晶元的自身的安全性,最重要的是密鑰管理環節。
目前已知各種公開的加密演算法都是比較安全的(當然已被破解的幾種演算法除外,如:SHA1,DES等),整個加密體系中最薄弱的環節在於密鑰的生成、使用和管理。無論使用對稱、非對稱、哈希散列各種演算法,密鑰的管理是最終的難題,目前通常的方式是將私鑰或者秘密信息存儲在非易失性存儲器中,這種方式危害極大,不具備高安全性。(具體請參考上面「安全性」內容)
由於PUF的不可克隆性、防篡改和輕量級等屬性,使用PUF用於認證是一種非常有用的安全技術,是一種對現有安全加密機制的創新性技術。PUF輸出的不可直接讀取的唯一值作為私鑰,配合非對稱加密硬體引擎、隨機數發生器、晶元ROM中唯一的unique ID,可以組成一個嚴密的安全加密裝置。
PUF通常用集成電路來實現,通常用於對安全性要求較高的應用中。目前已有眾多知半導體名企業開始提供基於PUF的加密IP技術和安全晶元。
B. 請問8位單片機如何實現RSA演算法
放棄吧 我的老師在手機上做過 RSA的密鑰二進制都是上百位的啊 生成密鑰 需要生成大素數 大數取模 這些都很耗時間 大概生成密鑰 都要十幾分鍾(雖然是幾年前)
單片機太慢了 推薦你用流密碼 RC4 那個很快 安全性也不錯
C. dss加密演算法
對稱性加密演算法:對稱式加密就是加密和解密使用同一個密鑰。信息接收雙方都需事先知道密匙和加解密演算法且其密匙是相同的,之後便是對數據進行加解密了。對稱加密演算法用來對敏感數據等信息進行加密。
非對稱演算法:非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為"公鑰"和"私鑰",它們兩個必需配對使用,否則不能打開加密文件。發送雙方A,B事先均生成一堆密匙,然後A將自己的公有密匙發送給B,B將自己的公有密匙發送給A,如果A要給B發送消 息,則先需要用B的公有密匙進行消息加密,然後發送給B端,此時B端再用自己的私有密匙進行消息解密,B向A發送消息時為同樣的道理。
散列演算法:散列演算法,又稱哈希函數,是一種單向加密演算法。在信息安全技術中,經常需要驗證消息的完整性,散列(Hash)函數提供了這一服務,它對不同長度的輸入消息,產生固定長度的輸出。這個固定長度的輸出稱為原輸入消息的"散列"或"消息摘要"(Message digest)。散列演算法不算加密演算法,因為其結果是不可逆的,既然是不可逆的,那麼當然不是用來加密的,而是簽名。
對稱性加密演算法有:AES、DES、3DES
用途:對稱加密演算法用來對敏感數據等信息進行加密
DES(Data Encryption Standard):數據加密標准,速度較快,適用於加密大量數據的場合。
3DES(Triple DES):是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;AES是一個使用128為分組塊的分組加密演算法,分組塊和128、192或256位的密鑰一起作為輸入,對4×4的位元組數組上進行操作。眾所周之AES是種十分高效的演算法,尤其在8位架構中,這源於它面向位元組的設計。AES 適用於8位的小型單片機或者普通的32位微處理器,並且適合用專門的硬體實現,硬體實現能夠使其吞吐量(每秒可以到達的加密/解密bit數)達到十億量級。同樣,其也適用於RFID系統。
非對稱性演算法有:RSA、DSA、ECC
RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的。RSA在國外早已進入實用階段,已研製出多種高速的RSA的專用晶元。
DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標准),嚴格來說不算加密演算法。
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。ECC和RSA相比,具有多方面的絕對優勢,主要有:抗攻擊性強。相同的密鑰長度,其抗攻擊性要強很多倍。計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。存儲空間佔用小。ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密演算法在IC卡上的應用具有特別重要的意義。帶寬要求低。當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用於短消息時ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網路領域具有廣泛的應用前景。
散列演算法(簽名演算法)有:MD5、SHA1、HMAC
用途:主要用於驗證,防止信息被修。具體用途如:文件校驗、數字簽名、鑒權協議
MD5:MD5是一種不可逆的加密演算法,目前是最牢靠的加密演算法之一,尚沒有能夠逆運算的程序被開發出來,它對應任何字元串都可以加密成一段唯一的固定長度的代碼。
SHA1:是由NISTNSA設計為同DSA一起使用的,它對長度小於264的輸入,產生長度為160bit的散列值,因此抗窮舉(brute-force)性更好。SHA-1設計時基於和MD4相同原理,並且模仿了該演算法。SHA-1是由美國標准技術局(NIST)頒布的國家標准,是一種應用最為廣泛的Hash函數演算法,也是目前最先進的加密技術,被政府部門和私營業主用來處理敏感的信息。而SHA-1基於MD5,MD5又基於MD4。
HMAC:是密鑰相關的哈希運算消息認證碼(Hash-based Message Authentication Code),HMAC運算利用哈希演算法,以一個密鑰和一個消息為輸入,生成一個消息摘要作為輸出。也就是說HMAC是需要一個密鑰的。所以,HMAC_SHA1也是需要一個密鑰的,而SHA1不需要。
其他常用演算法:
Base64:其實不是安全領域下的加密解密演算法,只能算是一個編碼演算法,通常用於把二進制數據編碼為可寫的字元形式的數據,對數據內容進行編碼來適合傳輸(可以對img圖像編碼用於傳輸)。這是一種可逆的編碼方式。編碼後的數據是一個字元串,其中包含的字元為:A-Z、a-z、0-9、+、/,共64個字元(26 + 26 + 10 + 1 + 1 = 64,其實是65個字元,「=」是填充字元。Base64要求把每三個8Bit的位元組轉換為四個6Bit的位元組(3*8 = 4*6 = 24),然後把6Bit再添兩位高位0,組成四個8Bit的位元組,也就是說,轉換後的字元串理論上將要比原來的長1/3。原文的位元組最後不夠3個的地方用0來補足,轉換時Base64編碼用=號來代替。這就是為什麼有些Base64編碼會以一個或兩個等號結束的原因,中間是不可能出現等號的,但等號最多隻有兩個。其實不用"="也不耽誤解碼,之所以用"=",可能是考慮到多段編碼後的Base64字元串拼起來也不會引起混淆。)
Base64編碼是從二進制到字元的過程,像一些中文字元用不同的編碼轉為二進制時,產生的二進制是不一樣的,所以最終產生的Base64字元也不一樣。例如"上網"對應utf-8格式的Base64編碼是"5LiK572R", 對應GB2312格式的Base64編碼是"yc/N+A=="。
標準的Base64並不適合直接放在URL里傳輸,因為URL編碼器會把標准Base64中的「/」和「+」字元變為形如「%XX」的形式,而這些「%」號在存入資料庫時還需要再進行轉換,因為ANSI SQL中已將「%」號用作通配符。
為解決此問題,可採用一種用於URL的改進Base64編碼,它不在末尾填充'='號,並將標准Base64中的「+」和「/」分別改成了「-」和「_」,這樣就免去了在URL編解碼和資料庫存儲時所要作的轉換,避免了編碼信息長度在此過程中的增加,並統一了資料庫、表單等處對象標識符的格式。
另有一種用於正則表達式的改進Base64變種,它將「+」和「/」改成了「!」和「-」,因為「+」,「*」以及前面在IRCu中用到的「」在正則表達式中都可能具有特殊含義。
此外還有一些變種,它們將「+/」改為「_-」或「._」(用作編程語言中的標識符名稱)或「.-」(用於XML中的Nmtoken)甚至「_:」(用於XML中的Name)。
HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL(SSL使用40 位關鍵字作為RC4流加密演算法,這對於商業信息的加密是合適的。),因此加密的詳細內容就需要SSL。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認埠及一個加密/身份驗證層(在HTTP與TCP之間),提供了身份驗證與加密通訊方法,現在它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面。它的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。
項目應用總結:
1. 加密演算法是可逆的,用來對敏感數據進行保護。散列演算法(簽名演算法、哈希演算法)是不可逆的,主要用於身份驗證。
2. 對稱加密演算法使用同一個密匙加密和解密,速度快,適合給大量數據加密。對稱加密客戶端和服務端使用同一個密匙,存在被抓包破解的風險。
3. 非對稱加密演算法使用公鑰加密,私鑰解密,私鑰簽名,公鑰驗簽。安全性比對稱加密高,但速度較慢。非對稱加密使用兩個密匙,服務端和客戶端密匙不一樣,私鑰放在服務端,黑客一般是拿不到的,安全性高。
4. Base64不是安全領域下的加解密演算法,只是一個編碼演算法,通常用於把二進制數據編碼為可寫的字元形式的數據,特別適合在http,mime協議下的網路快速傳輸數據。UTF-8和GBK中文的Base64編碼結果是不同的。採用Base64編碼不僅比較簡短,同時也具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到,但這種方式很初級,很簡單。Base64可以對圖片文件進行編碼傳輸。
5. https協議廣泛用於萬維網上安全敏感的通訊,例如交易支付方面。它的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。
6. 大量數據加密建議採用對稱加密演算法,提高加解密速度;小量的機密數據,可以採用非對稱加密演算法。在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的密鑰,然後用對稱加密演算法加密數據,這樣我們就集成了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點。
7. MD5標准密鑰長度128位(128位是指二進制位。二進制太長,所以一般都改寫成16進制,每一位16進制數可以代替4位二進制數,所以128位二進制數寫成16進制就變成了128/4=32位。16位加密就是從32位MD5散列中把中間16位提取出來);sha1標准密鑰長度160位(比MD5摘要長32位),Base64轉換後的字元串里論上將要比原來的長1/3。
D. 軟體加密的安全隱患
但是採用軟加密方式,有一些安全隱患:
(1)、密鑰的管理很復雜,這也是安全API的實現的一個難題,從目前的幾個API產品來講,密鑰分配協議均有缺陷;
(2)、使用軟體加密,因為是在用戶的計算機內部進行,容易給攻擊者採用分析程序進行跟蹤、反編譯等手段進行攻擊;
硬加密:
加密卡:專門用作對數據加密加速用,一般應用在網路伺服器對HTTPS進行加速,免卻佔用主機處理器的運算資源,一眾企業計算機廠商都有提供。
加密鎖:目前一般採用硬體加密鎖加軟體相結合的方式,單片機加密鎖目前正在逐步淘汰,這里就不多說了,現在說一下智能卡加密鎖,這是目前的主流技術產品:
智能卡加密鎖是中國人獨創的,也是在外殼加密後,中國人在世界的軟保領域中做出的最大貢獻,目前智能卡加密鎖的相關專利都在中國人手上,在中國市場,智能卡加密鎖占據了整個市場約70%的市場份額。
(1)智能卡晶元是為安全而設計的,一般應用於安全領域,比如政府、軍隊及金融領域,要想做硬復制及克隆基本不可能,而單片機加密鎖卻非常容易。衡量智能卡晶元的標准,首先要看是否擁有國際的標准認證,就是智能卡晶元唯一的安全認證-EAL系列認證,如果沒有,軟體開發商需要慎重考慮;
(2)重要軟體代碼完全移植到硬體中運行,在軟體端不留副本,黑客無法通過跟蹤分析及反編譯的手段做破解;
(3)強大的運算處理能力,可以運算代碼及復雜的公開演算法(RSA、TDES等)。硬體支持浮點運算、數學函數、安全服務、文件標准輸入和輸出等。
(4)強大的代碼及數據儲存能力,不再是單片機時代幾百位元組了,而是幾十K了;可容納近萬行的C語言代碼。(5)智能卡提供硬體隨機數發生器,在CPU的控制下,每次晶元與外界數據傳輸中,產生的隨機數可以保證數據不會重復。
(6)智能卡技術的核心—操作系統COS。COS(卡片操作系統)存放在智能卡晶元上,是一個比較小但非常完整嚴密的系統,類似於一個DOS。
智能卡加密鎖選擇:國外的有Gemalto(Axalto, Schlumberger), Safenet(Rainbow, Aladdin),Giesecke & Devrient, Oberthur等,國內的有廣州江南科友,濟南得安,四川衛士通,無錫華正天網等。
選擇智能卡加密狗的標准:
真正的智能卡晶元:目前市場上有一些號稱是用智能卡晶元的加密狗,實質上是使用某些ASIC晶元或某些安全領域的晶元,並不是真正的智能卡晶元,並沒有國際的安全認證;國際上的晶元在穩定性和安全性上比國產的晶元要好一些(不是不愛國,實際上我們的晶元工業確實要比國外落後一些);
大容量的存儲空間:可以放更多的代碼和演算法,使破解者需要花更多的時間去分析,最後崩潰;
無驅功能:可以給軟體開發商節省售後的服務成本,並且杜絕破解者用替換的方式做破解;
無後門:這是一個在加密狗行業都是公開的秘密,很多加密狗企業為了方便自己管理,都留了後門,這個後門卻給破解者打開了方便之門。在選擇之前一定要確認有無後門。
售後服務:這是一個非常重要的條件,大公司的售後服務都比較標准化,也比較令人滿意,小公司卻有很多問題,選舉加密狗時,最好是選擇在行業內比較大的企業合作,這樣比較有保障一些。
網路加密:
網路加密被譽為最安全的加密方式,但是同時它的缺點也是最明顯的。首先,你必須一直在線才能使用這一服務,一旦網路不穩定被加密的軟體就無法使用。國外曾經有一些游戲軟體使用過這樣的加密手段,要求玩家必須連接網路,網路一旦不穩定或者掉線程序就會自動關閉,在用戶的一片罵聲中廠商無奈停用了這樣的加密手段。
其次對於數據流量大的軟體來說網路加密對帶寬的要求也比較高。網路工程師需要一邊不停地解決帶寬問題另一邊為其用戶提供盡可能最好的體驗。
E. 單片機做的密碼鎖,安全性高嗎
安全性,是由設計者的思維來決定的,而不是單片機決定的。
新手做密碼鎖,那就是固定n位,輸入錯誤提示,輸入正確解鎖。這種安全性基本上為1,(最高10000的話),就是說,當當門面,忽悠忽悠還行,經不起破解。
初級工做密碼鎖,搞個位數變化,搞個次數限制,搞個時間限制(像手機密碼),這種安全性提高非常多,可以大大減低被暴力破解的風險。
高級工做密碼鎖,搞個動態驗證表,(像銀行密碼表卡),即使被破解密碼,或盜取密碼,沒有驗證表,依然開不了,差不多就是雙層密碼。
F. AVR單片機程序能受序列號限制嗎
當然可以,但怎麼控制,怎麼去管理這些序列號,就需要你自己去設計了。設計的方式方法非常多,挑幾個典型的說一下:
一、許可權設計
既然要通過序列號來管理單片機程序的許可權,那麼這個許可權體系就需要設計清楚。一般來說有完整許可權和部分許可權控制2種。完整許可權,即沒有序列號,整個程序就不能正常運行;部分許可權,即在沒有序列號的時候能實現部分功能,有序列號才提供完整功能。
二、序列號演算法設計及存儲設計
這個部分比較雜,方法也是非常多,但總的核心只有一條,那就是序列號的演算法設計。演算法設計即生成、驗證序列號的具體方法。一般來說,就是一些加密、簽名的技術。但因為AVR單片機計算能力有限,因此時間復雜度較高的加密技術(如RSA)並不適用。一般,單片機程序通常採用對MCU的唯一晶元出廠ID號進行演算法加密並生成序列號的方法,這樣做的好處是,即使完整的復制晶元FLASH和ROM里的數據到另一個新的單片機,也無法正常運行。
有了以上兩點基礎知識,再加上你自己的探索,應該就可以了。
G. 軟體加密的要求
軟體加密就是用戶在發送信息前,先調用信息安全模塊對信息進行加密,然後發送,到達接收方後,由用戶使用相應的解密軟體進行解密並還原。採用軟體加密方式有以下優點:已經存在標準的安全API(Application ProgrammingInterface,應用程序編程介面)產品、實現方便、兼容性好。(1)智能卡晶元是為安全而設計的,一般應用於安全領域,比如政府、軍隊及金融領域,要想做硬復制及克隆基本不可能,而單片機加密鎖卻非常容易。衡量智能卡晶元的標准,首先要看是否擁有國際的標准認證,就是智能卡晶元唯一的安全認證-EAL系列認證,如果沒有,軟體開發商需要慎重考慮;
(2)重要軟體代碼完全移植到硬體中運行,在軟體端不留副本,黑客無法通過跟蹤分析及反編譯的手段做破解;
(3)強大的運算處理能力,可以運算代碼及復雜的公開演算法(RSA、TDES等)。硬體支持浮點運算、數學函數、安全服務、文件標准輸入和輸出等。
(4)強大的代碼及數據儲存能力,不再是單片機時代幾百位元組了,而是幾十K了;可容納近萬行的C語言代碼。(5)智能卡提供硬體隨機數發生器,在CPU的控制下,每次晶元與外界數據傳輸中,產生的隨機數可以保證數據不會重復。
(6)智能卡技術的核心—操作系統COS。COS(卡片操作系統)存放在智能卡晶元上,是一個比較小但非常完整嚴密的系統,類似於一個DOS。