软件安全

Software security

本课我们将研究如何构建安全软件。通过学习,大家将了解如何使“安全成为软件开发必需的组成部分(build security in)”,而不被置后考虑;学习适用于软件开发周期各个阶段的、有助于加强软件系统安全的各项技能。

马里兰大学帕克分校

分享

软件安全
  • 分类: 计算机
  • 平台: Coursera
  • 语言: 英语

课程概述

笔记本电脑、台式机、手机、电力网…甚至是我们的汽车和恒温控制器,软件无处不在。软件正日益成为推动人类经济和个人生活发展的媒介工具;但是软件的普遍性和重要性也使它成为众矢之的:许多安全威胁,归根结底是缘于软件系统的脆弱。

为此,我们将在课上探讨如何构建安全软件。
我们会发现,安全必须贯穿于软件开发周期的各个阶段,其中包括:需求分析、系统设计、实现、测试/验证和维护。首先,我们会研究提高软件系统设计的任务和方法,其中包括威胁建模和攻击面减少。

接下来,我们将分析得以最广泛应用的软件在实现上的缺陷,而存在这些缺陷的根本原因就是没能降低非信任信息的影响,以及未能限制私人信息的流通,我们研究的主要缺陷包括:运用低水平编程语言(如C语言和C++)进行编程时出现的缓冲区溢出和双重释放;在由任意编程语言编写的软件中都有可能出现的数据竞争和非正常随机性等问题;以及常在网站和移动应用中出现的SQL资料隐码攻击/SQL注入攻击和跨站脚本攻击等。了解了这些缺陷及其在安全威胁中发挥的作用,我们将从设计和实现两个层面学习具体的修复措施。

最后,我们将研究用于测试和验证软件安全性的世界尖端技术和工具,思考安全测试与功能测试的区别(更难!)。渗透测试是在系统部署前尝试寻找和利用其中的弱点,从而评估系统的安全性,课上我们会探讨渗透测试的艺术;同时讲解可以通过代码分析和执行监控自动识别程序缺陷的新兴的程序分析工具。

通过对这门课程的学习,大家将了解如何使“安全成为软件开发必需的组成部分(build security in)”,而不被置后考虑,学习适用于软件开发周期各个阶段的、有助于加强软件系统安全的各项技能。

课程大纲

各章节内容的研究深度并不统一,其中包括:第一章约占总课时的四分之一,而剩下的四分之三课时我们将主要围绕后两章的安全编码问题进行讲解。

安全软件的设计原理与过程
从需求到支持/维护,安全性如何与开发周期的各个阶段相呼应。
威胁建模及其对软件设计和编码的影响

安全代码的设计原理
如:深度防御、最低权限、 小型/简单的可信计算基、安全故障
攻击面和减少受攻击面

安全编码,其中包括以下内容
概念:信息和数据流,以及在输入验证和隐私保护上的应用
缺陷和补救:缓冲区溢出、整数运算错误、跨站脚本攻击、SQL资料隐码攻击/SQL注入攻击、竟态条件、糟糕的随机性和信息泄露

安全测试与审查,其中包括以下内容:
安全测试与功能测试的区别
模糊测试以及其他渗透测试技术
静态和动态分析方法/工具

背景知识

整体上需要具备计算机科学本科三年级水平。

具体来说,我们希望大家熟悉C程序设计语言(相当于至少一个学期的本科课程),
至少精通一种编程语言(C语言或其他,相当于1-2学期本科课程);

了解以下内容(尽管课上我们也会做相应复习):
Unix/Linux操作系统(使用shell的基本命令和基本工具,如gcc);
万维网和网络的基本概念(TCP,HTTP,HTML);
机器级程序执行和汇编语言(ideally,Intel x86)

参考资料

我们会提供可以免费在线阅读和下载的补充阅读资料。

授课形式

课程包含教学视频,每个视频长约8-12分钟,附带1-2个随堂测试题,以检验大家对所学内容的理解程度,还包括一次与教学视频内容无关的独立测验(每周)以及三个实践项目。

常见问题

选修这门课需要准备什么?
有电脑,能上网,宽带速度适中,便于观看视频和阅读补充资料;完成三个实验项目需要在虚拟机上运行Linux发行版(免费),所以大家要下载我们提供的虚拟机系统镜像文件,并安装。

如果选修这门课,我能学到的最酷的东西是什么?
简直不计其数!同学们可以了解世界顶尖的攻击技术及其运行原理;学习最先进的自动化技术,例如能够自动寻找漏洞的模糊测试。

学习者需要具备哪些背景知识?
本课程主要针对处在(软件)安全研究第一线的朋友们,他们正在或将要开发可能受到攻击的软件(归根结底,就是大多数软件!)所以,希望大家具备一定的技术背景,熟练掌握C语言和一些诸如网站、网络和Linux操作系统的相关知识。

声明:MOOC中国收录之课程均源自下列机构,版权均归他们所有。本站仅作报道并尊重其著作权益,感谢他们对MOOC事业做出的贡献!(排名不分先后)
  • Coursera
  • edX
  • OpenLearning
  • FutureLearn
  • iversity
  • Udacity
  • NovoEd
  • Canvas
  • Open2Study
  • Google
  • ewant
  • FUN
  • IOC-Athlete-MOOC
  • World-Science-U
  • Codecademy
  • CourseSites
  • opencourseworld
  • ShareCourse
  • gacco
  • MiriadaX
  • JANUX
  • openhpi
  • Stanford-Open-Edx
  • 网易云课堂
  • 中国大学MOOC
  • 学堂在线
  • 顶你学堂
  • 华文慕课
  • 好大学在线CnMooc

Copyright © 2008-2015 MOOC.CN 慕课改变你,你改变世界