libtomcrypt专题

密码库LibTomCrypt学习记录——(2.21)分组密码算法的工作模式——F8加密模式

F8 F8和F9用在3G安全中的是机密性算法(f8)和完整性算法(f9),两者都是基于KASUMI算法构造。f8是变形的OFB模式的序列密码;而f9则是变形CBC-MAC模式的消息认证码。 KASUMI算法是日本三菱的Matsui等人基于MISTY算法设计的分组密码。分组大小64bit,密钥长度128bit。由于算法内部大量的使用了16bit的运算,因此最适合16bit处理器实现。    F

LibTomCrypt学习笔记——工作模式——OMAC

介绍 OMAC是一种认证模式,CMAC is an essentially the One-Key CBC-MAC (OMAC)。NIST官网的介绍如下。 The CMAC authentication mode is specified inSpecial Publication 800-38B for use with any approved block cipher.CMAC stan

正在学习LibTomCrypt,将陆续更新学习笔记

为了督促自己认真学习LibTomCrypt,准备边学习边把学习笔记整理后放上来。 LibTom 项目包括开放来源公共领域软件由Tom St Denis(tomstdenis@gmail.com, Libations Tom - What I Feel Like Talking About)用标准C语言写成。详情参见Libations Tom - What I Feel Like Talki

密码库LibTomCrypt学习记录——(2.5)分组密码算法的工作模式——CBC代码示例

以下代码实现了CBC的正确性测试(标准测试数据) 说明: 1. 代码里面使用了一个Str2Num函数,它将测试向量中的字符串转为十六进制字节数据,可自行实现。 2. 测试向量出处为NIST SP 800-38A (Recommendation for Block Cipher  Modes of Operation:Methods and Techniques) #include "tomc

密码库LibTomCrypt学习记录——(2.3)分组密码算法的工作模式——ECB代码示例

以下代码实现了AES-ECB的正确性测试(标准测试数据),以及性能测试 说明: 1. 代码里面使用了一个Str2Num函数,它将测试向量中的字符串转为十六进制字节数据,可自行实现。 2. 测试向量出处为NIST SP 800-38A (Recommendation for Block Cipher  Modes of Operation:Methods and Techniques) @@

密码库LibTomCrypt学习记录——(2.10)分组密码算法的工作模式——CTR模式

CTR是对序列号加密后与明文或者密文异或。这种方式被后面的很多工作模式所采用。 参考文献 NIST SP 800-38A CTR加解密 CTR加密 记每个块用到的计数器为T1,T2,Tn,要求每个计数器值各不相同 Oj = CIPHK(Tj) for j = 1, 2 … n; Cj = Pj ⊕ Oj for j = 1, 2 … n-1; C*n = P*n ⊕ MSBu(On

密码库LibTomCrypt学习记录——(2.8)分组密码算法的工作模式——OFB模式

OFB是一种加密模式。CFB和OFC工作模式中,密码算法象流密码一样生产出密钥流供异或名密文用。 参考文献 NIST SP 800-38A OFB加解密 OFB 加密 I1 = IV; Ij = Oj -1       for j = 2 … n; Oj = CIPHK(Ij)    for j = 1, 2 … n; Cj = Pj ⊕ Oj       for j = 1, 2

密码库LibTomCrypt学习记录——(2.6)分组密码算法的工作模式——CFB模式

CFB是一种加密模式。密文被反馈当寄存器中为下一个块服务。CFB和OFC工作模式中,密码算法象流密码一样生产出密钥流供异或名密文用。 参考文献 NIST SP 800-38A CFB加解密 记: b为分组的比特大小,比如AES时b=128;s为寄存器中保留上P一个密文的比特长度,1<=s<=b;s通常为1、8、64、128。P#j ,C#j是明文和密文的一个片段,长s比特。 CFB 加

密码库LibTomCrypt学习记录——(2.1)分组密码算法的工作模式——概况

密码算法的工作模式就是怎样使用密码算法来达到一定的目的,比如怎样加密一个文件。工作模式有很多种,仅用于加密的,用来构造HASH函数的,仅用于生成消息验证码的,用于伪随机数生成的,既能加密又能同时生成验证码的,专门针对磁盘加密的…… 很多工作模式都已经被标准化了,这其中影响最广的应该算是NIST了,其他相关标准化组织有ISO/IEC、IEEE、ANSI、 IETF……以下列举其中一部分。 NIS

密码库LibTomCrypt学习记录——(2)分组密码算法的工作模式

密码算法的工作模式就是怎样使用密码算法来达到一定的目的,比如怎样加密一个文件。工作模式有很多种,仅用于加密的,用来构造HASH函数的,仅用于生成消息验证码的,用于伪随机数生成的,既能加密又能同时生成验证码的,专门针对磁盘加密的…… 后续将更新常见和某些特殊用途的模式,比如 ECBCBCCFBOFBCTROMACGCMCCMXTSLRWF8F9EAXOCBKey Wrap…… 2012年1

密码库LibTomCrypt学习记录——(1.5)分组密码算法——示例代码AES-ECB

以下代码实现了AES-ECB的正确性测试(标准测试数据),以及性能测试 说明: 1. 代码里面使用了一个Str2Num函数,它将测试向量中的字符串转为十六进制字节数据,可自行实现。 2. 测试向量出处为NIST SP 800-38A (Recommendation for Block Cipher  Modes of Operation:Methods and Techniques) @@

密码库LibTomCrypt学习记录——(1.4)分组密码算法——AES-NI指令与AES的速度

英特尔在比较新的CPU上提供了AES-NI指令,可以直接调用这些指令来进行AES加解密。关于此指令的速度提升情况,各方反应不一,最高有说提高17倍的,有说提高8-9倍左右的,还有说提高一半左右的。这可能和各人的测试平台和倾向都不一样,因此结果各有差别。      CPU是否支持AES-NI可以使用英特尔AES-NI白皮书中的函数检测。白皮书中所述检测为: checking CPUID.01H:

密码库LibTomCrypt学习记录——(1.3)分组密码算法——AES算法的函数和使用流程介绍

LibTomCtypt中AES的描述子有两个,rijndael_desc和aes_desc,这二者除了name有区别外别的都一样,因此aes和rijndael是等效的。 注意:VC编译AES的时候记得将aes_table.c设置为“exclude file from build”,别的带_table的c文件类似。“exclude file from build”的设置方式为:右键点击aes_ta

密码库LibTomCrypt学习记录——目录

(0)LibTomCrypt简介 (1)分组密码算法——概述 (1.1)分组密码算法——算法描述子cipher_descriptor(1.2)分组密码算法——使用前注册算法register_cipher(1.3)分组密码算法——AES算法的函数和使用流程介绍(1.4)分组密码算法——AES-NI指令与AES的速度(1.5)分组密码算法——示例代码AES-ECB (2)分组密码算法的工作模式