$ echo Hello World!
$ ssh guest@encrypted-board
初めての方へ
暗号掲示板をご覧いただき、誠にありがとうございます。
当掲示板を使うには公開鍵暗号の知識が必要となります。
暗号掲示板の利用方法について知っていただくため、ぜひこのページをご一読ください。
暗号掲示板とは
暗号しか投稿できない匿名掲示板です。
当掲示板には、暗号化によって秘匿された暗号文が投稿されています。
各投稿は正しく復号することで読むことができます。
暗号には公開鍵暗号方式を採用しているため、秘密鍵を知らない場合復号することは不可能です。
また、自分で暗号文を投稿することも可能です。
投稿の平文は自由な文章を入力でき、暗号化されて保存されます。
IL2ui4JVR40tlIE47CRbIHqW1cY=
YEs0fTKfW8YE2kmlc18mKSPWnBpLhhAY/rUvdD7WG07mH2gqTwclQbaIaawfyzd70qwGrXqTrSODLGzyf/iaQF8hK1oj/I7oAxaCWRpiVAsBLYXDK6Lpz2drWJVDg+KQpGW7WeL0CivDkHzmDDAgCCJXspRStaoY83SeWiRODICnDlqsYzAwpXry3nrJ7UopZJ6AtgThjPk8fflBaaTO2XUuKZpiCXiu+ybP9Pq9mJrEUcQ2aefZx0l6mRyU6QeMuFmKptz6uu+VsLhrS41AOGD85TF0GQG63I7AHXMAOhkqi6q9IVak+ETwl9CFUx6fGcPgkaRA8rpKZiiwchsNZA==
nanasi-1
投稿には公開鍵暗号の鍵が必要です。
当掲示板ではあらかじめデフォルト鍵を用意していますので、ぜひご利用下さい。
暗号とは
そもそも暗号とは、特別な知識なしでは読めない文のことです。
特別な知識とは例えば暗号の復号アルゴリズムがありますが、これ以外にも様々な知識が当てはまります。
暗号文は多くの場合、秘匿を目的として暗号化されています。
秘匿の目的は様々です。
- 重要な機密文書を第三者が解読できないようにしたい
- クラッカーからWebサイト閲覧の接続を隠したい
- ハッキングをするとき、ターゲットの重要なファイルを自分しか読めないようにしたい
TQ4UMc9vAgY+OekbQ9pjh/Js25gj7Mkry3+L0s2L/ztPoMNudB5WFpORGPY7zyWSDT6DrwHtf7Ejy6rvStAJoWH2+gHOwE6t5P+TvcrMMq/sWOK68s0SbdXNCV6tMQVWzr9Mg77fOFamG8fVTzJpL2vrlIf8+NLIu94MzcMUCbNQIDfYBfr91Lh9fXipfjbNwTL/vuKjtAiRDBVZ2wXYL5nA7nM82B2Y44Qc6LCglcGJRx6j1AR6pfaAGUsgodJNaNC6jGCjSm62CGhSNpWwjcbog4h0VnjvHq3VOXXRGGgF38jpLuS9gHebXa2hyshKEDZybZB9myHzI27bAMNZ0Q==
日本で有名な暗号方式にはたぬき暗号があります。
たぬき暗号の暗号文は「た」を抜くという復号方法を知らないと読めません。
そのため一種の暗号だと言えますが、日本中に解読方法が知れ渡っているという性質上、復号は容易です。
もちろん多くの場合、暗号は解読されてはいけません。
本当に文書を秘匿したいとき、暗号の復号方法は隠し通さなければなりません。
...と言いたいところですが、実はより優れた方法があります。
それは鍵を使った暗号方式です。
暗号鍵
人類はこれまで暗号について数々の研究を重ね、たくさんの暗号方式を作り上げてきました。
その中で提案された理論に、ケルクホフスの原理があります。
この内容は、暗号方式そのものを秘匿する代わりに鍵を秘匿したほうが安全であるというものです。
暗号鍵を使った方式では、事前に作成された鍵を使って文書を暗号化します。
かつ暗号文の復号には鍵が必要になるので、鍵が漏洩しなければ安全ということになります。
ということで、最初に編み出されたのは共通鍵暗号でした。
これは今も使われているほど実用的な暗号ですが、暗号化と復号に同じ鍵を使用する方式なため、 鍵を送信する際に盗まれる可能性があるという問題があります。
その問題は、別の暗号方式である公開鍵暗号の登場によって解決することとなりました。
公開鍵暗号
公開鍵暗号は暗号鍵を使った暗号方式の一つです。
当掲示板ではこの公開鍵暗号のうち、RSA暗号を使用しています。
この方式では、公開鍵と秘密鍵の2つの鍵が使われます。
公開鍵と秘密鍵にはそれぞれ別の責務があります。
これらは通信を行う前に事前に生成され、2つの鍵のうち公開鍵は暗号の送信者に渡す必要があります。
それぞれの鍵は以下のように使用されます。
- 公開鍵: 暗号化に使う、公開しても問題ない
- 秘密鍵: 復号に使う、秘密にしておく必要がある
図解にするとこのようになります。
なお、ここまでで説明した公開鍵暗号や共通鍵暗号は、コンピューターを使用して暗号化 / 復号することが前提となっています。
これは暗号が時代とともに強固になっていったため、要求される計算量が非常に増大し、手作業で処理することが現実的ではなくなったためです。
暗号掲示板の使い方
ここまでで公開鍵暗号についての説明は完了したので、次は暗号掲示板の使用方法を紹介します。
なお、暗号掲示板では公開鍵暗号の暗号文を投稿することができます。
デフォルト鍵
公開鍵暗号を使うためには公開鍵と秘密鍵が必要です。
これらは専用のソフトウェアを使用することで生成できますが、少し手間がかかります。
当掲示板では、あらかじめ生成しておいた鍵をデフォルト鍵として公開しています。
デフォルト鍵はトップページ右下のボタン、または右のボタンから確認可能です。
これらの鍵は暗号掲示板内では自由に使用できますので、ぜひご利用ください。
なお、手間はかかりますが独自の鍵を使用することも可能です。
その場合は、秘密鍵を公開しなければまず解読できない暗号文が生成されます。
鍵のアルゴリズムはこちらのソースコードを参考にしてください。
暗号文を投稿する
暗号文の投稿には以下の2つが必要です。
- 暗号化のための公開鍵(デフォルト鍵を使用可能)
- 伝えたいメッセージである平文
投稿するには、トップページの右下にあるボタンを押し、これらの情報を入力します。
そして下にある「投稿」ボタンを押すことで、投稿が完了します。
公開鍵のハッシュ
ここに暗号文が表示されます
なお、当掲示板では鍵の識別にハッシュを利用しています。
ハッシュは鍵ごとに一意な文字列で、例えばIL2ui4JVR40tlIE47CRbIHqW1cY=
という感じです。
暗号化に使用された鍵のハッシュは、投稿の右上のから確認できます。
復号する
秘密鍵を知っている投稿は復号して平文を読むことが可能です。
各投稿の暗号化に使用された公開鍵は、ハッシュを確認することで識別できます。
そのハッシュの秘密鍵を知っている(デフォルト鍵も含む)場合、投稿右上のを押して秘密鍵を入力することで、復号して平文を閲覧できます。
RT7o2GZz1+Sqn9sZqmUrobOqDeU=
UYe4wsQiJA5RzaAvREd7GjzmkIfUwYOD28nBtnm485Vdtu2ZOAc1vmB60nuk2MCQGurTjNeO7U5FuvnHFKPtTqlzOsIGXCJvPoxYQlI8LFdhoAVJpZrNLlrJ9eTbreui0F70iB8PAvQxFbvF8O/WhD0vwdbDjz6Bhmuw+1NQn9LC19rC5p6Rm3E4DzUczVVIa7g5uzwXDGVP8cYof1lkwl3oLfcJWFoVH79Cx2sMEM59UxRkOTWES5/npmZ7XDbCjwUSGudpC4SZXHS0nYHY+tIymt8GzavY5hYAWef1F73i24xkn5a/M+0624nTXgw19w1E8Yjzih8bwO85V6sGYA==
例えば、こちらの投稿を見てみます。
この暗号文の公開鍵のハッシュはRT7o2GZz1+Sqn9sZqmUrobOqDeU=
です。
そして、このハッシュの鍵はデフォルト鍵に含まれているため、この暗号は復号可能です。
復号するには、デフォルト鍵から該当する鍵を探して秘密鍵をコピーします。
そしてを押して秘密鍵を入力すると、平文が表示されるはずです。
暗号掲示板はOSS(オープンソースソフトウェア)です。
ソースコードはGitHubというWebサイトで公開されてるので、誰でも読むことができます。
またGitHub上では、このページの文章の改善要望からバグ報告まで幅広く受け付けています。
初心者の方でも詳しい方でも、見に来ていただけると嬉しいです。
使用可能な鍵の詳細
暗号掲示板では以下の条件を満たす鍵を使用できます。
- アルゴリズム:RSA(RSA-OAEP)
- 長さ:2048ビット
- ハッシュアルゴリズム:SHA-1
- フォーマット:SPKI と PKCS8 かつ Base64エンコード