软件安全

Software security

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

马里兰大学帕克分校

Coursera

计算机

简单(初级)

22 小时

  • 英语, 韩语
  • 441

课程概况

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

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

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

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

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

This course we will explore the foundations of software security. We will consider important software vulnerabilities and attacks that exploit them — such as buffer overflows, SQL injection, and session hijacking — and we will consider defenses that prevent or mitigate these attacks, including advanced testing and program analysis techniques. Importantly, we take a “build security in” mentality, considering techniques at each phase of the development cycle that can be used to strengthen the security of software systems. Successful learners in this course typically have completed sophomore/junior-level undergraduate work in a technical field, have some familiarity with programming, ideally in C/C++ and one other “managed” program language (like ML or Java), and have prior exposure to algorithms. Students not familiar with these languages but with others can improve their skills through online web tutorials.

你将学到什么

了解世界顶尖的攻击技术及其运行原理

学习最先进的自动化技术,例如能够自动寻找漏洞的模糊测试。

课程大纲

周1
完成时间为 2 小时
OVERVIEW
Overview and expectations of the course
3 个视频 (总计 26 分钟), 4 个阅读材料, 1 个测验
完成时间为 2 小时
LOW-LEVEL SECURITY
Low-level security: Attacks and exploits
6 个视频 (总计 50 分钟), 2 个阅读材料, 2 个测验

周2
完成时间为 2 小时
DEFENDING AGAINST LOW-LEVEL EXPLOITS
Defending against low-level exploits
7 个视频 (总计 79 分钟), 1 个阅读材料, 1 个测验

周3
完成时间为 3 小时
WEB SECURITY
Web security: Attacks and defenses
10 个视频 (总计 101 分钟), 2 个阅读材料, 2 个测验

周4
完成时间为 3 小时
SECURE SOFTWARE DEVELOPMENT
Designing and Building Secure Software
10 个视频 (总计 130 分钟), 1 个阅读材料, 1 个测验

周5
完成时间为 3 小时
PROGRAM ANALYSIS
Static Program Analysis
13 个视频 (总计 142 分钟), 2 个阅读材料, 2 个测验

周6
完成时间为 2 小时
PEN TESTING
Penetration and Fuzz Testing

面向人群

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

预备知识

整体上需要具备计算机科学本科三年级水平。
具体来说,我们希望大家熟悉C程序设计语言(相当于至少一个学期的本科课程),
至少精通一种编程语言(C语言或其他,相当于1-2学期本科课程);

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

声明: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
  • 以及更多...

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