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とはいえあそこまで性能出ない)

http://ponkotuy.com/pc.html

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は最も高速と言われる手法だが、若干安全性に問題があるようである。

sftpの速度から見るサーバの選び方

家庭用サーバというものは、往々にして消費電力の制約が厳しい。従ってAtomなどのCPUを使いたくなるものであるが、もしsftpを多用することが分かっている場合は、VIAというのも良い選択肢である。大体Atomチップセットが糞過ぎて消費電力そんなに低くない、という事情もある。

とはいえ、Uranusのような、若干消費電力が上のクラスになると、段違いに性能UPできるので、そういう方向でも良いかもしれない。

余談

元々私の志望としては、家庭内のrsyncの高速化が最大の目標だった訳だが…良く良く考えてみれば、-e rshとかして、rsh使った方が早くなるんじゃね、と思い直した。

これなら暗号化しないし、そもそもマシン性能要らね…。

あ、あと今回Debianインストールして思った。これからXが要らないサーバはDebianにする。インストール早過ぎ、5分とかアリエナイ。