系统管理指南:安全性服务

Procedure如何生成对称密钥

加密文件以及生成文件的 MAC 需要使用密钥。密钥应派生于随机数池。

如果您的站点具有随机数生成器,请使用该生成器。或者,可以使用以 Solaris /dev/urandom 设备作为输入的 dd 命令。有关更多信息,请参见 dd(1M) 手册页。

  1. 确定算法要求的密钥长度。

    1. 列出可用算法。


      % encrypt -l
      
      Algorithm       Keysize:  Min   Max (bits)
      
      ------------------------------------------
      
      aes                       128   128
      
      arcfour                     8   128
      
      des                        64    64
      
      3des                      192   192
      
      
      
      % mac -l
      
      Algorithm       Keysize:  Min   Max (bits)
      
      ------------------------------------------
      
      des_mac                    64    64
      
      sha1_hmac                   8   512
      
      md5_hmac                    8   512
    2. 确定要传递到 dd 命令的密钥长度(以字节为单位)。

      将最小密钥大小和最大密钥大小除以 8。最小密钥大小和最大密钥大小不同时,可以使用中间密钥大小。例如,可以将值 8、16 或 64 传递到 sha1_hmacmd5_hmac 函数的 dd 命令。

  2. 生成对称密钥。


    % dd if=/dev/urandom of=keyfile bs=n count=n
    
    if=file

    输入文件。对于随机密钥,请使用 /dev/urandom 文件。

    of=keyfile

    存储已生成密钥的输出文件。

    bs=n

    密钥大小(以字节为单位)。要获取字节长度,请将密钥位的比特长度除以 8。

    count=n

    输入块的计数。n 的数值应为 1

  3. 将密钥存储在受保护的目录中。

    密钥文件不应被除用户之外的任何人读取。


    % chmod 400 keyfile
    

示例 14–1 创建用于 AES 算法的密钥

在以下示例中,将创建用于 AES 算法的密钥。也将存储该密钥用于以后的解密。AES 机制使用 128 位的密钥。该密钥在 dd 命令中表示为 16 字节。


% ls -al ~/keyf

drwx------   2 jdoe  staff        512 May 3 11:32 ./

% dd if=/dev/urandom of=$HOME/keyf/05.07.aes16 bs=16  count=1

% chmod 400 ~/keyf/05.07.aes16


示例 14–2 创建用于 DES 算法的密钥

在以下示例中,将创建用于 DES 算法的密钥。也将存储该密钥用于以后的解密。DES 机制使用 64 位的密钥。该密钥在 dd 命令中表示为 8 字节。


% dd if=/dev/urandom of=$HOME/keyf/05.07.des8 bs=8  count=1

% chmod 400 ~/keyf/05.07.des8


示例 14–3 创建用于 3DES 算法的密钥

在以下示例中,将创建用于 3DES 算法的密钥。也将存储该密钥用于以后的解密。3DES 机制使用 192 位的密钥。该密钥在 dd 命令中表示为 24 字节。


% dd if=/dev/urandom of=$HOME/keyf/05.07.3des.24 bs=24 count=1

% chmod 400 ~/keyf/05.07.3des.24


示例 14–4 创建用于 MD5 算法的密钥

在以下示例中,将创建用于 MD5 算法的密钥。也将存储该密钥用于以后的解密。 该密钥在 dd 命令中表示为 64 字节。


% dd if=/dev/urandom of=$HOME/keyf/05.07.mack64 bs=64 count=1

% chmod 400 ~/keyf/05.07.mack64