程序員學習密碼學是否有前途?
程序員學習密碼學是否有前途?
------我很少回答問題。這次因為@王國欽的一句
「更何況搞密碼學的那幫人都是天才」。
就簡單回答一下吧。
問題:程序員學習密碼學是否有前途?答案:有。
多幾個字的答案:cyber security是一直存在的問題,而懂得信息安全的程序員少之又少。在歐洲,如果你懂安全又是好程序員的話,年薪55k英鎊起(具體可以參考FB和Google的招聘信息)。希望這樣算是有一點前途。其他需求量比較大的程序員是懂machine learning 和AI的。再多幾個字:只是知道密碼學的數學原理和演算法是不夠的,還要知道信息安全其他方面,推薦劍橋大學信息安全教授Ross Anderson的secure engineering, 他個人網站有免費電子版。這本書就是講故事,講基礎,沒什麼難度,適合簡單理解信息安全是怎麼回事。基本密碼學演算法和安全協議看看 Bruce Schneier 寫的書,簡單易懂,適合入門。另外斯坦福大學的教授 Dan Boneh有一些密碼學視頻教程,簡單易懂,適合入門。高級的密碼學書籍和演算法需要很強的數學功底,如果你只是為了當一個對安全有些理解的程序員的話,就沒必要看了。
---更新---(說的有點亂,沒時間斟酌自己打的每一個字,大家湊活看吧。)偶爾回來看到有些人說密碼學現在的科研脫離工業界需求,也沒有什麼公司願意投入。。。我只能說這樣說就有些片面了。我先不說後量子安全系統是不是實用,也不說從國家安全戰略角度出發後量子安全的重要性,咱們就扯扯現在一些很實用的前沿科研:
-前幾天和Bristol的 Prof. N. Smart聊天,他說他們的MPC密碼學組在做衛星相關的項目,比如如何在兩個國家(e.g. 中美)都不想讓對方知道自己衛星位置的情況下,避免雙方衛星發生意外碰撞。這就是MPC可以解決的。很多其他的例子可以參考Estonia這個神奇的國家的各種密碼學應用。
- 斯坦福的物聯網研究組,密碼學方面由Prof Dan Boneh來研究。做的課題都是很實用的。- 2014年有一個安全電子投票項目,目前已經被澳大利亞維多利亞州用來進行選舉。我碰巧和這個項目的幾個負責人都還算比較熟,也比較了解。這裡面密碼學的東西用的不少,而去電子投票是一個蠻難的密碼學問題。圖靈獎獲得者Prof. Ron. Rivest 有一些文章討論的很多,感興趣的自己搜。- 我附近一些人在做攻擊,然後把一些頂級品牌的汽車攻擊的七七八八差不多了。(主要是破解就是遙控鑰匙。)現在拿了挺多項目的,主要就是幫助這些公司提升產品安全。- 前幾天在布萊切利公園開會,遇到UCL的一個教授,他問我想不想去公司工作,有一個倫敦公司招懂密碼學的java程序員但是找不到。。。- Royal Holloway 的Prof. Kenny Peterson,微軟劍橋研究所,還有劍橋安全組都在做TLS安全,我就不科普什麼是TLS了,也不科普這貨有多重要有多少漏洞等等。。。
再給點其他數據。
- 英國National Security Strategy 在2011年建立了一個5年安全項目去保護英國企業,投入接近9億英鎊。2016年,英國政府決定在建立一個5年計劃,投資額增加到19億英鎊。並且要求企業聘用安全專家去保護自己的數據。- Cisco研究報告稱目前全球有超過一百萬的工作需要做安全的人才,在2019年會有6百萬的職位,而且預計將有一百五十萬的職位招不到人,因為沒有那麼多搞安全的。- 英國BT今年發布消息說預計招聘900個搞安全的當然了,搞安全的不一定都精通密碼學,但是大部分搞安全的還是需要對密碼學有些了解的。
P.S. 密碼學不是所有演算法都超級慢。。。比如AES有些實現比memory lookup還快。。。太具體我就不說了,如果懶得真正去讀論文理解的話,那我也沒必要在這科普。。。時間是有限的,所以只能選擇方向,密碼學基礎可以掌握一下
與其拿這麼大一個問題在這裡找前輩問、得到一個或模稜兩可或簡單籠統的答案,不如找一本密碼學入門書籍,花上兩三天時間認認真真地看一遍,了解一下密碼學的前生今世、基本概念,以及它在當今IT技術界以及相關領域的應用情況,到時自然會對這個問題有比較深刻的理解的,也不會再糾結於要不要學這麼淺顯的問題了。
至於密碼學的書籍,除了教學用書以外,市面上大部分的書都還是由淺入深、循循善誘的,零基礎的也可以看懂並且看得津津有味。如果你有一些編程或是IT相關基礎的話,那更會看著書中的例子恍然大悟,更何況搞密碼學的那幫人都是天才,光看故事就停不下來了。另外你如果還有一點點數學技術的話,就會發現,數學之美和工程技術居然可以結合得這麼好。
至於我對於這個問題的具體表態么。。。自從高中時候不小心看了一本密碼學的書,之後根本就是欲罷不能好吧。讀書的時候大部分時間在「天才果然是天才我這輩子是趕不上了」和「連我都早看出來了這幫傻子都在幹什麼」之間搖擺,寫代碼的時候更是以可以把某些方法(早期)或是某些思想(晚期)融入程序里去為榮。(雖說實際上並沒有什麼卵用。)
邀請我幹嗎,我只是一名業餘的編程愛好者。
哎說下自己的理解求指正。密碼學畢竟只是cyber security的一小部分……吧?好比建一個安全屋,這就是門上的一把鎖。
完全暴力破解現代的密碼已經不可能。要依靠side channel泄露的信息,埋藏著的Trojan去實現攻擊。同時現有系統之龐大是不可能避免漏洞的考慮到軟硬體一起更加不可能_(:зゝ∠)_,於是可以利用一些比如沒抹掉的測試介面進行攻擊。除了試圖獲取控制許可權或者偷信息之外還有reverse engineering,偽造仿製產品篡改功流控劫持如何避免來自內部的攻擊(分類不嚴謹互有交叉才不要提社工呢(⊙o⊙)哼)能等等很多攻擊方式。針對這些都有相應的防範措施。
安全領域缺口很大,個人覺得研究密碼的已經很多所以就避開了……(逃。謝邀,我從以下三個方面來回答這個問題:
1.想清楚自己為什麼學習密碼學
做為一個程序員學習密碼學的目的是什麼?是工作的過程中發現需要用到密碼學知識才能完成工作,或者是想轉密碼演算法工程師,或者只是自己感興趣那?如果是這些原因都應該學習。
2.信息安全和密碼學的關係
我認為一個懂信息安全的程序員還是很有前途的,大部分程序員只是會編程就可以了。但是由於沒有信息安全知識,寫出來的程序存在各種安全問題。如果你懂信息安全,並在編程的過程中利用自己的安全知識,寫出漏洞更少、更安全的程序,那你已經與普通程序員拉開距離了。再說一下信息安全與密碼學的關係,密碼只是信息安全中非常非常小的一部分,同時也是信息安全的基石。對於程序員來說除了密碼演算法工程師,一般都不太會用到密碼知識(個人理解,木有做過開發,可糾正)。
3.作為一個計算機專業學生找密碼方向工作的經歷
我雖然學習的是計算機專業,但是由於不愛編程,上學期間又學習了一些密碼知識,找工作便從密碼行業入手。密碼屬於小眾行業,找工作時發現可選擇的範圍非常小,目前在一家普密單位就職。入職後就開始對自己未來的發展深深的擔憂,因為以後跳槽也只能在那幾家競爭單位跳,目前已經調整自己的職業方向為信息安全了。所以把密碼當成興趣或者擴展知識面都可以,千萬不要把它當成你職業發展的重要籌碼。
上學期剛被密碼學虐過的路過。當時正好碰到一個面試題,說:
1. 給一個歌單,設計一種數據結構,保存隨機打亂後的歌單順序,2. 跟進,假設一個用戶按了10000次打亂,要求在常數時間複雜度內跳回到第任意次打亂後的歌單。在上密碼學前,做這個面試題還是依靠著一些模糊的概念,但是一旦了解了密碼學那套思維工具箱後,立馬可以和術語聯繫上了,卧槽這不是XX嘛,這個問題不就是個簡單的XX操作就搞定了嘛。而且不僅能實現,還能輕易從理論上證明正確性和複雜度。
所以如果從前途上說,學密碼學可以提高你潛在過面試的機會咯。不用學的很深入,比如分析加密演算法漏洞之類的,但是起碼要知道一些基礎概念和應用吧,不然寫出來的都是什麼用md5(time())這樣的東西拿來做密碼找回token甚至生成加密key...
嗯,我認為整個本科到研究生,最讓人著迷的課程,就是密碼學。
導師是做密碼學的,我雖然不做,但是老師的課還是要去上的...密碼學有很多方向基礎理論:加密,簽名認證兩大塊吧加密:對稱加密DES,3DES,AES,流密碼非對稱加密RSA,橢圓曲線一類簽名認證:主要是結合一些摘要演算法(md5一類)利用公鑰體系進行簽名基本理論基本上是做不了工作的,設計出一個加密演算法或者摘要演算法並且證明其理論上的安全性,難度很大,需要很強的數學知識,另一方面就算弄出來也沒什麼用,橢圓曲線貌似還是很安全的。(RSA的設計者以及非對稱加密體系的提出者均獲圖靈獎)協議:光有加密演算法往往沒啥用。加密的需求往往是在兩人之間或者多人之間通訊對話產生的,這個時候要按一定的步驟方法協調多方,協議差不多就是這樣一系列的步驟方法吧。最重要的是密鑰分配協議。這裡面有一些比較有趣的問題,比如說百萬富翁問題(兩個富翁如何在不知道對方財富的前提下如何知道誰更富,不考慮財富相等並且財富值的上限已知),這裡就可以在公鑰加密的基礎上解決,還有在線的猜硬幣問題一類的。很多人做的工作都在這一塊吧(我猜的),如何在現有的加密演算法基礎之上設計一個協議安全有效的實現自己的意圖。或者就是找別人的協議漏洞,再改進協議。比較常見的會看協議是否可以抵抗第三者攻擊,重播攻擊,明文攻擊等。
硬體設計:
這一塊簡單的說就是怎麼算的快。研究的就是某個電路裡面有多少個與門,有多少個異或門,有多少延時。看起來蠻無聊的,其實還是很重要的。數學基礎:密碼學是需要數學基礎的,最重要的就是有限域,基礎數論,然後可能還要抽象代數。不過我沒學過,應該不是太容易。結論:程序員深入學密碼意義不大。不如做一點信息安全的事,了解基本的密碼知識就可以。學通了幹嘛都有前途
應該邀請專業的密碼學、計算機專業人員回答呀。
瀉藥!如果不是工作或者考試中必須要學習外,感興趣就學,不感興趣就不學。不是做任何一件事情都要考慮是否有前途。
就我個人而言,招聘密碼學方向的除了一些研究院,應該很少有企業會招聘此專業的畢業生了,原因有多方,首先大部分企業不會投入專門的財力進行密碼學相關的研究,畢竟投入大於產出,現在的密碼學方案說實在的,在效率方面,真的是讓人捉雞,當然在安全性方面那時相當高的。密碼學這個學科學術界已經走在了工業界的前面數十年,如今的學術界都已經開始研究對抗量子攻擊的密碼學,試想,在工業界量子計算機真正出現過了么?我一直覺得學術界現在的研究,都是在給後面的工業界做鋪墊,而在當下,密碼學我覺得可以了解,當如果不搞學術的話,不適合深入研究,畢竟不以此為飯碗。
另外,說一下密碼學和最近工業界勾搭火熱的技術——區塊鏈。區塊鏈最早是應用在比特幣當中的,用作於一個分散式的大賬本,其底層知識就是應用密碼學的知識進行構造的。現在區塊鏈技術在國外比較火熱,這主要和金融界進行結合,像銀行,證券之類的公司對區塊鏈投入了大量的研究。之前有人說區塊鏈就相當於90年代的互聯網。也許這確實是一塊未經開發的沃土,在國內,現在也有不少專門研究區塊鏈的公司(萬向區塊鏈,小蟻區塊鏈)等等。當然區塊鏈技術到走向成熟還有很長一段路要走,這裡面牽涉的不光是密碼學,還包括一些分散式之類的技術。但也可以看出一點,區塊鏈技術的應用會給密碼學專業的童鞋們帶來不少的光明,畢竟底層實現還是需要靠這些筒子們的,哈哈。
謝謝邀請,做得好就有前途。密碼學從古希臘戰爭時期就為了傳送情報存在,至今已經很先進了,在國內做這一塊的公司相對少一些,其中密碼學又各式各樣,總體說來這塊就業屬於小眾,對數學和邏輯要求很高,人才還是比較稀缺,現在國家保密局推廣國產密碼,說明國家層面更加重視密碼學的研究,密碼學將來必然是信息化時代最重要的護盾。
謝邀.
回答問題:有用的.密碼學主要對數學和演算法要求高,對編程思路也是一種拓寬.自國家強調「沒有網路安全就沒有國家安全」之後,安全這一行業勢必進入快速發展期,而密碼學也是基礎,個人覺得是非常有前途的
在任何一個有價值領域深耕都是有前途的。密碼學顯然是有價值的,看耕得深不深了。如果前途指就業,對國內這個行業就不了解了,不敢答,一般小公司用不到這類人才。
隨著越來越多的人使用互聯網,催生出了很多第三方技術伺服器商,信息安全肯定變得越來越重要,對安全方面的人才肯定要求越來越多,所以聯以為前途大大滴
密碼學,這不是搞數學研究的么
推薦閱讀:
※除了比特幣,還有哪些山寨幣有很高的人氣?
※能創造比特幣就必定能創造另一種加密貨幣,加密貨幣多了,是否意味著未來加密貨幣會蹦盤?
※2018年有哪些值得長期持有的山寨幣?
※如果任由數字貨幣發展下去會怎麼樣?
※空中比特幣俱樂部怎麼回事,可以加入嗎?
TAG:比特幣Bitcoin |