VIAのPadlockを試す
VIAのPadlockって何ぞ
VIAが誇るハードウェア暗号化。CPUに暗号化専用のハードウェアを搭載するのは、SandyやBulldozerで現実のものとなりつつあるが、一番最初に搭載したのはVIAで、これをPadlockという。
対応OS
BSD系はインストールが面倒だったので、一番最初に見つかったDebianで試すことに。他のOSでもできるかもしれない。
基本的には以下を参考にやった
http://moimoitei.blogspot.com/2008/04/via-padlock-for-debian.html
が、情報が古いこともあって、結構異なるので、詳しく述べる。違いとしては、基本的に、Debian側のPadlockの対応が進んだため、いくらかの手順が省けるようになった点が大きく異なる。もうパッチは要らないよ!
ハードウェア乱数
まずapt-getなりaptitudeなりでrng-toolsをインストール。
次に/etc/modulesに以下の記述を追加
via_rng
rngdを一旦切った状態で暗号化の速度を調べる
/etc/init.d/rng-tools stop dd if=/dev/random of=/dev/null bs=512 count=1000 & pid=$! sleep 10 ; kill -USR1 $pid ; sleep 1 ; kill $pid
0.0kB/s…とか出る。
次にrng-toolsを立ち上げて速度を調べる
/etc/init.d/rng-tools start dd if=/dev/random of=/dev/null bs=512 count=1000
私の場合、46.7kB/sになった。かなり早い。
そういえば昔、apgでバッチ処理で暗号吐かせようとしたら、大量生成できずに困った記憶があるが、その原因はコレらしい。成程。
暗号化の高速化
まずaptでopenssl、openssh-server、openssh-clientをインストール。
/etc/modulesに以下を追記
padlock_aes padlock_sha
rebootしたのち、以下のコマンドを実行
grep driver.*padlock /proc/crypto
以下のように赤字で表示されることを確認
driver : sha256-padlock driver : sha1-padlock driver : cbc-aes-padlock driver : ecb-aes-padlock driver : aes-padlock
速度を調べてみる
VIAのPadlockに期待することの多くは、おそらくOpenSSLの暗号化速度の高速化ではなく、もっと具体的にsftpの高速化であろうと思われる。という訳でsftpの速度を調べてみた。
速度を調べるには、基本的に以下のようなコマンドでOK。
dd if=/dev/zero count=50 bs=1M | ssh -c aes256-cbc localhost "cat >/dev/null"
ちなみに、count=50だと少ないので、私は500に変えて速度計測した。
私の場合の計測結果は以下の表である。マシン名と詳細は以下を参照して欲しいが、EarthはAtom、UranusはAthlon X2 L325、AndromedaはCore i7である。
また、CPUの使用率を見た感じでは、マルチコア対応した処理のようである(そうでないとCore i7とはいえあそこまで性能出ない)
Earth | Uranus | Andromeda | VIA | |
---|---|---|---|---|
AES256-CBC | 11.6MB/s | 36.3MB/s | 89.3MB/s | 40.5MB/s |
Arcfour128 | 28.1MB/s | 45.2MB/s | 158MB/s | 32.2MB/s |
AES128-CTR | 13.7MB/s | 37.2MB/s | 94.1MB/s | 15.8MB/s |
なお、AES128-CTRは暗号化方式を何も指定しなかった場合、通常選ばれる手法である。VIAではPadlockが有効に効かないので、かなり速度が落ちている。Arcfour128は最も高速と言われる手法だが、若干安全性に問題があるようである。