tcp/ip网络通讯安全加密方法

简介:

tcp/ip网络通讯安全是一个广受关注的话题,现在也有一些基于tcp/ip加密技术标准如SSL,TLS等。但很多时候编写一些简单的网络通讯把这标准加密应用添加进来乎一下子把程序变得复杂了,而实现自己的加密算法那就更加不可取;其实通过一些现有的加密的技术应用完全可以实现即简单又安全的网络通讯程序。首先保证网络通讯安全有两个方面,第一保证连接的有效性,其二就是保证内容即使被人拦截也难以从内容得到相关信息。

连接有效性

平常写网络程序在允许一个连接接入操作的时候,我们一般要对它进行一个有效性验证,如提供用户名密码或签名。

签名:

通过用户提供一分数据和数据相关签名信息,对方进行一个有效性验证。那这个数据和签名数据怎么做呢,其实现有加密技术中已经有一种描述提供了这种解决方案那就是RSA(非对称加密)。可以通过 RSA 的持有privatekey和publickey方进行一个数据签名,对方通过publickey进行一个验证.如果publickey和privatekey是配对的情况,那持有publickey就能验证成功,否则就会验证失败。在连接进行操作前可以通过这种方式进行处理,签名有效允许连接操作,无效的话可以直接把连接关闭。

下面介绍通过c#如何实现这种签名:

1
2
3
4
5
6
RasCrypto pri = new  RasCrypto();
RasCrypto pub = new  RasCrypto();
pub.PublicKey = pri.PublicKey;
string  name = "henry" ;
string  singdata = pri.Sign(name);
Console.WriteLine(pub.Verify(name, singdata));

RasCrypto是通过封装的类,源代码可以通过https://smarkdata.svn.codeplex.com/svn/Smark/Smark.Core/Smark.Core/RasCrypto.cs获取;在实际使用中最好是根据不同签名有不同的密对,这样即使某签名的密对被盗也不会影响其他用户的安全。

用户名密码:

基于用户名和密码验证是一种很常见的方式,但有个问题就是如何保证用户名和密码在通讯过程即使被截取了也难以得到用户名和密码呢?其实通过 RSA 也能够很好地解决这一问题。 RSA 提供public key加密而private key解密的方式,可以把public key提供给请求方就行了,private key保存在服务端;这样就可以保证加密的东西只有服务端才有解密,即使加密信息被其他人拦截也难以获取原有信息。

下面介绍通过c#使用ras进行加解密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
RasCrypto server = new  RasCrypto();
RasCrypto client = new  RasCrypto();
client.PublicKey = server.PublicKey;
string  name = "henry" ;
string  pwd = "123456" ;
string  ename = client.Encrypt(name);
string  epwd = client.Encrypt(pwd);
string  dname = server.Decrypt(ename);
string  dpwd = server.Decrypt(epwd);
Console.WriteLine( "name:{0}" , name);
Console.WriteLine( "pwd:{0}" , pwd);
Console.WriteLine( "-----------------------------------------------------------" );
Console.WriteLine( "ename:{0}" , ename);
Console.WriteLine( "epwd:{0}" , epwd);
Console.WriteLine( "-----------------------------------------------------------" );
Console.WriteLine( "dname:{0}" , dname);
Console.WriteLine( "dpwd:{0}" , dpwd);
Console.WriteLine( "-----------------------------------------------------------" );

 

为了应用更安全,针对不同的连接生成不同的RSA密对,这样就能保证每个连接的各自安全性.

信息加密

前面提到的 RSA 可以进行数据加解密,其安全性也非常可靠;但有个缺点就是RSA对数据比多的时候加密比较慢,有些 RSA 加密的实现还有数据长度的限制。所以在很多情况下就要选择别的加密方式,这里介绍DES(对称加密)。不过对称加密有个缺点就是密对双方都必须一样,这样就会导致一个问题就从某一方获取密对就能对数据加密和解密工作。所以对称加的密对保护就显示非常重要的,这个工作可以交给 RSA 来做。

以下是c#运用 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
RasCrypto server = new  RasCrypto();
  RasCrypto client = new  RasCrypto();
  client.PublicKey = server.PublicKey;
  DESCrypto serverdes = new  DESCrypto();
  DESCrypto clientdes = new  DESCrypto();
  //获取没加密的key,iv
  DESCrypto.DESInfo info = clientdes.KeyInfo;
  Console.WriteLine( "KEY: " +Smark.Core.Functions.ToString(info.Key));
  Console.WriteLine( "IV: " +Smark.Core.Functions.ToString(info.IV));
  Console.WriteLine( "" );
  //设置相应的RSA信息
  serverdes.PrivateRas = server;
  clientdes.PublicRas = client;
  //获取了设置RSA信息的key,iv
  info = clientdes.KeyInfo;
  Console.WriteLine( "KEY: "  + Smark.Core.Functions.ToString(info.Key));
  Console.WriteLine( "IV: "  + Smark.Core.Functions.ToString(info.IV));
  //数据加密
  serverdes.KeyInfo = info;
  string  value = "henryfan@msn.com" , evalue = null , dvalue = null ;
  evalue = serverdes.Encrypt(value);
  dvalue = clientdes.Decrypt(evalue);
  Console.WriteLine( "VALUE: "  + value);
  Console.WriteLine( "EVALUE: "  + evalue);
  Console.WriteLine( "DVALUE: "  + dvalue);
  Console.WriteLine( "" );
  evalue = clientdes.Encrypt(value);
  dvalue = serverdes.Decrypt(evalue);
  Console.WriteLine( "VALUE: "  + value);
  Console.WriteLine( "EVALUE: "  + evalue);
  Console.WriteLine( "DVALUE: "  + dvalue);
  Console.WriteLine( "" );
  Console.Read();

    通过RSA和DES就能够简单地实现可靠的网络通讯安全,不过有些朋友喜欢构建自己的加密方法,在这里并不见意这样做;因为自己构建的加密方法的可靠性并没有得到验证,并不像现有的加密方法经过长时候实践和大量的应用总结出来。

相关资料:

DES http://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E5%8A%A0%E5%AF%86%E6%A8%99%E6%BA%96 

RSA http://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95

目录
相关文章
|
8天前
|
SQL 安全 算法
网络防御前线:洞悉漏洞、加固加密与提升安全意识
【4月更文挑战第8天】在数字化时代,网络安全与信息安全已成为维系信息社会正常运转的关键。本文从网络安全的漏洞发现、加密技术的应用以及提高个人和组织的安全意识三个维度出发,深入探讨了如何构建更为坚固的网络防御体系。通过对现有网络安全威胁的分析,我们揭示了漏洞挖掘的重要性,并介绍了当前流行的加密技术及其在保护数据完整性和隐私中的作用。同时,文章还强调了培养良好的安全习惯对预防潜在攻击的重要性。本文旨在为读者提供全面的网络安全知识框架,以便更好地应对日益复杂的网络威胁环境。
|
8天前
|
安全 算法 网络安全
网络防御的三重奏:漏洞管理、加密技术与安全意识
【4月更文挑战第7天】在数字化时代,网络安全和信息安全已成为企业和个人不可忽视的战场。本文将深入探讨网络安全的核心问题——漏洞管理,介绍现代加密技术的进展,并强调提升安全意识的重要性。通过分析网络攻击的常见手段,我们揭示了有效管理漏洞的策略;同时,评估了从对称加密到非对称加密,再到量子加密的技术演进。最后,文章指出,在技术和工具不断进步的同时,用户的安全意识仍是防御体系中不可或缺的一环。
|
4天前
|
安全 网络协议 网络安全
网络原理(5)--HTTPS是如何进行加密的
网络原理(5)--HTTPS是如何进行加密的
5 0
|
4天前
|
安全 算法 网络协议
保障数据安全:网络安全漏洞与加密技术探析
网络安全漏洞的存在已成为当今互联网世界中的一大隐患,而加密技术的应用则被视为保障信息安全的有效手段。本文将就网络安全漏洞的成因、加密技术的原理以及提升安全意识的重要性进行探讨,旨在加深读者对网络安全与信息安全的认识,为构建更安全的网络环境贡献一份力量。
13 2
|
8天前
|
监控 安全 算法
网络安全与信息安全:防范漏洞、强化加密、提升意识
【4月更文挑战第8天】在数字化时代,网络安全与信息安全已成为全球关注的焦点。本文将深入探讨网络安全中的漏洞问题、加密技术的发展以及安全意识的重要性。通过对这些关键领域的分析,旨在为读者提供全面的安全防护策略和实践建议,以应对日益复杂的网络威胁。
|
18天前
|
安全 网络安全 数据安全/隐私保护
探究网络安全漏洞与加密技术:保护信息安全的关键
在当今数字化时代,网络安全漏洞已成为信息安全的重要挑战之一。本文将深入探讨网络安全漏洞、加密技术以及安全意识对于信息安全的重要性,旨在引起人们对网络安全问题的关注,提升信息安全意识。
11 3
|
18天前
|
存储 安全 网络安全
探究网络安全与信息安全:漏洞、加密与安全意识
在当今数字化时代,网络安全和信息安全日益受到重视。本文将深入探讨网络安全漏洞、加密技术以及安全意识等方面的知识,帮助读者更好地了解和应对网络安全挑战。通过分析现有漏洞、介绍加密技术原理以及强调安全意识的重要性,旨在提升读者对网络安全的认识和应对能力。
11 0
|
20天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:防范漏洞、强化加密、提升意识
随着互联网的普及和技术的飞速发展,网络安全和信息安全问题日益凸显。本文将探讨网络安全漏洞的形成原因、加密技术的应用以及提升安全意识的重要性,以期为读者提供关于网络安全与信息安全的知识分享。
11 2
|
21天前
|
存储 安全 网络安全
探索网络安全之道:漏洞修复、加密技术与安全意识
在当今数字化时代,网络安全问题日益突出,漏洞、加密技术和安全意识成为保障信息安全的关键。本文将深入探讨网络安全领域的重要议题,带您一起了解漏洞修复的必要性、加密技术的应用以及提升安全意识的重要性。
10 1
|
21天前
|
安全 网络安全 区块链
网络安全与信息安全:漏洞、加密技术与安全意识
在当今数字化时代,网络安全和信息安全已经成为人们关注的焦点。本文将深入探讨网络安全漏洞、加密技术以及安全意识等方面的知识,并提出相应的解决方案,以增强读者对网络安全和信息安全的认识。
8 0