欢迎来到第 6 章:安全、隐私与数据完整性!

各位未来的计算机科学家,大家好!这一章非常重要,因为我们将超越单纯了解计算机如何“运作”,转而聚焦于如何确保数据的“安全”与“正确”。在这个万物皆联网的时代,理解安全、隐私与完整性不仅是学术要求,更是生活中必不可少的知识。

别担心某些术语听起来很生硬,我们会通过你日常生活中会遇到的例子,以浅显易懂的方式为你剖析。让我们一起攻克这一课吧!


6.1 数据安全 (Data Security)

理解核心概念:SPI

在深入探讨技术措施之前,我们必须先厘清三个学生常混淆的术语:

1. 数据安全 (Data Security)

数据安全 指的是保护数据及其存储系统,防止未经授权的访问、修改或破坏。简单来说,就是把坏人挡在门外。
例子:通过密码和防火墙保护敏感的客户数据库。

2. 数据隐私 (Data Privacy)

数据隐私 指的是个人有权控制其个人信息被收集、使用及分享的方式。它确保只有必要的数据会被收集,并且在合乎道德的前提下使用。
例子:确保公司在未经你明确许可的情况下,不得将你的电子邮件地址出售给广告商。

3. 数据完整性 (Data Integrity)

数据完整性 确保数据在其整个生命周期中都是准确、完整、一致且可靠的。这意味着数据没有被意外或恶意篡改。
例子:如果学生的成绩记录为“A”,除非经过特定的授权更改,否则它必须保持为“A”。如果传输错误导致它变成了“G”,那么完整性就丧失了。


网络与互联网带来的安全威胁

计算机系统,特别是连接到网络和互联网的系统,时刻面临危险。这些威胁通常分为两类:蓄意(恶意攻击)与无意(错误)。

恶意软件 (Malware)

恶意软件是专门为了干扰、损坏或获取计算机系统未经授权访问而设计的软件。

病毒 (Virus): 附着在合法程序上并自我复制,从而造成损害或损坏。

间谍软件 (Spyware): 暗中监控用户活动(如按键记录或浏览过的网站),并将这些信息回传给第三方。

未经授权访问与社会工程学

黑客 (Hackers): 擅自进入计算机系统的人,通常是利用软件或安全措施中的漏洞进行攻击。

网络钓鱼 (Phishing): 一种社会工程学,攻击者会伪装成可信的实体(如银行或知名公司),通过电子通信诱骗用户泄露敏感信息(如密码或信用卡号码)。
比喻:网络钓鱼就像用鱼饵(伪造电子邮件)来钓取密码。

网址欺骗 (Pharming): 在用户不知情的情况下,将用户从合法的网站重定向到虚假网站,即使输入了正确的网址也一样。这通常是通过污染 DNS 服务器缓存来实现的。
你知道吗?网址欺骗比网络钓鱼更高级,因为用户甚至不需要点击可疑链接;他们的计算机或网络会自动将他们发送到诈骗网站。

快速复习:限制风险
限制这些威胁风险的核心方法,是将技术措施(如防火墙)与用户教育(以辨识钓鱼邮件)结合起来。

保护系统与数据的安全措施

我们采用多层次防护来保护计算机系统本身(例如防火墙)以及其中存储的特定数据(例如加密)。

1. 身份验证与访问控制

这些措施用于验证用户身份并控制该用户被允许进行的操作。

用户账户与密码: 最常见的方法。强密码会结合大小写字母、数字和符号。

身份验证技术:

生物识别 (Biometrics): 利用独特的生理特征(指纹、虹膜扫描)来验证身份。

数字签名 (Digital Signatures): 用于验证信息或文件真实性和完整性的数学方案。它能证明发件人的身份,并确保数据未被篡改。

访问权限: 决定哪些用户或组别可以读取、写入、修改或删除特定的文件或资源。

2. 系统保护软件

防火墙 (Firewall): 一种安全屏障(硬件或软件),根据预设的安全规则监控并控制流入和流出的网络流量。它就像在门口检查身份证件的安保。

杀毒软件 (Anti-virus Software): 扫描、检测并移除或隔离已知的病毒及其他恶意软件。

反间谍软件 (Anti-spyware): 专门设计用于检测并移除未经许可追踪用户活动的程序。

3. 加密 (Encryption)

加密 是将明文(可读的数据)转换为 密文(不可读、乱码的数据)的过程,需要使用算法和密钥,使未经授权的一方无法使用。

如果黑客窃取了加密数据,他们只会得到无法读取的密文。

数据只能由拥有正确 密钥 (key) 的人转换回明文(即解密)。

6.1 总结要点
安全是关于通过防火墙和加密等工具来防御外部威胁(黑客、恶意软件)。隐私是关于控制个人数据的使用。完整性是关于确保数据的准确性。


6.2 数据完整性 (Data Integrity)

如前所述,数据完整性 意味着数据是准确且有效的。我们主要通过两个不同的过程来实现:数据验证 (Data Validation)数据核对 (Data Verification)

数据验证 vs. 数据核对

这是两个极为关键的区分!

数据验证 (Data Validation)

验证 是检查输入的数据是否“合理”且“遵守预设规则”。它根据既定的限制来检查输入内容。它不能保证数据绝对正确,只能保证数据是可以接受的。
比喻:检查输入的电话号码是否有 10 位数字(验证),但不会检查这是否是你打算拨打的那个人(核对)。

数据核对 (Data Verification)

核对 是检查输入计算机的数据是否与原始来源数据“相符”。它确保在转录或传输过程中的准确性。

数据验证的方法

这些检查内置于软件中,用以立即标示不正确的输入。

范围检查 (Range Check): 检查数值是否落在指定的最小值和最大值之间。
例子:分数输入必须在 0 到 100 之间。

极限检查 (Limit Check): 检查是否符合单一的最大值或最小值。
例子:年龄必须大于或等于 18 岁(最小值限制)。

格式检查 (Format Check): 检查数据是否为正确的类型或模式。
例子:日期必须以 DD/MM/YYYY 的格式输入。

长度检查 (Length Check): 检查数据是否包含所需的字符数量。
例子:密码长度必须至少 8 个字符。

存在检查 (Presence Check): 确保字段没有留空(即数据必须存在)。
例子:“姓氏”字段不能为空。

存在性检查 (Existence Check): 检查输入的数据是否已存在于文件或数据库中。
例子:登录时,输入的用户名 ID 必须存在于合法用户名单中。

校验位 (Check Digit): 对原始数值数据(如条形码或 ISBN)进行数学运算,产生一或两个额外的位数。当数据被输入时,系统会再次计算并进行比对,如果不匹配,则数据输入无效。
例子:广泛用于信用卡号码和产品条形码,以捕捉输入错误。

给学生的贴士:记住这个口诀:Really Fine Lunch Provides Every Check(范围、格式、长度、存在、存在性、校验位)。

数据核对的方法(输入期间)

这些方法确保数据是从原始文件正确键入的。

视觉检查(或校对) (Visual Check / Proofreading): 一种人工检查,即由专人将屏幕上输入的数据与原始来源文件进行比较。

双重录入 (Double Entry): 数据通常由两名不同的操作员或两套程序键入系统两次。计算机随后比较这两次输入,任何差异都会标记错误,需要人工核对。

数据核对的方法(传输期间)

数据在通过网络传输时可能会损坏。核对方法用于检测这些传输错误。

1. 奇偶校验 (Parity Check)

奇偶校验 在数据位中增加一个校验位(例如,由 7 个数据位和 1 个校验位组成一个 8 位的字节),以确保字节中“1”的总数始终为偶数(偶校验)或始终为奇数(奇校验)。

运作方式(以偶校验为例):

如果 7 位数据是 1010001(有 3 个 1,为奇数),校验位设为 1。完整的 8 位字节变成 11010001(有 4 个 1,变为偶数)。

如果 7 位数据是 1100000(有 2 个 1,为偶数),校验位设为 0。完整的 8 位字节变成 01100000(有 2 个 1,仍为偶数)。

字节校验: 检查传输的每个单一字节的奇偶性。

块校验: 跨多个字节的大区块进行奇偶校验(使用水平和垂直检查),以精确定位单个错误可能发生的位置。

常见错误:奇偶校验只能检测奇数个错误(1、3、5 等)。如果传输期间有 2 个位翻转,奇偶校验结果仍然正确,错误将无法被检测。

2. 校验和 (Checksum)

校验和 是将数据块(多个字节)视为一个大数值并进行相加。

流程:
1. 发送方计算数据块中所有字节的总和。
2. 这个总和(即校验和)会随数据块一起发送。
3. 接收方计算所接收数据块的总和。
4. 如果接收方计算出的总和与发送方的校验和匹配,则数据完整性通过验证。

校验和比简单的奇偶校验更强大,因为它们通常可以检测到数据块中的多个错误。

6.2 总结要点
验证是用来检查数据是否合理(范围、格式)。核对是用来检查数据是否转录准确(双重录入、奇偶校验)。两者对于维护数据完整性都至关重要。