技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
21
0
Security
資訊安全的美味雜炊
系列 第
21
篇
[Day21] - Crypto 0x1 介紹
12th鐵人賽
halloworld
2020-10-04 15:59:04
983 瀏覽
分享至
Day21 - Crypto 0x1 介紹
前言
今天開始連續五天會以Crypto為主題,從古典密碼學一直寫到現代的密碼學
甚麼是密碼學(Crypto)
根據維基百科的解釋,密碼學幾乎是指加密的演算法,會將普通資訊(明文)轉為難以理解及分析(密文)的資料
又可以以古典與現代密碼學做分類,之後的五天會細節及內容
現代的密碼學幾乎都是基於現在的數學難題,讓想偷密文的駭客難以破密內容
加密/解密 & 編碼 & 雜湊
今天就先觀念釐清一下
這個是初學者最容易搞混的東西,很常會將這三樣東西搞混
加密/解密
首先會產生一組密鑰,就是一把鑰匙(key)
通常就是一組字串,而不同演算法生出key的方式也不一樣
接著可以對一組原文透過key來加密,通常我們會叫他「明文」,加密完的結果就是密文
若要解密時,就需透過那把key作解密,才能看到原本的明文
也就是說,沒有key,你就無法得知原本的訊息
對稱式加密(Symmetric Encryption)
加解密接使用同一把密鑰,雙方是用同一把密鑰
當傳送方傳資料時,使用該把密鑰加密,接收方收到訊息後,用同把密鑰解密
缺點
一旦被中間人攔截密鑰,密文就有機會被駭客破解
常見對稱式加密演算法
AES、ChaCha20、3DES、Salsa20、DES
非對稱式加密(Asymmetric Encryption)
不同於對稱式加密,每個使用者都擁有一組金鑰,包含公鑰(public key)和私鑰(private key),公鑰能夠散布各地,但私鑰必須妥善保存
詳細的原理我們留RSA後面再來提
編碼(encode)
只是將資料透過人們討論的規則,對應到另外一項符號或者數字
編碼的運用範圍也很廣
有包含字串的、音訊的、視訊的...
並不需要密鑰,你只需要知道編碼的規則,人人都可以解碼
常見的字元編碼
base64, ASCII, Unicode, urlencode
ASCII
ASCII編碼只有0~127,因為要留一個位元給檢查碼
example
0
= 48
A
= 65
a
= 97
base64
一個單元8-bits
Base64一單元只有6bits
如果原文不整除3,會出現相對應的
=
詳情原理可以參考:
Base64
雜湊(hash)
將長度不固定的資料,映射到固定長度的字串,一旦資料被座雜湊之後,是
不可逆
的
在帳戶系統當中,通常會將密碼hash後存入資料庫中,
通常
並不會用明文方式直接將密碼存在資料庫
這樣好處是萬一駭客偷走了帳戶系統的資料庫,並不能直接拿到密碼,因為hash是不可逆的
另外,帳戶系統對密碼還會加上salt(亂數),再拿去hash,會相對更安全一些
常見的雜湊方式如
MD5, SHA1, SHA256...
風險
MD5, SHA1已被破解,在網路上甚至有網站能將hash過後的值找出原本明文
ex:
https://www.cmd5.com/
現在建議使用
bcrypt, SHA256, SHA512...等方法
ref
https://medium.com/@RiverChan/%E5%9F%BA%E7%A4%8E%E5%AF%86%E7%A2%BC%E5%AD%B8-%E5%B0%8D%E7%A8%B1%E5%BC%8F%E8%88%87%E9%9D%9E%E5%B0%8D%E7%A8%B1%E5%BC%8F%E5%8A%A0%E5%AF%86%E6%8A%80%E8%A1%93-de25fd5fa537
https://medium.com/d-d-mag/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%BD%A0%E9%9C%80%E8%A6%81%E6%87%82%E4%B8%80%E9%BB%9E%E5%AF%86%E7%A2%BC%E5%AD%B8-709c090452aa
https://zh.wikipedia.org/zh-tw/%E5%AF%86%E7%A2%BC%E5%AD%B8%E4%B8%BB%E9%A1%8C%E5%88%97%E8%A1%A8
https://blog.m157q.tw/posts/2017/12/25/differences-between-encryption-and-hashing/
留言
追蹤
檢舉
上一篇
[Day20] - Rev 0x5 linux逆逆實戰
下一篇
[Day22] - Crypto 0x2 古典
系列文
資訊安全的美味雜炊
共
30
篇
目錄
RSS系列文
訂閱系列文
32
人訂閱
26
[Day26] - kali 0x1 介紹
27
[Day27] - kali 0x2 滲透工具
28
[Day28] - kali 0x3 破密工具
29
[Day29] - kali 0x4 Metasploit
30
[Day30] - 完賽、感想、心得
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22203
篇
完賽人數
602
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
要怎知道LINE使用者的使用地址
防火牆互通問題
桌面的使用者文件圖標壞掉
Cisco 防火牆密碼確認正確,可是無法登入
函數問題
幫忙下載百度網盤
開啟Microsoft Edge 瀏覽器無法開啟網頁,出現錯誤訊息
一開機就自動鎖定帳戶
bat檔截斷問題
if函數中的>&<&=是否可以使用儲存格代替
熱門回答
防火牆互通問題
outlook無法收發信
開啟Microsoft Edge 瀏覽器無法開啟網頁,出現錯誤訊息
Palo alto防火牆網頁解密問題?
if函數中的>&<&=是否可以使用儲存格代替
熱門文章
[翻譯]使用AI工具寫程式碼時如何避免「AI幻覺」?
每日一篇學習筆記 直到我做完專題 :( [Day4]
每日一篇學習筆記 直到我做完專題 :( [Day5]
每日一篇學習筆記 直到我做完專題 :( [Day6]
每日一篇學習筆記 直到我做完專題 :( [Day7]
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}