A. 密碼學挑戰賽需要准備什麼
1、過硬的實力,只有強大的實力才是在這個比賽中的殺手鐧、能夠制勝的手段。
2、良好的心態,面對很多強大的對手,有一個良好、平和的心態是非常重要的。以上就是密碼學挑戰賽需要准備的東西。
B. 對密碼學感興趣怎麼入門數學要什麼基礎百度知道
建議你先系統地學習一下計算機原理和預備數學知識
只是入門的話建議你先了解一下當前信息安全的重要事件、幾大加密演算法的基本原理
下面這些先行學科是必須的數學基礎:高等數學、線性代數、概率論、離散數學
計算機基礎包括C語言、演算法與數據結構、計算機組成原理等,可以輔修
密碼學核心課程包括信息安全數學基礎、密碼學引論、軟體安全等
要全面了解上面的基礎內容是一個漫長的過程,但只有打好這些基礎你才能真正深入理解後面的內容。密碼學要求很高的數學和邏輯能力,不是僅僅靠興趣就能夠精通的,不能三天打魚兩天曬網。
密碼學的核心數學知識:同餘、群論、矩陣、哈希
C. 密碼學所需的數學與計算機知道以及其它方面的知識。(越詳細越好,答案寧缺勿濫,會追加分的~)
在大學專業課程里,一般意義上的密碼學都是指商業民用密碼學,需要一定的數論基礎和計算機基礎;密碼學發端於數學史早期,是和數論這一數學王冠上的明珠緊密結合在一起的。要求熟練掌握的數論知識有:同餘理論,一元同餘方程,平方剩餘與一元二次同餘方程以及原根與指標等知識。
除上述數論基礎之外,密碼學還必須掌握傳統的密碼學基礎知識,比如傳統密碼體制,公鑰密碼體制和密碼學的Shannon理論等。
最為重要的是,當代密碼學緊密地與計算機科學技術結合在一起,所以對於隨機性概念,序列密碼與移位寄存器以及網路安全加密技術、加密演算法等知識有較為扎實的掌握。以上材料來源於《武漢大學商用密碼學基礎》課程教材。
D. 密碼學需要掌握的課程
第一,學數論,如果密碼學的教材里沒有的話。密碼學的很多東西都要涉及到數論,但數論不是那麼好學的。另外,把大學數學的教材翻出來,復習一下向量和矩陣,在後面的演算法可能會用到。至於其他知識,比如計算機的知識要求較少,密碼學偏向於數學,雖然計算機和數學兩方面都涉及到,除了惱火一點的SHA-1演算法(現在我還沒讀懂是怎麼回事,計算機知識涉及得太多了)。
如果你想用計算機來實現密碼學演算法,你首先要有強大的運算軟體。這些運算軟體不都是免費的,比如Mathematica, Maple, Matlab,這些都是相當昂貴的商業軟體。而且如果你想開發出能普及的密碼學軟體,你得自己編寫這些運算方法,要不然你就是他們公司的免工資推銷員。
推薦你用Mathematica,因為我在使用。Mathematica支持和多種語言的連接(Mathlink),特別是.net(NETLink),做到了方便易行而又強大(實際上它本身就是一門語言)。
密碼學分兩種,如果你是業余學習,那你只用掌握加密與解密。如果你要專業點,那破譯就是必要的。現在世界上的加密軟體很多,許多游戲都有加密的內置功能,但是破譯軟體就沒那麼幾個,由此可見學破譯的難度。
最後,密碼學需要耐心。如果你有耐心把數論的一關攻克下來,那學習密碼學就不成問題。
E. 密碼學知識精粹
① 替換法
替換法很好理解,就是用固定的信息將原文替換成無法直接閱讀的密文信息。例如將 b 替換成 w ,e 替換成p ,這樣bee 單詞就變換成了wpp,不知道替換規則的人就無法閱讀出原文的含義。
替換法有單表替換和多表替換兩種形式。
② 移位法
移位法就是將原文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後得出密文,典型的移位法應用有 「 愷撒密碼 」。
例如約定好向後移動2位(abcde - cdefg),這樣 bee 單詞就變換成了dgg。
古典密碼破解方式--頻率分析法
古典密碼的安全性受到了威脅,外加使用便利性較低,到了工業化時代,近現代密碼被廣泛應用。
恩尼格瑪機
恩尼格瑪機是二戰時期納粹德國使用的加密機器,其使用的加密方式本質上還是移位和替代,後被英國破譯,參與破譯的人員有被稱為計算機科學之父、人工智慧之父的圖靈。
① 散列函數加密(消息摘要,數字摘要)
散列函數,也見雜湊函數、摘要函數或哈希函數,可將任意長度的消息經過運算,變成固定長度數值,常見的有MD5、SHA-1、SHA256,多應用在文件校驗,數字簽名中。
MD5 可以將任意長度的原文生成一個128位(16位元組)的哈希值
SHA-1可以將任意長度的原文生成一個160位(20位元組)的哈希值
特點:消息摘要(Message Digest)又稱為數字摘要(Digital Digest)
它是一個唯一對應一個消息或文本的固定長度的值,它由一個單向Hash加密函數對消息進行作用而產生
使用數字摘要生成的值是不可以篡改的,為了保證文件或者值的安全
MD5演算法 : 摘要結果16個位元組, 轉16進制後32個位元組
SHA1演算法 : 摘要結果20個位元組, 轉16進制後40個位元組
SHA256演算法 : 摘要結果32個位元組, 轉16進制後64個位元組
SHA512演算法 : 摘要結果64個位元組, 轉16進制後128個位元組
② 對稱加密
對稱密碼應用了相同的加密密鑰和解密密鑰。對稱密碼分為:序列密碼(流密碼),分組密碼(塊密碼)兩種。流密碼是對信息流中的每一個元素(一個字母或一個比特)作為基本的處理單元進行加密,塊密碼是先對信息流分塊,再對每一塊分別加密。
例如原文為1234567890,流加密即先對1進行加密,再對2進行加密,再對3進行加密……最後拼接成密文;塊加密先分成不同的塊,如1234成塊,5678成塊,90XX(XX為補位數字)成塊,再分別對不同塊進行加密,最後拼接成密文。前文提到的古典密碼學加密方法,都屬於流加密。
示例
我們現在有一個原文3要發送給B
設置密鑰為108, 3 * 108 = 324, 將324作為密文發送給B
B拿到密文324後, 使用324/108 = 3 得到原文
常見加密演算法
DES : Data Encryption Standard,即數據加密標准,是一種使用密鑰加密的塊演算法,1977年被美國聯邦政府的國家標准局確定為聯邦資料處理標准(FIPS),並授權在非密級政府通信中使用,隨後該演算法在國際上廣泛流傳開來。
AES : Advanced Encryption Standard, 高級加密標准 .在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標准。這個標准用來替代原先的DES,已經被多方分析且廣為全世界所使用。
特點
加密速度快, 可以加密大文件
密文可逆, 一旦密鑰文件泄漏, 就會導致數據暴露
加密後編碼表找不到對應字元, 出現亂碼,故一般結合Base64使用
加密模式
ECB : Electronic codebook, 電子密碼本. 需要加密的消息按照塊密碼的塊大小被分為數個塊,並對每個塊進行獨立加密
優點 : 可以並行處理數據
缺點 : 同樣的原文生成同樣的密文, 不能很好的保護數據
CBC : Cipher-block chaining, 密碼塊鏈接. 每個明文塊先與前一個密文塊進行異或後,再進行加密。在這種方法中,每個密文塊都依賴於它前面的所有明文塊
優點 : 同樣的原文生成的密文不一樣
缺點 : 串列處理數據
填充模式:當需要按塊處理的數據, 數據長度不符合塊處理需求時, 按照一定的方法填充滿塊長的規則
NoPadding不填充.
對應的AES加密類似,但是如果使用的是AES加密,那麼密鑰必須是16個位元組。
加密模式和填充模式:
AES/CBC/NoPadding (128)
AES/CBC/PKCS5Padding (128)
AES/ECB/NoPadding (128)
AES/ECB/PKCS5Padding (128)
DES/CBC/NoPadding (56)
DES/CBC/PKCS5Padding (56)
DES/ECB/NoPadding (56)
DES/ECB/PKCS5Padding (56)
DESede/CBC/NoPadding (168)
DESede/CBC/PKCS5Padding (168)
DESede/ECB/NoPadding (168)
DESede/ECB/PKCS5Padding (168)
RSA/ECB/PKCS1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
PS: Base64是網路上最常見的用於傳輸8Bit位元組碼的可讀性編碼演算法之一
可讀性編碼演算法不是為了保護數據的安全性,而是為了可讀性
可讀性編碼不改變信息內容,只改變信息內容的表現形式
所謂Base64,即是說在編碼過程中使用了64種字元:大寫A到Z、小寫a到z、數字0到9、「+」和「/」
Base64 演算法原理:base64 是 3個位元組為一組,一個位元組 8位,一共 就是24位 ,然後,把3個位元組轉成4組,每組6位(3 * 8 = 4 * 6 = 24),每組缺少的2位會在高位進行補0 ,這樣做的好處在於 base取的是後面6位而去掉高2位 ,那麼base64的取值就可以控制在0-63位了,所以就叫base64,111 111 = 32 + 16 + 8 + 4 + 2 + 1 =
toString()與new String ()用法區別
③ 非對稱加密
非對稱密碼有兩支密鑰,公鑰(publickey)和私鑰(privatekey),加密和解密運算使用的密鑰不同。用公鑰對原文進行加密後,需要由私鑰進行解密;用私鑰對原文進行加密後(此時一般稱為簽名),需要由公鑰進行解密(此時一般稱為驗簽)。公鑰可以公開的,大家使用公鑰對信息進行加密,再發送給私鑰的持有者,私鑰持有者使用私鑰對信息進行解密,獲得信息原文。因為私鑰只有單一人持有,因此不用擔心被他人解密獲取信息原文。
特點:
加密和解密使用不同的密鑰
如果使用私鑰加密, 只能使用公鑰解密
如果使用公鑰加密, 只能使用私鑰解密
處理數據的速度較慢, 因為安全級別高
常見演算法:RSA,ECC
數字簽名
數字簽名的主要作用就是保證了數據的有效性(驗證是誰發的)和完整性(證明信息沒有被篡改),是非對稱加密和消息摘要的應用
keytool工具使用
keytool工具路徑:C:\Program Files\Java\jre1.8.0_91\bin
--- END
F. CTF各個方向的具體內容是什麼
如下:
Reverse
題目涉及到軟體逆向、破解技術等,要求有較強的反匯編、反編譯功底。主要考查參賽選手的逆向分析能力。
所需知識:匯編語言、加密與解密、常見反編譯工具
Pwn
Pwn 在黑客俚語中代表著攻破,獲取許可權,在 CTF 比賽中它代表著溢出類的題目,其中常見類型溢出漏洞有整數溢出、棧溢出、堆溢出等。主要考查參賽選手對漏洞的利用能力。
所需知識:C,OD+IDA,數據結構,操作系統
Web
Web 是 CTF 的主要題型,題目涉及到許多常見的 Web 漏洞,如 XSS、文件包含、代碼執行、上傳漏洞、SQL 注入等。也有一些簡單的關於網路基礎知識的考察,如返回包、TCP/IP、數據包內容和構造。可以說題目環境比較接近真實環境。
所需知識:PHP、Python、TCP/IP、SQL
Crypto
題目考察各種加解密技術,包括古典加密技術、現代加密技術甚至出題者自創加密技術,以及一些常見編碼解碼,主要考查參賽選手密碼學相關知識點。通常也會和其他題目相結合。
所需知識:矩陣、數論、密碼學
Misc
Misc 即安全雜項,題目涉及隱寫術、流量分析、電子取證、人肉搜索、數據分析、大數據統計等,覆蓋面比較廣,主要考查參賽選手的各種基礎綜合知識。
所需知識:常見隱寫術工具、Wireshark 等流量審查工具、編碼知識
Mobile
主要分為 Android 和 iOS 兩個平台,以 Android 逆向為主,破解 APK 並提交正確答案。
所需知識:Java,Android 開發,常見工具
CTF(Capture The Flag)中文一般譯作奪旗賽,在網路安全領域中指的是網路安全技術人員之間進行技術競技的一種比賽形式。CTF起源於1996年DEFCON全球黑客大會,以代替之前黑客們通過互相發起真實攻擊進行技術比拼的方式。
發展至今,已經成為全球范圍網路安全圈流行的競賽形式,2013年全球舉辦了超過五十場國際性CTF賽事。而DEFCON作為CTF賽制的發源地,DEFCON CTF也成為了目前全球最高技術水平和影響力的CTF競賽,類似於CTF賽場中的「世界盃」。
CTF 為團隊賽,通常以三人為限,要想在比賽中取得勝利,就要求團隊中每個人在各種類別的題目中至少精通一類,三人優勢互補,取得團隊的勝利。同時,准備和參與 CTF 比賽是一種有效將計算機科學的離散面、聚焦於計算機安全領域的方法。
賽事介紹
CTF是一種流行的信息安全競賽形式,其英文名可直譯為「奪得Flag」,也可意譯為「奪旗賽」。
其大致流程是,參賽團隊之間通過進行攻防對抗、程序分析等形式,率先從主辦方給出的比賽環境中得到一串具有一定格式的字元串或其他內容,並將其提交給主辦方,從而奪得分數。為了方便稱呼,我們把這樣的內容稱之為「Flag」。
CTF競賽模式具體分為以下三類:
解題模式(Jeopardy)
在解題模式CTF賽制中,參賽隊伍可以通過互聯網或者現場網路參與,這種模式的CTF競賽與ACM編程競賽、信息學奧賽比較類似,以解決網路安全技術挑戰題目的分值和時間來排名,通常用於在線選拔賽。題目主要包含逆向、漏洞挖掘與利用、Web滲透、密碼、取證、隱寫、安全編程等類別。
攻防模式(Attack-Defense)
在攻防模式CTF賽制中,參賽隊伍在網路空間互相進行攻擊和防守,挖掘網路服務漏洞並攻擊對手服務來得分,修補自身服務漏洞進行防禦來避免丟分。
攻防模式CTF賽制可以實時通過得分反映出比賽情況,最終也以得分直接分出勝負,是一種競爭激烈,具有很強觀賞性和高度透明性的網路安全賽制。在這種賽制中,不僅僅是比參賽隊員的智力和技術,也比體力(因為比賽一般都會持續48小時及以上),同時也比團隊之間的分工配合與合作。
混合模式(Mix)
結合了解題模式與攻防模式的CTF賽制,比如參賽隊伍通過解題可以獲取一些初始分數,然後通過攻防對抗進行得分增減的零和游戲,最終以得分高低分出勝負。採用混合模式CTF賽制的典型代表如iCTF國際CTF競賽。
G. 我想學習計算機密碼學,需要學好哪些數學知識。
先學數學基礎:
1.精讀初等數論或數論導引,略讀計算數論;
2.代數數論;
3.解析數論在密碼學中不常用,不必細讀,反正我沒讀過;
4.交換代數;
5.組合數學。
進一步建議:學習《代數學》、《有限域》、《橢圓曲線》,至於密碼學書,讀一兩本經典的就行了!
比較經典的密碼學書有《密碼學原理與實踐》(Douglas R.Stinson著;馮登國譯)。這本教材言簡意賅、清晰易懂。
《密碼學導引》(馮登國、裴定一著,科學教育出版社)非常全面,附錄含數論等基礎知識的簡介。
參見:http://..com/question/95390233.html
如果你讀了其中任意一本,你上面提到的密碼學書就可以全部收起來了。橢圓曲線密碼學如果是綠皮的,也沒什麼可看的。
原山東大學王小雲教授(已被清華挖走)就是這方面的世界頂級專家,她的論文和著作樓主有興趣的話不妨關注下,目前王小雲已當選為計算機領域的院士了!
H. 請問看懂密碼學需要有那些基礎知識做准備
密碼學主要是以組合數學,概率論,高等代數和數論做基礎的,在學習之前應該對這四門學科有所了解,同時也要學一點一元微積分的基本知識。
I. 密碼學相關知識梳理
密碼學是研究編制密碼和破譯密碼的技術科學。
密碼學的歷史最早可以追溯到幾千年以前,古今中外都有密碼學運用的記載,從歷史看,戰爭很大程度給密碼學提供了應用環境,推動了密碼學的發展,密碼學按照發展歷程,大體可以分為三個階段,手工加密、機械加密和計算機加密階段,下面是近代密碼學的一些重要進展。
1949年,資訊理論始祖克勞德·艾爾伍德·香農(Claude Elwood Shannon)發表了《保密系統的通信理論》一文,把密碼學建立在嚴格的數學基礎之上,奠定理論基礎,從此成為真正的科學。
1976年,密碼學專家惠特菲爾德·迪菲(Bailey Whitfield Diffie)和馬丁·赫爾曼(Martin Edward Hellman)兩人發表了《密碼學的新方向》一文,解決了密鑰管理的難題,把密鑰分為加密的公鑰和解密的私鑰,提出了密鑰交換演算法Diffie-Hellman。
1977年,美國國家標准技術研究所制定數據加密標准(Data Encryption Standard ),將其頒布為國家標准。
1977年,麻省理工學院的羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出RSA加密演算法,RSA就是他們三人姓氏開頭字母拼在一起組成的。
1997年4月,美國ANSI發起徵集AES(advanced encryption standard)的活動,並為此成立了AES工作小組,經過幾年的時間篩選,最終採用了由比利時的Joan Daemen和Vincent Rijmen設計的Rijndael演算法,並在2002年5月26日成為有效的加密標准。
按密碼體制劃分:對稱密碼體制密碼學和非對稱密碼體制密碼學對應的有對稱密碼演算法和非對稱密碼演算法。
消息摘要演算法又稱散列演算法,其核心在於散列函數的單向性,即通過散列函數可獲得對應的散列值,但不可通過該散列值反推其原始信息,這是消息摘要演算法的安全性的根本所在,我們通常使用該演算法判斷數據的完整性。
消息摘要演算法我們常見比如MD(Message Digest)、SHA(Secure Hash Algorithm)、HMAC(Hash Message Authentication Code)等,常用於驗證數據的完整性,是數字簽名演算法的核心演算法。
我們以微信支付的介面調用分析一下摘要演算法怎麼應用的,首先可以打開微信支付如下相關文檔:
微信支付統一下單介面文檔
微信支付簽名過程
對稱加密簡單的說就是加密和解密使用同一個密鑰,解密演算法是加密演算法的逆運算。
對稱加密演算法主要有DES、DES演算法的變種DESede、DES替代者AES演算法、IDEA、PBE等
非對稱加密演算法稱為雙鑰或公鑰加密演算法,跟對稱加密演算法不同的是,對稱加密演算法只一個密鑰,非對稱加密演算法 一個公鑰和一個私鑰,一個用於加密,另外一個用於解密。
簡單的說:一對密鑰公鑰A和私鑰B,A加密只能B解密,B加密只能A解密。
非對稱加密演算法源於DH演算法(Diffie-Hellman,密鑰交換演算法)由W.Diffie和 M.Hellman共同提出,該演算法為非對稱加密演算法奠定了基礎,下面我們先來了解下密鑰交換演算法DH和ECDH演算法。
為什麼需要密鑰交換演算法?前面我們提到對稱加密演算法加解密都是用同一個密鑰,我們可以想一下,我們怎樣能安全的把一個密鑰給到對方呢?比如我們經常用到HTTPS,大家都說HTTPS加密了是安全的,那它加密的密鑰怎麼來的呢?很顯然我們在訪問一個https地址的時候,事先並沒有密鑰,訪問過程中客戶端跟服務端通過握手協議協商出來的密鑰,如果服務端直接把密鑰在網路上傳輸那肯定不安全的,所以這過程到底發生了什麼?後面專門分析https的時候會詳細寫,這里先了解下該演算法。
DH密鑰交換演算法的安全性基於有限域上的離散對數難題
ECDH密鑰交換演算法是基於橢圓曲線加密
從上面圖中可以看出,DH&ECDH密鑰交換演算法交互雙方都會向對方公開一部分信息,即所謂的公鑰,這部分即使被別人拿到了也不會威脅到最終的密鑰,這里很關鍵的一點是甲乙兩方公布的公鑰是不相同的,但是最終生成的密鑰兩邊是一致的,這里是利用的演算法原理,有興趣的可以去查閱詳細的演算法公式,因為最終的密鑰不需要傳輸給對方,所以很大程度保證安全性。
非對稱加密演算法:
比較典型的非對稱加密演算法有RSA、ECC、ElGamal,RSA演算法基於大數因子分解難題,而ElGamal和ECC演算法則是基於離散對數難題。
從上面消息傳遞模型我們可以看出,非對稱加密演算法遵循「私鑰加密,公鑰解密」和「公鑰加密,私鑰解密」的原則,但是有一點需要注意,公鑰是公開的,所以用在什麼場景是需要根據該演算法的特徵來考慮的,比如既然公鑰是公開的,你用私鑰加密敏感數據傳遞給第三方合適么?顯然不合適,因為公鑰公開的,別人都可以拿到公鑰,也就意味著你加密的數據都可以解密,所以適合的場景比如私鑰加密,公鑰只是用來驗證加密的內容,每個人都可以來驗證,該場景是不在乎加密內容被其它攻擊者看到的,甚至說內容本來就是公開的,對於接收者用公鑰確保內容沒有被篡改即可,所以我們通常說非對稱演算法「私鑰簽名,公鑰驗證簽名」,另外一點,「公鑰加密,私鑰解密」,因為私鑰只有我們自己手上有,所以理論上也只有我們自己可以解密,這樣是安全的,https證書驗證以及握手協議過程中會體現這一點。
數字簽名演算法可以看做是一種帶有密鑰的消息摘要演算法,並且這種密鑰包含了公鑰和私鑰。也就是說數字簽名演算法是非對稱加密演算法和消息摘要演算法的結合體,遵循「私鑰簽名,公鑰驗證」的簽名認證方式。
數字簽名演算法是公鑰基礎設施(Public Key Infrastructure,PKI)以及許多網路安全機制(SSL/TLS,VPN等)的基礎。
數字簽名演算法要求能夠驗證數據完整性、認證數據來源,並起到抗否認的作用。
數字簽名演算法主要包括RSA、DSA、ECDSA共3種演算法,其中RSA演算法源於整數因子分解問題,DSA和ECDSA演算法源於離散對數問題。
我們以螞蟻金服開放平台上介面簽名方案為例,詳細說明可以打開如下文檔:
螞蟻開放平台簽名專區