ソースコード の動作確認には、rake と OpenPGP ツールキットが必要とのことです。
後者二つは通常ペアとして扱われます。分離すべき用途がないので、これらを別個に扱う技術開発が進んでいないためです (分離して「誰が書いたのか分からないけれども改竄されていないことを保証する」必要がある用途は匿名誘拐犯の身代金要求くらい?)。
認証には送信側と受信側で鍵が対称なもの、対象でないものがあります。
暗号はあくまでも暗号であり、それそのものでは完全性の保証はしない。ここで、EBC で暗号化したテキストを改竄して見せた。
EBC がいけない。OpenSSL5 では、何も考えずに CBC と書いておくべきです6。
パスワードで AES を簡単化できます。 素朴な RSA では、鍵のサイズより短いバイト列しか暗号化できないので、用途が非常に限定されます。例えば (と実演すると)、open-uri.rb のソースそのものでは長すぎて無理でした。
そこで、AES 用パスワードを動的に生成し、私有鍵を暗号化する。
秘密を共有できている人なら同じ署名が生成できる。 OpenSSL::Digest::なんか.new ――「なんか」はどの手段で署名するのかを指定する。 検証には DSA というものもある。ただし署名用のみ。
ソースコード を参照のこと。 動作は
ものとする。
以下、SSL はこんなことまで考えてるから安全、というストーリーでいく。
最後の例。結構手間なのですが。
WEBrick 最初の設定の手間だけは若干かかるが、あとは WEBrick が面倒見てくれる。
いまあるツールキットは、まだまだガリガリ。しかも落とし穴いっぱい。
抽象化するひとつの手は OpenSSL マッピングモジュール。現状でも充分すばらしい。 しかもサポートが厚い! (gotoyuzo 氏)
他の環境では真似できません! まねの出来ないセキュア・アプリを作ってください!
PC を借りてプレゼンを入れといたら、いつの間にか「世界初」って。なひさん?
体験談: 業務の支援ツールとして
AES (Advanced Encryption Standard): アメリカの国家新標準暗号規格で規格化された共通鍵暗号方式。 ↩
RSA: 公開鍵暗号の中でも素因数分解の困難さを利用したアルゴリズム。”RSA” は開発者の頭文字をつなげたもの。 ↩
対称暗号あるいは共通鍵暗号方式:暗号化と復号化を同じ鍵を使って行う方式。この鍵のことは秘密鍵と呼ぶ。対称暗号では秘密鍵を誰にも知られることなく相手に渡すことが重要となる。 ↩
非対称暗号あるいは公開鍵暗号方式:暗号化と復合化を異なる鍵で行う方式。この場合公開するキーを公開鍵、公開しない鍵を私有鍵と呼ぶ。 ↩
OpenSSL: 各種の暗号処理を扱うライブラリ。Ruby 用のライブラリもある。http://www.ruby-lang.org/ja/man/?cmd=view;name=openssl ↩
ECB と CBC: どちらもブロック暗号の暗号利用モードの 1 つ。ECB には「同じ平文から同じ暗号文が生成される」という性質があるため長文の暗号文で同一平文の箇所が分かってしまうという問題がある。これを回避するため CBC が使われる。 ↩
Wiki:ユーザが内容を編集できる機能をもった Web ツール。数多くのバリエーションがある。 ↩
Hiki:Ruby で記述された Wiki クローン。tDiary のテーマがそのまま使える。http://hikiwiki.org/ja/ ↩
CI:Corporate Identity の略。 ↩
影舞:Ruby で記述されたバグトラッキングシステム。http://www.daifukuya.com/kagemai/ ↩
メタミステリ:推理小説の構造そのものを利用したミステリ。推理小説の「お約束」を逆手にとった東野圭吾の‘『名探偵の掟』’などがこれに当たる。 ↩
コード生成:Ruby によるコード生成は『Code Generation In Action』が詳しい。 ↩
DSL (Domain Specific Language):特定の問題領域向けにチューニングされたコンピュータ言語のこと。http: //capsctrl.que.jp/kdmsnr/wiki/bliki/?DomainSpecificLanguage ↩
言語内 DSL:汎用のプログラミング言語で DSL を表現すること。Ruby on Rails で多用されている。 ↩
Lisp のマクロ: 多くのプログラミング言語のマクロは専用の文法を持つ (Cのマクロなど) が、Lisp のマクロは Lisp そのもので、Lisp の機能が全て使える非常に強力なもの。 ↩