分类目录归档:IT World

信息安全学习笔记(4)

七、网络安全

链路层=》物理寻址

网络层=》逻辑寻址

传输层=》应用寻址

应用层=》语义

协议是网络中计算机或设备之间进行通信的一系列规则的集合

ISO/OSI七层模型 《==》 四层模型(网络接口层,网络层,传输层,应用层)

TCP/UDP协议,报文中有端口号,直接对应应用

IP协议是无连接,不可靠的

链路层,有MAC地址

—–

IPV6的安全特性:地址数量大,强制IPSEC加密,128位

无线网络安全:802.11和wapi无线网络协议原理及安全特性

BSS->ESS,保证网络不断

安全性能:WPA2 》 WPA 》 WEP

WAPI三元安全架构,802.11i,802.11x,强制加密

3G(TD-SCDMA,CDMA2000,WCDMA)网络原理

—–

网络架构安全

网络安全域,网络边界划分,安全分级保护

IP地址包括网络标识和主机标识,使用子网掩码分开

无分类编址CIDR

—–

网络安全设备

防火墙:边界设备,访问控制

防火墙的功能:静态,动态地址转换,端口地址转换

防火墙分类:包过滤(网络传输),应用代理(应用协议),状态检测(传输)

越底层,开销越小,效率越高

工作模式:路由模式,透明模式,混合模式(可切换,不共存)

包过滤技术:只分析IP,TCP/UDP协议,对用户透明,处理较快,缺点是不能识别应用

应用网关或代理:可检查应用层、技术和协议,缺点是对用户不透明,支持应用有限

—–

入侵检测技术

功能:监视网络流量,Network IDS, Host IDS

以旁路的方式接入到网络中

其他网络安全技术:网闸,入侵防御系统IPS,安全管理平台SOC,统一威胁管理系统UTM等

入侵防御系统IPS=IDS+防火墙,透明方式串联接入网络中

—–

八、安全攻防

攻击的过程:踩点,定位,入侵,留后门,抹去痕迹

DNS欺骗

DNS两种工作模式:递归模式,迭代模式

—–

拒绝服务式攻击,Denial of Service,DoS

分布式DoS,DDoS,借刀杀人

缓存溢出与网页脚本安全

计算机取证

信息安全学习笔记(3)

五、信息安全保障基本知识

20世纪40-70年代,通信安全,加密,防窃听

20世纪70-90年代,计算机安全,口令,美国TCSEC橙皮书,计算机系统分级

20世纪90年代后,信息技术安全,防病毒,防火墙,VPN

现在到未来,信息安全保障,黑客,网络犯罪,信息战等

—–

信息安全指信息本身的机密性,完整性和可用性保持。

美国国防部定义,信息安全保障:完整性,可用性,鉴别性,机密性,抗抵赖性

网络安全模型,CC的信息技术安全模型(功能要求,保证要求)

P2DR模型:策略(响应,防护,检测)

安全包括:Safety和Security

—–

保障的含义,范围:通信安全,网络安全,数据安全;外部环境法律与政策,内部环境

信息安全保障模型:三维关系

生命周期:计划组织,开发采购,实施交付,运行维护,废弃

保障要素:技术,工程,管理,人员

安全特征:机密性,完整性,可用性

—–

信息系统安全保障评估框架:简介和一般模型,技术保障,管理保障,工程保障

—–

六、信息安全工程

信息安全建设必须同信息化建设“同步规划,同步实施”

生产过程的高质量和组织实施的成熟性可以以低成本地生产出高质量的产品

—–

信息系统安全工程能力成熟模型,SSE-CMM

描述了一个组织的系统安全工程过程必须包含的基本特征

完善安全工作的保证,系统安全工程实施的度量标准,评估框架

SSE-CMM覆盖整个产品或系统的生命周期

—–

过程区域,Process Area,PA,是过程的一种单位,由基本实施,BP组成

PA包括三类:工程、项目和组织

过程能力,Process Capability,度量方法

两维模型:域维(由所有定义的安全工程过程区域组成)和能力维(组织实施的能力)

基本实施BP有129个=》过程区域PA共22个=》过程分类

通用实践GP=》公共特征CF=》能力级别0-5级

域维-工程类PA有3种:风险过程,工程过程,保证过程

能力维:0级,未实施;1级,非正规执行;2级,规划和跟踪级;3级,充分定义级;4级,量化控制级;5级,持续改进级

—–

信息安全工程监理模型:

监理咨询阶段过程,控制和管理手段(三控两管一协调),监理咨询支撑要素

 

信息安全学习笔记(2)

昨天看《我是歌手》去了,今天又刚看完电影回来,赶紧补作业。。。

—–

三、恶意代码与安全漏洞

恶意代码类型有:二进制代码,二进制文件,脚本语言,宏等等

常见的主要是病毒、木马和蠕虫

传染的独立型恶意代码的危害性最大

传播方式主要有:主动放置、网页、邮件、漏洞、移动存储、共享、网络通讯、软件捆绑等

—–

恶意代码的关键技术:加载,隐蔽,生存

加载:启动项,注册表,服务,组策略,感染文件合并,浏览器插件,修改文件关联(修改注册表)等等

隐藏:进程迷惑,DLL注入,端口复用,无端口,流文件等

生存:进程守护,超级权限,反跟踪,反分析,模糊变换等

—–

恶意代码检测技术:模式匹配(病毒库,扫描;准确,易于管理,但是滞后,效率低),校验和(完整性保护),行为检测(能检测未知恶意代码,但误报率高)

另外还有恶意代码的分析技术,清除技术,预防技术和基于互联网的防御(蜜罐,云查杀等)

—–

信息安全漏洞,即脆弱性,类似于基因天生的缺陷,不可避免

漏洞是信息安全的核心,漏洞也是一种战略资源(美国提出:海,陆,空,太空,网络空间)

常用漏洞库:

CVE,通用漏洞披露,统一编号,是国际通用标准

NVD,采用CVE编号,扩充了一些属性,美国所有

Secunia,漏洞挖掘,曾和微软合作

CNNVD,中国本地化漏洞库

安装补丁是漏洞消减的技术手段之一,另外还可以安全加固

—–

四、软件安全开发

平均每1000行代码存在10到20个缺陷

用户应提出除交付期和软件功能之外的软件安全方面的压力

软件漏洞来源于:需求分析阶段,总体设计阶段,代码编制阶段

越早发现漏洞,越少的修复时间和开销

—–

安全开发周期,Security Development Lifecycle,SDL是微软提出的从安全角度指导软件开发过程的管理模式

七个阶段:培训,需求,设计,实现,验证,发布,响应

安全设计原则:最小特权原则,职责分离原则,纵深防御原则,默认安全原则,减少攻击面原则,心理可接受原则,隐私保护原则

减少攻击面,即减少入口点,包括网络输入输出和文件输入输出

威胁建模:了解系统面临的安全威胁,确定风险并通过措施来缓解

—–

软件安全开发:溢出攻击(数据代码不分,堆栈溢出数据变代码指令),跨站脚本(数据不要直传),SQL注入(对输入验证)

Fuzz测试,黑盒测试,构造畸形数据

找到所有入口点,权限分类,可访问点

任何的崩溃都是漏洞

 

下节学习:五、信息安全保障基本知识;六、信息安全工程

信息安全学习笔记(1)

一、密码学基础

密码学的发展:古典密码,近代密码,现在密码,公钥密码

古典和近代密码:算法不能公开,主要方法是代替和换位

现代密码:安全在于密钥而不是算法的保密

科克霍夫假设:密码分析者知道双方使用的密码系统,包括明文的统计特性、加解密体制等,唯一不知道的是密钥。

在理想密码系统中,密文的所有统计特性都与所使用的密钥独立:扩散和混乱方法

—–

密码算法分类:对称密码算法,非对称密码算法,哈希密码算法

对称密码算法:DES(56位),三重DES(168位),IDEA(128位),AES(128/192/256位)

对称密码算法优缺点:效率高,算法简单,系统开销小;适合加密大量数据;明文长度与密文长度相等;缺点是需要以安全方式进行密钥交换;密钥管理复杂

DES是应用最广泛的对称密码算法,IDEA在欧洲应用较多,AES将是未来最主要的最常用的对称密码算法

—–

单向陷门函数:单向的,但已知某个值时可以反向计算

非对称密码算法,即公钥密码算法:RSA,ECC,DH,DSA等

RSA公钥用来加密和签名校验,私钥用来解密和签名

DH算法主要用于密钥交换,DSA算法主要用来签名

公钥密码体制的优缺点:解决密钥传递的问题(公钥私钥成对,初始时可选择);减少密钥持有量;提供签名服务等;缺点是计算复杂,加密后密文变长

—–

哈希密码算法:MD5(128位),SHA1(160位);单向性,碰撞性,散列性

哈希密码算法生成等长摘要,可以附加消息鉴别码,即带key的Hash

数字签名使用哈希后的摘要用私钥加密,具有唯一性和可验证性

—–

二、密码学应用

PKI指公钥基础设施Public Key Infrastructure,利用公开密钥技术建立的提供信息安全服务的在线基础设施。利用加密、数字签名、数字证书来保护应用、通信或事务处理的安全

CA即认证中心Certificate Authority,共同信任的第三方,为公钥签名,发放公钥证书

加密模型:使用对方的公钥加密,解决机密性问题

签名模型:使用自己的私钥签名,解决完整性和认证,抗抵赖问题

数字信封:使用公钥加密对称密钥,结合两种加密方法,融合了各自的优点

SSL协议即使用了各种加密方法:对称加密信息,非对称加密对称密钥,哈希校验和签名

PKI/CA组成:CA,RA,LDAP,App

CRL:证书撤销列表,也称“证书黑名单”

证书:格式X.509,主要包括:证书颁发机构,持有者名字,公钥,有效期,颁发机构签名

国内的CA不具备信息交互的功能,主要是解决完整性和抗抵赖性问题

—–

VPN在各层的应用:数据链路层,网络层,传输层,应用层

VPN隧道技术:L2TP,PPTP,IPSec,SSL

按体系结构分类VPN:网关到网关,主机到网关,主机到主机

VPN最主要就是在分组交换的公用网络上使用加密传输建立虚拟的专用网络

VPN的基本功能:加密数据,信息认证和身份认证,提供访问控制

 

下节学习:三、恶意代码及安全漏洞;四、软件安全开发

iOS5开发学习笔记(3)

经过一段时间的学习,基本掌握了简单的iPhone开发。

主要学习的控件有:

Tab Bar Controller, 类似app store应用里面,下面的tab切换按钮。可以修改图片,名称等属性。

Navigation Controller,常见的如通讯录的那个可以左右移动的控件,可以设置标题等属性。

Table View Controller,常用的以列表形式展示数据的控件,使用时需要指定数据源。

WebView,可以用来显示网页,本地html页面或html代码。

Button,Label,TextField,这个就不解释了。

DatePicker控件,可以选取时间和日期。

最后是基本的View空间,可以自定义各种控件的组合或者是作图等。

 

Notes:

1. Navigation Controller和Tab Bar Controller可以通过Editor->Embed In来直接加上

2.Controller和Controller以及View的控制流转,可以通过storyboard界面的control+拖动来直接连接

3.segue是新加入的特性,如2中描述的,可以更好,更简单地控制界面的流转

4.手势操作暂时是从代码给controller和view添加的,从storyboard来看,也可以直接从objects里面拖进去。

5.常用的手势(放大/缩小,旋转,移动)已经给定义好了,不需要自己获取手势操作的raw data。

6.作图的时候需要使用到context和一些C Struct定义的CGPoint等。

 

代码可以参见:https://github.com/yiguid/iHome

基本代码学习都是参照的公开课视频,老头讲课的内容,自己有一些发挥和修改。

iOS5开发学习笔记(2) – git

itunesU上面有隐藏课程,是网易公开课上面没有的,讲XCode和git的集成开发,很详细。

这次的笔记主要记录git和github的相关东西。

首先搜索了一些比较有用的博文教程:

使用github管理iOS分布式项目开发: http://www.cnblogs.com/516inc/archive/2012/03/28/2421492.html

git /github 使用方法小记: http://like-eagle.iteye.com/blog/1317009

使用git/github管理ios项目:http://blog.csdn.net/wangyuefenga/article/details/7460104

总的来说使用还是很简单的

在github上创建一个账户,机器中安装好git,就可以按上面的教程一步步走了。

特别是在XCode中,如果项目所在的文件夹使用git建立好了之后,是会自动识别的,然后就可以使用File里面的Source Control的功能了。

当然你也可以在创建项目的时候就勾选连接git或者直接从github上clone下来你的项目,在Organizer中有对应的Repository信息

其他的就大概跟常见的svn使用一样了。

基本的git命令主要有:

 

1.创建一个新的repository:

先在github上创建并写好相关名字,描述。

$cd ~/hello-world        //到hello-world目录

$git init                     //初始化

$git add .                   //把所有文件加入到索引(不想把所有文件加入,可以用gitignore或add 具体文件)

$git commit               //提交到本地仓库,然后会填写更新日志( -m “更新日志”也可)

$git remote add origin git@github.com:WadeLeng/hello-world.git        //增加到remote

$git push origin master    //push到github上

2.更新项目(新加了文件):

$cd ~/hello-world

$git add .                  //这样可以自动判断新加了哪些文件,或者手动加入文件名字

$git commit              //提交到本地仓库

$git push origin master    //不是新创建的,不用再add 到remote上了

3.更新项目(没新加文件,只有删除或者修改文件):

$cd ~/hello-world

$git commit -a          //记录删除或修改了哪些文件

$git push origin master  //提交到github

4.忽略一些文件,比如*.o等:

$cd ~/hello-world

$vim .gitignore     //把文件类型加入到.gitignore中,保存

然后就可以git add . 能自动过滤这种文件

5.clone代码到本地:

$git clone git@github.com:WadeLeng/hello-world.git

假如本地已经存在了代码,而仓库里有更新,把更改的合并到本地的项目:

$git fetch origin    //获取远程更新

$git merge origin/master //把更新的内容合并到本地分支

6.撤销

$git reset

7.删除

$git rm  * // 不是用rm

//——————————常见错误———————————–

1.$ git remote add origin git@github.com:WadeLeng/hello-world.git

 

 错误提示:fatal: remote origin already exists.

 解决办法:$ git remote rm origin

 然后在执行:$ git remote add origin git@github.com:WadeLeng/hello-world.git 就不会报错误了

 2. $ git push origin master

 错误提示:error:failed to push som refs to

 解决办法:$ git pull origin master //先把远程服务器github上面的文件拉先来,再push 上去。

iOS5开发学习笔记(1)

有时间又来继续学习iOS开发了,这下iOS6的beta出来之后,xcode也都升级到4.2了,使用的是iOS5的SDK。

和之前相比,比较明显的变化是增加了storyboard和更好的内存管理机制。storyboard让我们可以对界面的构建有更好的体验,将不同的view组织得更加可视化。内存管理机制的完善,在写代码的时候就不需要手动管理内存,计数,release,autorelease,dealloc什么的了,都会帮你自动完成,这是一个很好的地方。而且他也不同于java的内存回收机制(随机检测是否有未再使用的内存),自动引用计数完成之后马上销毁。

网上关于iOS5开发的教程很少,资料和书也比较少,特别是对新特性的介绍(storyboard和优化后的内存管理机制)。网易公开课中有一个比较新的公开课程,叫《斯坦福大学公开课:iPad和iPhone应用开发(iOS5)》的是比较不错的一个视频课程,我刚看到了第三课。

到目前为止,学到的东西主要是基础的一些介绍,框架的简要说明。 第二课中教授演示了大概1个小时的如何创建一个简单的逆波兰计算器。第三课主要是讲一些Object-C语言特性和Foundation Framework。

开始学iOS开发,首先看了一下《Objective-C基础教程》,这是一本对这个新的,比较诡异的语言的入门好书

之后当然是构建开发环境,包括xcode的安装,破解,iPhone的越狱,然后这样我们就可以在不加入开发者计划的情况下进行真机调试了。具体的方法网上有很多就不粘过来了。

发现上面说了很多,还没有提到笔记的事情……

==================================================================

1.增加了weak和strong,是比较重要的东西

2.两种@标签property和synthesize的组合使用

3.no more : release,autorelease,dealloc

4.storyboard的使用学习,拖拽生成代码

5.学习了view和tableview的使用

6.延迟初始化的方法

7.结合sqlite3的使用 — 编写了一个简易的待办事项工具

8.多个按钮可以采用同一action,需要更改id类型来指定sender类型 — 编写了一个简易的计算器

9.NSString, NSNumber,NSLog等的基础使用。

 

网上资料比较少,欢迎大家来一起讨论~

java多线程总结

看到一个java多线程的总结,觉得写得很好,就转过来了.

源地址: http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html

================================================================================

在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。

对于直接继承Thread的类来说,代码大致框架是:

1
2
3
4
5
6
7
8
9
10
11
12
class 类名 extends Thread{
方法1;
方法2
public void run(){
// other code…
}
属性1
属性2
 
}

先看一个简单的例子: 继续阅读

最近的事

清明百里峡之行:

除了风沙,还有人性的弱点.事情的本身远没有表面见到的那样平静

泰坦尼克号IMAX:

一部电影融入了各种情感,值得一看

微软实习经历:

外企文化和中国人自身,矛盾和问题挺多的.

业界现状:

炒作和个人英雄盛行, 盲目崇拜和跟风现象严重,迷失了自己的方向