近期因工作的需要,开始接触笔记本硬盘加密。

粗略看来,笔记本电脑的加密实现分为三类:含有加密芯片的电脑使用BIOS设置磁盘密码加密、mac笔记本使用filevault加密、无加密芯片电脑使用软件加密(TrueCrypt)。下边对对这三类进行下分析:

加密芯片bios加密:

这类加密的优点是可以做到全盘加密,甚至可以加密MBR,真正实现全盘加密,因为加密是靠芯片实现的,即使硬盘被拆卸也无法读取其中的内容。但这种加密方式的缺点也是显而易见的,无法做到灵活的加密,只可针对硬盘加密,且因开机就以解密,所以对已开机的电脑无保密可言。

mac机器的filevault加密:

filevault分为filevault1和filevault2,自mac 10.7后均使用filevault2,且因filevault1现已证实可被破解,所以已退出舞台。

无加密芯片电脑使用软件加密(TrueCrypt):

软件加密较硬件加密灵活,可单独加密文件,分区等,但是无法加密元信息,可能存在信息泄露风险,且密码是保存在本地的,存在被破解的可能性。

下面来研究下每种加密方式的检测方法:

加密芯片bios加密:

加密检测思路主要是从BIOS加密启动标志在内存中的偏移角度入手,事例代码和分析如下:

#预留位置

mac机器的filevault加密:

使用mac脚本,通过正则表达式提取命令行中的关键字判断,参考地址,示例代码和分析如下:

#!/bin/sh
CORESTORAGESTATUS="/private/tmp/corestorage.txt"
ENCRYPTSTATUS="/private/tmp/encrypt_status.txt"
ENCRYPTDIRECTION="/private/tmp/encrypt_direction.txt"
DEVICE_COUNT=`diskutil cs list | grep -E "^CoreStorage logical volume groups" | awk '{print $5}' | sed -e's/(//'`
EGREP_STRING=""
if [ "$DEVICE_COUNT" != "1" ]; thenEGREP_STRING="^\| *"
fi
osversionlong=`sw_vers -productVersion`
osvers=${osversionlong:3:1}
CONTEXT=`diskutil cs list | grep -E "$EGREP_STRING\Encryption Context" | sed -e's/\|//' | awk '{print $3}'`
ENCRYPTIONEXTENTS=`diskutil cs list | grep -E "$EGREP_STRING\Has Encrypted Extents" | sed -e's/\|//' | awk '{print $4}'`
ENCRYPTION=`diskutil cs list | grep -E "$EGREP_STRING\Encryption Type" | sed -e's/\|//' | awk '{print $3}'`
CONVERTED=`diskutil cs list | grep -E "$EGREP_STRING\Size \(Converted\)" | sed -e's/\|//' | awk '{print $5, $6}'`
SIZE=`diskutil cs list | grep -E "$EGREP_STRING\Size \(Total\)" | sed -e's/\|//' | awk '{print $5, $6}'`
if [[ ${osvers} -lt 7 ]]; thenecho "FileVault 2 Encryption Not Available For This Version Of Mac OS X"
fi
if [[ ${osvers} -ge 7 ]]; thendiskutil cs list >> $CORESTORAGESTATUSif grep -iE 'No CoreStorage' $CORESTORAGESTATUS 1>/dev/null; thenecho "FileVault 2 Encryption Not Enabled"fiif grep -iE 'Logical Volume Family' $CORESTORAGESTATUS 1>/dev/null; thenif [ "$CONTEXT" = "Present" ]; thenif [ "$ENCRYPTION" = "AES-XTS" ]; thendiskutil cs list | grep -E "$EGREP_STRING\Conversion Status" | sed -e's/\|//' | awk '{print $3}' >> $ENCRYPTSTATUSif grep -iE 'Complete' $ENCRYPTSTATUS 1>/dev/null; thenecho "FileVault 2 Encryption Complete"        elseif  grep -iE 'Converting' $ENCRYPTSTATUS 1>/dev/null; thendiskutil cs list | grep -E "$EGREP_STRING\Conversion Direction" | sed -e's/\|//' | awk '{print $3}' >> $ENCRYPTDIRECTIONif grep -iE 'Forward' $ENCRYPTDIRECTION 1>/dev/null; thenecho "FileVault 2 Encryption Proceeding. $CONVERTED of $SIZE Encrypted"else               echo "FileVault 2 Encryption Status Unknown. Please check."fififi    elseif [ "$ENCRYPTION" = "None" ]; theniskutil cs list | grep -E "$EGREP_STRING\Conversion Direction" | sed -e's/\|//' | awk '{print $3}' >> $ENCRYPTDIRECTIONif grep -iE 'Backward' $ENCRYPTDIRECTION 1>/dev/null; thenecho "FileVault 2 Decryption Proceeding. $CONVERTED of $SIZE Decrypted"elif    grep -iE '-none-' $ENCRYPTDIRECTION 1>/dev/null; thenecho "FileVault 2 Decryption Completed"fifi
fi
fi
fi
fiif [ "$ENCRYPTIONEXTENTS" = "Yes" ]; thendiskutil cs list | grep -E "$EGREP_STRING\Fully Secure" | sed -e's/\|//' | awk '{print $3}' >> $ENCRYPTSTATUSif grep -iE 'Yes' $ENCRYPTSTATUS 1>/dev/null; thenecho "FileVault 2 Encryption Complete"elseif  grep -iE 'No' $ENCRYPTSTATUS 1>/dev/null; thendiskutil cs list | grep -E "$EGREP_STRING\Conversion Direction" | sed -e's/\|//' | awk '{print $3}' >> $ENCRYPTDIRECTIONif grep -iE 'forward' $ENCRYPTDIRECTION 1>/dev/null; thenecho "FileVault 2 Encryption Proceeding. $CONVERTED of $SIZE Encrypted"elseif grep -iE 'backward' $ENCRYPTDIRECTION 1>/dev/null; thenecho "FileVault 2 Decryption Proceeding. $CONVERTED of $SIZE Decrypted"elif grep -iE '-none-' $ENCRYPTDIRECTION 1>/dev/null; thenecho "FileVault 2 Decryption Completed"fififififiif [ "$ENCRYPTIONEXTENTS" = "No" ]; thenecho "FileVault 2 Encryption Not Enabled"fiif [ -f /private/tmp/corestorage.txt ]; thenrm /private/tmp/corestorage.txtfiif [ -f /private/tmp/encrypt_status.txt ]; thenrm /private/tmp/encrypt_status.txtfiif [ -f /private/tmp/encrypt_direction.txt ]; thenrm /private/tmp/encrypt_direction.txtfi

无加密芯片电脑使用软件加密(TrueCrypt):

TrueCrypt作为开源软件,软件下载源代码下载,分析源代码获取是否启动了全盘加密的检测方法。

转载于:https://blog.51cto.com/lennonma/1294187

笔记本电脑磁盘加密技术相关推荐

  1. DS5000神奇的FDE全磁盘加密技术

    随着存储技术的发展,数据量与日剧增的同时,用户对存储数据的安全性也越来越重视.比如说盘柜上的物理磁盘故障进行了更换,而故障物理磁盘上又有一些敏感数据,用户担心磁盘带离现场后可能存在数据安全隐患,当然可 ...

  2. 磁盘加密技术U盘加密

    文章目录 准备 BitLocker驱动加密 进入"BitLocker 驱动器加密"向导 选择存储恢复密钥的方式 选择要加密的驱动空间的大小 选择加密模式 准备加密u盘 完成加密 准 ...

  3. 一文读懂十大数据存储加密技术

    数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出.密码技术,是实现数据安全最经济.最有效.最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环境中实现对数据的强访问控制, ...

  4. 【linux】循序渐进学运维-基础篇-磁盘加密解密技术

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第57篇文章. 文章目录 前言: 实验步骤 1. 对磁盘进行分区格式化 2. 对新建的分区进行加密 3. 挂载测试 a) 加密情况下无 ...

  5. 磁盘加密技术保障数据安全之七种武器

    TruCrypt.PGP.FreeOTFE.BitLocker.DriveCrypt和7-Zip,这些加密程序提供了异常可靠的实时加密功能,可以为你确保数据安全,避免数据丢失.被偷以及被窥视. 很少有 ...

  6. 加快Linux磁盘加密

    linux加密磁盘 Originally published at https://blog.cloudflare.com on March 25, 2020. 最初于 2020年3月25日 发布在 ...

  7. 磁盘加密软件TrueCrypt知识大全(三)之加密非系统分区/设备

    磁盘加密软件TrueCrypt知识大全(三)之加密非系统分区/设备 1.点击创建加密卷. 2.↑选择第2个,加密非系统分区/设备.第一个是通过创建文件的方式创建加密卷,由于文件容易误删除.丢失.破坏. ...

  8. Microsoft CryptoAPI加密技术(二)

    原文:http://www.vckbase.com/index.php/wv/717.html 上次我们讲了Microsoft CryptoAPI的构成以及会话密钥的使用.接下来我们将看一下公私密钥对 ...

  9. 揭秘!业界创新的代码仓库加密技术

    简介: 原理与演示. 01 / 什么是代码加密? 云端加密代码服务是云效团队的自研产品,是目前国内率先支持代码加密的托管服务,也是目前世界范围内率先基于原生Git实现加密方案的代码托管服务. 通过在云 ...

最新文章

  1. 四中方式实现单例模式
  2. 事件总线第一次点击_用户体验研究指南3-3第一次点击测试
  3. selenium抓取_使用Selenium的网络抓取电子商务网站
  4. Centos7换yum源
  5. 英语口语 Week14 Monday
  6. 【clickhouse】clickhouse 解析器
  7. 《树莓派实战秘籍》——1.14 技巧14初学GPIO
  8. 最经典的PS入门笔记,来自李涛老师的高手之路
  9. php 到处excel 乱码,php 导出excel乱码怎么办
  10. malloc函数的使用
  11. 从中医的角度认识感冒
  12. Ubuntu 20.04安装GTX 1060显卡驱动+cuda 11.4 + cudnn 8,nvidia-smi 报错:NVIDIA-SMI has failed
  13. oracle bam教程,Oracle BAM原理简介
  14. 浏览器打开微信公众号h5页面,增加cookie绕过微信授权登录
  15. 跨境电商wms系统功能分析
  16. HTML、CSS定义字体、颜色、背景等属性
  17. Unity 屏幕特效 之 简单地使用 Shader 获取深度,实现景深效果
  18. matlab 自适应噪声对消,自适应噪声对消
  19. 韩信点兵(C语言实现)
  20. repo forall

热门文章

  1. HttpClient 使用证书访问https站点
  2. c语言中精度站的字节,C语言学习--一些细节问题
  3. Android辅助服务监听dialog,Android开发中对话框辅助类——DialogHelper
  4. JS中获取地址栏中的参数
  5. java 1.7 可变参数,JDK1.7新特性(2):异常和可变长参数处理
  6. css线条伸缩_CSS3弹性伸缩布局(一)——box布局
  7. vue 调用webservice_调用webService的几种方式
  8. python百题百练 二级题目_计算机二级选择题(公共基础新大纲)
  9. 计算机大一笔试题,大学计算机基础(大一) 笔试题库
  10. RabbitMQ获取队列的消息数目