在 Oracle® Solaris 11.2 中管理加密和证书

退出打印视图

更新时间: 2014 年 9 月
 
 

如何计算文件的 MAC

消息验证代码 (message authentication code, MAC) 可计算文件的摘要并使用密钥进一步保护该摘要。MAC 不会修改原始文件。

  1. 列出可用机制。
    % mac -l
    Algorithm       Keysize:  Min   Max
    -----------------------------------
    des_mac                    64    64
    sha1_hmac                   8   512
    md5_hmac                    8   512
    sha224_hmac                 8   512
    sha256_hmac                 8   512
    sha384_hmac                 8  1024
    sha512_hmac                 8  1024

    注 -  每个受支持的算法都是特定算法类型的最常用和受限最小版本的别名。上面的输出显示了可用算法名称和每种算法的密钥大小。请尽可能使用受支持的算法,该算法与具有 FIPS 认可的密钥长度的 FIPS 认可算法相匹配,列在Using a FIPS 140 Enabled System in Oracle Solaris 11.2 中的FIPS 140 Algorithms in the Cryptographic Framework中。
  2. 生成长度适当的对称密钥。

    可以提供据以生成密钥的 passphrase(口令短语),也可以提供一个密钥。

    • 如果提供口令短语,则必须存储或记住该口令短语。如果您联机存储口令短语,则只有您才可以读取该口令短语文件。

    • 如果提供密钥,则其大小必须是适用于相应机制的正确大小。您可以使用 pktool 命令。有关该过程和一些示例,请参见如何使用 pktool 命令生成对称密钥

  3. 创建文件的 MAC。

    mac 命令提供密钥并使用对称密钥算法。

    % mac [-v] -a algorithm [-k keyfile | -K key-label [-T token]] input-file
    –v

    显示以下格式的输出:

    algorithm (input-file) = mac
    –a algorithm

    用于计算 MAC 的算法。键入 mac -l 命令的输出中显示的算法。

    –k keyfile

    包含算法所指定长度的密钥的文件。

    –K key-label

    PKCS #11 密钥库中的密钥标签。

    –T token

    令牌名称。缺省情况下,令牌是 Sun Software PKCS#11 softtoken。仅在使用 –K key-label 选项时才使用。

    input-file

    MAC 的输入文件。

示例 3-5  使用 SHA1_HMAC 和口令短语计算 MAC

在下面的示例中,将使用 SHA1_HMAC 机制和基于口令短语的密钥对电子邮件附件进行验证。MAC 列表将保存到文件中。如果口令短语存储在某个文件中,则除了该用户之外,其他任何人都不能读取该文件。

% mac -v -a sha1_hmac email.attach
Enter passphrase: Type passphrase
sha1_hmac (email.attach) = 2b31536d3b3c0c6b25d653418db8e765e17fe07b
% echo "sha1_hmac (email.attach) = 2b31536d3b3c0c6b25d653418db8e765e17fe07b" \
>> ~/sha1hmac.daily.05.12
示例 3-6  使用 SHA1_HMAC 和密钥文件计算 MAC

在下面的示例中,将使用 SHA1_HMAC 机制和密钥对目录清单进行验证。结果存放于文件中。

% mac -v -a sha1_hmac \
-k $HOME/keyf/05.07.mack64 docs/* > $HOME/mac.docs.legal.05.07
% more ~/mac.docs.legal.05.07
sha1_hmac (docs/legal1) = 9b31536d3b3c0c6b25d653418db8e765e17fe07a
sha1_hmac (docs/legal2) = 865af61a3002f8a457462a428cdb1a88c1b51ff5
sha1_hmac (docs/legal3) = 076c944cb2528536c9aebd3b9fbe367e07b61dc7
sha1_hmac (docs/legal4) = 7aede27602ef6e4454748cbd3821e0152e45beb4
示例 3-7  使用 SHA1_HMAC 和密钥标签计算 MAC。

在下面的示例中,将使用 SHA1_HMAC 机制和密钥对目录清单进行验证。结果将放置在用户的 PKCS #11 密钥库中。用户最初通过使用 pktool setpin 命令创建了密钥库及其口令。

% mac -a sha1_hmac -K legaldocs0507 docs/*
Enter pin for Sun Software PKCS#11 softtoken:Type password

要从密钥库中检索 MAC,用户应使用详细选项,并提供密钥标签和通过验证的目录名称。

% mac -v -a sha1_hmac -K legaldocs0507  docs/*
Enter pin for Sun Software PKCS#11 softtoken:Type password
sha1_hmac (docs/legal1) = 9b31536d3b3c0c6b25d653418db8e765e17fe07a
sha1_hmac (docs/legal2) = 865af61a3002f8a457462a428cdb1a88c1b51ff5
sha1_hmac (docs/legal3) = 076c944cb2528536c9aebd3b9fbe367e07b61dc7
sha1_hmac (docs/legal4) = 7aede27602ef6e4454748cbd3821e0152e45beb4