系统管理指南:IP 服务

Procedure如何在 Solaris 系统上生成随机数

如果您要手动指定密钥,则加密材料必须是随机的。对于 Solaris 系统,其加密材料的格式是十六进制的。其他操作系统可能需要 ASCII 加密材料。如果要为 Solaris 系统生成加密材料,而且此系统与需要 ASCII 的操作系统通信,请参见示例 23–1

如果站点具有随机数生成器,请使用该生成器。否则,可以使用 od 命令,并将 /dev/random Solaris 设备作为输入。有关更多信息,请参见 od(1) 手册页。

在 Solaris 10 4/09 发行版中,您也可以使用 pktool 命令。该命令的语法比 od 命令的语法更为简单。有关详细信息,请参见《System Administration Guide: Security Services》中的“How to Generate a Symmetric Key by Using the pktool Command”

  1. 生成十六进制格式的随机数。


    % od -x|-X -A n file | head -n
    
    -x

    显示十六进制格式的八进制转储。十六进制格式对加密材料有用。十六进制以 4 个字符的块显示。

    -X

    显示十六进制格式的八进制转储。十六进制以 8 个字符的块显示。

    -A n

    从显示中删除输入偏移基址。

    file

    作为随机数的源。

    head -n

    将显示限制在输出的前 n 行中。

  2. 合并输出以创建适当长度的密钥。

    删除一行上的数字之间的空格,来创建 32 字符的密钥。一个 32 字符的密钥为 128 位。对于安全参数索引 (security parameter index, SPI),您应该使用 8 字符的密钥。密钥应该使用 0x 前缀。


示例 20–3 生成 IPsec 的加密材料

以下示例显示两行八个十六进制字符为一组的密钥。


% od -X -A n /dev/random | head -2
         d54d1536 4a3e0352 0faf93bd 24fd6cad
         8ecc2670 f3447465 20db0b0c c83f5a4b

通过合并第一行上的四个数字,可以创建一个 32 字符的密钥。以 0x 开头的 8 字符数提供了合适的 SPI 值,如 0xf3447465

以下示例显示两行四个十六进制字符为一组的密钥。


% od -x -A n /dev/random | head -2
         34ce 56b2 8b1b 3677 9231 42e9 80b0 c673
         2f74 2817 8026 df68 12f4 905a db3d ef27

通过合并第一行上的八个数字,可以创建一个 32 字符的密钥。