平時在工作和生活中,我們會經常接觸加密、解密的技術。
同時,我們作為開發者,也會經常遇到使用者對資料安全的需求,當我們碰到了這些需求後如何解決,如何何種方式保證資料安全,哪種方式最有效,這些問題經常困惑著我們。那麼我們又會碰到哪些安全的風險的。
安全性威脅
一般的,我們在網路中傳輸的資料,都可以認為是存在這潛在的風險的。用一句話來概括就是:「任何在網路中傳輸的明文資料都存在安全性威脅。」
下面就列舉下我們通訊中面臨的四種威脅:
第一,中斷。攻擊者有意破壞和切斷他人在網路上的通訊,這是對可用性的攻擊。
第二,截獲。屬於被動攻擊,攻擊者從網路上qie聽他人的通訊內容,破壞資訊的機密性。
第三,篡改。攻擊者故意篡改網路上傳送的報文,這是對完整性的攻擊。
第四,偽造。攻擊者偽造資訊在網路傳送,這是對真實性的攻擊
加密解密演算法
我們經常說加密解密演算法是資料安全領域裡的「劍」,是一種主動的防護,對資料進行必要的加密處理,以保證其在資料傳輸、儲存中的安全。
base64
嚴謹的說,
base64
並不是加密演算法,這裡提到他是因為他的實現比較簡單,通過他的實現,我們可以更好的理解加密解密的過程。
下面看下他是如何「加密」的。假設我們要對「
bc」字串進行加密。現將其轉換為二進位制表達方式,並連起來:
01000010 01000011
,接下來對二進位制按
6位分組,不夠6位補
0,得到
010000
、100100
、001100
(最後兩位補
0)。下面查表,找到對應的值「
qkm」。那麼「
qkm」就是「
bc」用
base64
「加密」後的值了。
value
char
value
char
value
char
value
char0
a 16
q 32
g 48
w 1
b 17
r 33
h 49
x 2
c 18
s 34
i 50
y 3
d 19
t 35
j 51
z 4
e 20
u 36
k 52
0 5
f 21
v 37
l 53
1 6
g 22
w 38
m 54
2 7
h 23
x 39
n 55
3 8
i 24
y 40
o 56
4 9
j 25
z 41
p 57
5 10
k 26
a 42
q 58
6 11
l 27
b 43
r 59
7 12
m 28
c 44
s 60
8 13
n 29
d 45
t 61
9 14
o 30
e 46
u 62
+ 15
p 31
f 47
v 63
/ 從上面的
base64
演算法,我們可以窺視部分加密的本質:將一段有意義的資訊,通過某種方式,對映為一段看不懂的資訊。使用函式表達即為:
public ciphertext encrypted(plaintext text);
值得注意的是,
base64
裡有一張對映表,如果改變對映表的順序,最終得到的結果就會跟著改變。有點類似烹調,在相同原料、相同烹調方式下,我們改變加入的調料,最終做出的東西將會也不一樣。這裡的對映表,我們叫之為「金鑰」。
通過base64
演算法,可以看出,乙個加密演算法會有兩部分組成:金鑰、演算法。兩者不能都公開,都公開的話,就可以被人逆向運算,進行解密。一般的,我們將金鑰進行保密,將演算法進行公開。演算法的公開,有利於演算法的推廣,普及,更有利於尋找演算法中的漏洞。也就是因為
base64
同時公開了演算法、金鑰,所以我們說他並不是真正的加密演算法。當然如果你調整了上面對映表,那麼也能做到加密演算法的目的,不過
base64
加密的強度比較差,所以不建議在實際應用中作為加密演算法使用。
加密解密演算法與通訊安全(三)
對稱加密演算法 理論上說對稱加密演算法,才是我們真正說的加密演算法。所謂對稱加密演算法,通俗的講,就是使用金鑰加密,再使用金鑰解密的加密演算法的總稱。也就是平時我們說到加密演算法,腦子裡第乙個跳出來的加密方式一般都是對稱加密演算法。上面將的 base64 其實也是一種 對稱加密演算法 只是其金鑰公開...
加密解密演算法與通訊安全(六)
數字證書 上面說了這麼多演算法,又是摘要演算法,又是對稱加密演算法,又是非對稱加密演算法的。但是對於通訊中的四種威脅 截獲 中斷 篡改 偽造最多也就只能解決其中的兩個,對於中斷 和偽造威脅,只能乾瞪眼。難道,就沒有其他辦法了嗎。對於中斷,一般是網路拓撲或協議級別要解決的問題,已經超出了我們的範疇,暫...
加密解密演算法與通訊安全(五)
數字簽名 以上三種演算法都有防篡改的功能,但摘要演算法 和對稱加密演算法若要防篡改,則需要交換金鑰,這又是一件麻煩事兒。所以一般在單純的防篡改的需求上,都是使用非對稱加密演算法。但若是對整個明文進行加密的話,加密過程勢必消耗大量時間,所以就誕生了數字簽名。數字簽名,本質上就是非對稱加密演算法,但出於...