淺談密碼學(xué)---MD5

1.起源
軍事領(lǐng)域 運(yùn)用最廣
對數(shù)據(jù)加密進(jìn)行保護(hù)
凱瑟大帝 --凱瑟密碼本
一直持續(xù)用到上世紀(jì)70年代 二戰(zhàn)
美日對戰(zhàn) 美軍幾乎截獲所有日軍電報(bào)
AF 中途島 殲滅日軍所有海軍力量
明文--密文
A--a
B--b

類似
base64

image.png
image.png

RSA 的出現(xiàn)結(jié)束了密碼本的時(shí)代
RSA公鑰加密算法是1977年由羅納德·李維斯特(Ron Rivest)悉默、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的宙彪。1987年7月首次在美國公布本缠,當(dāng)時(shí)他們?nèi)硕荚诼槭±砉W(xué)院工作實(shí)習(xí)。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的。

RSA算法是一種非對稱密碼算法,所謂非對稱,就是指該算法需要一對密鑰伙判,使用其中一個(gè)加密,則需要用另一個(gè)才能解密黑忱。

破解方法:因式分解

哈希(散列)函數(shù) 取摘要

  • MD5
  • SHA1/256/512 強(qiáng)度
  • HMAC(很多大企業(yè)在用Q绺А!) 非常安全

對稱加密

  • DES(數(shù)據(jù)加密標(biāo)準(zhǔn)杨何,目前用的少)
  • 3DES()
  • AES(高級(jí)密碼標(biāo)準(zhǔn)酱塔,美國國家安全局使用) 蘋果的鑰匙串訪問就是用的AES

散列函數(shù)特點(diǎn)

  • 算法公開的
  • 對相同的數(shù)據(jù)加密沥邻,得到的結(jié)果是一樣的危虱,算法一樣
  • 對不同的數(shù)據(jù)加密,得到的結(jié)果是定長的(MD5加密得到32個(gè)字符)
  • 不能反算(不可逆)
  • 信息摘要唐全,信息“指紋” 備案
image.png
  • 散列碰撞 -- 王小云

數(shù)據(jù)完全的原則

用戶的習(xí)慣 密碼一樣的 QQ 微信 ……

1.在網(wǎng)絡(luò)上不允許“明文”傳遞用戶隱私信息
2.在本地上不允許“明文”保存用戶隱私信息

實(shí)際開發(fā)時(shí)埃跷,哈希蕊玷,對稱,非對稱 是結(jié)合使用的

用途

  • 密碼

導(dǎo)入一個(gè)純swift寫的MD5加密文件

為了保持客戶端與服務(wù)器一致弥雹,現(xiàn)在有兩個(gè)做法1.服務(wù)器和客戶端一樣的加密 2.更加暴力的直接是32位的哈希值


服務(wù)器做法1
服務(wù)器做法2

在真實(shí)的開發(fā)中垃帅,服務(wù)器保存的是哈希值,因?yàn)榉?wù)器也不能保存用戶的明文信息的規(guī)定剪勿。
以前賬號(hào)有找回密碼,而現(xiàn)在只有重置密碼贸诚,這是因?yàn)榉?wù)器也不知道密碼是什么,因?yàn)楣J?strong>不可逆的厕吉。
注冊的時(shí)候保存的密碼哈希值

這樣的加密方式你認(rèn)為安全了嗎酱固,1.不能反算 2.服務(wù)器都不知道密碼。
現(xiàn)在隆重的介紹一個(gè)CMD5
123456:e10adc3949ba59abbe56e057f20f883e
456789:e35cf7b66449df565f93c607d5a81d09
……
這個(gè)網(wǎng)站比較2的把一些可能出現(xiàn)的詞保存起來头朱,類似密碼本运悲。

CMD5

所以現(xiàn)在看來 直接MD5加密是不行的,不安全的项钮。直接用sha1,sha256,sha512都是不行的

  • 1.直接MD5 ---不夠安全班眯, 可以查詢
  • 2.加鹽 -- (密碼 + 鹽).md5 早起的方案
    //鹽 要足夠長
    let salt = "aodfaod({sdf$%U@})fuadjfoefkjwefiy937ru4i12uh4r98y4rn#$dkfsf"
    let str = password.appending(salt).md5String
    很多人這么干
    這樣我們感覺已經(jīng)很安全了

我們的鹽是死的,一旦泄露就完蛋了 程序里面的代碼你最清楚烁巫。
不漲工資就可以拍桌子了

比方說100萬推廣引進(jìn)20萬用戶署隘,一旦鹽泄露,用戶的信息就不安全程拭,這時(shí)就要強(qiáng)制升級(jí)定踱。用戶就會(huì)損失,100萬打水漂了
  • 3.HMAC -- 最近幾年恃鞋,國內(nèi)開始慢慢增多
    HMAC是密鑰相關(guān)的哈希運(yùn)算消息認(rèn)證碼(Hash-based Message Authentication Code),HMAC運(yùn)算利用哈希算法崖媚,以一個(gè)密鑰和一個(gè)消息為輸入,生成一個(gè)消息摘要作為輸出恤浪。

HMAC 的用途

HMAC 算法主要應(yīng)用于身份驗(yàn)證畅哑,用法如下:

隨機(jī)數(shù)在注冊時(shí)只保存一次

  • 1.客戶端發(fā)出登錄請求
  • 2.服務(wù)器返回一個(gè)隨機(jī)值,在會(huì)話記錄中保存這個(gè)隨機(jī)值水由,這時(shí)客戶端將永久保存這個(gè)隨機(jī)數(shù)
  • 3.客戶端將該隨機(jī)值作為密鑰荠呐,用戶密碼進(jìn)行 hmac 運(yùn)算,遞交給服務(wù)器
  • 4.服務(wù)器讀取數(shù)據(jù)庫中的用戶密碼砂客,利用密鑰做和客戶端一樣的 hmac運(yùn)算泥张,然后與用戶發(fā)送的結(jié)果比較,如果一致鞠值,則用戶身份合法媚创。

這么做有什么好處呢? 如果我們在登錄的過程中彤恶,黑客截獲了我們發(fā)送的數(shù)據(jù)钞钙,他也只能得到 hmac 加密過后的結(jié)果鳄橘,由于不知道密鑰,根本不可能獲取到用戶密碼芒炼,從而保證了安全性瘫怜。

image.png
image.png

現(xiàn)在有一個(gè)問題,我們卸載APP 更換手機(jī)等等本刽,沒有了隨機(jī)數(shù)我們要怎么登錄鲸湃?

  • 1.我們的登錄都不是一次請求,沒有key 就找服務(wù)器要子寓。服務(wù)器給你
image.png

這個(gè)key是定期更換的唤锉,當(dāng)你長時(shí)間不登錄會(huì)提示更換密碼

    1. 當(dāng)客戶端沒有key時(shí),向服務(wù)器要key别瞭,服務(wù)器不給窿祥,詢問授權(quán)手機(jī)或者常用手機(jī)是否允許新手機(jī)登錄。
      例如:QQ蝙寨,微信晒衩。 他們不一定用的就是HMAC,但HMAC一定能實(shí)現(xiàn)這樣的功能

現(xiàn)在我們的密碼已經(jīng)足夠安全了,已經(jīng)想不到怎么破解了墙歪。但是我們進(jìn)入了一個(gè)死胡同里听系,我們要加密的不單單只有密碼,還有數(shù)據(jù)虹菲。不管你怎么加密你都是向服務(wù)器發(fā)送那32位字符串靠胜,我為什么要破解你的密碼。盜號(hào)什么的 就是 模擬登陸毕源。群發(fā)消息浪漠,哥們最近手頭有點(diǎn)緊,給充10元話費(fèi)霎褐,只要量大址愿,一天萬八的沒有問題。

服務(wù)器保存了賬號(hào)的賬號(hào)冻璃,HMAC密碼响谓,key
這時(shí)我們就不能直接發(fā)送HMAC密碼了,要發(fā)送:(HMAC密碼 +“201710171111”).MD5 “201710171111”客戶端時(shí)間
以前服務(wù)器是對比HMAC密碼省艳,
現(xiàn)在服務(wù)器要對比兩次

  1. HMAC密碼 +“201710171112”).MD5 “201710171112”服務(wù)器的時(shí)間 這次對比一定是失敗的 時(shí)間不對
    2.(HMAC密碼 +“201710171111”).MD5 “201710171111” 減一分鐘
    不要用本地時(shí)間 找服務(wù)器要

密碼有時(shí)間限制的最長也就2分鐘所以才是兩次娘纷。登錄超過2分鐘提示密碼錯(cuò)誤!跋炕!赖晶,你想讓用戶登錄時(shí)看小菊花2分鐘,然后提示一個(gè)密碼錯(cuò)誤枣购?嬉探?別開玩笑了,登錄超過20秒用戶都會(huì)任務(wù)APP死掉了棉圈, APP不行涩堤。尤其是蘋果手機(jī)的用戶。
Android與iOS開發(fā)者最大的不同就是分瘾,Android的開發(fā)者寫的不好沒有關(guān)系胎围,用戶只會(huì)說破手機(jī)。 iOS用戶就會(huì)說破APP德召。
注意 請求時(shí)間不要超過6秒白魂,超過了也不要提示我們自己的原因,就說上岗,你的網(wǎng)絡(luò)環(huán)境不好福荸,請換個(gè)寬廣的地方試一試。

這樣就做到 每次加密的結(jié)果都不一樣肴掷,這就需要黑客必須在2分鐘內(nèi)搞定

安全沒有絕對敬锐,只有相對安全。
怎么估算相對安全:破解所得到的價(jià)值是否大于破解所需要的成本
大于就是不安全

問:指紋能做登錄密碼嗎呆瞻?指紋能否代替密碼台夺?
答:不可以。密碼:能確定你是這個(gè)賬號(hào)的主人痴脾。指紋:能確定你是這個(gè)手機(jī)的主人

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颤介,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赞赖,更是在濱河造成了極大的恐慌滚朵,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件前域,死亡現(xiàn)場離奇詭異始绍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)话侄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門亏推,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人年堆,你說我怎么就攤上這事吞杭。” “怎么了变丧?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵芽狗,是天一觀的道長。 經(jīng)常有香客問我痒蓬,道長童擎,這世上最難降的妖魔是什么滴劲? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮顾复,結(jié)果婚禮上班挖,老公的妹妹穿的比我還像新娘。我一直安慰自己芯砸,他們只是感情好萧芙,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著假丧,像睡著了一般双揪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上包帚,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天渔期,我揣著相機(jī)與錄音,去河邊找鬼渴邦。 笑死擎场,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的几莽。 我是一名探鬼主播迅办,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼章蚣!你這毒婦竟也來了站欺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤纤垂,失蹤者是張志新(化名)和其女友劉穎矾策,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體峭沦,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贾虽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吼鱼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓬豁。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖菇肃,靈堂內(nèi)的尸體忽然破棺而出地粪,到底是詐尸還是另有隱情,我是刑警寧澤琐谤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布蟆技,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏质礼。R本人自食惡果不足惜旺聚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望眶蕉。 院中可真熱鬧砰粹,春花似錦、人聲如沸妻坝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刽宪。三九已至,卻和暖如春界酒,著一層夾襖步出監(jiān)牢的瞬間圣拄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工毁欣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庇谆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓凭疮,卻偏偏與公主長得像饭耳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子执解,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容