Category Archives: 网络安全

TCP简单说下篇

本文摘自
https://www.kancloud.cn/kancloud/tcp/45893

TCP的RTT算法
从前面的TCP重传机制我们知道Timeout的设置对于重传非常重要。

设长了,重发就慢,丢了老半天才重发,没有效率,性能差;
设短了,会导致可能并没有丢就重发。于是重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。
而且,这个超时时间在不同的网络的情况下,根本没有办法设置一个死的值。只能动态地设置。 为了动态地设置,TCP引入了RTT——Round Trip Time,也就是一个数据包从发出去到回来的时间。这样发送端就大约知道需要多少的时间,从而可以方便地设置Timeout——RTO(Retransmission TimeOut),以让我们的重传机制更高效。 听起来似乎很简单,好像就是在发送端发包时记下t0,然后接收端再把这个ack回来时再记一个t1,于是RTT = t1 – t0。没那么简单,这只是一个采样,不能代表普遍情况。

继续阅读

Posted in 网络安全, 网络开发 | Tagged , | Leave a comment

TCP 简单说上篇

本文转自:
https://www.kancloud.cn/kancloud/tcp/45892

TCP头格式
接下来,我们来看一下TCP头的格式

你需要注意这么几点:

TCP的包是没有IP地址的,那是IP层上的事。但是有源端口和目标端口。
一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议。但因为这里只是说TCP协议,所以,这里我只说四元组。
注意上图中的四个非常重要的东西:
Sequence Number是包的序号,用来解决网络包乱序(reordering)问题。
Acknowledgement Number就是ACK——用于确认收到,用来解决不丢包的问题。
Window又叫Advertised-Window,也就是著名的滑动窗口(Sliding Window),用于解决流控的。
TCP Flag ,也就是包的类型,主要是用于操控TCP的状态机的。
关于其它的东西,可以参看下面的图示

继续阅读

Posted in 网络安全, 网络开发 | Tagged | Leave a comment

数字签名的原理

数字签名的原理

转自:

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

今天,我读到一篇好文章

它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。

我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出来了。

继续阅读

Posted in 网络安全 | Leave a comment

非对称算法原理解析 – RSA 2

非对称算法原理解析 – RSA 2

非对称算法原理解析 – RSA 2

有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。

六、密钥生成的步骤

我们通过一个例子,来理解RSA算法。假设爱丽丝要与鲍勃进行加密通信,她该怎么生成公钥和私钥呢?

继续阅读

Posted in 网络安全 | Leave a comment

非对称算法原理解析 – RSA 1

rsa-1

非对称算法原理解析 – RSA 1

本文转载自:

阮一峰的网络日志

如果你问我,哪一种算法最重要?

我可能会回答"公钥加密算法"

因为它是计算机通信安全的基石,保证了加密数据不会被破解。你可以想象一下,信用卡交易被破解的后果。

继续阅读

Posted in 网络安全 | Leave a comment

非对称算法 RSA DH 还有ECDH

非对称算法 RSA DH 还有ECDH

  虽然对称算法的效率高,但是密钥的传输需要另外的信道。非对称算法RSA和DH可以解决密钥的传输问题(当然,它们的作用不限于此)。这两个算 法的名字都是来自于算法作者的缩写,希望有朝一日能够出现用中国人命名的加密算法。非对称算法的根本原理就是单向函数,f(a)=b,但是用b很难得到 a。   RSA算法   RSA算法是基于大数难于分解的原理。不但可以用于认证,也可以用于密钥传输。那么用户A和B如何利用RSA算法来传输密钥呢? 1:A产生一个密钥K,用B的公钥加密K,然后将得到的密文发送给B。 2:B用自己的私钥解密收到的密钥,就可以得到密钥。  (感谢网友的提醒,已经修改了) DH算法   DH算法的出现就是用来进行密钥传输的。DH算法是基于离散对数实现的。用户A和B如何利用RSA算法来传输密钥? 在通信前,用户A和B双方约定2个大整数n和g,其中1,这两个整数可以公开 1)   A随机产生一个大整数a,然后计算Ka=ga mod n。(a需要保密) 2)   B随机产生一个大整数b,然后计算Kb=gb mod n。(b需要保密) 3)   A把Ka发送给B,B把Kb发送给A 4)   A计算K=Kba mod n 5)   B计算K=Kab mod n 由于Kba mod n= (gb mod n)a mod n= (ga mod n)b mod n,因此可以保证双方得到的K是相同的,K即是共享的密钥。     ECDH算法 ECC 算法用途比RSA还猛,不仅可以加解密、签名验证。还可以与DH结合使用,用于密钥磋商,这个密钥交换算法称为ECDH。交换双方可以在不共享任何秘密的 情况下协商出一个密钥。ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点P,一个整数k,求解Q=kP很容易;给定一个点 P、Q,知道Q=kP,求整数k确是一个难题。ECDH即建立在此数学难题之上。密钥磋商过程:

       假设密钥交换双方为Alice、Bob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。

1) Alice生成随机整数a,计算A=a*G。Bob生成随机整数b,计算B=b*G。

2) Alice将A传递给Bob。A的传递可以公开,即攻击者可以获取A。由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。Bob将B传递给Alice。同理,B的传递可以公开。

继续阅读

Posted in 网络安全 | Leave a comment

强大的linux命令ncat

强大的linux命令ncat      

ncat是linux内置的一个命令,可以提供tcp,udp的服务器和客户端,还可以作为代理服务器。

所以如果测试,完全不用自己写一个tcp和udp的服务器,直接使用ncat就可以。ncat默认是工作于tcp模式,如果要工作udp,则使用 -u选项。下面介绍一些非常经典的应用。

继续阅读

Posted in Linux系统学习, 网络安全, 网络开发 | 4 Comments

理解HTTPS

理解HTTPS

HTTPS是HTTP + TLS(SSLv3)

HTTP是明文传送服务器与客户端之间的通讯内容。TLS是加密协议,

TLS=Transport Layer Security(传输层安全协议)

有了TLS的加入,就使客户端和服务器之间的通讯变成保密的了。关于TLS的详细的内容,请参看国际工程任务组的官网,

继续阅读

Posted in 网络安全 | Leave a comment

设置笔记本为WiFi热点(hotspot)

设置笔记本为WiFi热点(hotspot)

设置笔记本为WiFi热点(hotspot)就是共享你的笔记本的网络,


run cmd.exe as administrator

// create new virtual network adapter
netsh wlan set hostednetwork mode=allow ssid=myhost key=12345678
// wiki ssid: myhost
// wiki connection password: 12345678

// to start hotspot network created just now
netsh wlan start hostednetwork
— The hosted network started.

继续阅读

Posted in 网络安全, 网络开发 | Leave a comment

Linux配置网络

Linux配置网络

在windows下面配置网络相对简单,因为有可视化的界面。在linux下面稍微麻烦,因为主要靠命令行。

整个设置过程包括:

  • 设置机器名(hostname)
  • 设置IP,子网掩码,网关
  • 设置DNS

设置机器名(hostname)

Debian and Ubuntu

/etc/hostname

CentOS/Fedora

/etc/sysconfig/network

设置DNS

/etc/resolv.conf

添加如下内容:

nameserver 8.8.8.8

设置IP,子网掩码,网关

这里说的是静态IP

Debian & Ubuntu

/etc/network/interfaces

# The loopback interface
auto lo
iface lo inet loopback

# Configuration for eth0
# We no longer need to use aliases (eg. eth0:0 eth0:1 eth0:2)
# This line ensures that the interface will be brought up during boot
auto eth0
allow-hotplug eth0

# The address and gateway are necessary.
# The netmask is taken automatically from the block.
# Example: /24 is considered to be a public IP address: netmask 255.255.255.0
iface eth0 inet static
    address 198.51.100.5/24
    gateway 198.51.100.1

# This is a second public IP address
iface eth0 inet static
    address 192.0.2.6/24

# This is a private IP address. Private IPs do not have a gateway (they are not publicly routable).
# All you need to specify is the address and the block. The netmask is taken from the block.
# Example: /17 is considered to be a private IP address: netmask 255.255.128.0
iface eth0 inet static
address 192.168.133.234/17

继续阅读

Posted in Linux系统学习, 网络安全 | Leave a comment