首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

《计算机系统与网络安全》第五章 消息认证与数字签名

消息认证又叫报文认证,是消息的接收者验证消息的真实性和完整性的过程与技术。真实性就是验证消息发送者他是真实的而非假冒的。也就是说假如消息的发送者声称是张三,我们要验证一下这个张三他是否是真的张三,这个又叫做信源鉴别,就是信息的源头鉴别它的真伪。另外还要验证消息的完整性,就是验证消息在传送或者存储过程当中没有被篡改,存放、乱序或者延迟等攻击。这个消息认证是防止主动攻击的重要技术,这个主动攻击主要针对真实性和完整性进行攻击,主要包括假冒,假冒某个合法的实体发送一个消息。另外就是内容修改,对消息的内容进行篡改,包括插入、删除、转换或者修改。还有顺序的修改,对消息的顺序进行修改,因为消息往往可能有多个报文组成,这个时候对消息的顺序进行重新排列,也构成了攻击。即时修改是从时间的角度对消息进行延迟,影响消息的时效性,或者截获了消息之后重新来发送产生重放攻击。

01

面向最小哈希签名的LSH

我们知道最小哈希签名能够把一篇较大的文档压缩成一个较短的签名并且不影响文档间的Jaccard相似度。很多情况下,我们用最小哈希签名的目的就是为了方便的对文档进行存储,并且对于给定的文档,能在大量的文档中快速的查找相似的文章。现在我们能做到快速的对两篇文章进行相似度比较,但是当总的文档数目比较大的时候,比较所有文档的最小哈希签名仍然是一个非常耗时耗力的事。而我们知道,对于给定的文档而言,文档库中的绝大多数文档其实都没有比较的意义,如果能有一个方法能过滤掉不需要比较的大量文档,那么显然就能加快整个查找的过程。这个思路其实可以称为"Filter and Refine","先过滤,后提纯"。而实现这个的方法,就是LSH(Locality-Sensitive Hashing 局部敏感哈希)。

02

JNI动态注册以及JNI签名

注册native方法有两种方式,动态注册和静态注册。静态注册是在编译时进行注册,而且在java中声明的native方法和c/c++中的本地方法的对应关系是恒定的;比如说在com.example.test包下的Test类中声明了一个stringFromJNI()的native方法,那么它对应的c/c++中的本地方法名就是Java_com_example_test_Test_stringFromJNI();并且这个方法名不能做任何的修改,在java中调用stringFromJNI()函数时,就会按包名_类名_方法名的形式找到对应的方法并调用。而动态注册是在运行时进行注册的,而且本地方法的名字可以按自己的喜好随意取,只要说明了java中声明的native方法和c/c++中的本地方法的对应关系即可。下面用代码的形式来演示一下动态注册的使用步骤。

03
领券