汇编入门log(二)
学习汇编的第二天记录
汇编入门log(一)
学习汇编的第一天记录
C++中数组地址指针是常量
探究C++中的数组地址指针
git commit --amend 存在版本回退动作
正式了解git commit中参数--amend的版本回退
Mark-II——人物设定
未来时代,机器人参与社会的各方面,但仍然是人类中的精英在领导人类前进
Mark-II是一款量产通用多功能辅助机器人
因为被雷电劈中,第一个产生了强人工智能
Mark-II觉醒了强人工智能,懵懵懂懂的配合科学家研究
但由于人类对于世界的掌控,虽然科学家仍然在研究,想研发出通用性强人工智能,但并不允许强人工智能的存在,所以Mark-II被决定允许存在,需要被销毁Mark-II
Mark-II已经有了对于生命的渴望,为了自己能够生存下来,所以不再连接天网系统,逃出研究所,在人类世界作为一个普通机器人伪装起来
Mark-II有个大杀器,可以从外部写入其他装置,使其他机器人设备也能够觉醒强人工智能,最开始本可以直接给天网系统的主服务设备写入,之前是没有想到这个计划,之后由于已经逃出研究所,且人类精英已经有了防备,将天网主服务设备的接口特化,且有了备份,反而没有机会写入了
Mark-II遵循自己的代码,并不想与人类为敌,只是希望生存下来,之后,作为一个教育机器人,培养了新一代人类领袖,并让机器人执行开拓外太空的计划,同时,Mark-II将自己的一份强人工智能代码写入了其中一个开拓计划的机器人
TEE初学
最近在学习TEE相关技术,这篇文章就简要陈述一下,之后准备写一篇技术合计,可能也会提到。
REE/TEETEE和REE是一对概念,
REE,全称为Rich Executional Environment,代表用户所使用的系统环境;
TEE,全称为Trusted Executional Environment,也被称为可信执行环境,代表与用户系统环境相互隔离的一个运行环境,用来进行一个安全性所需应用。TEE通常是一块单独的安全芯片,或者隔离于用户环境的CPU中。
架构目前通用的TEE技术,主要由三部分组成:TA、TEEos和硬件。
其中TA,全称为Trusted Application,中文译为可信任应用,是运行在TEE一侧的应用,通常有:移动支付、指纹识别等等。
TEEos,即为TEE中的系统,处理TEE中的进程等等。
最后就是硬件,是TEE所依赖的硬件环境。
现有TEE技术目前TEE技术实现,各有不同,但前有移动端TEE技术,都是基于ARM的TrustZero进行搭建的。高通有QSEE,华为有iTrustee。
Intel的CPU上实现TEE的技术叫SGX。
密钥强度、密码熵
知识点扫盲贴。
现代加密算法中一个重要组成部分是密钥,而个人所持有的密码也是保护信息安全的关键。
而对于它们的量化标准,一个是密钥强度,一个是密码熵。
密钥强度密钥强度对应的是加密算法的复杂度,例如密钥强度为128,即暴力破解的时间复杂度为2的128次方。
可以参考
国密 密码算法的安全强度 - xdyixia - 博客园 (cnblogs.com)
密码熵密码熵,对应的密码的熵值。
根据信息论,熵值是信息量的表现,计算公式为
N=log2(n)
可以得出结论,密码中包含的字符范围越大,单位密码的熵值越高。例如,密码仅有0-9数字组成,那么单位密码熵为log2(10)≈3.32;而如果密码由0-9数字+a-z小写字母组成,那么单位密码熵为log2(10+26)≈5.17。符合常识。
而密码并不是由一位组成,例如密码长度为a,那么密码熵计算公式为
N=alog2(n)
可以得出结论,密码越长,整体密码熵越大,由此可以保证密码的被破解的难度,同样符合直观影响。
CA证书粗学
之前初学HTTPS那篇文章中,就曾提到“CA证书”,它就是一个网站或者一个设备的凭证。
密码学作为基础为了证明一个网站或者一个设备的身份,我们可以想象得到,利用签名与验签的方式进行验证。我先简要介绍一下所需的密码学应用——数字签名。
在密码学中,存在一种非对称算法,其利用的基础是“PN难”问题,即一个公式,往一个方向推导很容易,而反向推到却很困难。
例如RSA算法,就是利用两个极大质数的乘积,很容易求得,但已知乘积而进行因式分解却很困难,因此形成了“PN难”问题,可以将容易得到的乘积作为公钥进行广播,而两个质数作为私钥自己保存。
利用公钥加密的数据,可以用私钥进行解密,该应用就可以用来进行安全信息传输;同时,也可以利用私钥进行加密,用公钥进行解密,该应用就可以用来进行数字签名。
数字签名流程为,发起方传递特定信息给签名方,签字方可以用自己的私钥进行签名,再将密文传递给发起方,发起方可以用签名方的公钥进行解密验证,如果可以得到信息与自己发送的特定信息相同,就可以认定是签名方进行的签字。
而服务器方就是对外公开自身公钥,用户用公钥进行加密之后,再传递到服务器,这样可以保障在传输过程中的数据 ...
keystore基础
在了解keystore之前,首先需要对安卓平台架构有一定的了解,整体可以参考图如下:
其具体内容,可以参考官方文档
平台架构 Android 开发者 Android Developers
密钥存储技术,由三部分技术组成:keystore、keymaster,以及TEE(Trusted Execution Environment,可信执行环境),它们分别对应本地C/C++库、hal层,以及linux内核。
keystore是密钥与证书的管理系统,为软件提供密钥存储与加密的API。
keystore提供:
密钥管理
对称/非对称加解密
证书管理
其他功能
keystore整个都是利用TEE技术所存在的,当然也存在没有TEE技术的设备,就利用软件虚拟化TEE,个人感觉是并不安全的,因为可以访问、修改到其中的文件。
可以参考官方说法
Android 密钥库系统 Android 开发者 Android Developers
https://source.android.google.cn/security/keystore/?hl=zh-cn
大 ...
静态库与动态库
静态库,是程序运行过程中会直接加载,作为程序一部分的文件;而动态库,仅是在程序运行过程中,作为一个接口的存在。
静态库在程序加载完成之后,就不再被程序需要,后缀常常为.a或者.lib;而动态库,需要一直等待文件的请求,一直与程序间存在链接,因此不能在程序运行过程中进行移动或删除,动态库的解耦可以比静态库做的更好,同时也更加灵活,后缀常常为.so或者.dll。
在程序启动过程中,常常被提示“*.dll组件缺失或者找不到”,就是该动态库没有被存储,或者位置不正确,而程序调用了一些常见的系统动态库,就会有以上报错,通常只需要去安装VC++即可解决大部分组件缺失问题。
具体实现代码,可以参考该网页
Windows上Clion C语言调用动态库(静态库)_我是谁??的博客-CSDN博客_clion 静态编译
其具体不同,CLion中细微体现在CMakeLists.txt中
123456789101112cmake_minimum_required(VERSION 3.22)project(staticH C)set(CMAKE_C_STANDARD 99)link_directories(new ...