アットウィキロゴ

LilyVM

LilyVMの拡張とか

リンク


計画

  • 暗号化もしくはスナップショットにするつもり.
    • 暗号化で.
  • 暗号化はディスクアクセス時に暗号・復号化するってことだよね?ツッコミ求む.
  • まずはちゃんと動くかどうか確認.
    • 動かないね.
      • 2.4.~-i386で動くのに2.4.~-i686じゃ動かないってどういうことよ?
  • 実機上のlinux kernel2.4系列なら動作を確認

(たぶん)つかうもの


暗号化(調べた物)

  • 暗号化の方式
    • 共有鍵暗号方式
    • 公開鍵暗号方式
  • 共有鍵暗号方式
    • 情報の暗号化・復号化に単一の鍵(共有鍵)を使用する.
  • 公開鍵暗号方式
    • 情報の暗号化・復号化に2つの鍵(公開鍵・秘密鍵)を使用する.
  • 共有鍵暗号方式でのデータ送信の流れ
    1. 送信側と受信側で、あらかじめ共有鍵を決定
    2. 送信側:平文を共有鍵で暗号化 平文 -> 共有鍵 -> 暗号文
    3. 受信側:受信側:暗号文を共有鍵で復号 暗号文 -> 共有鍵 -> 平文


暗号化の実装

  • Blowfishが実装されているソースコード
  • C by Paul Kocherってのを使わせていただきましょう.
  • ライセンスがLGPLらしいけど,俺が作るようなしょぼしょぼプログラムも公開しなくちゃまずいのかな?
  • AES暗号化のライブラリもあるのでどっちにしましょうかね.
    • これを使うことに.

上記のAES暗号化ライブラリの使用法

  • 鍵長128bit, ECBモードの場合
    • aes_encrypt_ctx, aes_decrypt_ctxを用意.(aes_encrypt_ctx enc_key[1]のように)
    • aes_init()
    • aes_encrypt_key128で暗号化用の鍵を作成
    • aes_ecb_encryptで暗号化
    • 復号化は...decrypt...で

OpenSSLを使う場合

  • コンパイルの際に-lsslをつける必要あり.
  • OpenSSLを使うとcodeが肥大化しtoo large codeとか怒られちゃう.

LilyVMへの実装

  • ディスクの入出力はcode_c.cのvmdisk_pread, vmdisk_pwrite
  • ディスクイメージの内容をあらかじめ暗号化する必要あり

ディスクイメージの入出力

  • 書き込みの際のbufはライトプロテクトがかかっている模様.
  • 別に配列を確保しコピーしてから暗号化したら成功.

  • inodeは1024バイト以下の単位で読み書きされるのかも?
  • ext2_read_inode()あたりが怪しい.

コメントフォーム

名前:
コメント:

すべてのコメントを見る
最終更新:2007年07月10日 02:42