CN104883256B - 一种抵抗物理攻击和系统攻击的密钥保护方法 - Google Patents
一种抵抗物理攻击和系统攻击的密钥保护方法 Download PDFInfo
- Publication number
- CN104883256B CN104883256B CN201410068010.9A CN201410068010A CN104883256B CN 104883256 B CN104883256 B CN 104883256B CN 201410068010 A CN201410068010 A CN 201410068010A CN 104883256 B CN104883256 B CN 104883256B
- Authority
- CN
- China
- Prior art keywords
- core
- key
- private key
- cache memory
- memory
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种抵抗物理攻击和系统攻击的密钥保护方法,通过设置多核处理器的每个核一个对称主密钥,动态地解密出非对称算法的私钥明文,并通过Intel的TSX(Transactional Synchronization Extensions)扩展指令,从硬件层面上保证私钥以及计算过程中使用的中间变量只存在于该核独占的高速缓冲存储器中,可以防止攻击者直接从物理内存中窃取私钥信息,从而保障公钥密码算法在计算机系统环境下实现的安全性;并且,即使操作系统被攻破,攻击者可以直接读取密钥的内存空间,由于Intel的TSX机制保证了内存操作的原子性,攻击者不能获取明文私钥;进一步,在这种解决方案中,多核处理器的其他核也可以同时进行密码运算,提高了运算效率。
Description
技术领域
本发明涉及计算机安全领域,特别涉及一种抵抗物理攻击和系统攻击的密钥保护方法。
背景技术
计算机技术随着信息技术的高速发展,在人类生产和生活中的应用越来越普及,人们已经变的离不开计算机;但同时,计算机系统存储着个人的各种隐私数据,如果得不到有效的保护,用户的隐私安全将面临严重威胁。
个人隐私数据可以通过密码学的方法进行保护,而一个密码系统的强度,除了和所用的密码算法直接相关外,密钥的存储也是尤其重要的。一旦密钥泄露,任何加密信息将不再机密。
密码算法一般分对称密码算法和公钥密码算法两种。对称密码算法的加密方和解密方使用的是同一密钥,通信双方必须事先协商并保管好他们共享的密钥,主要用于会话数据的加解密。公钥密码算法的密钥是成对出现的,包含一个秘密的私钥和一个公开的公钥,私钥由密钥拥有者独享。在签名系统中,用私钥对消息进行加密,得到数字签名;用公钥对数字签名进行解密,以验证数字签名。在加密系统中,用公钥对数据进行加密,得到密文数据;用私钥对密文进行解密,得到明文数据。
和对称密码算法相比,公钥密码算法除了可以提供传统的机密性和完整性保护,还具有可追究性、不可抵赖性,因此在电子交易活动与电子事务处理领用起着至关重要的作用。
为了保证电子交易等网络应用的真实性、保密性、完整性以及可追究性等安全特性,以数字证书为核心的密码技术广泛应用于网络信息系统。数字证书采用了公钥密码算法,将公钥与持有者的真实身份进行绑定,从而实现了网络用户身份信息的标识,为网络安全通信提供了电子认证。
但是,这些安全特性的前提是保证数字证书所对应的私钥信息的机密性。一旦私钥泄露,私钥拥有者的身份将可能被冒充,并且,在SSL(Secure Sockets Layer,安全套接层)、PGP(Pretty Good Privacy)等应用中,历史的加密数据也将被解密。
一般情况下,在计算机系统中,私钥是放在内存中进行存储和运算的,对私钥的保护依赖于操作系统的各种安全机制,包括访问控制、进程隔离、虚拟内存、运行级隔离等。这些机制大大增强了对内存的保护,但是现代操作系统仍然经常出现各种漏洞,利用这些漏洞,内存中的秘密信息就会很容易被间谍软件获取,我们称这一类攻击为系统攻击。
对内存中秘密信息的保护还需要考虑另一方面:冷启动攻击(Cold boot attack)可以完全绕过在系统层,包括操作系统,所施加的保护机制。冷启动攻击是一种物理攻击,利用了动态随机访问内存(DRAM)的剩余特性(remanence effect),即停止供电之后存储内容随时间慢慢消失,整个过程持续好几秒,如果利用制冷剂可以将时间延长到几小时。攻击者需要物理接触运行中或挂起的目标主机,然后用冷却剂冷却目标主机的内存,接着把其插入一台没有内存清除机制的恶意主机中,最后利用恶意引导程序,把完整的内存映像复制到恶意主机的磁盘中,这样,攻击者就可以通过各种密钥恢复算法推测使用的密钥。
可以看出,冷启动攻击代价极小、门槛极低,且具有很强的普遍适用性,对计算机系统的密钥存储安全带来了严重的威胁。为了防止冷启动攻击可以使用如下机制:
1、使用智能卡、USB Key等硬件设备存储密钥和进行运算,这类方案安全性高,但是由于需要特殊的硬件设备,在密钥管理、密钥更新、便携型、成本等方面有诸多不便。
2、使用密码变换算法,比如白盒密码,这类方案中,密钥和算法是捆绑的,通过查找表混淆,即使攻击者拥有全部内存映像,也无法推测出密钥。这类方案的局限性在于目前只支持对称加密,不能支持公钥密码算法,计算效率很低,而且,也难以支持密钥更新。
3、使用无内存的密码实现,即把密钥以及中间的过程变量全部放在CPU的寄存器中。但是,由于寄存器的容量一般较小,只适合于存储短的对称密钥。但是,随着支持高级矢量扩展指令集(AVX)的寄存器,如YMM的CPU,开始广泛部署,利用YMM寄存器的无内存密码实现开始出现,现有技术最多可以支持2048比特的RSA运算;但是这种方案也有很多不足:(1)可扩展性差,仅仅可以完成基本的运算,如果要支持更多安全功能,比如抗侧信道攻击,或者支持运算加速,比如中国剩余定理,将很困难;(2)如果要支持更长的密钥,只能依赖CPU厂商来提供;(3)平台依赖性大,由于直接操作寄存器,高级语言比如C语言将不能支持;(4)需要禁用AVX或者SSE(Streaming SIMD Extension)功能,这将对CPU处理数据密集型程序和图形处理程序的性能产生非常大的影响,因为这些程序需要这些寄存器进行运算加速。
无内存密码实现的另一分支是利用CPU的片上高速缓冲存储器(cache)做密钥存储和中间过程变量存储。在计算机存储系统的层次结构中,高速缓冲存储器是介于CPU和主存储器之间的高速小容量存储器。CPU核以及它们独占的cache可以构成一个相对独立的环境。比起CPU寄存器,cache的存储容量要大得多,足够存放公钥密码算法的密钥,并且可以提供各种安全增强和运算加速的算法。已有文献用此方法可以实现4096位的支持CRT的RSA运算,但是在该方案中,同时可以进行密码运算的核的数量受到cache层次结构的影响,由于现代CPU架构都有一个共享的L3高速缓冲寄存器,该方案同时只能支持一个核进行密码运算,并需要设置附加的软件保护机制,如通过软件将其他核设置为no-fill模式。然而,针对现有的此种设置,若操作系统存在漏洞,恶意进程仍可以通过漏洞导致保护机制失效,使恶意进程可以随便读取密钥,从而受到系统攻击;并且,由于现有技术的此种方式需要将其他核设置为no-fill模式,因此,只有一个核可以进行密码运算,效率较低。
系统攻击和物理攻击对计算机系统的密钥安全带来严重的威胁。系统攻击从操作系统层面,利用系统的软件漏洞,可以直接通过内存访问指令获取密钥。物理攻击则可以在对目标计算机有物理接触的情况下,获取整个内存的映像。对这两种攻击的防范,现有机制都有各种不足。
发明内容
针对现有技术中的问题,本发明提供了一种抵抗物理攻击和系统攻击的密钥保护方法,可以同时抵抗针对内存的系统攻击和物理攻击,以保障公钥密码算法在计算机系统环境下实现安全性,并提高处理器的工作效率。
为实现上述目的,本发明提供了一种抵抗物理攻击和系统攻击的密钥保护方法,包括:
步骤A:设置多核处理器的每个核使其包含对称主密钥;
步骤B:利用其中任意一个核作为运算核执行公钥密码运算,且私钥明文以及运算过程中使用的中间数据变量存储于运算核独占的高速缓冲存储器中;
步骤C:清空所述运算核独占的高速缓冲存储器中的私钥明文以及运算过程中使用的中间数据变量;
其中,当执行步骤B和步骤C时,多核处理器动态记录所述步骤B和步骤C执行过程中的所有内存访问;
当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
进一步,通过事务内存(Transactional Memory)机制将步骤B和步骤C对应的代码指定为事务区实现多核处理器动态记录所述步骤B和步骤C执行过程中的所有内存访问,以及当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
进一步,通过Intel TSX(Transactional Synchronization Extensions)将步骤B和步骤C对应的代码指定为事务区实现多核处理器动态记录所述步骤B和步骤C执行过程中的所有内存访问,以及当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
进一步,通过Intel TSX的RTM(Restricted Transactional Memory)机制实现当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
进一步,通过RTM机制中的xbegin指令进入所述事务区,并指定步骤B的开始为发生所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时的回退入口;当执行完步骤C后,通过xend指令退出所述事务区。
进一步,所述步骤A中设置多核处理器的每个核使其包含对称主密钥的步骤包括:
操作系统启动时弹出提示界面,用户输入口令;
操作系统通过密钥生成算法把口令转化为对称主密钥;
对称主密钥被复制到多核处理器中指定的寄存器中存储。
进一步,所述多核处理器的用于存储对称主密钥的指定的寄存器包括debug寄存器和性能监控计数器(PMC,Performance Monitor Counter)。
进一步,所述公钥密码运算包括私钥明文获取运算和私钥计算操作运算;
所述私钥明文获取运算包括运算核从硬盘中读取以对称主密钥加密的私钥,并复制到内存;运算核利用多核处理器中指定的寄存器中的对称主密钥解密以对称主密钥加密的私钥获得私钥明文,并将私钥明文存储于运算核独占的高速缓冲存储器;
所述私钥计算操作运算包括数字签名和/或解密步骤,其中,利用私钥明文进行数字签名和/或解密运算,并将计算过程中产生的中间数据变量和计算结果存储于运行核独占的高速缓冲存储器。
进一步,在执行步骤B之前,还包括禁止操作系统进程调度,并屏蔽本地中断的步骤;在执行步骤C中清空所述运算核独占的高速缓冲存储器中的数据后,还包括恢复操作系统进程调度和本地中断的步骤。
进一步,通过清除多核处理器的EFLAGS寄存器的IF位实现禁止操作系统进程调度,并屏蔽本地中断;通过设置多核处理器的EFLAGS寄存器的IF位实现恢复操作系统进程调度和本地中断。
进一步,所述私钥明文获取运算通过调用AES-NI指令,使用SSE寄存器解密以对称主密钥加密的私钥,并把私钥明文复制到高速缓冲存储器中。
进一步,清空所述运算核独占的高速缓冲存储器中的私钥明文以及运算过程中使用的中间数据变量时,还包括清除SSE寄存器和通用寄存器中数据的步骤。
进一步,在执行步骤B之前,还包括为所述多核处理器中的每个核预留步骤B和步骤C所访问内存区域的步骤。
采用本发明提供的抵抗物理攻击和系统攻击的密钥保护方法,通过设置多核处理器的每个核一个对称主密钥,动态的解密出非对称算法的私钥明文,并通过Intel的TSX扩展指令,从硬件层面上保证私钥以及计算过程中使用的中间变量只存在于该核独占的高速缓冲存储器中,可以防止攻击者直接从物理内存中窃取私钥信息,从而保障公钥密码算法在计算机系统环境下实现的安全性;并且,即使操作系统被攻破,攻击者可以直接读取密钥的内存空间,由于Intel的TSX机制保证了内存提交的原子性,攻击者永远不能获取私钥明文;进一步,在这种解决方案中,多核处理器的其他核也可以进行密码运算,提高了运算效率。
附图说明
图1为本发明抵抗物理攻击和系统攻击的密钥保护方法的流程示意图;
图2为本发明中设置事务区及内存访问冲突时动作的流程示意图;
图3-图6为本发明典型实施例的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明是基于以下考虑实现的:
对内存存在各种系统层面的攻击,目前的操作系统对敏感内存有一定的保护,但是,一旦攻击者利用一些漏洞,可以直接访问敏感的内存区域,敏感数据就泄露。本发明通过硬件机制,动态监控敏感数据区,使得任何对其直接的访问都只能获取写入敏感数据前的非敏感密文版本,大大提高了对内存系统攻击的难度。
而冷启动作为一种物理攻击,针对的是物理的内存模块,而片上的高速缓冲存储器通常在中央处理器(CPU)中集成,因此,现有技术中已提出的利用CPU的片上高速缓冲存储器存储密钥和中间过程变量的密钥保护过程是十分有效的。但是,为了实现上述过程,就需要设置附加的软件保护机制,而当操作系统存在漏洞,恶意进程可通过漏洞导致保护机制失效;并且,由于现有技术的方案同时只能支持一个核进行密码运算,且由于附加的保护机制,对于多核处理器而言,其他核不能同时进行其他的密码运算,进而影响了整体CPU的处理速度,本发明的另一个目的即在于在实现利用CPU的片上高速缓冲存储器存储密钥和中间过程变量的方式实现防止冷启动攻击,并且避免CPU处理速度的降低。
为了提高CPU的效率就需要采用任务并行的方式,而采用任务并行时必须考虑线程间同步的问题。Transactional Memory(事务内存)正是现行技术中为了解决线程间同步而提出的技术,其允许一个线程独立完成对共享内存的修改,完全忽略可能会有其它的线程存在,但是线程在日志中记录对共享内容的每一个读写动作。其他的并发控制一般是在进行写操作时来保证与其他事务的一致性(不能修改已经被别的事务修改过的共享数据),在完成一个事务之后,再验证其它线程有没有并发的对共享内存进行修改,从而保证事务是完整的。
Transactional Memory技术的代表之一为Intel TSX(TransactionalSynchronization Extensions,事务性同步扩展指令集),在Intel的第四代酷睿Haswell架构中首次引入,实现了硬件的事务内存(Transactional Memory)。其编程接口可以用来提高多线程应用程序对现代CPU多核的利用率。
在传统的多线程编程中,对于潜在的数据共享,一般是通过锁机制实现的,结果不管两个线程是否会真的同时操作同一个数据变量,这些操作都被串行起来。细粒度的锁对性能影响小,但是容易出错,编程困难;粗粒度的锁则容易实现,但是无法充分利用多线程的优势,导致效率下降。
Intel TSX技术的核是事务内存,程序通过指定一段代码段作为事务区(transactional region),可以记录该段代码所有的内存访问,如果发现内存访问冲突,就会发生abortion:放弃之前的所有操作,把CPU的状态恢复到进入事务区之前的状态,然后,对于Restricted Transactional Memory(RTM)而言,就会直接转跳到指定的代码区,或者对于Hardware Lock Elision(HLE)而言,就会真正加锁后重新执行。如果没有发现内存访问冲突,则原子地提交所有对内存和寄存器的更新。这样,在更新完成之前,其他核对该段内存的访问只能访问其旧的数据,并且会使更新失败,造成abortion。访问冲突是指外部线程读取了一个之前在事务区中写过的内存地址,或者外部线程写了一个之前在事务区读或写过的内存地址。
事务内存的实现基础是CPU的cache一致性协议。在事务区的所有内存访问将只在运算核的cache中发生,如果其他核访问了在事务区记录的内存地址,或者运算核cache由于空间不够而必须把cache中的数据同步到内存,就会被cache一致性协议发现,并根据策略产生abortion。
本发明正是利用上述Intel TSX技术的事务区,实现高速缓冲存储器中存储的敏感数据如私钥明文不被同步到内存,并且由于TSX保证内存提交的原子性,可以防止系统层的恶意软件攻击。
具体的,本发明提供了一种抵抗物理攻击和系统攻击的密钥保护方法,如图1和图2所示,包括:
步骤A:设置多核处理器的每个核使其包含对称主密钥;
步骤B:利用其中任意一个核作为运算核执行公钥密码运算,且私钥明文以及运算过程中使用的中间数据变量存储于运算核独占的高速缓冲存储器中;
步骤C:清空所述运算核独占的高速缓冲存储器中的私钥明文以及运算过程中使用的中间数据变量;
当执行步骤B和步骤C时,多核处理器动态记录所述步骤B和步骤C执行过程中的所有内存访问;
当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C,直至步骤B和步骤C执行完成,退出事务区提交内存。
为了更好的对本发明进行阐述,下面以在Intel Haswell处理器进行RSA公钥密码运算为例。在本实施例中,处理器为拥有4核的intel i7 4770S,使用的RSA算法可通过中国剩余定理加速、蒙哥马利模乘加速以及滑动窗口实现;其中,使用的滑动窗口大小为32,RSA计算中用到的最大内存为4708字节;
首先,执行步骤A,设置多核处理器的每个核使其包含对称主密钥,具体包括:
如图3所示,步骤A1:操作系统启动时弹出提示界面,用户输入口令;操作系统通过密钥生成算法把口令转化为对称主密钥;
步骤A2:对称主密钥被复制到多核处理器中指定的寄存器中存储,以便用于公钥密码运算,其中可以选择debug寄存器或性能监控计数器(PMC,Performance MonitorCounter)。
然后,执行步骤B:利用其中任意一个核作为运算核执行公钥密码运算,且私钥明文以及运算过程中使用的中间数据变量存储于运算核独占的高速缓冲存储器中;其中,公钥密码运算包括私钥明文获取运算和私钥计算操作运算;
私钥明文获取运算时,参照图3,步骤B1:运算核从硬盘中读取以对称主密钥加密的私钥,并复制到内存;运算核利用多核处理器中指定的寄存器中的对称主密钥解密以对称主密钥加密的私钥获得私钥明文,并将私钥明文存储于运算核独占的高速缓冲存储器。在实现上述过程时,在本实施例中,如图4所示,步骤B2:可将debug寄存器或性能监控计数器PMC中的对称主密钥写入高速缓冲存储器中,通过调用AES-NI指令,使用SSE寄存器解密以对称主密钥加密的私钥,并把私钥明文复制到高速缓冲存储器中;
私钥计算操作运算时,如图5所示,步骤1:运算核利用私钥明文进行数字签名和/或解密运算;步骤2:将计算过程中产生的中间数据变量存储于运算核独占的高速缓冲存储器;步骤3:将计算结果存储于运行核独占的高速缓冲存储器;
最后执行步骤C:参照图6,清空所述运算核独占的高速缓冲存储器中的私钥明文以及运算过程中使用的中间数据变量,只留下运算结果;
其中,当执行步骤B和步骤C时,多核处理器动态记录所述步骤B和步骤C执行过程中的所有内存访问;
当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
其中,可通过Transactional Memory机制,如通过Intel TSX机制实现将步骤B和步骤C对应的代码指定为事务区,当进入该事务区后,多核处理器动态记录事务区内代码的所有内存访问;换而言之,即记录执行步骤B和步骤C时的所有内存访问;具体地,可以利用Intel TSX机制的RTM实现当多核处理器其他核线程与多核处理器动态记录的所有内存访问发生内存访问冲突时,或者,当运算核独占的高速缓冲存储器空间不够,而将数据同步到内存时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
由此可见,由于当发生内存访问冲突或高速缓冲存储器空间不够时,运算核放弃操作后跳转到指定的代码区,因此可使密码运算过程中一切内存写操作都只发生在高速缓冲存储器中,由此可防止存储在高速缓冲存储器中的数据被同步到内存,从而从根源上防止了冷启动攻击;而且其他核读取密钥时,将导致重新执行,而不能获取密钥信息。在本申请中,没有通过限制多核处理器其他核的进程使用高速缓存,并且可以支持多核处理器的每个核均可以进行不同的密码运算,从而提高了多核处理器的工作效率。
进一步,为了尽可能增加公钥密码运算的成功率,在执行步骤B之前,即进入事务区之前,在本实施例中还可包括禁止操作系统进程调度,并屏蔽本地中断的步骤;在清空所述运算核独占的高速缓冲存储器中的数据后,即退出事务区之后,还包括恢复操作系统进程调度和本地中断的步骤。其中,可通过清除多核处理器的EFLAGS寄存器的IF位实现禁止操作系统进程调度,并屏蔽本地中断;以及,通过设置多核处理器的EFLAGS寄存器的IF位实现恢复操作系统进程调度和本地中断。
由于在设定事务区及后续的处理都利用了Intel TSX技术,事务区中的代码(即私钥明文获取运算和私钥计算操作运算对应的代码)所有的内存访问均被记录,如果发现其他非运算核的内存访问与事务区记录的内存访问发生冲突,就会发生abortion:运算核放弃前面的操作,把运算核的状态恢复到进入事务区之前的状态,然后直接转跳到指定的代码区(在使用RTM情况下),由此使得进入这个事务区后,即开始执行步骤B和C时,运算核一切内存写操作都将发生在运算核的高速缓冲存储器中,从而实现了整个密钥保护过程中使用的私钥明文以及运算时生成的中间变量均不会从运算核独占的高速缓冲存储器同步到内存中去,且利用Intel TSX的机制,使得非运算核的进程的运行速度不被影响。
进一步,由于运算核在进行运算过程中会使用SSE寄存器和通用寄存器,因此,清空运算核独占的高速缓冲存储器中的私钥明文以及运算过程中使用的中间数据变量时,还包括清除SSE寄存器和通用寄存器中数据的步骤。在本实施例中,可通过memset函数清空运算核独占的高速缓冲存储器中的数据,通过XOR指令清除SSE寄存器和通用寄存器。
进一步,为了避免非运算核的进程频繁地访问事务区所访问的内存,导致上述事务区代码频繁地发生abortion,因此,在本实施例中优选地,执行步骤B之前,即在进入事务区之前,该方法还包括为多核处理器中的每个核预留步骤B和步骤C所访问内存区域的步骤,通过该设定使得多核处理器的每个核均在固定的内存区域内进行访问,从而防止其他核的内存访问与运算核事务区所访问的内存发成冲突,使私钥明文获取运算和私钥计算操作运算得以顺利执行。
综上所述,采用本发明提供的密钥保护方法,通过设置多核处理器的每个核的寄存器一个对称主密钥,动态解密出明文的非对称私钥,并通过Intel的TSX扩展指令,硬件上保证私钥以及计算过程中使用的中间变量只存在于该核独占的高速缓冲存储器中,可以防止攻击者直接从物理内存中窃取私钥信息或者通过恶意软件读取私钥信息,从而保障公钥密码算法在计算机系统环境下实现的安全性,并且利用Intel TSX的机制,使得多核处理器的其他核也可以进行密码运算,提高了运算效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (13)
1.一种抵抗物理攻击和系统攻击的密钥保护方法,其特征在于,包括:
步骤A:设置多核处理器的每个核使其包含对称主密钥;
步骤B:利用其中任意一个核作为运算核执行公钥密码运算,且私钥明文以及运算过程中使用的中间数据变量存储于运算核独占的高速缓冲存储器中,其中具体包括有私钥明文获取运算:运算核读取以对称主密钥加密的私钥,并复制到内存;运算核利用对称主密钥解密以对称密钥加密的私钥获得私钥明文,并将私钥明文存储于运算核独占的高速缓冲存储器中;
步骤C:清空所述运算核独占的高速缓冲存储器中的私钥明文以及运算过程中使用的中间数据变量;
其中,当执行步骤B和步骤C时,多核处理器动态记录所述步骤B和步骤C执行过程中的所有内存访问;
当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者当运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
2.根据权利要求1所述的方法,其特征在于,通过事务内存机制将步骤B和步骤C对应的代码指定为事务区从而实现多核处理器动态记录所述步骤B和步骤C执行过程中的所有内存访问,以及当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
3.根据权利要求2所述的方法,其特征在于,通过Intel TSX将步骤B和步骤C对应的代码指定为事务区从而实现多核处理器动态记录所述步骤B和步骤C执行过程中的所有内存访问,以及当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
4.根据权利要求3所述的方法,其特征在于,通过Intel TSX的RTM机制实现当所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时,运算核放弃已执行的步骤B和步骤C的所有操作,重新执行步骤B和步骤C。
5.根据权利要求4所述的方法,其特征在于,通过RTM机制中的xbegin指令进入所述事务区,并指定步骤B的开始为发生所述多核处理器其他核线程试图和运算核同时访问同一内存地址,且至少有一个写操作时,或者运算核独占的高速缓冲存储器空间不够,发生高速缓冲存储器替换时的回退入口;当执行完步骤C后,通过xend指令退出所述事务区。
6.根据权利要求1所述的方法,其特征在于,所述步骤A中设置多核处理器的每个核使其包含对称主密钥的步骤包括:
操作系统启动时弹出提示界面,用户输入口令;
操作系统通过密钥生成算法把口令转化为对称主密钥;
对称主密钥被复制到多核处理器中指定的寄存器中存储。
7.根据权利要求6所述的方法,其特征在于,所述多核处理器的用于存储对称主密钥的指定的寄存器包括debug寄存器或性能监控计数器。
8.根据权利要求6所述的方法,其特征在于,所述公钥密码运算具体包括私钥明文获取运算和私钥计算操作运算;
所述私钥明文获取运算包括运算核从硬盘中读取以对称主密钥加密的私钥,并复制到内存;运算核利用多核处理器中指定的寄存器中的对称主密钥解密以对称主密钥加密的私钥获得私钥明文,并将私钥明文存储于运算核独占的高速缓冲存储器;
所述私钥计算操作运算包括数字签名和/或解密步骤,其中,利用私钥明文进行数字签名和/或解密运算,并将计算过程中产生的中间数据变量和计算结果存储于运行核独占的高速缓冲存储器。
9.根据权利要求1所述的方法,其特征在于,在执行步骤B之前,还包括禁止操作系统进程调度,并屏蔽本地中断的步骤;在执行步骤C中清空所述运算核独占的高速缓冲存储器中的数据后,还包括恢复操作系统进程调度和本地中断的步骤。
10.根据权利要求9所述的方法,其特征在于,通过清除多核处理器的EFLAGS寄存器的IF位实现禁止操作系统进程调度,并屏蔽本地中断;通过设置多核处理器的EFLAGS寄存器的IF位实现恢复操作系统进程调度和本地中断。
11.根据权利要求8所述的方法,其特征在于,所述私钥明文获取运算通过调用AES-NI指令,使用SSE寄存器解密以对称主密钥加密的私钥,并把私钥明文复制到高速缓冲存储器中。
12.根据权利要求11所述的方法,其特征在于,清空所述运算核独占的高速缓冲存储器中的私钥明文以及运算过程中使用的中间数据变量时,还包括清除SSE寄存器和通用寄存器中数据的步骤。
13.根据权利要求1至12任一项所述的方法,其特征在于,在执行步骤B之前,还包括为所述多核处理器中的每个核预留步骤B和步骤C所访问内存区域的步骤。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410068010.9A CN104883256B (zh) | 2014-02-27 | 2014-02-27 | 一种抵抗物理攻击和系统攻击的密钥保护方法 |
EP14884251.1A EP3113406B1 (en) | 2014-02-27 | 2014-08-27 | Key protecting method and apparatus |
PCT/CN2014/085236 WO2015127772A1 (zh) | 2014-02-27 | 2014-08-27 | 密钥保护方法和装置 |
US14/909,849 US10313111B2 (en) | 2014-02-27 | 2014-08-27 | Key protecting method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410068010.9A CN104883256B (zh) | 2014-02-27 | 2014-02-27 | 一种抵抗物理攻击和系统攻击的密钥保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104883256A CN104883256A (zh) | 2015-09-02 |
CN104883256B true CN104883256B (zh) | 2019-02-01 |
Family
ID=53950596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410068010.9A Active CN104883256B (zh) | 2014-02-27 | 2014-02-27 | 一种抵抗物理攻击和系统攻击的密钥保护方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10313111B2 (zh) |
EP (1) | EP3113406B1 (zh) |
CN (1) | CN104883256B (zh) |
WO (1) | WO2015127772A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7949130B2 (en) * | 2006-12-28 | 2011-05-24 | Intel Corporation | Architecture and instruction set for implementing advanced encryption standard (AES) |
US10127399B1 (en) * | 2015-12-29 | 2018-11-13 | EMC IP Holding Company LLC | Secrets as a service |
CN106130719A (zh) * | 2016-07-21 | 2016-11-16 | 中国科学院信息工程研究所 | 一种抵抗内存泄漏攻击的密码算法多核实现方法及装置 |
CN106411893B (zh) * | 2016-09-30 | 2019-08-13 | 成都知道创宇信息技术有限公司 | 一种https服务的部署方法 |
CN108242994B (zh) | 2016-12-26 | 2021-08-13 | 阿里巴巴集团控股有限公司 | 密钥的处理方法和装置 |
CN107911567B (zh) * | 2017-11-10 | 2019-05-21 | 西安电子科技大学 | 一种抵抗打印机物理攻击的系统和方法 |
CN109522736B (zh) * | 2018-12-13 | 2021-12-10 | 中国科学院信息工程研究所 | 一种在操作系统中进行密码运算的方法和系统 |
US11398899B2 (en) | 2019-05-28 | 2022-07-26 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Data processing device and data processing method |
CN110138557A (zh) * | 2019-05-28 | 2019-08-16 | 上海兆芯集成电路有限公司 | 数据处理装置及数据处理方法 |
KR20210041932A (ko) * | 2019-10-08 | 2021-04-16 | 한화테크윈 주식회사 | 보안 부팅 장치 및 그 동작 방법 |
US11709928B2 (en) * | 2020-05-22 | 2023-07-25 | Jpmorgan Chase Bank, N.A. | Method and system for securing access to a private key |
CN111934860B (zh) * | 2020-08-06 | 2024-01-05 | 山东省计算中心(国家超级计算济南中心) | 一种用于移动端密钥存储的实现方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544054A (zh) * | 2007-12-30 | 2014-01-29 | 英特尔公司 | 用于在事务性存储器系统中实现强原子性的方法、装置和系统 |
CN103607279A (zh) * | 2013-11-14 | 2014-02-26 | 中国科学院数据与通信保护研究教育中心 | 基于多核处理器的密钥保护方法及系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4263976B2 (ja) * | 2003-09-24 | 2009-05-13 | 株式会社東芝 | オンチップマルチコア型耐タンパプロセッサ |
JP4447977B2 (ja) * | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
KR100725390B1 (ko) | 2005-01-06 | 2007-06-07 | 삼성전자주식회사 | 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법 |
US8538015B2 (en) * | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
US20120331308A1 (en) * | 2011-06-22 | 2012-12-27 | Media Patents, S.L. | Methods, apparatus and systems to improve security in computer systems |
CN102355350B (zh) | 2011-06-30 | 2015-09-02 | 北京邮电大学 | 一种用于移动智能终端的文件加密方法和系统 |
WO2014004222A1 (en) | 2012-06-29 | 2014-01-03 | Intel Corporation | Instruction and logic to test transactional execution status |
US8943278B2 (en) * | 2012-07-31 | 2015-01-27 | Advanced Micro Devices, Inc. | Protecting large regions without operating-system support |
WO2014138626A1 (en) * | 2013-03-08 | 2014-09-12 | Robert Bosch Gmbh | Systems and methods for maintaining integrity and secrecy in untrusted computing platforms |
US9292444B2 (en) * | 2013-09-26 | 2016-03-22 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
US9348523B2 (en) * | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Code optimization to enable and disable coalescing of memory transactions |
-
2014
- 2014-02-27 CN CN201410068010.9A patent/CN104883256B/zh active Active
- 2014-08-27 WO PCT/CN2014/085236 patent/WO2015127772A1/zh active Application Filing
- 2014-08-27 US US14/909,849 patent/US10313111B2/en active Active
- 2014-08-27 EP EP14884251.1A patent/EP3113406B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544054A (zh) * | 2007-12-30 | 2014-01-29 | 英特尔公司 | 用于在事务性存储器系统中实现强原子性的方法、装置和系统 |
CN103607279A (zh) * | 2013-11-14 | 2014-02-26 | 中国科学院数据与通信保护研究教育中心 | 基于多核处理器的密钥保护方法及系统 |
Non-Patent Citations (1)
Title |
---|
Armored:CPU-bound encryption for android-driven ARM device;Gotafried.J;<<ARES,2013年第8次国际会议》;20130906;全文 |
Also Published As
Publication number | Publication date |
---|---|
EP3113406A1 (en) | 2017-01-04 |
WO2015127772A1 (zh) | 2015-09-03 |
EP3113406B1 (en) | 2020-04-29 |
CN104883256A (zh) | 2015-09-02 |
EP3113406A4 (en) | 2017-11-01 |
US10313111B2 (en) | 2019-06-04 |
US20160359621A1 (en) | 2016-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104883256B (zh) | 一种抵抗物理攻击和系统攻击的密钥保护方法 | |
US9898624B2 (en) | Multi-core processor based key protection method and system | |
AU2012204448B2 (en) | System and method for in-place encryption | |
US9575906B2 (en) | Method and system for process working set isolation | |
CN107408192B (zh) | 保护存储器 | |
US20150294123A1 (en) | System and method for sharing data securely | |
EP3274848B1 (en) | Providing enhanced replay protection for a memory | |
CN102884535B (zh) | 受保护装置管理 | |
TWI245182B (en) | Method, chipset, system and recording medium for responding to a sleep attack | |
US8375440B2 (en) | Secure bait and switch resume | |
EP2062191B1 (en) | System and method for securely restoring a program context from a shared memory | |
US9756048B2 (en) | System and methods for executing encrypted managed programs | |
CN109858265A (zh) | 一种加密方法、装置及相关设备 | |
CN112148642A (zh) | 针对核中的所有权访问的存储器写入 | |
TW201535145A (zh) | 使用保護讀取儲存器安全地儲存韌體數據之系統及方法 | |
AU2012204448A1 (en) | System and method for in-place encryption | |
US20160188874A1 (en) | System and method for secure code entry point control | |
CN105678173B (zh) | 基于硬件事务内存的vTPM安全保护方法 | |
US20160026824A1 (en) | Security against memory replay attacks in computing systems | |
Zhang et al. | SoftME: A Software‐Based Memory Protection Approach for TEE System to Resist Physical Attacks | |
CN113569248A (zh) | 数据处理的方法以及计算设备 | |
Bazm et al. | Side channels in the cloud: Isolation challenges, attacks, and countermeasures | |
Jinhui et al. | F-SGX: Next Generation SGX for Trusted Computing | |
Yun | Supporting Multiple Tradeoffs in Interactive Systems: Speed, Efficiency, and Security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |