tcp/ip网络通讯安全加密方法[通俗易懂]
tcp/ip網(wǎng)絡(luò)通訊安全是一個(gè)廣受關(guān)注的話題,現(xiàn)在也有一些基于tcp/ip加密技術(shù)標(biāo)準(zhǔn)如SSL,TLS等。但很多時(shí)候編寫一些簡單的網(wǎng)絡(luò)通訊把這標(biāo)準(zhǔn)加密應(yīng)用添加進(jìn)來乎一下子把程序變得復(fù)雜了,而實(shí)現(xiàn)自己的加密算法那就更加不可取;其實(shí)通過一些現(xiàn)有的加密的技術(shù)應(yīng)用完全可以實(shí)現(xiàn)即簡單又安全的網(wǎng)絡(luò)通訊程序。首先保證網(wǎng)絡(luò)通訊安全有兩個(gè)方面,第一保證連接的有效性,其二就是保證內(nèi)容即使被人攔截也難以從內(nèi)容得到相關(guān)信息。
連接有效性
平常寫網(wǎng)絡(luò)程序在允許一個(gè)連接接入操作的時(shí)候,我們一般要對(duì)它進(jìn)行一個(gè)有效性驗(yàn)證,如提供用戶名密碼或簽名。
簽名:
通過用戶提供一分?jǐn)?shù)據(jù)和數(shù)據(jù)相關(guān)簽名信息,對(duì)方進(jìn)行一個(gè)有效性驗(yàn)證。那這個(gè)數(shù)據(jù)和簽名數(shù)據(jù)怎么做呢,其實(shí)現(xiàn)有加密技術(shù)中已經(jīng)有一種描述提供了這種解決方案那就是RSA(非對(duì)稱加密)。可以通過 RSA的持有privatekey和publickey方進(jìn)行一個(gè)數(shù)據(jù)簽名,對(duì)方通過publickey進(jìn)行一個(gè)驗(yàn)證.如果publickey和privatekey是配對(duì)的情況,那持有publickey就能驗(yàn)證成功,否則就會(huì)驗(yàn)證失敗。在連接進(jìn)行操作前可以通過這種方式進(jìn)行處理,簽名有效允許連接操作,無效的話可以直接把連接關(guān)閉。
下面介紹通過c#如何實(shí)現(xiàn)這種簽名:
| 1 2 3 4 5 6 |
|
RasCrypto是通過封裝的類,源代碼可以通過https://smarkdata.svn.codeplex.com/svn/Smark/Smark.Core/Smark.Core/RasCrypto.cs獲取;在實(shí)際使用中最好是根據(jù)不同簽名有不同的密對(duì),這樣即使某簽名的密對(duì)被盜也不會(huì)影響其他用戶的安全。
用戶名密碼:
基于用戶名和密碼驗(yàn)證是一種很常見的方式,但有個(gè)問題就是如何保證用戶名和密碼在通訊過程即使被截取了也難以得到用戶名和密碼呢?其實(shí)通過 RSA也能夠很好地解決這一問題。 RSA提供public key加密而private key解密的方式,可以把public key提供給請(qǐng)求方就行了,private key保存在服務(wù)端;這樣就可以保證加密的東西只有服務(wù)端才有解密,即使加密信息被其他人攔截也難以獲取原有信息。
下面介紹通過c#使用ras進(jìn)行加解密
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
為了應(yīng)用更安全,針對(duì)不同的連接生成不同的RSA密對(duì),這樣就能保證每個(gè)連接的各自安全性.
信息加密
前面提到的 RSA可以進(jìn)行數(shù)據(jù)加解密,其安全性也非常可靠;但有個(gè)缺點(diǎn)就是RSA對(duì)數(shù)據(jù)比多的時(shí)候加密比較慢,有些 RSA 加密的實(shí)現(xiàn)還有數(shù)據(jù)長度的限制。所以在很多情況下就要選擇別的加密方式,這里介紹DES(對(duì)稱加密)。不過對(duì)稱加密有個(gè)缺點(diǎn)就是密對(duì)雙方都必須一樣,這樣就會(huì)導(dǎo)致一個(gè)問題就從某一方獲取密對(duì)就能對(duì)數(shù)據(jù)加密和解密工作。所以對(duì)稱加的密對(duì)保護(hù)就顯示非常重要的,這個(gè)工作可以交給 RSA來做。
以下是c#運(yùn)用 RSA+DES的加解密方法
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
通過RSA和DES就能夠簡單地實(shí)現(xiàn)可靠的網(wǎng)絡(luò)通訊安全,不過有些朋友喜歡構(gòu)建自己的加密方法,在這里并不見意這樣做;因?yàn)樽约簶?gòu)建的加密方法的可靠性并沒有得到驗(yàn)證,并不像現(xiàn)有的加密方法經(jīng)過長時(shí)候?qū)嵺`和大量的應(yīng)用總結(jié)出來。
相關(guān)資料:
DEShttp://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E5%8A%A0%E5%AF%86%E6%A8%99%E6%BA%96
RSAhttp://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95
總結(jié)
以上是生活随笔為你收集整理的tcp/ip网络通讯安全加密方法[通俗易懂]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MYSQL 去除重复 记录
- 下一篇: POJ 2513 Colored Sti