Articles of 密码学

在Linux的stringencryption

任何请告诉我如何可以采取16个字符的string,并使用命令行工具生成16个字符的encryptionstring(以可读格式)。 我已经探索过像openssl这样的选项,但我无法控制输出的长度。 任何人都可以请指教?

通过getauxval检测Power8运行时环境和内核密码?

我使用的是运行Linux的小端Power8机器GCC112。 Power8具有核心密码,提供AES,SHA和其他一些有用的function。 我试图在运行时使用getauxval来确定function的可用性。 用例是为“最小”的机器构build发行版,我们需要在运行时交换更快的函数。 hwcaps.h的转储如下所示,但缺lessPower8,AES,SHA等的特定位。 但是,我相信Power8是ISA 2.07,ISA 2.07有位PPC_FEATURE2_ARCH_2_07 。 我不清楚的是,在ARMv8下是像ARM的encryption器那样的Power8内核encryption。 我找不到明确说明要求的文档,而且我没有OpenPower成员访问ISA文档的权限。 (另一种可能是,这是说,但我错过了文档)。 是否有可能使用getauxval查询function的运行时环境? 如果不是,那么我们如何确定运行时的function可用性? CPU探测是唯一可用的select? 也许更一般地说,我们如何确定Power6,Power7和Power8运行时环境? auxv.h大部分是空的。 头文件包含hwcaps.h 。 $ cat /usr/include/bits/hwcap.h … /* The bit numbers must match those in the kernel's asm/cputable.h. */ /* Feature definitions in AT_HWCAP. */ #define PPC_FEATURE_32 0x80000000 /* 32-bit mode. */ #define PPC_FEATURE_64 0x40000000 /* 64-bit mode. */ […]

TPM / TSS Linux API替代品

我想find(成熟的) API替代品在Linux(或者其他* nix)上使用TPM( 可信平台模块 )function。 我对可信的encryption/解密function感兴趣(可能与Kerberos集成)。 我发现jTSS (用于Java)和TrouSerS ,但我想知道其他的替代品,如果有的话。 “谷歌search”没有那么有用。

在linux上testing内核Crypto API

我有一个飞思卡尔i.MX板,在其上运行Linux 3.0.35内核。 我想testing我的Linux系统的内核encryptionAPI是否工作。 我刚刚发现testing程序叫做tcrypt 。 我看到在/lib/modules/有一个tcrypt.ko文件。 既然如此,是否有我可以testing运行这个库吗? 我怎样称呼它? 我需要重新configuration我的内核来“启用”一些东西来调用它吗? 请记住,我是内核API的新手。

来自Linux Kernel的CCM-AES

我需要与Solarisencryption机制SUN_CKM_AES_CCM兼容。 在Linux中,我相信我应该设置一个AEAD请求来获得“ccm(aes)”mech。 Linux Crypto的文档似乎相当差,最好的例子似乎是tcrypt.ctesting和内核的来源。 从Solaris,我做了512字节块的testingencryption,16字节hmac和12字节iv。 这需要保持不变,希望结果是一致的。 但是,我认为应该起作用,不是; struct crypto_aead *tfm = NULL; struct aead_request *req; unsigned char key[16] = { 0x5c, 0x95, 0x64, 0x42, 0x00, 0x82, 0x1c, 0x9e, 0xd4, 0xac, 0x01, 0x83, 0xc4, 0x9c, 0x14, 0x97 }; unsigned int ivsize; int ret; struct scatterlist plaintext[1]; struct scatterlist ciphertext[1]; struct scatterlist hmactext[1]; unsigned char *plaindata = […]

如何使用phpencryption大文件并通过命令解密?

我正在用PHP编写一个小脚本来备份我的文件。 在我从服务器传输文件之前,我想要encryption它们。 我通过在我的Linux服务器上使用exec()和OpenSSL,在以前版本的脚本中做了这个。 现在我正在寻找一个原生的PHP函数来完成这项工作,主要是为了更好的error handling。 事情是,我的文件可能会变大(如20GB)。 此外,我可以在我的shell上使用命令来重新解密文件。 有谁知道如何在PHP中encryption大文件,然后在命令行解密? 我现在使用PHP的mcrypt函数来encryption: // IV: $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND); // Create new random Key: $key = openssl_random_pseudo_bytes(32); // Encrypt: $fileStream = fopen($file, "r"); $encFileStream = fopen($file . ".enc.data", "w"); $opts = [ 'iv' => $iv, 'key' => $key, 'mode' => 'cbc' ]; stream_filter_append($encFileStream, 'mcrypt.rijndael-256', STREAM_FILTER_WRITE, $opts); stream_copy_to_stream($fileStream, $encFileStream); fclose($fileStream); […]

Broadcom引擎的OpenSSL速度testing

我正在使用OpenSSL 1.0.1e。 OpenSSL引擎ubsec需要包含实际实现的附加库。 实现库是/usr/lib/libvendor_ubsec.so。 要从ubsec OpenSSL引擎指示我们使用哪个实现来加载代码: ENGINE_ctrl_cmd_string (&engine, "SO_PATH", vendor_ubsec, 0); 我想运行openssl速度testing如下: openssl speed rsa1024 -engine ubsec 但是它失败了,因为openssl不加载libvendor_ubsec.so。 我明白,这与OpenSSL dynamic引擎相关,并加载实现我需要使用类似于: openssl引擎ubsec -pre SO_PATH:vendor_ubsec 我的问题如何“结合”两个comamnd openssl速度和openssl引擎运行ubsec引擎的速度testing>

带自定义algorithm的Keytool

我正在尝试使用Keytool和我的algorithm来创build密钥存储。 我已经构build了具有SignatureSPI,MessagedigestSPI和KeyPairGeneratorSPI的扩展类的自定义java.security.provider,并将其静态安装。 我遇到的问题是当我试图创build存储使用: keytool -alias something -genkeypair -keyalg GOST2001KeyPairGenerator -sigalg GOST2001Signature -providerclass ru.test.security.test_provider -storetype pkcs12 -keystore test_keystore 我得到我的debugging消息和一个错误: GOST2001KeyPairGenerator initialize GOST2001KeyPairGenerator generateKeyPair GOST2001Signature engineInitSign keytool error: java.lang.RuntimeException: internal error! unrecognized algorithm name: GOST2001Signature 奇怪的是,algorithm实际上开始执行,但后来被称为无法识别。 无法弄清楚发生了什么问题。

RNG比/ dev / random更快,但是encryption有用吗?

我已经开始了一些需要一些高质量随机字节的工作,例如某些密码应用的初始化vector。 我的问题是,这可能会被同时多次调用,我无法承受块/dev/random问题等待更多的熵收集。 我可以使用它来种子其他algorithm,例如/dev/urandom可以做什么 – 但是我不相信我无法理解的东西,我没有任何可用的方法资源,也不知道它是否保持不变许多内核版本,我更喜欢某种明确定义的方法。 您是否知道可以通过标准PRNG思考的任何方法,这些方法足以适用于(同时)密钥生成和类似情况? 特定的密码,比如带有大种子的RC4,是否足以产生随机输出? (我已经看到一个使用这个的/ dev / frandom实现,但我不完全确定它。) 如果这意味着什么,那么我就是在一个无头的Debian服务器上,因为没有熵收集。

内存安全的encryption,敏感的数据

即时通讯编写一个服务器,将处理安全连接的地方将发送敏感的数据。 目标永远不会将数据以未encryption的forms保存在内存以外的任何位置,并将其保存在内存中的一个已定义的空间(在不再需要时将被覆盖) 会分配一大块内存并用它来存储敏感数据是否足够,并确保没有数据泄露?