自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 经典面试题之new和malloc的区别

new和malloc的区别是C/C++一道经典的面试题,我也遇到过几次,回答的都不是很好,今天特意整理了一下。0.       属性new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。1.       参数使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。

2017-07-29 21:29:19 120910 25

原创 Cache相关操作

工作中遇到多个master直接的数据传递,牵扯到cache的操作,这里做一个总结。有什么问题,欢迎评论区指点和交流。这里主要关注的是ACPU的cache,以ACPU和CE(Crypto Engine)直接的数据传递为例。下面分别描述正确的cache操作,以及错误的操作如何导致出错。1.ACPU和CE之间的通信1.1.ACPU 向 CE传递加密数据ACPU prepares the data to a DDR memory ACPU do the cache operation of ...

2022-03-08 21:54:26 612

原创 HMAC的数学定义

Definition of HMAC The definition of HMAC requires a cryptographic hash function, which we denote by H, and a secret key K. We assume H to be a cryptographic hash function where data is hashed by iterating a basic compression function on bloc.

2021-08-16 19:57:51 205

原创 OP-TEE是如何使用RPMB来实现可信存储的

1.目的写这篇博客主要是为了记录这段时间的成果,方便自己和有需要的人理解可信存储,以及OP-TEE是如何实现可信存储的。最近在重构公司的可信存储的实现,主要是想将Trust Storage的主要逻辑实现从user space挪到kernel space。这样做的好处有三点,一是一次syscall即可以用完成一次操作,而不是一次操作需要多个syscall来完成;二是在做release时,只需要release TEE binary,而不是TEE binary和libteei.a同时release,三是新

2021-03-11 21:16:17 1842

原创 RPMB Basic Operation Function

RPMB Basic Operation Function一、 tee_rpmb_read()如下图是RPMB read operation基本操作的OP-TEE具体实现。1. tee_rpmb_alloc() /* 为rpmb req和resp frame申请 buf */2. crypto_rng_read() /* 调用crypto cell生成随机数作为req frame的随机nonce*/3. tee_rpmb_req_pack()/* 打包req frame*/a. ..

2021-03-11 21:10:38 696

原创 非root用户如何安装GCC

因工作需要,需要安装libFuzzer库,对项目做Fuzz testing。libFuzzer作为clang(llvm)的一部分,其编译需要gcc-4.8.0以上版本的支持,因此需要在编译服务器上安装4.8.0以上版本的gcc。由于没有编译服务器的root权限,因此需要将gcc安装在用户目录下。gcc依赖三个包,分别是是mpc、gmp、mpfr,下载地址依次为:ftp://ftp.gnu.o...

2019-10-09 10:38:09 2897

原创 英特尔固件引导绕过攻击(New Intel firmware boot verification bypass enables low-level backdoors)

安全研究人员发现一种新的绕过intel安全启动的攻击方法,并且在Hack in the Box会议上演示了这种攻击方法。本篇文章就来分析一下这个攻击的原理,以及可能带来的影响,和影响消除的方法。一、攻击原理Intel从第四代酷睿处理器中引入了新的被称为Boot Guard的安全技术,此技术的引入目的是在系统启动的每个阶段都会去验证后续需要启动的代码的完整性,以防止非法的恶意修改软件执...

2019-05-13 18:23:54 1307

原创 ramfs, rootfs and initramfs

What is ramfs?--------------Ramfs is a very simple filesystem that exports Linux's disk cachingmechanisms (the page cache and dentry cache) as a dynamically resizableRAM-based filesystem.Norma...

2019-03-22 10:26:19 263

原创 RSA签名和验签

由于RSA算法相对于对称加密算来说效率较低,通常RSA算法用来加密小数据,如对称加密使用的key等。实际上应用更为广泛的是RSA算法用在签名操作上。通常使用私钥对一段消息的hash值进行签名操作,达到消息的防篡改和伪造。这里就来介绍一下RSA算法是如何应用到签名领域的。一、RSA签名RSA算法的签名和验签操作本质上来讲也是大数的模幂运算,RSA算法的安全性很大程度上取决于填充方式,因此在一...

2019-03-06 17:10:31 17608 1

原创 RSA加密和解密

如前面《RSA算法原理》里描述,RSA算法的加解密操作本质上来讲就是大数的模幂运算,RSA算法的安全性很大程度上取决于填充方式,因此在一个安全的RSA加密操作需要选择一个合适的填充模式,最常见的加密填充模式有RSA_PKCS_V15和RSA_PKCS_V21(OAEP),下面还是以mbedtls里的RSA加密源码为例做进一步分析。一、RSA加密/* * Add the message ...

2019-03-05 17:45:22 5223

原创 RSA密钥生成

本博客以mbedtls crypto库为参考介绍RSA密钥对的生成过程。主要可以分为两部分,第一部分是寻找质数和,第二部分是根据和计算公钥和私钥,如下所示生成RSA密钥对的函数。/* * Generate an RSA keypair * * This generation method follows the RSA key pair generation procedure of...

2019-02-27 12:15:35 5518

原创 RSA算法原理

一、RSA秘钥生成原理随意选择两个大的素数和,并且保证,计算 根据欧拉函数,。 选择一个小于的整数,使与互质。并求得关于的模逆元,命名为(求令)。(模逆元存在,当且仅当与r互质)。 将和的记录销毁,作为公钥,作为私钥。二、RSA加密原理对于待加密的消息,将其以特定的格式编码得到。 使用公钥计算密文。三、RSA解密原理使用私钥计算明文。 将解码码还原成消息。解码的原理是。...

2019-02-21 15:57:03 1979

原创 RSA算法背景

RSA加密算法是一种非对称加密算法,是1977年由麻省理工学院的(Ron Rivest)、(Adi Shamir)和(Leonard Adleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的。实际上,1973年,在英国政府通讯总部工作的数学家克利福德·柯克斯(Clifford Cocks)在一个内部文件中提出了一个相同的算法,但他的发现被列入机密,一直到1997年才被发表。...

2019-02-20 16:35:34 2875

原创 RSA算法

受限于个人精力有限,一直没有时间总结RSA相关的知识,最近相对不那么忙了,打算花上一些时间写一下RSA算法相关的博客。打算讲博客分为以下部分,来系统的讲解以下RSA算法的知识,《RSA算法背景》、《RSA算法原理》、《RSA算法秘钥生成》、《RSA算法加密和解密》、《RSA算法签名和验签》、《RSA算法优化和漏洞》、《RSA算法漏洞和加固》。...

2019-02-20 15:54:01 729

原创 如何将openssl生成key格式转换成ssh-keygen格式

工作的原因,需要生成公钥指数e=3的RSA2048密钥对,以提高验证签名的效率。而ssh-keygen又不支持产生公钥指数e=3的密钥对,因此使用opensll genrsa工具产生密钥对。实际的工作中发现,openssl生成RSA私钥和ssh-keygen的私钥又相同的格式,但是公钥格式却不相同,因此查阅了相关资料,解决了这个问题,这里当做一个学习笔记记录下来。1、使用openssl...

2019-01-14 23:35:01 4389

转载 QSEE(TEE)如何使用RPMB

作者:刺客链接:https://www.zhihu.com/question/52750966/answer/268322774来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。QSEE不会自动对你的数据进行加密的,除非使用SFS。存储在RPMB的数据是有权限写入的,不是任何人都可以写,写之前需要鉴权。如果需要防止数据泄露,那就需要在写RPMB之

2018-01-23 20:09:37 6549

原创 Linux内核地址空间分布

在32位系统里,Linux内核地址空间是指0xC0000000开始到0xFFFFFFFF总量为1G的高端内存地址空间,而用户空间是0x00000000至0xBFFFFFFF的3G虚拟存储空间。操作系统和驱动程序运行在内核空间,应用程序运行在用户空间。内核地址映射有下几种模式1、直接映射区:内核将内核空间前896M和物理空间的前896M进行直接映射。即对于内核空间前896M内存有:V

2017-09-04 11:23:15 3285

原创 C++面试题之哪些函数不能声明为虚函数

C++哪些函数不能声明为虚函数 什么样的函数不能声明为虚函数?1)不能被继承的函数。2)不能被重写的函数。1)普通函数普通函数不属于成员函数,是不能被继承的。普通函数只能被重载,不能被重写,因此声明为虚函数没有意义。因为编译器会在编译时绑定函数。而多态体现在运行时绑定。通常通过基类指针指向子类对象实现多态。2)友元函数友元函数不属于类的成员函数,不能被继承。对于没有继承

2017-08-20 10:56:09 8799 1

转载 如何用C++实现一个LRU Cache

什么是LRU CacheLRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。 广义上的Cache指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。除了CPU与主存之间

2017-08-09 19:29:49 308

原创 DES原理分析

DES原理分析 数据加密标准(英语:DataEncryption Standard,缩写为 DES)是一对称密钥分组密码算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。目前DES现在已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。1999年1月,distributed.net与电子前哨基金会合作,在22小时15分钟内即公开

2017-08-08 21:28:39 1486

原创 SYN-cookie 和地址状态监控

1.SYN-cookie技术 一般情况下,当服务器收到一个TCP SYN报文后,马上为该连接请求分配缓冲区,然后返回一个SYN+ACK报文,这时形成一个半连接。SYN Flood正是利用了这一点,发送大量的伪造源地址的SYN连接请求,而不完成连接。这样就大量的消耗的服务器的资源。SYN-cookie技术针对标准TCP连接建立过程资源分配上的这一缺陷,改变了资源分配的策略。当服务器收到一个S

2017-08-03 22:03:59 971 2

转载 SYN Flood攻击及防御方法

SYN Flood攻击及防御方法 一、  为什么Syn Flood会造成危害 这要从计算机网络的TCP/IP协议栈的实现说起。当开放了一个TCP端口后,该端口就处于Listening状态,不停地监视发到该端口的SYN报文,一旦接收到Client发来的SYN报文,就需要为该请求分配一个TCB(Transmission Control Block),通常一个TCB至少需要280个字节,

2017-08-03 19:46:45 12360

原创 什么是彩虹表?

说起彩虹表有必要提一下hash函数,hash函数又叫散列函数,对于任意hash函数应具备以下特点。1.      压缩性:对于任意给定输入有唯一特定长度输出,例SHA1的hash值为20字节。2.      容易计算:即从原始数据计算hash值应该很容易。3.      抗修改:对原始数据哪怕1bit的修改都会对hash值产生重大影响。4.      抗碰撞:这里分为强碰撞和弱碰撞

2017-08-03 18:16:25 10633

原创 硬链接为什么不能跨文件系统/不能链接目录?

关于为什么不能跨文件系统?我是这样理解的。首先,不同的文件系统的文件管理方式不同,甚至有些文件系统不是索引文件系统,并不一定两个文件系统的inode有相同的含义。再者,即使有相同inode含义,硬链接的几个文件,具有相同的inode号码。不同文件系统中,也可能有使用该inode号的文件,这将产生矛盾。那不能 hard link 到目录又是怎么回事呢?因为如果使用 hard link 链接到目录

2017-08-01 16:29:59 6173 1

原创 自由存储区和堆

自由存储区和堆的区别是一个老生常谈的问题了,就像面试题new和malloc的区别一样。事实上,网上多说人认为,自由存储区与堆的划分标准是申请和释放内存是使用的new/delete还是malloc/free。C++标准并没有给出new/delete应该如何实现,但很多编译器的new/delete都是以malloc/free为基础来实现的。从技术上来说,堆(heap)是C语言和操作系统的术语,堆是操作

2017-07-29 15:06:10 5768 1

转载 Linux线程的实质

文章源地址:https://my.oschina.net/cnyinlinux/blog/367910线程与进程的比较概述:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立调度的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资

2017-07-29 14:10:32 360

转载 fork, vfork, clone 与 pthread_create 的区别

进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽象成各种数据对象:进程控制块、虚存空间、文件系统,文件I/O、信号处理函数。所以创建一个进程的过程就是这些数据对象的创建过程。在调用系统调用fork 创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性,但是二者之间的通讯需要

2017-07-29 12:49:13 900

转载 Linux进程与线程的区别

文章原地址:https://my.oschina.net/cnyinlinux/blog/422207Linux进程与线程的区别本文较长,耐心阅读,必有收获!进程与线程的区别,早已经成为了经典问题。自线程概念诞生起,关于这个问题的讨论就没有停止过。无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了。一般程序员而言,搞清楚二者的概念,在工作实际中去运用

2017-07-28 19:59:17 257

SYN-cookie 和地址状态监控

针对SYN Flood的防范策略和原理

2017-08-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除