自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Netfilter,iptables/OpenVPN/TCP guard:-(

我不会编程,但也不是一点都不会,我稍微会一些 :-)

原创 windows的又一个问题

最近在看ipset的代码,ipset实现了一个ip地址集合的操作,是linux中netfilter的操作子集,ipset在netfilter中起作用,它的逻辑很简单,基本是纯算法的,很少涉及到内核调试,所以想详细研究一下,因为工作机是windows的,于是不得不将压缩包拷贝到windows,用wi...

2010-04-29 19:06:00 2092 0

原创 ECC算法分析--我们国家的标准

了解了前面说的ecc的概念之后,我们就知道group的意义了,实际上group定义了一条曲线,定义了a,b,还有order等等,在openssl的实现中,group中还有一个EC_METHOD结构体,这个结构体中有一系列的函数,顾名思义这些函数是用来操作曲线的,可以看到这个method没有engi...

2010-04-29 18:50:00 5565 5

原创 华丽之下的平台左右着一切

楚人一炬,可怜焦土!再华丽的阿房宫在暴力的围攻下,终成焦土!君不见玉环飞燕皆尘土!我在欣赏华丽的同时,同时感到一阵悲哀,再好的舞台下面一旦坍塌,舞台的华丽终成灰烬!

2010-04-28 22:24:00 2153 0

原创 伍佰的一句歌词

伍佰《突然间的自我》中有一句词“喝了这一杯还有一杯,再喝了这一杯还有三杯”,这是为什么呢?伍佰不会数数吗?其实不是的,真实的情况是他中奖了。我在长春的时候曾经买了一袋瓜子,然后中了一袋,然后连续中了七袋,于是我也会唱:吃了这一袋,还有一袋,再吃了这一袋,还有七袋,吃完这第七袋,人家说这是假的,不给...

2010-04-28 22:17:00 2725 7

原创 ECC算法分析--数学背景-自上而下的方式

可以把ecc理解为是曲线域上的rsa,当然只能这么理解,它们即使放到一个域内也是有很大不同的,导致它们分别可以被应用的数学难题就不同。既然可以理解为曲线域上的rsa(或者曲线域上的dh,dsa等),那么就应该知道rsa,dsa,dh等都是在什么域上的,其实它们都是在素数域上的,所有的素数域都是一样...

2010-04-28 22:08:00 5408 0

原创 ECC算法分析--openssl的实现以及其调用流程

ecc的过程与rsa相比有很大的不同,ecc涉及到了很多额外的概念,比如group等等,另外ecc包含两套截然不同的机制,这就是ecdsa和ecdh,这两套机制统一于ecc,在非ecc算法中,这两套机制是由两个独立的算法实现的,比如对于加密/解密以及签名/验证这一类需求来说使用的是rsa,dsa,...

2010-04-28 22:05:00 24103 7

原创 及时的感悟

今天用到了阿贝尔群,也不能说是用,只是我这个人比较贱,工作任务中基本不需要知其所以然,而我不喜欢悬在半空中,于是就复习了阿贝尔群。如果不理解“抽象”的概念,那么你很难理解椭圆曲线上的“加法”的概念,而理解了抽象之后,你会发现,椭圆曲线上的加法和我们小学学习的加法只是群这个概念的一个实例罢了,“群”...

2010-04-21 23:02:00 2358 1

原创 wild cat

她就是一只疯猫,just a cat!!疯了扒顶棚,静了吃好多鱼,要么就是睡,洗,搬!唉!...疯猫啊,希望疯猫多一些思考哦....思考一下鱼或者老鼠会在什么地方,然后抓住它们....

2010-04-19 14:32:00 2165 1

原创 纺锤和沙漏--世界最完美的两种模型

纺锤向两端归一,沙漏向中间归一,完美,真的很完美。osi网络模型最终成了沙漏,ip成了归一点,而世界历史成了纺锤,一开始文明由一个地方产生,然后分化,现在又是全球化。可以看出,如果一开始一件事就是分散的,那么就会是沙漏模型,强制将一切归一了,但是内秉的力量还是将一切分开了,反过来如果一开始就是统一...

2010-04-15 23:23:00 3280 0

原创 asn浅析--协议的设计

协议是分层的,但是它原本就是分层的吗?或者说它只有分层这一种形式吗?作为一种替代方案,基于消息的模型也一样能工作的很好,不一定要分层,就像很多应用层的协议比如http或者sip那样,基于消息的协议模型中,空间上纵向的层次化为了时间上横向的不同消息,比如有专门寻址的消息,有专门差错控制的消息等等,基...

2010-04-15 23:07:00 3227 0

原创 asn浅析--简单介绍

asn1是一种自组织自定义的数据结构,它是自洽的,几乎不需要外界的参与就能自己解释自己,这就做到了与机器无关,与应用无关,尽可能的与环境无关,这就是它最大的优势。那么到底什么是asn结构呢,简单说它就是一个嵌套的三元组,复杂得说它可以写一本厚书,甚至好几本。所以还是简单的理解它吧,以下用asn指代...

2010-04-14 22:04:00 2775 0

原创 实现一个可以用web配置的防火墙

endian是一个可基于web配置的防火墙,2006年就知道它了,只是具体是怎么做的我也没有研究过,因为没有时间,最重要的是那时我根本不知道什么是防火墙,也不从来没有使用过linux(期末考linux的时候,我带了小抄),现在琢磨起来应该也不会很难,但是可以自己实现一个拥有类似功能的,虽然很丑陋但...

2010-04-13 21:35:00 2683 0

原创 关于linux中nat实现的一些思考

DNAT主要是用于保护nat内侧的服务器,针对外部主动连接内部的情形,而SNAT恰恰相反,为了保护和限制内部的网络客户机,针对的是内部主动连接外部的情形,在linux中,nat是基于连接跟踪模块起作用的,连接跟踪模块将每一个数据包试图和一个连接关联,结果就是要么这个数据包属于一个已经存在的连接,要...

2010-04-13 21:33:00 3956 2

原创 openssl的vs/vc工程配置与make

openssl在windows上的编译方式很多人都了解,然而很多人因为习惯于windows的ide又很想知道如何在vs2005之类的ide中点击“生成”菜单项编译openssl,然后点击上面的那个绿色的小箭头调试或者单步跟踪,那是一件多么轻松的事情啊,要比在命令行上运行perl ... &...

2010-04-11 15:58:00 5603 1

原创 汉字的音义独立性以及日语的特殊性

汉字是方块的,田字型的,从上到下从左到右的顺序,两个维度,多个自由度,汉字从一开始就不是表音的,它更多的是表达一样东西,它不是语言学意义上的,而只是描述意义的,它因此更像绘画,它并不是一种交流意义上的规则从而使交流变得更容易,而是为了描述一些东西,描述一些事实,汉字的复杂结构也使得学习很不容易。由...

2010-04-10 23:30:00 2767 1

原创 关于计算机的一点思考

人们会认为计算机比人更有效率而不是更聪明,实际上计算机并不是和人并列的事物,而只是在人的思维和实践连线延长线上的一点,如果你认为那些博士们能做出什么巧妙的算法从而是计算机拥有智能,那只能说明这是那些博士们的智能,计算机可以计算但是不能思维,不能归纳总结,没有分析综合的能力,我们看一下解方程的过程:...

2010-04-10 23:28:00 2048 0

原创 一个“粘贴”问题引发的思考

我在“我的电脑”中直接粘贴一个文件被NT-OS提示"不能保存在指定位置",这个指定位置是我的电脑,然而在linux中却不存在这样的地方,因此windows虽然总倾向于统一的管理一切,在磁盘管理上却没有提供一个统一的视图,竟然在统一盘符和不同盘符下,“拖动”文件会是不同的结果,这...

2010-04-09 23:15:00 1922 0

原创 openssl中关于engine的部分代码分析

engine在openssl中是一个重要的概念,它提供了一种重载默认算法的方式,首先看一下engine结构体:struct engine_st {        const char *id;        const char *name;        const RSA_METHOD *rs...

2010-04-09 22:59:00 7039 1

原创 对kerberos的理解--经典对话读后

kerberos是一个基于对称密钥的认证系统,事实上它有时候比基于非对称密钥的pki工作的更好,特别是在小规模网络架构时,管理上更加集中和方便,甚至效率更高。那篇经典对话相信很多人都能将之读完,但是读完之后同样很多人需要时间来消化,事实上那篇对话并不仅仅是在讲kerberos的原理,它更多的意义在...

2010-04-09 22:58:00 4818 0

转载 Kerberos原理--经典对话

这是MIT(Massachusetts Institute of Technology)为了帮助人们理解Kerberos的原理而写的一篇对话集。里面有两个虚构的人物:Athena和Euripides,通过 Athena不断的构思和Euripides不断的寻找其中的漏洞,使大家明白了Kerberos...

2010-04-09 21:48:00 9664 5

原创 评价linux协议栈tcp实现中的prequeue

对tcp-ack的影响:某种情形之下只有用户进程处理了这个skb的时候才发送ack。如果skb直接排入receive_queue的话,那么很可能直接就会发送skb,但是如果排入了prequeue,那么只有到了进程的上下文处理prequeue的时候才会处理ack应答,理论上如果这个进程很久才能被进程...

2010-04-08 21:42:00 4131 2

原创 tcp是一个复杂的协议

tcp是一个很复杂的协议,这是每个人都知道的,但是它是很重要的,超过半数的公司在应届生面试时会提供tcp三次握手的面试题,我当年就碰到了N次,只可惜我对网络比较了解,这件事几乎没有给我带来什么故事。     在理解tcp之前,如果有机会看一些理论知识,那么就会知道tcp实际上只是一种可靠连接的实现...

2010-04-07 23:14:00 2642 0

原创 linux内核中协议栈--tcp实现的一点细节

tcp_recvmsg中的release_sock,如有接收到的包,都必须往backlog链表中添加,在__release_sock之后sk->sk_lock.owner = NULL,表明此时的sock拥有进程上下文,并且还没有人使用,那么此时进入的包可以有机会进入prequeue队列,此...

2010-04-07 21:39:00 5879 0

原创 ssl的消息读写以及和tcp语义的异同

SSL实现必须读取整条记录,哪怕select返回了一个字节可读,那么ssl也要读取整个记录,这种基于纪录的读写方式就是为了正确的加密个解密。因此如果用select模型的话可能会出现一些莫名其妙的问题,事实上也正是ssl消息需要加密解密从而需要整个消息整个消息读写才使得ssl协议的行为和tcp的有了...

2010-04-06 21:34:00 7398 2

原创 linux的lsm--TCB组成部分的新视角

可信路径的一端是任意用户,另一端是TCB,这条路经要做到尽可能短,从而加大消息在中间被拦截的难度,事实上,可信路径上的消息时不能被拦截的,否则就不叫可信路径了,可信路径的一端必须是绝对可信的,我们称为TCB,也就是可信计算基,然而TCB并不仅仅存在于可信路径的另一端,TCB是一整套安全环境的总称,...

2010-04-06 21:32:00 2348 0

原创 一种有效的新人培养方式

很多事实并没有实力的人顺利的度过了试用期,很多事实很有实力的人最终做了类似烧锅炉的工作,如何避免这两种情况,有一种方略很实用,那就是在试用期的时候逐步给新员工加压,我说的是工作难度逐步加大压力,直到该员工到达极限,这样第一,如果此人是来混日子,那么他受不了几个级别的压力就会放弃,如果此人很有实力,...

2010-04-05 18:19:00 2132 1

原创 请不要忘记本质—ssl的握手方式

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

2010-04-05 17:49:00 1636 0

原创 openssl中算法的组织方式

openssl为了支持可插拔的算法采用了engine,这里面有一些专利原因和政治原因,暂且掠过。在说engine之前首先看看算法的组织方式,其实如果你完全明白了这种组织,那么engine就是一个自然而然的结果了。首先看一下openssl中是如何组织算法的: 图表已经很清晰了,如果非要解释一下的话,...

2010-04-05 17:31:00 2300 0

原创 中西方历史发展和根源

西方的封建领主制和中国的封建领主制是在不同的历史背景下建立的,但是同样都是在统一国家的国王无力进行全国管理得情况下建立的,西方的封建领主制建立的背景是经济落后,商业交流匮乏,这种背景并不是自身导致的,而是由于蛮族入侵和穆斯林的入侵导致的,和中国一样,他们也需要重新统一,但是到达拥有统一能力的时候,...

2010-04-05 16:01:00 1945 4

原创 历史发展和根源

欧洲的历史发展有没有什么必然性,我们中国的历史呢,假期花了一下午时间做了两张图,首先看一下欧洲的(图片在相册中):  下面是中国的:

2010-04-04 22:40:00 1590 0

原创 unix更喜欢进程,可是...

unix是按照进程组织作业的,因为起初人们使用计算机系统就是要分时处理各个作业,那时并没有现在的各种复杂且多样化的应用,也不需要什么进程间的通信,甚至不需要复杂IO,进程的传统一直沿用至今,极端的Eric在《unix编程艺术》中大肆鼓吹小进程的妙用,鼓吹unix的优良传统,此人的极端源自于他对un...

2010-04-03 21:18:00 1635 3

原创 OpenSSL状态机中可选消息的处理

openssl在实现ssl握手的时候是用状态机实现的,实际上linux内核的tcp协议也是状态机实现的,原因就在于这些协议本身的握手规则就是状态机(简直是废话)。SSLv3握手规则要比tcp复杂的多,因此它的实现如果要既美观又高效的话就一定需要很多技巧,造成这种结果的原因就在于ssl握手过程中存在...

2010-04-03 20:18:00 3083 0

原创 ssl中的两个BIO--ssl以及ipsecl的一些概念

ssl中有两个BIO,一个是读方向的,另一个是写方向的,也就是rbio和wbio,一般情况下它们是同一个bio,这是因为一般而言的ssl是在tcp上建立的,而实际上它也可以建立在管道或者内存缓冲区等任意的文件描述符上,只要你提供一个正确的证书,openssl就可以完成连接,而不管下面是一个tcp连...

2010-04-01 23:37:00 2294 0

原创 linux系统中的/dev/random

随机数对于密码密钥来说是很重要的,比如RSA算法,比如DH算法,那么如何产生随机数呢,我们不能指望机器能产生随机数,真正随机的是人,只有人才是真正随机的,人们可以通过不确定的对电脑的行为才产生随机,比如键盘敲击,比如鼠标点击和鼠标位移,以及两次敲击和点击之间的间隔,这些都可以被认为是随机的根源,并...

2010-04-01 23:36:00 3049 0

原创 openssl中的STACK操作实现了一个自动增加的堆栈

利用STACK_OF宏可以快速实现一个自动增长的堆栈,由于堆栈可以作为一个数组来使用,所以OpenSSL中很多地方都使用了。STACK_OF宏来实现大小不固定的数组。typedef struct stack_st {    int num;      //当前的堆栈元素数量    char **d...

2010-04-01 23:13:00 5337 2

原创 openssl中的一个bug--附带asn1的点点滴滴

openssl的源代码中有一个我自认为的bug,可能作者有意这么做,然而我却认为它是bug,起码我在验证证书序列号的号的时候,它出了问题。问题是这样的:用以下命令openssl x509 -in somecert -serial -noout可以输出一个证书的序列号,然而当该证书的序列号的第一个字...

2010-04-01 23:11:00 3135 0

原创 ssl证书链的验证的其它方式

<!--v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}--&g...

2010-04-01 22:37:00 6049 1

原创 openssl的证书链验证

使用openssl验证证书链可以用以下命令:debian:/home/zhaoya/openssl#openssl verify -CAfile ROOT_CERT USER_CERT其中的ROOT_CERT可以包含很多证书,可以用cat命令将多级的ca证书合并到一个文件里面,然后程序启动以后会加...

2010-04-01 21:16:00 9397 2

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