0%

1. 概述

随着网络的飞速发展,各种网络应用不断成熟,各种开发技术层出不穷,上网已经成为人们日常生活中的一个重要组成部分。在享受互联网带来的各种方便之处的同时,安全问题也变得越来越重要。黑客、病毒、木马等不断攻击着各种网站,如何保证网站的安全成为一个非常热门的话题。
根据IT研究与顾问咨询公司Gartner统计数据显示,75%的黑客攻击发生在应用层。而由NIST的统计显示92%的漏洞属于应用层而非网络层。因此,应用软件的自身的安全问题是我们信息安全领域最为关心的问题,也是我们面临的一个新的领域,需要我们所有的在应用软件开发和管理的各个层面的成员共同的努力来完成。越来越多的安全产品厂商也已经在考虑关注软件开发的整个流程,将安全检测与监测融入需求分析、概要设计、详细设计、编码、测试等各个阶段以全面的保证应用安全。
对于应用安全性的检测目前大多数是通过测试的方式来实现。测试大体上分为黑盒测试和白盒测试两种。黑盒测试一般使用的是渗透的方法,这种方法仍然带有明显的黑盒测试本身的不足,需要大量的测试用例来进行覆盖,且测试完成后仍无法保证软件是否仍然存在风险。现在白盒测试中源代码扫描越来越成为一种流行的技术,使用源代码扫描产品对软件进行代码扫描,一方面可以找出潜在的风险,从内对软件进行检测,提高代码的安全性,另一方面也可以进一步提高代码的质量。黑盒的渗透测试和白盒的源代码扫描内外结合,可以使得软件的安全性得到很大程度的提高。
源代码分析技术由来已久,Colorado 大学的 Lloyd D. Fosdick 和 Leon J. Osterweil 1976 年的 9 月曾在 ACM Computing Surveys 上发表了著名的 Data Flow Analysis in Software Reliability,其中就提到了数据流分析、状态机系统、边界检测、数据类型验证、控制流分析等技术。随着计算机语言的不断演进,源代码分析的技术 也在日趋完善,在不同的细分领域,出现了很多不错的源代码分析产品,如 Klocwork Insight、Rational Software Analyzer 和 Coverity、Parasoft 等公司的产品。而在静态源代码安全分析方面,Fortify 公司和 Ounce Labs 公司的静态代码分析器都是非常不错的产品。对于源代码安全检测领域目前的供应商有很多,这里我们选择其中的三款具有代表性的进行对比,分别是 Fortify公司的Fortify SCA,Security Innovation公司的Checkmarx Suite和Armorize公司的CodeSecure。

阅读全文 »

TPM

Trusted Platform Module
受BitLocker磁盘加密通常需要Windows上的TPM。 微软的EFS加密不能使用TPM。 新的Windows 10和8.1“设备加密”功能还需要一个现代化的TPM,这就是为什么它只是在新的硬件功能。 但是什么是TPM?
TPM代表“可信平台模块”。 它是您的计算机主板上的一个芯片,有助于启用防篡改全磁盘加密,而不需要极长的密码。

究竟是什么?

TPM是一个芯片,它是计算机主板的一部分 - 如果你买了一个现成的电脑,它被焊接到主板上。 如果你建立你自己的电脑,你可以买一个作为一个附加模块,如果你的主板支持它。 TPM生成加密密钥,将密钥的一部分保留给自己。 因此,如果您在具有TPM的计算机上使用BitLocker加密或设备加密,则密钥的一部分存储在TPM本身中,而不是仅存储在磁盘上。 这意味着攻击者不能只是从计算机中删除驱动器,并尝试访问其他文件的文件。
该芯片提供基于硬件的身份验证和篡改检测,因此攻击者不能尝试删除芯片并将其放在另一个主板上,或篡改主板本身以试图绕过加密 - 至少在理论上。

阅读全文 »

本文介绍了下自建准入系统的经历,该系统在某大型互联网公司稳定运行了5年。

准入系统简介

网络准入控制 (NAC)是一项由思科发起、多家厂商参加的计划,其宗旨是防止病毒和蠕虫等新兴黑客技术对企业安全造成危害。借助NAC,企业可以只允许合法的、值得信任的设备(例如PC、服务器、PDA)接入网络,而不允许其它设备接入。

亡羊补牢

互联网公司除了美国上市基本就没有安全合规压力,一切以业务发展和工作效率为第一驱动力,所以费钱费人力的安全的建设主要依赖事件驱动,我们上准入前就遇到这么几个倒霉事:

办公网大量PC杀毒被员工卸载,又没及时打补丁,结果中了当时都觉得非常low的arp病毒,几层办公区网断了,影响了小一千RD开发。
愤青小员工发帖,叔叔上门查水表,我们差点没查出是谁。

痛点

基于历史教训,我们上准入系统想解决的痛点简单归纳就是:

身份认证:wifi和有线接入到情况下能设备/IP与人绑定,调查安全事件可以定位到人
权限限制:不同职能的人群网络权限不一样,权限最小化
安全加固:满足公司安全基线要求的设备才能接入内网,没装杀毒没打补丁就禁止接入

阅读全文 »

问题:

网闸的工作原理是什么?

解答:

网闸的基本原理是:切断网络之间的通用协议连接;将数据包进行分解或重组为静态数据;对静态数据进行安全审查,包括网络协议检查和代码扫描等;确认后的安全数据流入内部单元;内部用户通过严格的身份认证机制获取所需数据。

问题:

什么是网闸?

解答:

网闸是在两个不同安全域之间,通过协议转换的手段,以信息摆渡的方式实现数据交换,且只有被系统明确要求传输的信息才可以通过。其信息流一般为通用应用服务。注:网闸的“闸”字取自于船闸的意思,在信息摆渡的过程中内外网(上下游)从未发生物理连接,所以网闸产品必须要有至少两套主机和一个物理隔离部件才可完成物理隔离任务。现在市场上出现的的单主机网闸或单主机中有两个及多个处理引擎的过滤产品不是真正的网闸产品,不符合物理隔离标准。其只是一个包过滤的安全产品,类似防火墙。注:单主机网闸多以单向网闸来掩人耳目。

阅读全文 »

Viterbi算法实际上是最优路径算法的一种。我们首先思考一下,如果让你设计算法寻找最优路径,你该怎么做?

穷举法

我把所有可能路径都计算一遍,最优路径自然就出来了。
缺点:计算量太大。

A*算法

我每一步只走最好走的路。
优点:计算快,而且这种贪心或者说启发式的算法,通常情况下,效果还是不错的。
缺点:“九阴白骨爪”比“九阴真经”速成,然而要是一开始就练“九阴白骨爪”,多半成不了绝顶高手(最优解)。

beam search

我每一步只走最好走的前N条路。这里的N也叫Beam Width。

阅读全文 »

蜂群思维

低层思维的自治个体形成高层群体思维的行为(群态);
去中心化、分布式管理

生物圈的实验

一个生态环境的形成有着特定的次序,甚至有些在过程中已完成了使命,已经消失,所以重建生态是很困难的。

达尔文的进化论

自然选择的问题:自然选择是编辑,而不是作者。
进化论仅仅证明了微进化(从红玫瑰到白玫瑰),而不能证明宏进化(从虫子到蛇);在地质史上,也从没有发现相关的中间物种,也就是所谓的“化石断代”。

阅读全文 »

失控中提到了四种基本的博弈问题,出来囚徒困境之外,其他都没有听说话,故参考百度百科,做此笔记。

1、草鸡博弈(Chicken Game)

比较常见的翻译应该为斗鸡博弈。斗鸡博弈(Chicken Game)其实是一种误译。Chicken在美国口语中是“懦夫”之意,Chicken Game本应译成懦夫博弈。
试想有两人狭路相逢,每人有两个行动选择:一是退下来,一是进攻。如果一方退下来,而对方没有退下来,对方获得胜利,这人就很丢面子;如果对方也退下来,双方则打个平手;如果自己没退下来,而对方退下来,自己则胜利,对方则失败;如果两人都前进,那么则两败俱伤。因此,对每个人来说,最好的结果是,对方退下来,而自己不退。

阅读全文 »

在讨论算法的时候,常常会说到这个问题的求解是个P类问题,或者是NP难问题等等,于是我特地搜了这方面的资料,自己总结了下,估计研究算法的大家应该都知道,要是我总结的哪里不对,欢迎一起探讨~

在讲P类问题之前先介绍两个个概念:多项式,时间复杂度。(知道这两概念的可以自动跳过这部分)

1、多项式:\[ax^{n}+bx^{n-1}+c\]

恩.就是长这个样子的,叫x最高次为n的多项式.
咳咳,别嫌我啰嗦。有些人说不定还真忘了啥是多项式了,例如第一次看到的鄙人。

2、时间复杂度

我们知道在计算机算法求解问题当中,经常用时间复杂度和空间复杂度来表示一个算法的运行效率。空间复杂度表示一个算法在计算过程当中要占用的内存空间大小,这里暂不讨论。时间复杂度则表示这个算法运行得到想要的解所需的计算工作量,他探讨的是当输入值接近无穷时,算法所需工作量的变化快慢程度。

阅读全文 »

关于radius认证和portal认证服务器的一点问题,因为最近接触到这方面的配置有一点疑惑,现在把我理解的说下,麻烦各位大神看看理解的对不
首先,我最主要的问题是关于portal认证时,需要有radius认证服务器和portal认证服务器同时存在,我不理解的就是radius服务器就是拿来验证用户名和密码的,那么portal服务器是用来做什么的?
首先说最简单的情况,只有radius认证的情况:

这个时候用户名发送用户名和密码到radius client,在radius client上会有相应的配置,配置和radius server上相同的密钥,这样保证在传输用户名和密码时对用户名和密码进行加密,可能还有对radius client进行认证的功能吧,这里就不多说了

阅读全文 »

互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称CI)。
本文简要介绍持续集成的概念和做法。

一、概念

持续集成指的是,频繁地(一天多次)将代码集成到主干。
它的好处主要有两个。
(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
Martin Fowler说过,"持续集成并不能消除Bug,而是让它们非常容易发现和改正。"

与持续集成相关的,还有两个概念,分别是持续交付和持续部署。

阅读全文 »