CN104331644B - 一种智能终端文件的透明加解密方法 - Google Patents
一种智能终端文件的透明加解密方法 Download PDFInfo
- Publication number
- CN104331644B CN104331644B CN201410680403.5A CN201410680403A CN104331644B CN 104331644 B CN104331644 B CN 104331644B CN 201410680403 A CN201410680403 A CN 201410680403A CN 104331644 B CN104331644 B CN 104331644B
- Authority
- CN
- China
- Prior art keywords
- file
- encryption
- address
- decryption
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Medical Informatics (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Abstract
本发明提出一种智能终端文件的透明加解密方法。包括:在应用层设置授权进程名单和待保护文件名单,并将授权进程名单和待保护文件名单发送到动态链接库.so;从访问进程中获取针对操作文件的操作命令,通过JNI调用动态链接库.so,当动态链接库.so判定访问进程是授权进程以及操作文件是待保护文件时,通过Netlink套接字将访问进程名、操作文件的地址和操作命令传递到智能终端操作系统内核层的钩子模块;钩子模块查找系统调用表,从系统调用表中获取对应于所述操作命令的系统调用函数的地址,并将系统调用表中所述系统调用函数的地址替换为在所述内核层中预先设置且具有加解密功能的函数的地址。
Description
技术领域
本发明实施方式属于移动应用技术领域,特别是一种智能终端文件的透明加解密方法。
背景技术
随着移动互联网的飞速发展和全球普及,智能终端集商务娱乐功能于一体,成为人们日常生活中不可或缺的组成部分,与此同时形形色色的应用软件也如雨后春笋般涌现,满足人们日常工作、学习和生活的需要。但是,伴随着移动互联网的飞速发展和智能终端的广泛普及,恶意应用代码传播活动日益猖獗,技术手段不断革新,严重威胁网络和用户的安全。然而,现今移动应用商店缺乏统一审核标准,应用程序良莠不齐,越来越多的黑客借助审核不严的应用商店传播恶意代码,并且智能终端由于自身的安全缺陷,对于用户敏感数据的安全保护不足。总而言之,移动智能终端用户个人敏感数据安全保护刻不容缓。
移动智能终端主流的操作系统有Android、iOS、Windows Phone、BlackBerry以及Symbian,其中Android平台是手机开放联盟开发的目前最为流行的移动操作系统平台,所占市场份额最大、研究最热。基于Android平台的手机文件加密技术也日趋成熟,“文件加密”、“金山隐私保险箱”、“加密短信”等加密应用已得到了Android手机用户的广泛使用。该类加密软件主要为用户态的应用,用于保护用户隐私的照片、视频、短信、文件、文件夹等。但是,使用该类软件对文件进行加密的时候,用户首先要选取需要加密的文件,然后对该文件设置密码,加密软件再根据用户设定的密码,对指定的文件进行加密。而当用户需要对该文件进行明文读取的时候,则需要用户再次输入密码,加密软件再根据密码解密文件,在操作上具有一定的复杂性。
发明内容
本发明实施方式提出一种智能终端文件的透明加解密方法,从而在内核层实现对于用户隐私数据和文件的透明加解密,有效防止非授权应用或者终端窃取用户敏感文件内容,保护用户隐私安全。
本发明实施方式的技术方案如下:
一种智能终端文件的透明加解密方法,所述智能终端的操作系统是基于Linux的;该方法包括:
在应用层设置授权进程名单和待保护文件名单,并将授权进程名单和待保护文件名单发送到动态链接库.so;
从访问进程中获取针对操作文件的操作命令,通过JAVA本地调用(JNI)调用动态链接库.so,当动态链接库.so判定访问进程是授权进程以及所述操作文件是待保护文件时,通过Netlink套接字将所述访问进程名、操作文件的地址和所述操作命令传递到智能终端操作系统内核(Linux Kernel)层的钩子模块;
所述内核层的钩子模块查找系统调用表,从系统调用表中获取对应于所述操作命令的系统调用函数的地址,并将系统调用表中所述系统调用函数的地址替换为在内核层中预先设置且具有加解密功能的函数的地址;
所述具有加解密功能的函数针对所述操作文件执行加密或解密操作;
在所述具有加解密功能的函数完成加密或解密操作之后,内核层的钩子模块将系统调用表中所述具有加解密功能的函数的地址替换为所述对应于操作命令的系统调用函数的地址。
优选地,所述将访问进程名、操作文件的地址和操作命令传递到内核层的钩子模块包括:
以字符串形式将访问进程名、操作文件的地址和操作命令传递给内核层的钩子模块,其中所述字符串的前两位是用于保存所述操作命令的标志位,从字符串第三位开始保存所述访问进程名和操作文件的地址。
优选地,该方法还包括:当动态链接库.so判定访问进程是授权进程以及所述操作文件不是待保护文件时,对所述操作文件执行所述操作命令。
优选地,该方法还包括:当动态链接库.so判定访问进程不是授权进程以及所述操作文件不是待保护文件时,对所述操作文件执行所述操作命令。
优选地,该方法还包括:当动态链接库.so判定访问进程不是授权进程以及所述操作文件是待保护文件时,以乱码形式呈现所述操作文件。
优选地,所述具有加解密功能的函数及所述钩子模块以可加载内核模块(LKM)的形式被加载到所述内核层。
优选地,所述具有加解密功能的函数支持下列加解密算法:按位异或、数据加密标准(DES)、国际数据加密算法(IDEA)或RC5。
由此可见,应用本发明实施方式之后,在应用层设置授权进程名单和待保护文件名单,并将授权进程名单和待保护文件名单发送到动态链接库.so;从访问进程中获取针对操作文件的操作命令,通过JNI调用动态链接库.so,当动态链接库.so判定访问进程是授权进程以及操作文件是待保护文件时,通过Netlink套接字将访问进程名、操作文件的地址和操作命令传递到智能终端操作系统内核层的钩子模块;钩子模块查找系统调用表,从系统调用表中获取对应于所述操作命令的系统调用函数的地址,并将系统调用表中所述系统调用函数的地址替换为在所述内核层中预先设置且具有加解密功能的函数的地址。
本发明创新点主要包括:
(1)主要针对移动智能终端的敏感数据和文件进行加解密操作,能够监测隐私数据和文件的访问操作及权限;
(2)核心功能模块位于内核层,保证可靠性兼顾效率,实现了对敏感数据的透明加解密;
(3)具有动态密钥确认功能,可以有效地避免终端丢失后造成的个人信息泄露;
(4)具有良好的可移植性,本系统也适用于除Android外其他基于Linux的移动智能系统。
附图说明
图1为本发明智能终端文件的透明加解密方法流程图;
图2为本发明智能终端文件的透明加解密的总体架构图;
图3为本发明内核通信示意图;
图4为钩子模块设计图;
图5为文件加解密处理图;
图6为钩子模块实现原理图;
图7为加密算法原理图;
图8为解密算法原理图;
图9为本发明智能终端文件的透明加解密整体流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
本发明针对国内外基于Linux的智能终端操作系统(比如Android)平台用户个人敏感数据安全保护不足的现状,提出一套优选基于LKM的智能终端文件透明加解密解决方案,相比于市面上司空见惯的用户态加密软件,其主要创新点包括:
(1)本发明能够监测、管理用户数据的访问操作,使得非授权进程或者其他智能终端无法获取被保护文件内容;
(2)、本发明在Linux文件透明加解密的研究基础之上,专门针对Android平台,但本系统也适用于其他基于Linux的移动智能系统;
(3)、本发明打破传统Android应用程序开发习惯,其核心功能模块位于内核层,虽然开发难度相比于用户层有所提高,但是可靠性和效率得到一定程度的保证;
(4)、传统用户态的加密方法主要是用crypt命令或者是借助于加密应用,本系统实现透明加解密,大大提高了用户体验;
(5)、本发明具有动态密钥确认功能,有效避免终端丢失所造成的敏感文件泄露风险。
为实现本发明的各项功能,本发明的技术涉及可加载内核模块(LKM)、透明加密技术、钩子(Hook)技术和加解密算法实现等等,可以将本发明通过代码编译为LKM然后加载到Linux内核,其与Linux内核具有相同权限,触发器激发代码运行,然后使用Hook技术劫持关键的系统调用,最后根据加解密策略调用加解密算法提供透明加解密服务。
具体地,本发明采用Linux文件透明加解密的设计思想,结合现有的文件保护技术,专门针对基于Linux的智能终端操作系统(比如Android)实现基于LKM的智能终端文件透明加解密技术方案,使得任何非授权应用和其他智能终端无法获取被保护的文件内容。
本发明采用了模块化的设计理论,从图形界面和内核通信模块、内核级APIHOOK模块和文件流的加解密模块三方面实现。在加密技术方面,传统的文件加解密是用crypt命令或者是依赖加密应用程序。但是这两种方法实现起来非常麻烦,效率也比较低。本系统核心技术运行在内核层,相比于应用层技术而言,防绕过,防卸载,更隐蔽,更安全。而且,底层技术手段与Linux操作系统同步运行,第一时间感知用户操作行为,从全局控制所有的操作行为,几乎不影响计算机运行的速度和性能,实时性和高效性得到有力保障。
本发明的核心设计思想体现在深入内核地实现对于敏感文件的透明加解密。对于普通文件而言,无论是授权进程还是非授权进程都直接调用系统调用,通过设备总线访问物理存储设备,文件正常显示;对于加密文件而言,授权进程访问加密文件时,应用层通过Netlink socket机制将消息传递到内核层,Hook技术拦截其调用关键系统函数,跳转实现透明加解密,文件正常显示,非授权进程访问时没有透明加解密文件乱码显示。
目前市面上已经出现的各式各样的针对手机文件信息进行加密保护的应用软件,广泛采用用户态的加密方法,每次加密和解密都需要用户输入密码和选择文件,在用户体验及加解密效率方面都显得捉襟见肘。本系统从用户体验出发,相比于传统应用另辟蹊径,敏感文件的加解密过程对于用户而言是“透明”的。该加密技术的实现,将用户从繁杂的加密、解密、密码设置和文件选择等工作中解脱出来,使得用户在使用手机的时候察觉不到加解密过程,读取文件信息如同没有进行过加密操作一样。
另外,在设置模块设有身份验证功能。用户初始登陆系统时强制要求其设置用户名和密码,并存储在内核层。若用户使用本系统删除加密文件,需要进行身份验证,有效防止终端丢失后恶意攻击者使用本系统解密加密文件。系统同时启动定时器,一旦时间超过规定阈值用户再次登录系统时则需要进行身份验证,避免终端丢失后用户隐私泄露的风险。
本发明本着功能完整、设计实现高效、用户使用简单的目的,采用自上而下的模块间调用和系统调用,软件在可用性、性能和执行效率上都有很大的提高;此外,在图形界面上提供了帮助文档,用户可以快速掌握本系统的使用。
图1为本发明智能终端文件的透明加解密方法流程图,智能终端的操作系统是基于Linux的。
如图1所示,该方法包括:
步骤101:在应用层设置授权进程名单和待保护文件名单,并将授权进程名单和待保护文件名单发送到动态链接库.so。
具体地,对于设置添加授权进程:系统程序界面分为左右两列,左侧是本机所有的程序列表,右侧是用户已选择程序列表,也就是用户指定的有权访问待保护文件(加密文件)的授权进程表。用户既可以从左侧中指定授权进程到右侧,也可以从右侧删除授权进程使其恢复为普通进程。
对于设置待保护文件(加密文件):系统文件界面与程序界面风格统一,也分为左右两列,左侧是本机所有的文件列表,右侧是用户选择历史,也就是用户指定的待保护的加密文件表。同样地,用户可以添加和删除加密文件。
在应用层,利用Activity调用完成文件、程序、设置和主界面的相互调用,在每一个Activity中又包含不同功能的Fragment,Fragment又包含各种Android组件,使得APK程序功能完整且思路清晰。在Android上层APK中加入动态链接库(.so文件),使得程序在上层APK中可以利用Android NDK调用c语言函数,完成与内核层的通信。
步骤102:从访问进程中获取针对操作文件的操作命令,通过JAVA本地调用(JNI)调用动态链接库.so,当动态链接库.so判定访问进程是授权进程以及所述操作文件是待保护文件时,通过Netlink套接字将所述访问进程名、操作文件的地址和所述操作命令传递到智能终端操作系统内核层的钩子模块。
在一个实施方式中:
将访问进程名、操作文件的地址和操作命令传递到内核层的钩子模块包括:
以字符串形式将访问进程名、操作文件的地址和操作命令传递给内核层的钩子模块,其中所述字符串的前两位是用于保存所述操作命令的标志位,从字符串第三位开始保存所述访问进程名和操作文件的地址。
本发明主要包括四种操作形式:授权进程访问加密文件、授权进程访问普通文件、普通进程访问加密文件、普通进程访问普通文件。其中,授权进程访问加密文件时,由本发明提供解密服务将文件内容以明文形式呈现给用户,在用户完成相关操作,比如修改等,再提供加密服务将文件内容以密文形式存储到移动设备;普通进程访问加密文件时,本发明不对加密文件进行解密,文件以乱码形式呈现;授权进程和普通进程访问普通文件时,进行正常的文件操作即可,本发明不加以干预。
步骤103:内核层的钩子模块查找系统调用表,从系统调用表中获取对应于所述操作命令的系统调用函数的地址,并将系统调用表中所述系统调用函数的地址替换为在内核层中预先设置且具有加解密功能的函数的地址。
步骤104:所述具有加解密功能的函数针对所述操作文件执行加密或解密操作。
申请人在比较常见的加密算法之后,权衡安全性和效率,优选使用流加密算法——RC4算法为默认加解密算法,方便普通用户操作。
算法的可配置性:钩子模块会调用文件流的加解密模块,入口参数为待加密缓冲区和缓冲区长度,同时传入的参数还有种子密钥,并返回加解密后的缓冲区。可供选择的算法包括比特位翻转、AES、RC4和IDEA。不同的加解密算法处理待加密缓冲区时并不完全相同,如AES和IDEA均选用128bit密钥,但明密文分组却分别是128bit和64bit,在系统中分别予以处理。
算法更换:算法更换时系统会先使用旧的算法解密所有的加密文件,然后再使用新的算法重新加密待保护的文件。
密钥更换:用户初次登陆系统时会设置密码,用作加密算法的种子密钥。本系统也提供密码更换机制,更换密码时与算法更换的处理方法一样,系统先用旧的密钥解密所有的加密文件,然后再使用新的密钥重新加密待保护的文件。
首次加密:文件首次加密时直接调用文件流的加解密模块对其进行加密存储。
步骤105:在所述具有加解密功能的函数完成加密或解密操作之后,内核层的钩子模块将系统调用表中所述具有加解密功能的函数的地址替换为所述对应于操作命令的系统调用函数的地址。
在一个实施方式中:
当动态链接库.so判定访问进程是授权进程以及所述操作文件不是待保护文件时,对所述操作文件执行所述操作命令。
在一个实施方式中:
当动态链接库.so判定访问进程不是授权进程以及所述操作文件不是待保护文件时,对所述操作文件执行所述操作命令。
在一个实施方式中:
当动态链接库.so判定访问进程不是授权进程以及所述操作文件是待保护文件时,以乱码形式呈现所述操作文件。
将本发明的钩子模块和具有加解密功能的函数植入内核层的方式既可以是以LKM方式加载又可以是和基础内核绑定。在一个实施方式中:具有加解密功能的函数及所述钩子模块以可加载内核模块(LKM)的形式被加载到所述内核层。
LKM相比于绑定基础内核方式有许多的优点。其一就是不必经常重新编译内核,这样既省时又避免在重编译和重安装过程中引入错误;其二就是LKM可以帮助诊断系统错误,在设备驱动器中的bug甚至可能导致系统根本无法启动,而且很难判断是基础内核的哪部分引起错误。但是如果同样的设备驱动器是LKM的话,基础内核在设备驱动器加载前启动运行,所以一旦系统在基础内核启动运行后崩溃,那么很容易将问题定位为设备驱动器,并且在问题未解决前不再加载该设备驱动器就好;其三就是LKM节省内存,因为只有在需要时才加载,而基础内核方式需要一直加载;其四就是LKM维护和调试速度较快,内置内核的文件系统驱动器需要完整的重启,但是可以和LKM进行快速的命令交互,使用者可以尝试不同的参数,或者甚至是反复地改变代码,而不必等待启动;第五就是LKM比基础内核模块方式运行速度快。
在一个实施方式中:
具有加解密功能的函数支持下列加解密算法:数据加密标准(DES)、国际数据加密算法(IDEA)、RC5、高级加密标准(AES)、BlowFish、RSA、椭圆曲线或McEliece,等等。
图2为本发明智能终端文件的透明加解密的总体架构图。如图2所示,本发明的系统包括图形界面和内核通信模块、内核级API Hook模块和文件流的加解密模块三部分。其中,图形界面和内核通信模块负责界面交互及访问进程与内核级API Hook模块进行命令通信;内核级API Hook模块将系统函数调用表中相应函数的地址指向预先编写的函数,从而实现对系统关键函数的劫持;文件流的加解密模块根据策略对普通文件或者加密文件进行相应的操作。
具体地,所述图形界面和内核通信模块主要负责进程与内核级API Hook模块进行命令通信。用户通过UI界面输入到应用apk,用户层传递给jni函数的参数主要是两个,一个是进程名或者文件路径,另一个是要完成的操作。然后由jni调用动态链接库,Netlinksocket和Linux kernel socket通信,传入内核的是一串字符串,包括进程名或者文件路径和要完成的操作。图形界面和内核通信模块还定期对用户身份进行验证,系统设定默认时间为6小时,有效防止用户终端丢失后非法用户使用本系统解密加密文件泄露敏感信息。
图形界面和内核通信模块也负责和用户交互,优先考虑用户体验。发明主界面包括文件、程序、设置和退出四个按钮,文件和程序界面一分为二,左侧是本机所有文件/程序列表,右侧是已选择的加密文件/授权进程列表,设置和退出按钮提供用户密码设置、加密算法选择、系统使用说明和按钮退出等功能。界面设计简约大气,功能一目了然,方便用户操作。
内核级API Hook模块实现步骤为查找、替换、调用和返回四步骤。首先查找到系统调用表,获取并保存关键系统调用的地址,然后将系统调用表中关键系统调用的地址替换为自己编写的具有加解密功能的函数地址,在用户使用关键系统调用时,会产生0x80中断,系统会根据系统调用表中的地址跳转到我们自己的函数,进而完成相应的功能,最后在处理完成之后再跳转回原始的系统调用,完成正常的功能。
文件流的加解密模块主要是梳理文件的加解密策略,在与用户交互的过程中,本发明全面而细致地考虑实际的应用环境。授权进程访问加密文件时,系统先对加密文件进行解密,然后以明文形式呈现给用户,在用户关闭文件后将其保存为密文形式存储在移动终端设备上。授权进程访问普通文件时,可以进行正常的文件操作,如打开、读取、写入、关闭等。普通进程访问加密文件时,由于访问权限问题,本系统不对加密文件进行解密,文件以乱码形式呈现,从而使得非授权进程无法获取加密文件内容。普通进程可以正常访问普通文件。
为方便一般用户操作,本发明的加密算法在综合比较比特位翻转、DES、三重DES、IDEA、AES和RC4之后,选择RC4为默认算法。RC4算法为流密码算法,算法简单易于实现,具有良好的随机性和抵抗各种分析的能力,因此该算法在众多领域的安全模块得到了广泛的应用,且实现速度快,满足本系统对于加解密算法的要求。同时用户也可以权衡安全性和效率,自行选择加解密算法。
为达到上述目的,本发明各模块协调工作,图形界面和内核通信模块处理用户输入,使用jni调用动态链接库Netlink socket向内核级API Hook模块传递消息,包括处理的是文件还是进程,文件路径、进程名称和相应的操作,如添加、删除等,内核级API Hook层根据应用层传递的消息维护授权进程表和加密文件表,并根据加解密策略调用文件流的加解密模块实现对于用户数据的透明加解密。
图3为图形界面和内核通信模块与内核通信示意图。如图3所示,用户通过UI界面输入到应用APK,然后由JNI调用动态链接库(so库),Netlink socket和Linux kernel层的Netlink socket通信,将上层应用层消息传递到文件流加解密模块。另外,图形界面和内核通信模块同时负责访问进程与内核级API Hook模块进行命令通信。用户层传递给jni函数的参数主要包括两个,一个是访问进程名和操作文件路径,另一个是要完成的操作(即操作命令),而jni函数向内核层发送的是一个字符串,其中字符串的前两位是标志位,用来保存要完成的操作,第三位开始是进程名或文件路径。
图4为钩子模块设计图。用户层程序在对文件进行操作的时候,会由java层通过.so动态链接库进入jni层的系统调用,再由该层调用内核层的read、write等API,通过修改系统调用表相应的指针将其指向事先编写的函数,这样每当用户程序访问内存空间时,就会先Hook到事先编写的加解密函数,在完成所需功能之后就接着调用原始的系统调用完成原有功能。
图6为钩子模块实现原理图。钩子模块首先查找到系统调用表sys_call_table的位置,然后从中获取并保存系统API的原始地址,再将系统调用表中的系统API地址(比如,文件打开API:Sys_Open())替换为事先编写的加解密函数地址(比如,My_Sys_Open()),这样用户态程序调用API时产生0x80中断,系统在系统调用表中查找对应函数的时候就会跳转到事先编写的加解密函数,在加解密函数中完成相应的加解密任务,加解密函数在处理完之后再调用保存的原始函数地址跳转回原始函数(比如,文件打开API:Sys_Open()),完成正常的功能。
在与用户交互的过程中,本发明全面而细致地考虑各种实际的应用场景。图5为文件加解密处理图。
加解密策略设定如下:
(1)、授权进程访问加密文件时,密文无法读取,所以系统先对加密文件进行解密,然后以明文形式呈现,在用户关闭文件保存为密文形式,存储在移动终端设备上。
(2)、授权进程访问普通文件时,可以进行常规的文件操作,如打开、读取、写入文件等。
(3)、普通进程访问加密文件时,由于访问权限问题,文件以乱码形式呈现,非授权进程无法获取加密文件内容。
(4)、普通进程可以正常访问普通文件。但是考虑到实际情况比较错综复杂,所以需要在加解密策略设计时思路清晰,考虑周全。在最后的测试环节,本发明集中分析了各种各样的实际可能情况,基本上涵盖了用户的所有可能操作。
加解密算法在综合比较比特位翻转、DES、AES和RC4等算法之后,选择RC4为默认算法。RC4算法为流密码算法,算法简单易于实现,由于其良好的随机性和抗分析的能力,在众多安全领域得到了广泛的应用,且实现速度快,满足本系统对于加解密算法的要求。
众所周知,加解密系统密钥的管理至关重要。本发明所实现的文件透明加解密系统只有root用户才有权限加载该文件系统。为阻止攻击者获取用户的账号或者根用户权限,本系统将用户设置的密钥保存在内存中,用作用户加密算法的根密钥。用户可以更改密码,更新密码时要求系统使用旧密码解密文件,然后再使用新密码加密文件,并且将新密码存储到内核层替换旧密钥。用户设置密码应尽量避免弱密钥,比如说11111、123456或者生日等,系统在使用说明中有提醒用户密码设置的安全级别问题。
图7为加密算法原理图;图8为解密算法原理图。
由于钩子模块会调用文件流的加解密模块,因此钩子模块提供的待加解密缓冲区和缓冲区长度就是加解密模块的入口参数,同时传入的参数还有种子密钥,并返回加解密后的缓冲区。值得注意的是,系统选用的不同的加解密算法时,处理待加解密的缓冲区的方式并不完全一样,因而,系统需要在程序中分别处理。需要指出的是,当数据长度不够一个分组的时候,则在数据的末尾添加10……比特串进行填充。鉴于文件透明加解密系统默认选用RC4算法加解密文件。
图9为本发明智能终端文件的透明加解密整体流程图。由图9可见,本发明的层次结构划分为用户态和内核态。在用户态中,用户和图形界面交互,选择文件或者程序等操作,如果是文件首次加密则直接调用内核层的encryp.c对其进行加密。除了初次登陆用户需要设置用户名和密码之外,其他功能均可选择默认。而且,位于上层的应用层消息通过send to kernel.c传入到内核模块,其机制是jni调用动态链接库,通过Netlink socket与内核层的Netlink socket通信。
对于内核态,Hook.c使用Hook技术实现程序流程跳转到strategy.c,系统判断进程是授权进程还是普通进程,进而判断是加密文件还是普通文件。如果授权进程打开加密文件,首先调用decrypt.c解密文件,对文件进行正常的read、write等操作之后再调用encrypt.c加密保存;如果授权进程打开普通文件,由于系统对普通文件并未进行加密处理,正常操作即可。对于普通进程打开加密文件,系统并不提供解密服务,文件以乱码形式存在。对于普通进程打开普通文件,系统并不影响其正常操作,可以对文件进行正常的打开、读取、写入、关闭等操作。
综上所述,由实际需求驱动,本发明设计了一套针对Android平台的智能终端文件透明加解密技术方案,包括图形界面和内核通信模块、内核级APIHook模块和文件流的加解密模块三部分,各部分协调工作,使得非授权进程或者其他智能终端无法解析用户敏感信息,授权进程和合法用户终端准确解密文件,从而有效地实现对于用户指定文件的保护。本系统经过功能和性能测试,达到各项预期的测试指标。
基于LKM的智能终端文件透明加解密系统创新点如下:
(1)系统主要针对移动智能终端的敏感数据和文件进行加解密操作,能够监测隐私数据和文件的访问操作及权限;
(2)系统核心功能模块位于内核层,保证可靠性兼顾效率,实现了对敏感数据的透明加解密;
(3)系统具有动态密钥确认功能,可以有效地避免终端丢失后造成的个人信息泄露;
(4)系统具有良好的可移植性,本系统也适用于除Android外其他基于Linux的移动智能系统。
总之,智能终端文件透明加解密系统实现了对用户敏感数据和文件的保护,同时操作简单,用户体验良好,满足稳定、高效、方便、易用的设计要求。从个人用户、商务部门、国家机关的文件安全保护需求分析,本系统对无论个人隐私数据、商业关键业务还是机关敏感文件都能进行安全有效保护,应用前景看好。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种智能终端文件的透明加解密方法,其特征在于,所述智能终端的操作系统是安卓;该方法包括:
在应用层设置授权进程名单和待保护文件名单,并将授权进程名单和待保护文件名单发送到动态链接库.so;
从访问进程中获取针对操作文件的操作命令,通过JAVA本地调用(JNI)调用动态链接库.so,当动态链接库.so判定访问进程是授权进程以及所述操作文件是待保护文件时,通过Netlink套接字将所述访问进程名、操作文件的地址和所述操作命令传递到智能终端操作系统内核层的钩子模块;
所述内核层的钩子模块查找系统调用表,从系统调用表中获取对应于所述操作命令的系统调用函数的地址,并将系统调用表中所述系统调用函数的地址替换为在所述内核层中预先设置且具有加解密功能的函数的地址;
所述具有加解密功能的函数针对所述操作文件执行加密或解密操作;
在所述具有加解密功能的函数完成加密或解密操作之后,内核层的钩子模块将系统调用表中所述具有加解密功能的函数的地址替换为所述对应于操作命令的系统调用函数的地址;
所述具有加解密功能的函数及所述钩子模块以可加载内核模块(LKM)的形式被加载到所述内核层。
2.根据权利要求1所述的方法,其特征在于,所述将访问进程名、操作文件的地址和操作命令传递到内核层的钩子模块包括:
以字符串形式将访问进程名、操作文件的地址和操作命令传递给内核层的钩子模块,其中所述字符串的前两位是用于保存所述操作命令的标志位,从字符串第三位开始保存所述访问进程名和操作文件的地址。
3.根据权利要求1所述的方法,其特征在于,该方法还包括:
当动态链接库.so判定访问进程是授权进程以及所述操作文件不是待保护文件时,对所述操作文件执行所述操作命令。
4.根据权利要求1所述的方法,其特征在于,该方法还包括:
当动态链接库.so判定访问进程不是授权进程以及所述操作文件不是待保护文件时,对所述操作文件执行所述操作命令。
5.根据权利要求1所述的方法,其特征在于,该方法还包括:
当动态链接库.so判定访问进程不是授权进程以及所述操作文件是待保护文件时,以乱码形式呈现所述操作文件。
6.根据权利要求1所述的方法,其特征在于,所述具有加解密功能的函数支持下列加解密算法:按位异或、数据加密标准(DES)、国际数据加密算法(IDEA)或RC5。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410680403.5A CN104331644B (zh) | 2014-11-24 | 2014-11-24 | 一种智能终端文件的透明加解密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410680403.5A CN104331644B (zh) | 2014-11-24 | 2014-11-24 | 一种智能终端文件的透明加解密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104331644A CN104331644A (zh) | 2015-02-04 |
CN104331644B true CN104331644B (zh) | 2017-08-04 |
Family
ID=52406367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410680403.5A Active CN104331644B (zh) | 2014-11-24 | 2014-11-24 | 一种智能终端文件的透明加解密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104331644B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105844170A (zh) * | 2015-01-16 | 2016-08-10 | 阿里巴巴集团控股有限公司 | 一种文件处理方法和装置 |
CN105243330A (zh) * | 2015-10-13 | 2016-01-13 | 武汉大学 | 一种面向Android系统内部数据传递过程的保护方法及系统 |
CN106599709B (zh) * | 2015-10-15 | 2021-08-17 | 中兴通讯股份有限公司 | 一种防隐私信息泄露的方法、装置及终端 |
CN105373744A (zh) * | 2015-10-29 | 2016-03-02 | 成都卫士通信息产业股份有限公司 | 基于Linux的扩展文件系统加密方法 |
CN105701410B (zh) * | 2015-12-31 | 2019-03-01 | 华为技术有限公司 | 一种获得源代码中信息的方法、装置及系统 |
CN105844173A (zh) * | 2016-03-23 | 2016-08-10 | 福建正孚软件有限公司 | 内存级的文件加解密方法及装置 |
CN107305606A (zh) * | 2016-04-20 | 2017-10-31 | 中兴通讯股份有限公司 | 应用文件的处理方法及装置和文件的访问方法及装置 |
CN106060010A (zh) * | 2016-05-11 | 2016-10-26 | 广东七洲科技股份有限公司 | 一种android平台透明加解密系统 |
CN107403103B (zh) * | 2016-05-20 | 2021-01-29 | 阿里巴巴集团控股有限公司 | 文件解密方法和装置 |
CN106127078A (zh) * | 2016-07-11 | 2016-11-16 | 北京鼎源科技有限公司 | 一种Android环境下的密钥保护方法和系统 |
CN106778235B (zh) * | 2016-11-24 | 2020-02-14 | 北京瑞星网安技术股份有限公司 | Linux文件操作控制方法及装置 |
CN107066409A (zh) * | 2017-03-31 | 2017-08-18 | 福建升腾资讯有限公司 | 基于业务系统的通信口重定向和通信数据二次处理的方法 |
CN108733989A (zh) * | 2017-04-19 | 2018-11-02 | 湖南鼎源蓝剑信息科技有限公司 | 一种针对Android应用的通信协议加密方法 |
CN107240408B (zh) * | 2017-05-11 | 2019-05-10 | 中国科学院信息工程研究所 | 针对cd-rom光盘介质的读写管控系统 |
CN107480538A (zh) * | 2017-06-30 | 2017-12-15 | 武汉斗鱼网络科技有限公司 | 文件加密方法、装置、计算机可读存储介质和设备 |
CN107423634B (zh) * | 2017-06-30 | 2018-11-09 | 武汉斗鱼网络科技有限公司 | 文件解密方法、装置、计算机可读存储介质及设备 |
CN107659632B (zh) * | 2017-09-19 | 2021-02-05 | 咪咕数字传媒有限公司 | 一种文件加解密方法、装置及计算机可读存储介质 |
CN108229190B (zh) * | 2018-01-02 | 2021-10-22 | 北京亿赛通科技发展有限责任公司 | 透明加解密的控制方法、装置、程序、存储介质和电子设备 |
CN110389786B (zh) * | 2018-04-20 | 2022-10-14 | 伊姆西Ip控股有限责任公司 | 内核管理方法、电子设备和计算机可读存储介质 |
WO2019210471A1 (zh) * | 2018-05-02 | 2019-11-07 | 无锡盈达聚力科技有限公司 | 一种数据调用方法及数据调用装置 |
CN109002726A (zh) * | 2018-06-06 | 2018-12-14 | 浙江华途信息安全技术股份有限公司 | Linux操作系统的文件读写透明加解密的方法 |
CN109697366A (zh) * | 2018-12-29 | 2019-04-30 | 上海上讯信息技术股份有限公司 | 一种基于钩子的Android文件透明加解密方法 |
CN109886034A (zh) * | 2019-02-27 | 2019-06-14 | 北京智游网安科技有限公司 | 一种apk数据加密处理方法、智能终端及存储介质 |
CN109960917A (zh) * | 2019-03-12 | 2019-07-02 | 深圳市趣创科技有限公司 | 一种文档的保密方法及装置 |
CN110175453B (zh) * | 2019-05-16 | 2021-07-16 | 珠海天燕科技有限公司 | 一种判断作弊操作的方法和装置 |
CN110232261B (zh) * | 2019-06-03 | 2021-05-11 | 浙江大华技术股份有限公司 | 包文件的操作方法、文件处理设备及具有存储功能的设备 |
CN110457870A (zh) * | 2019-08-01 | 2019-11-15 | 浙江大华技术股份有限公司 | 可执行文件的处理方法及装置、嵌入式设备和存储介质 |
CN111428255B (zh) * | 2020-03-29 | 2023-05-09 | 陈灿阳 | 一种基于Mac OS文件的透明加密和解密方法和系统 |
CN111539042B (zh) * | 2020-07-13 | 2020-10-30 | 南京云信达科技有限公司 | 一种基于核心数据文件可信存储的安全操作方法 |
CN113688411A (zh) * | 2021-08-24 | 2021-11-23 | 北京鼎普科技股份有限公司 | 一种基于Netlink技术的国产操作系统文件透明加解密系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009699A (zh) * | 2006-01-25 | 2007-08-01 | 姜斌斌 | 透明本地安全环境系统及其实现方法 |
CN101561851A (zh) * | 2008-04-16 | 2009-10-21 | 杭州正隆数码科技有限公司 | 一种可不区分文件类型的透明文件加密方法 |
CN101901313A (zh) * | 2010-06-10 | 2010-12-01 | 中科方德软件有限公司 | 一种Linux文件保护系统及方法 |
CN102194074A (zh) * | 2011-04-26 | 2011-09-21 | 北京思创银联科技股份有限公司 | 基于进程权限的计算机保护方法 |
CN103218575A (zh) * | 2013-04-17 | 2013-07-24 | 武汉元昊科技有限公司 | 一种主机文件安全监控方法 |
-
2014
- 2014-11-24 CN CN201410680403.5A patent/CN104331644B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009699A (zh) * | 2006-01-25 | 2007-08-01 | 姜斌斌 | 透明本地安全环境系统及其实现方法 |
CN101561851A (zh) * | 2008-04-16 | 2009-10-21 | 杭州正隆数码科技有限公司 | 一种可不区分文件类型的透明文件加密方法 |
CN101901313A (zh) * | 2010-06-10 | 2010-12-01 | 中科方德软件有限公司 | 一种Linux文件保护系统及方法 |
CN102194074A (zh) * | 2011-04-26 | 2011-09-21 | 北京思创银联科技股份有限公司 | 基于进程权限的计算机保护方法 |
CN103218575A (zh) * | 2013-04-17 | 2013-07-24 | 武汉元昊科技有限公司 | 一种主机文件安全监控方法 |
Non-Patent Citations (1)
Title |
---|
高安全级别可信操作系统实现研究;胡俊;《中国博士学位论文全文数据库 信息科技辑》;20081115(第11期);论文第6.4节 * |
Also Published As
Publication number | Publication date |
---|---|
CN104331644A (zh) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104331644B (zh) | 一种智能终端文件的透明加解密方法 | |
US10491379B2 (en) | System, device, and method of secure entry and handling of passwords | |
US10389817B2 (en) | System-on-chip data security appliance and methods of operating the same | |
CN104903905B (zh) | 通过修改计算机应用的目标代码的用于计算机应用的安全服务管理 | |
CN110492990B (zh) | 区块链场景下的私钥管理方法、装置及系统 | |
Miller et al. | iOS Hacker's Handbook | |
US9448949B2 (en) | Mobile data vault | |
US20140282978A1 (en) | Method and apparatus for secure interaction with a computer service provider | |
CN110110548A (zh) | 基于加密芯片的可信执行环境下文件加密存储的相关方法 | |
US10250387B1 (en) | Quantum computer resistant algorithm cryptographic key generation, storage, and transfer device | |
US20170099144A1 (en) | Embedded encryption platform comprising an algorithmically flexible multiple parameter encryption system | |
CN105975867B (zh) | 一种数据处理方法 | |
CN105320891B (zh) | 一种计算机安全加载系统镜像的方法及装置 | |
CN109214161A (zh) | 一种二维码安全标签登录系统 | |
CN108509802A (zh) | 一种应用程序数据防泄密方法和装置 | |
CN107196907A (zh) | 一种安卓so文件的保护方法及装置 | |
US20190163893A1 (en) | Wireless injection of passwords | |
EP2973182B1 (en) | Methods and apparatus for securing user input in a mobile device | |
CN109510702A (zh) | 一种基于计算机特征码的密钥存储及使用的方法 | |
Cooijmans et al. | Secure key storage and secure computation in Android | |
WO2015154469A1 (zh) | 数据库的操作方法及装置 | |
CN103605927A (zh) | 一种基于嵌入式Linux系统实现加密和解密方法 | |
CN106557708A (zh) | 一种安全保护方法和系统 | |
Ali et al. | AI-enabled cybernetic analytics of security models for smart serious games-based mobile operating systems | |
CN111753263A (zh) | 一种基于macOS系统的无感加解密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |