一、实验目的

1、 掌握对安全产品进行测试和分析的方法; 

2、 学会分析安全产品的实现原理;

3、 写出分析报告。

二、实验仪器设备或材料

详见安全产品推荐列表

三、实验内容

从推荐列表选择两款功能不同的安全产品(每组组长尽量保证组内成员选择的产品种类至少在2种以上),根据设计实验内容,完成:

1、 对该产品的⼤体认识;

2、 对该产品的功能、性能、易⽤性等测试;

3、 对该产品实现原理的分析。

四、实验步骤

1、产品一测试过程:

(1)在安全产品推荐列表中选择⼀个产品,了解产品简介,下载、安装过程截图:

Keepass:目前各大知名密码管理器中,这是唯一的开源密码管理器,被OSI(OSI是开源倡议的认证标志)认证。你可以完全访问其源代码,你也可以自己编译它,你可以自己检查安全性是否正确,如果需要,可以使用任何其他加密算法。当然,开源免费。相比较其他的密码管理器来说免费是其一大优点。KeePass与其他软件相比最直观的优势当然是完全免费,还有其他比较实际的优势包括:今后基本可以告别手动输入账户密码,因为有自动填充功能;这是一个开源软件,拥有众多优秀的第三方开源插件支持。即使将来有一天开发者不更新了也肯定有其他开发者接手;keePass的加密方式和加密算法均处于同类软件的领先水平,并且你的数据完全掌握在自己手中,无需将任何敏感信息托付给第三方服务商等等。

 

 

(2)对安全产品的功能、性能、易⽤性等测试,测试截图:

1.新建数据库(功能测试)

 

2.添加记录,存储各种密码(功能测试)

 

自动生成可靠密码,后期设置密码或者使用时只要将密码复制到过去即可(性能测试)

 

3.操作简单易用(有中文插件可下载)

(3)画出该产品功能示意框图:

 

(4)若产品开源,分析其代码结构和实现原理等。

KeePass文件格式由文件头部和数据部分组成。由于文件存储涉及到密码安全方面的东西,所以硬盘存储的是 KeePass 文件经过加密后的文件数据。

总体上KeePass 的文件格式组织方式如下:

头部数据

分组数据

密码数据

KeePass文件格式开始部分是头部信息,紧跟着是分组信息,最后才是关于密码的信息。首先我们分析 KeePass 的头部信息结构 PW_DBHEADER , PW_DBHEADER 在文件PwStructs.h 中定义。

/// Database header structure. All KeePass KDB files begin with this structure.

typedef   struct   _PW_DBHEADER

{

DWORD   dwSignature1 ;  ///< File identifier word, set to PWM_DBSIG_1.

DWORD   dwSignature2 ;  ///< File identifier word, set to PWM_DBSIG_2.

DWORD   dwFlags ;

DWORD   dwVersion ;

BYTE   aMasterSeed [16];  ///< Seed that gets hashed with the user key to form the final key

UINT8   aEncryptionIV [16];  ///< IV used for content encryption.

 

DWORD   dwGroups ;  ///< Number of groups in the database.

DWORD   dwEntries ;  ///< Number of entries in the database.

 

BYTE   aContentsHash [32];  ///< SHA-256 hash of the database, used for integrity checking.

BYTE   aMasterSeed2 [32];  ///< Seed used for the dwKeyEncRounds AES transformations.

DWORD   dwKeyEncRounds ;  ///< Number of master key transformations.

}  PW_DBHEADER , * PPW_DBHEADER ;

头部结构信息开始的8 个字节分别是 dwSignature1 和 dwSignature 2,也就是 KeePass 文件格式的签名信息,其值分别等于 PWM_DBSIG_1 和 PWM_DBSIG_ 2 , PWM_DBSIG_1 和 PWM_DBSIG_ 2 在KeePass 中定义如下 :

    #define   PWM_DBSIG_1       0x9AA2D903

    #define   PWM_DBSIG_2       0xB54BFB65

它们的作用仅仅是作为识别KeePass 文件格式而已,没有特殊的意义。

dwFlags:标示对 KeePass 文件的数据部分(除文件头部信息)使用的加密算法,目前可用的加密算法有 AES 和 TWOFISH 算法。

dwVersion :标示KeePass 文件的版本号,可用于实现版本兼容性。

aMasterSeed :16 位的主密钥。是随机生成的,也就是没有 KeePass 的数据库文件所使用的 aMasterSeed 都不同。用于对用户密 钥进行加密。

aEncryptionIV :16 位密钥。也是随机生成的,用于对文件的数据部分进行加密。

dwGroups :标示本数据库文件中分组的条数。

dwEntries :标示本数据库文件中密码的条数。

aContentsHash :标示本数据库文件中数据部分的hash 值, KeePass 使用它进行完整性检查。

aMasterSeed2 :16 位次密钥。随机生成的。用途同 aMasterSeed 。

dwKeyEncRounds :标示用户密钥的加密次数。

KeePass的分组数据部分 是由 多个 PW_GROUP 依次存储。类似数组的存储结构。 PW_GROUP 在pwstructs.h 中定义,

/// Group structure, containing information about one group.

typedef   struct   _PW_GROUP

{

DWORD   uGroupId ;  ///< ID of the group. The ID is a unique identifier in one database.

DWORD   uImageId ;  ///< Index of the icon in the image list to use for this group.

TCHAR  * pszGroupName ;  ///< Name of the group.

PW_TIME   tCreation ;  ///< Time when the group was created.

PW_TIME   tLastMod ;  ///< Time when the group was last modified.

PW_TIME   tLastAccess ;  ///< Time when the group was last accessed.

PW_TIME   tExpire ;  ///< Time when the group will expire.

 

USHORT   usLevel ;  ///< Indentation/depth level in the group tree.

#ifdef   VPF_ALIGN

USHORT usDummy;

 

#endif

DWORD   dwFlags ;  ///< Used by KeePass internally, don't use (set to 0 for a new structure).

}  PW_GROUP , * PPW_GROUP ;

由此可见,PW_GROUP 存储一下信息: (1) 分组 Id ,( 2 )图像 Id ( 3 )组名( 4 )创建日期( 5 )最后修改日期( 6 )最后访问日期( 7 )树状结构中所处的层次数( 8 )标志位。

KeePass文件的最后部分才是密码信息,其存储方式和组数据一样。也是依次存储。 PW_ENTRY 在pwstructs.h 中定义:

/// Entry structure, containing information about one entry.

typedef   struct   _PW_ENTR

{

BYTE   uuid [16];  ///< Unique GUID identifying this entry (not only in this database).

DWORD   uGroupId ;  ///< ID of the group that contains this entry.

DWORD   uImageId ;  ///< Index of the icon in the image list to use fo r this entry.

 

 

TCHAR  * pszTitle ;  ///< Title.

TCHAR  * pszURL ;  ///< URL.

TCHAR  * ;  ///< User name.

DWORD   uPasswordLen ;  ///< Length of the password (required for memory protection).

TCHAR  * pszPassword ;  ///< Password (may be encrypted, use IKpDatabase::UnlockEntryPassword to decrypt).

TCHAR  * pszAdditional ;  ///< Notes.

PW_TIME   tCreation ;  ///< Time when the entry was created.

PW_TIME   tLastMod ;  ///< Time when the entry was last modified.

PW_TIME   tLastAccess ;  ///< Time when the entry was last accessed.

PW_TIME   tExpire ;  ///< Time when the entry will expire.

 

TCHAR  * pszBinaryDesc ;  ///< A string describing the contents of pBinaryData.

BYTE  * pBinaryData ;  ///< Attachment data (of length uBinaryDataLen), may be NULL.

DWORD   uBinaryDataLen ;  ///< Length of the attachment data in bytes.

}  PW_ENTRY , * PPW_ENTRY ;

KeePass 字符串都是以 UTF-8 格式存储的。读取的时候要进行相关的转换才能使用。

 

2、产品二测试过程:

(1)在安全产品推荐列表中选择⼀个产品,了解产品简介,下载、安装过程截图:

Eraser:橡皮擦是Windows的高级安全工具,它允许通过精心选择的模式多次重写敏感数据,从而完全删除硬盘中的敏感数据。Windows XP(带有Service Pack 3),Windows Server 2003(带有Service Pack 2),Windows Vista,Windows Server 2008,Windows 7、8、10和Windows Server 2012、2016当前支持橡皮擦。大多数人拥有一些他们不愿与他人共享的数据-密码,个人信息,工作中的机密文件,财务记录,自写诗,列表还在继续。也许您已经将某些此类信息保存在计算机上,方便您访问,但是当需要从硬盘中删除数据时,事情就变得更加复杂了,并且维护隐私也变得不那么容易了。

首先想到的是,当“删除”文件时,数据就消失了。不完全是,当删除文件时,操作系统实际上并没有从磁盘上删除该文件;而是将文件删除。它仅从文件系统表中删除文件的引用。该文件将保留在磁盘上,直到在其上创建另一个文件为止,即使在此之后,也可以通过研究磁盘盘表面上的磁场来恢复数据。在覆盖文件之前,任何人都可以使用磁盘维护或取消删除实用程序轻松地检索它。

 

(2)对安全产品的功能、性能、易⽤性等测试,测试截图:

1.新建删除文件的任务(功能测试)

 

2. 「Settings 」设定选单中可自行指定预设的删除模式(性能测试)

 

3.需要设置schedule时需选中recurring模式(功能测试)

 

4.执行任务(易用性)

 

(3)画出该产品功能示意框图:

 

(4)若产品开源,分析其代码结构和实现原理等。(未找到)

五、实验结果与分析

1.根据安全产品进⾏测试的结果,对两款安全产品功能、性能进行分析,并请阐述分析结论

Keepass:该软件是将我们的所有密码都会加密然后封锁在一个数据库里,除非使用你的主密码和密钥文件,否则谁也打不开。KeePass是把密码存储在本地的,但这样在跨平台方面会有问题。本款安全产品小巧、操作简单方便,符合密码管理的安全需求,能够帮助我们有效的管理复杂繁多的密码,而且他是单机本地存储,安全性有保障。

Eraser:Eraser 是可以彻底删除文件、文件夹,以及清除驱动器未用磁盘空间,但不影响未删除的文件的工具软件,可以彻底清除以前删除文件的任何痕迹。程序支持最高的gutmarm(古特曼)算法35次消除,同时还内置符合美国防部u.s.dod 5220.22m标准的u.s.dod 5220.22m(c ande)消除算法,可以彻底防止软件和硬件恢复的工具,程序同时也内置防止软件恢复且速度快的 pseudorandom data(伪随机数据覆盖)算法,另外软件允许用户自己定制消除算法。

本款安全产品能够彻底清除用户的隐私信息,防止数据恢复等,因此用户在进行数据擦除之前需要对重要数据进行备份,防止误操导致的不可还原。该产品操作相对简单,同时也伴随数据丢失不可还原的风险。