自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Remy的学习记录

不积小流,无以成江海

  • 博客(88)
  • 资源 (2)
  • 收藏
  • 关注

原创 OpenSSL-Async mode

一、Async mode的功能Asyn mode是OpenSSL支持异步I/O(AIO)的模式,在这个模式下openssl把硬件加速卡等不占用cpu的操作剥离出来,单独交给一个叫asyn job的结构去做。在asyn job执行的过程中,cpu可以把当前任务暂停,切换上下文(保存/恢复栈,寄存器等,用__setjump, longjump实现)返回给user。User需要主动(或者等待硬件加速...

2019-07-13 06:57:56 4839 6

原创 CentOS7安装QAT 1.7加密卡

1. 准备材料1.1 机器物理PC一台(记作A),安装QAT加密卡硬件和CentOS 7系统。1.2 Tools登录A,执行:# yum install -y kernel kernel-devel openssl-devel pciutils zlib-devel gcc libudev-devel boost-devel如果内核有更新,重启。1.3 Code1....

2018-03-05 11:03:57 6878 4

翻译 RFC 8446 TLS 1.3(翻译进度:第4章)

1. 介绍 TLS 的主要目标是为通信的双方提供一个安全的通道;对下层传输的唯一要求是一个可靠的,有序的数据流。特别的地,安全通道应该提供如下属性: - 认证: 通道的server端应该总是被认证的;client端可以选择性的认证。认证可以通过非对称算法(例如,RSA, 椭圆曲线数字签名算法(ECDSA),或Edwards曲线数字签名算法(EdDSA))完成,或通过一个对称的预...

2018-01-19 16:51:10 3784

原创 OpenSSL-SNI

一、    什么是SNI?    SNI是Server Name Indication的缩写,是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展。它允许客户端在发起SSL握手请求时(客户端发出ClientHello消息中)提交请求的HostName信息,使得服务器能够切换到正确的域并返回相应的证书。    在SNI出现之前,HostName信息只存在于HTTP请求中,但SSL/TL

2017-09-14 13:36:44 10703 2

原创 OpenSSL-TLS重协商

一、什么是重协商    大部分TLS连接都以handshake为开始,经过应用数据的交换,最后关闭会话。如果在第一次handshake之后(可能经历了应用数据的交换也可能没有)请求重新协商,就会发起一次新的handshake,对新的安全参数达成一致。重协商的handshake的消息都是全部加密的,这与第一次handshake明显不同。    重协商功能应用场景举例:*) Client证

2017-09-08 08:35:39 28306 4

原创 OpenSSL-证书链

SSL的CA证书可分为两种:Root CA(根CA证书)和Intermediate CA(中间CA证书)。其中Root CA是信任锚点,一条证书链中只能有一个。Intermediate CA可以有多个。Root CA通常不直接签发用户证书,而是签发Intermediate CA,由Intermediate CA来签发终用户书。它们之间的关系如下图所示:    证书链就是Root CA签

2017-07-28 12:54:53 11065 2

转载 kerberos认证原理

前几天在给人解释Windows是如何通过Kerberos进行Authentication的时候,讲了半天也别把那位老兄讲明白,还差点把自己给绕进去。后来想想原因有以下两点:对于一个没有完全不了解Kerberos的人来说,Kerberos的整个Authentication过程确实不好理解——一会儿以这个Key进行加密、一会儿又要以另一个Key进行加密,确实很容易把人给弄晕;另一方面是我讲解方式有问题

2017-03-27 19:59:48 761

原创 PKI/CA与数字证书学习笔记

现代密码学设计时,一般总假定密码系统的结构是公开的,或者至少为敌人所知。这一假设被称为科考夫原则(Kerckhoff's Principle)。密码系统的结构被称作密码算法,进行加密或解密操作所需的关键参数被称为密钥。现代密码学的安全性主要取决于密钥的设计和使用。密钥管理主要包括:密钥产生、密钥传输、密钥验证、密钥更新、密钥存储、密钥备份、密钥销毁、密钥有效期、密钥使用等。对称密钥管理技术和非对称

2017-03-26 21:20:16 6207

翻译 数据报传输层安全(DTLS)1.2版

1. 介绍   TLS [TLS]是使用最广泛的网络流量安全协议。它被广泛用于保护网页流量和电子邮件协议如IMAP [IMAP]和POP [POP]。TLS的主要优势是它提供了一个透明的有向通道。因此,它容易通过在应用侧鞥和传输层插入TLS来保护应用层协议。然而,TLS必须运行与一个可靠的传输信道 -- 典型的是TCP [TCP]。因此,它不能被用于保护不可靠的数据报流量。   使用U

2017-03-21 17:33:16 14005

转载 ECC Cipher Suites 加密套件在TLS中的应用 RFC 4492

原文地址:http://blog.csdn.net/dyrou/article/details/10329311简介 本文档介绍了ECC算法在TLS协议中的使用方法,是对RFC 4492文档进行的翻译。由于翻译本文档时,对协议的认识有限,请大家指出错误和建议。 摘要       本文档介绍了基于ECC的密钥交换算法在TLS协议中的应用,在协议的握手过程中使用ECDH

2016-12-27 08:53:29 4268

原创 学习:汇编语言

一、leaveq与retqleaveq和retq中的q是指64位操作数。leaveq相当于:movq %rbp, %rsppopq %rbpretq相当于:popq %rip注意leaveq跟开头是对应的:push   %rbpmov    %rsp,%rbp有些指令集也把它叫做enterq。而与retq对应的是callq,相当于:pushq %ri

2016-10-15 17:20:26 6374 5

原创 Ubuntu Linux与Vmware虚拟机通过串口通信的配置

一 配置Vmware虚拟机点击:Settings-->Hardware->Add, 选中"Serial Port":

2016-07-16 15:45:30 6010

翻译 传输层安全协议(TLS)1.2版

1.介绍 TLS协议的主要目标是在两个通信应用之间提供私密性和数据完整性。这个协议由两层组成:TLS记录协议和TLS握手协议。最低层是基于一些可靠传输协议(如TCP)的TLS记录协议。TLS记录协议提供的连接安全有两个基本性质:连接是私有的。对称密码学被用于数据加密(如:AES,RC4等)。对称加密的密钥对每条连接都是独特的,而且是基于另外一种协议(如TLS握手协议)进行的秘密协商而生...

2016-02-03 12:57:50 24674 4

翻译 密码学常见应用错误

原文地址:http://security.stackexchange.com/questions/2202/lessons-learned-and-misconceptions-regarding-encryption-and-cryptology注:并非逐字翻译,有些是个人理解不要自己发明加密算法原因:加密算法十分复杂,需要大量的审核才能证明其安全。如果你自己发明了加密算

2015-12-30 17:15:18 1937

原创 密码学学习笔记

1.流密码每次加密数据流的一位或一个字节,分组密码是将一个明文分组作为整体加密并且通常得到的是与明文等长的密文分组。 2.现在使用的大多数对称分组加密算法都是基于Feistel分组密码结构的。

2015-12-22 13:57:47 2043

原创 关于ARP欺骗的一点发现

ARP欺骗的一种应用场景是劫持局域网通信流量(通常是某个机器和网关之间的流量)。比如有局域网中两个机器A(MAC地址为MA)和B(MAC地址为MB)通信,C机器(MAC地址为MC)想要实现中间人攻击,实现方法是向A发送ARP应答,告诉A:B的MAC地址是MC;并向B发送ARP应答,告诉B:A的MAC地址是MC。A和B收到ARP应答后会直接刷新ARP缓存,而不管这个应答对应的是哪个ARP请求。这样A

2015-10-28 13:50:23 1023

原创 Linux Rootkit之三:系统调用劫持简介

系统调用

2015-07-24 22:09:22 2433

原创 Linux Rootkit之二:Linux模块加载与信息隐藏

LKM Rootkit是通过向系统中加载内核模块实现的。模块加载到系统后会增加一些可供系统探知其存在的信息,而这些信息正是Rootkit希望隐藏起来的。为了明确Linux模块向系统注册的信息以及隐藏方法,首先研究一下Linux模块加载的过程。2.1 代码示例    在Linux系统下创建一个名为rl_module.c的文件,填入如下内容:#include #include #inc

2015-06-16 21:55:42 3595

原创 Linux Rootkit之一:Linux Rootkit简介

1.1定义Rootkit是一套由入侵者留在系统中的后门程序。Rootkit通常只有在系统已经被侵入并且获得root权限后才被安装进系统,并帮助入侵者长期控制系统,,搜集主机和网络信息,并隐藏入侵者的痕迹。也就是说,Rootkit需要持久并毫无察觉地驻留在目标系统中,对系统进行操纵、并通过隐秘渠道收集数据的程序。所以,Rootkit的三要素就是:隐藏、操纵、收集数据。不同的操作系统会有不同的Ro

2015-06-13 22:10:47 3372

原创 CentOS下Gerrit代码评审服务器的搭建与使用

一、准备工作        安装CentOS7操作系统,准备Gerrit软件安装包:gerrit-2.10.war。        安装sendmail:[root@localhost ~]#yum install -y sendmail        安装apache:[root@localhost ~]#yum install -y httpd        创建一

2015-06-08 09:30:10 8347

原创 Windows下Git的安装与使用

一、安装1.1 软件准备        Win7 64位系统,Git-1.9.5-preview20150319.exe,TortoiseGit-1.8.14.0-64bit.msi。其中Git-1.9.5-preview是GIt的核心组件,只安装这个软件就可以用命令行的方式使用GIt。如果想用图形化界面的方式使用Git就需要安装TortoiseGit。1.2 安装Git-1.9.

2015-06-01 09:49:21 14203 2

原创 搭建PXE网络启动服务器安装CentOS7系统

一、服务器系统安装        PXE服务器使用CentOS7-x86_64位系统。最好配置上网权限,这样能够用yum方便地安装软件包。二、安装TFTP服务        首先安装tftp软件包:yum install -y tftp-server       创建tftpboot目录用做tftp服务器的根目录:mkdir -p /tftpboot      编辑tftp配置

2015-05-27 12:48:39 11221

转载 Windows Rootkit 技术分析

原文地址:http://blog.csdn.net/gzfqh/article/details/591879现在很多人对rootkit认识不够,可以说空白。而此文的目的就是让大家认识rootkit→了解rootkit。也让一些想研究它的人把这篇文章当作一个参考或是入门级的指导。*******************************************************

2015-05-09 14:43:29 3315

原创 12.3 拥塞控制流程

12.2.1 TCP拥塞状态        TCP拥塞状态共有5个:135 enum tcp_ca_state {136 TCP_CA_Open = 0,137 #define TCPF_CA_Open (1<<TCP_CA_Open)138 TCP_CA_Disorder = 1,139 #define TCPF_CA_Disorder (1<<TCP_CA

2015-04-23 07:22:01 1478 2

原创 12.2 拥塞控制简介

12.1.1 拥塞控制的作用       网络的带宽是有限的,如果到达通信子网中某一部分的包数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿, 这种现象就是网络拥塞。如果把网络中的数据传输比作交通运输的话,拥塞就是交通堵塞。交通堵塞是无法彻底避免的,但可以减少和缓解。遵守交通规则是减少交通堵塞的有效方法,而拥塞控制算法则是网络通

2015-04-19 14:52:57 1603

原创 12.1 抵达鱼人岛

现在我们要进入TCP协议中最复杂也是最关键的部分——拥塞控制。如果TCP是一个巨人,我们之前所研究的只是这个巨人的外形、肌肉和骨骼,拥塞控制是他的内脏,是真正决定其生机与活力的部分;若把TCP探秘之旅比作海贼王(航海王)中Monkey·D·Luffy一伙的冒险旅程,那么之前的探索只是伟大航路(Grand Line)的前半段——乐园。我们现在是Grad Line的中点——鱼人岛,即将进入更加新奇、更

2015-04-15 09:36:01 1168

原创 11.3 TCP内核同步

11.3.1 锁的结构        由2.1 Socket系统调用我们知道,一个TCP socket在内核有一个数据结构,这个数据结构是不能被两个及其以上的使用者同时访问的,否则就会由于数据不一致导致严重的问题。在Linux中,TCP socket的使用者有两种:进程(线程)和软中断。同一时间可能会有两个进程(线程),或位于不同CPU的两个软中断,或进程(线程)与软中断访问同一个socket

2015-04-14 12:27:37 1646

原创 11.2 epoll系统调用

在完成listen系统调用后,作为TCP Server的进程就可以等待接受连接请求了。当请求到来时,进程需要调用accept系统调用生成一个新的socket,并用之与客户端传输数据。这时进程需要管理的socket有两类:1)等待请求到来并与之建立连接的socket;2)已经与客户端建立的一对一的连接并与之进行数据传输的socket。当这些socket的数量很多时,如何及时获知哪些socket有可读

2015-04-14 11:03:13 1384 1

原创 11.1 I/O模型概览

2015-04-13 23:43:15 805

原创 10.3 接收缓存管理

TCP收到对端发送的数据后,通常不能立即交付应用进程。在应用进程取走数据之前,数据需要保存在接收缓存之中。如果应用进程取数据的速度比TCP从对端收数据的速度慢,则接收缓存中的数据会越来越多。因此在skb被放入接收缓存之前必须检查接收缓存能容纳的内存数,如果超出限制则必须丢弃skb。10.3.1 缓存占用

2015-04-13 17:06:31 2002

原创 10.2 发送缓存管理

应用进程使用TCP发送的数据会先放入发送缓存中,TCP的发送缓存是一个skb队列。这个队列存在的意义是:保证应用进程交付TCP的数据能够可靠地交付目的端。在收到对端的ACK之前,发送缓存中的数据不能删除。10.2.1 使用缓存        对发送缓存的使用是从tcp_sendmsg函数开始的: 1016 int tcp_sendmsg(struct kiocb *iocb,

2015-04-13 13:55:45 1525

原创 10.1 缓存管理简介

TCP

2015-04-12 23:35:12 760

原创 9.10 TIME_WAIT定时器

9.10.1 Why        当socekt进入TIME_WAIT状态后,TIME_WAIT定时器启动。在超时之前,替代socket的tw sock会处理旧连接中的包,阻止其危害新连接。定时器超时后,tw sock被删除,并释放其占用的端口号。

2015-04-10 16:48:26 1324 2

原创 9.9 FIN_WAIT2定时器

9.9.1 Why        如果应用进程调用close系统调用关闭socket,但此时socket与对端的通信尚未完成,则这个socket被称为“孤儿socket”。如果孤儿socekt进入FIN_WAIT2状态(或socket进入FIN_WAIT2状态后再成为孤儿socket),会等待对端发送FIN以彻底结束连接。但如果对端一直不发送FIN则这个孤儿socekt会一直存在,从而一直占用

2015-04-10 16:06:08 1450

原创 9.8 延迟ACK定时器

9.8.1 Why        TCP在收到数据后必须发送ACK给对端,但如果每收到一个包就给一个ACK的话会使得网络中被注入过多报文。TCP的做法是在收到数据时不立即发送ACK,而是设置一个定时器,如果在定时器超时之前有数据发送给对端,则ACK会被携带在数据中捎带过去;超时则由定时器发送ACK。这样就减少了报文的发送,提高了协议的效率。9.8.2 When        设置延迟A

2015-04-10 14:30:36 2119

原创 9.7 保活(Keepalive)定时器

9.7.1 Why        当单工模式下TCP数据发送方发送了一些数据后就不再发数据,数据接收方也不会发送报文,这时TCP连接处于静止状态(比如Telnet应用)。保活功能可以使用保活定时器向对端发送探测报文来确定对端的连接是否正常,如果对端有回应则继续维持连接,否则关闭连接,释放资源。开启保活功能需要使用SO_KEEPALIVE socket选项。9.7.2 When 

2015-04-10 13:21:23 1533

原创 9.6 坚持(Persist)定时器

9.6.1 Why         数据发送方收到接收方的通告窗口为0时,就不能再发送数据,一直等到对方发送窗口更新为止。但对端发送的窗口更新报文可能会丢失,如果发送方只是等待的话会导致数据传输会一直停滞,最后连接会被断开。这时坚持定时器闪亮登场!数据发送方可以设置坚持定时器定时发送1个探测报文,对端收到后会对这个报文发送ACK报文,这样发送方就能及时得知窗口更新事件了。一旦窗口非0则数据传输

2015-04-10 10:35:12 1494 1

原创 9.5 尾部丢失探测(Tail Loss Probe)定时器

9.5.1 Why        在9.4节中,我们了解到如果拥塞窗口较小且数据的最后一段数据丢失时,快速重传算法会因为无法收到足够数量的ACK而无法及时重传丢失的报文。尾部丢失探测(Tail Loss Probe)定时器就是为了解决这个问题而设计的。9.5.2 When       TLP在tcp_schedule_loss_probe函数中安装:1913 bool tcp_sc

2015-04-10 08:44:56 3372

原创 9.4 ER(Early Retransmit)定时器

9.4.1 Why

2015-04-09 17:04:18 1721

原创 9.3 重传定时器

9.3.1 Why        TCP在发送SYN、FIN以及数据包时为了保证可靠传输,会先将它们放入发送队列再发送副本到网络中,一旦发现数据丢失(比如连续收到多个ack_seq号相同的ACK)则重传发送队列中的skb。如果丢失发现机制失效了呢(比如ACK丢失),这时就需要重传定时器在指定的时间内重传数据,否则数据传输就可能会阻塞。9.3.2 When        设置重传定时器的

2015-04-09 10:49:50 2378

automake.pdf

automake的官方教程;使用automake可以根据编译环境的不同自动生成makefile。

2013-06-19

autoconf.pdf

autoconf工具的官方指南;使用autoconf工具可以生成configure等文件,这些文件能够自动生成Makefile,大大减轻编写makefile的工作量。

2013-06-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除