1、軟件安全概論
軟件安全:軟件按我們所期待的方式運行就叫軟件安全。
信任度(Trust): 描衡量一個軟件是不是能按我們所期待的方式運行的指標。
产生安全问题的原因:制作时期的不一致(in- consistency),没有针对故障(Violation, incidents, and disaster)的对应机制,或没有经过详尽的测试。
怎样是一个好的软件安全机制:限制。(limit WHAT, WHO, HOW, happen and can change the system)。具体来说就是:容易使用,警报(False alarm),不频繁更新,不需要专家爱来修正等。
修正补丁:安装必须容易,不要牵扯没有问题的部分, 不使用补丁来实现某个目的(应该靠设计实现)。
现在流行的操作系统或多或少都有安全漏洞。 由于招聘具有安全软件编程技能的员工有大量成本, 公司倾向使用大量测试人员来弥补。
安全计划(Security Planning):如风险评估,收益分析等, 制作政策Policy来实现。具体比如:保密性( Confidentiality),数据完整性( Integrity),可用性(Availability), 一致性,控制等。这也是安全目标(Security goals)
风险评估(Risk Assessment):提问自己要保护的对象是什么(主要是硬件、 软件和数据),要保护那些方面,需要投入多少时间、金钱、 劳动力来实现?即Assets(有形、无形资产), Threats(各种损失,雷电,洪水,盗窃,病毒,罢工, bug等。分为Interruption, interception, modification和fabrication四类或分为I nvoluntary和Voluntary两类) 和Calculation(Cost Benefit Analysis, 损失花销,保护花销)。
风险评估的三个关键步骤如下:
– 确定资产 Identify assets
– 确定威胁 Identify threats
– 计算风险 Calculate risks
软件威胁:删除、修改和盗窃(非法拷贝)。
数据威胁:打印数据的拷贝泄露,非法串改,交易途中修改, 竞争者收益,非常常见。按照数据的价值来决定安全级别。
其他威胁:存储媒介,网络,授权,关键人员,骗局等。
软件安全的相关人员:
业余者Amateur(发现了系统漏洞的普通员工), Crackers(如以破解软件为乐的学生),职业人员( 专门从事犯罪行动的人,间谍等)。
防守方法:数据加密。从开发、操作系统等方面进行控制。
控制方法:硬件方面(硬件加密,设置权限),政策方面( 密码保护,训练管理员),物理方面(门禁,备份,分布存储等), 人员方面(认识安全问题的严重性)。并且控制要有可操作性。 另外要考虑控制重叠,定期评测等。
安全条约:选择有价值的财产并定立条约(Policy)来保护。 条约明确了What,Why, Responsibility进行保护。 条约是普遍的和不经常改变的。 并且不需要把具体的威胁或个体写出来。 记录了组织安全问题的实现标准。通常用Shall叙述。 与平台无关。有度量方式。有支援方式。 以积极方式而不是消极方式撰写。以教育为主。 选择一个简单的Philosophy并且前后一致。 要有防御深度。对于个体授权要具体。对于硬件软件都要保护, 还要设定备份机制。安全条约的内容包括:密码条约, 软件安装条约,保密和敏感数据条约,网络接入条约, 电子邮件条约,远程登录条约,笔记本使用条约,电脑室条约等。 条约的负责方分为Dispatcher,管理层,技术支持专家, 公共关系专家等。
建立一个更安全的电脑的简单步骤:1、评估你的数据的重要性; 2、教育你的社区;3、定理一个备份的计划;4、 保持好奇心和怀疑心。
攻击方法:DOS(Denial of Service),使网络或系统瘫痪;电子邮件炸弹;病毒; 欺骗(Spoofing)等。
安全服务:隐私保护,授权,接入控制(Access Control),完整性,不可抵赖性(Non- repudiation),重放保护(Replay Prevention)
2、加密和解密
加密(Encryption):把信息伪装的机制。 它把信息处理成不明显的形式。
解密(Decryption):把加密的信息还原。
Encode/decode:把phrase变成词语( word)或另一个phrase的过程。
Encipher/deceipher: 把单个字母或符号互相转换的过程。
Plaintext:原信息P。
Ciphertext:加密后的信息C。
以上的关系:C=E(P); P=D(C); P=D(E(P))
加入Key的情况:C=E(P)
对称加密:P=D(K, E(K,P))
不对称加密:P=D(K_D, E(K_E,P))
Cryptography:隐藏文本。
Crypt-analyst: 分析加密的信息。 与Cryptographer的区别是前者通常是非法获取信息者 。方法有寻找加密算法,分割单信息,识别加密模式等。
Cryptology: 关于加密解密的研究。
Breakable Encryption:给予一定的时间, 能够通过Break的方式破解的加密。
实例说明:S(Sender)传递信息T( Transmission Medium)给R(Receiver),O( Outsider)想要获取信息。O有如下四种方式:
阻断;
Intercept(悄悄读取信息);
修改;
Fabricate(伪造信息传给R)。
Substitution-based Encryption: 通过分析词频可以解开这种简单的加密方法或它的变种( 如Polyalphabetic Substitution )。
Transposition: 以字母重新排列的方式加密。
NP完全:用NP完全算法进行加密。
数字理论:使用质数,欧几里得算法等数学算法进行加密。
公开密钥技术:传统的加密方法在S和R之间建立一组Key, 如果有N个人,就需要N(N-1)/2组Key。 加入设计一种Public Key:
P = D(K_priv, E(K_pub, P))
每个人只需保留两个Key,总数变为2N个。
參考資料
Betty Cheng, MichiganState University, softwareengineering lectures