欢迎来到第6章:安全、隐私与数据完整性!
各位未来的计算机科学家们,大家好!这一章非常重要,因为它超越了计算机“如何运作”的范畴,转而关注我们如何保持数据的“安全性”和“正确性”。在万物互联的世界里,理解安全、隐私和完整性不仅是学术课题,更是必备的生活技能。
如果有些术语听起来很专业,请不必担心。我们将通过你在日常生活中经常遇到的例子来深入浅出地讲解它们。让我们一起拿下这一章,拿高分!
6.1 数据安全
理解核心概念:SPI
在我们深入探讨技术措施之前,需要明确区分三个学生经常混淆的概念:
1. 数据安全 (Data Security)
数据安全是指保护数据以及存储数据的系统,防止其受到未经授权的访问、修改或破坏。简单来说,就是把坏人挡在门外。
示例:使用密码和防火墙锁定敏感的客户数据库。
2. 数据隐私 (Data Privacy)
数据隐私是指个人对其个人信息如何被收集、使用和分享所拥有的控制权。它确保仅收集必要的数据,并以合乎道德的方式使用。
示例:确保公司在没有你明确许可的情况下,不能将你的电子邮件地址卖给广告商。
3. 数据完整性 (Data Integrity)
数据完整性确保数据在整个生命周期中都是准确、完整、一致且可靠的。这意味着数据没有被意外或恶意篡改。
示例:如果一名学生的成绩被记录为“A”,那么除非进行专门的授权更改,否则它必须保持为“A”。如果传输错误导致它变成了“G”,那么完整性就丧失了。
来自网络和互联网的安全威胁
计算机系统,尤其是那些连接到网络和互联网的系统,面临着持续的威胁。这些威胁通常分为两类:有意的(恶意攻击)和无意的(错误)。
恶意软件 (Malware)
恶意软件是专门设计用于干扰、破坏或获取计算机系统未经授权访问权限的软件。
- 病毒 (Virus): 附着在合法程序上并自我复制,造成损坏或数据损坏。
- 间谍软件 (Spyware): 秘密监视用户活动(如按键记录或访问的网站),并将这些数据报告给第三方。
未经授权的访问与社会工程学
- 黑客 (Hackers): 指未经授权访问计算机系统的人,通常利用软件或安全措施中的弱点。
-
网络钓鱼 (Phishing): 一种社会工程学手段,攻击者伪装成可信实体(如银行或知名公司)发送电子信息,诱骗用户泄露敏感信息(如密码或信用卡号)。
类比:网络钓鱼就像用鱼饵(伪造的邮件)来钓取你的密码。 -
网络农夫攻击 (Pharming): 在用户不知情的情况下,将其从合法网站重定向到虚假网站,即使他们输入了正确的URL。这通常通过篡改DNS服务器缓存来实现。
冷知识:Pharming比Phishing更高级,因为用户甚至不需要点击可疑链接;他们的计算机或网络会自动将他们发送到欺诈网站。
限制这些威胁风险的核心方法是结合技术手段(如防火墙)和用户教育(识别钓鱼邮件)。
保护系统和数据的安全措施
我们采用分层防护的方法,既保护计算机系统本身(例如防火墙),也保护其中存储的特定数据(例如加密)。
1. 身份验证与访问控制
这些措施用于验证用户身份并控制用户被允许执行的操作。
- 用户账户与密码: 最常见的方法。强密码应包含大小写字母、数字和符号的组合。
-
身份验证技术:
- 生物识别 (Biometrics): 使用独特的身体特征(指纹、虹膜扫描)来验证身份。
- 数字签名 (Digital Signatures): 用于验证消息或文档真实性和完整性的数学方案。它们证明发送者确实是其声称的人,且数据未被篡改。
- 访问权限: 决定哪些用户或组可以读取、写入、修改或删除特定的文件或资源。
2. 系统防护软件
- 防火墙 (Firewall): 一种安全屏障(硬件或软件),根据预定义的规则监控和控制进入或离开网络的流量。它就像一个数字保镖,在门口检查身份证件。
- 杀毒软件 (Anti-virus Software): 扫描、检测并删除或隔离已知的病毒和其他恶意软件。
- 反间谍软件 (Anti-spyware): 专门用于检测和移除未经同意追踪用户活动的程序。
3. 加密 (Encryption)
加密是指使用算法和密钥将明文(可读数据)转换为密文(不可读、乱码数据)的过程,使未经授权方无法使用这些数据。
- 如果黑客窃取了加密数据,他们得到的只是不可读的密文。
- 只有持有正确密钥 (Key)的人才能将数据转换回明文(解密)。
安全是指利用防火墙和加密等工具来抵御外部威胁(黑客、恶意软件)。隐私是指控制个人数据的使用。完整性是指确保数据的准确性。
6.2 数据完整性
如前所述,数据完整性意味着数据是准确且有效的。我们主要通过两个不同的过程来实现这一点:数据验证 (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): 检查输入的数据是否已经在文件或数据库中存在。
示例:登录时,输入的 User ID 必须存在于有效用户列表中。 -
校验位 (Check Digit): 对原始数值数据(如条形码或 ISBN)进行数学运算,生成一或两位额外数字。当数据输入时,计算机会重新计算该数字,如果结果不匹配,则输入无效。
示例:广泛用于信用卡号和商品条形码,以捕捉输入错误。
学霸提示:记住助记口诀:Really Fine Lunch Provides Every Check(范围 Range、格式 Format、长度 Length、存在 Presence、存在性 Existence、校验位 Check Digit)。
数据核对方法(数据输入期间)
这些方法确保数据从源文档录入时是准确的。
- 视觉检查(或校对): 一种人工检查,由人将屏幕上输入的数据与原始源文档进行比对。
- 双重录入 (Double Entry): 数据被输入系统两次,通常由两名不同的操作员或程序完成。计算机随后比较这两次录入,任何差异都会标记为错误,需要人工复核。
数据核对方法(数据传输期间)
当数据通过网络传输时可能会被破坏。核对方法用于检测这些传输错误。
1. 奇偶校验 (Parity Check)
奇偶校验通过在一个数据字节中添加一位(校验位),确保字节中“1”的总数始终为偶数(偶校验)或始终为奇数(奇校验)。
-
工作原理(以偶校验为例):
如果数据字节是 10100010(有3个1,奇数),则校验位设为 1。完整字节变为 101000101(有4个1,变为偶数)。
如果数据字节是 11000010(有3个1,奇数),则校验位设为 1。完整字节变为 110000101(有4个1,变为偶数)。
- 字节校验: 检查每个传输字节的奇偶性。
- 块校验 (Block Parity): 跨多个字节的大块数据进行奇偶校验(使用水平和垂直检查),以准确定位单个错误可能发生的位置。
常见错误:奇偶校验只能检测奇数个错误(1、3、5个等)。如果传输中有2位发生反转,奇偶性保持不变,错误将无法被检测到。
2. 校验和 (Checksum)
校验和是将一块数据(多个字节)视为一个巨大的数字并求和的过程。
-
流程:
1. 发送方计算数据块中所有字节的总和。
2. 该总和(校验和)随数据块一起发送。
3. 接收方计算接收到的数据块的总和。
4. 如果接收方计算的总和与发送方的校验和匹配,则数据完整性得到验证。 - 校验和比简单的奇偶校验更健壮,因为它们通常能检测到数据块中的多个错误。
验证 (Validation) 检查数据是否“合理”(范围、格式)。核对 (Verification) 检查数据是否“转录”准确(双重录入、奇偶校验)。两者对于保持数据完整性都必不可少。