いろふ式暗号を作ってみよう♪

  • 2013.12.17 Tuesday
  • 00:24

この記事は、いろふ Advent Calendar 2013の16日目の記事です。
もう17日になっていますが、気にしたら負けです。

昨日は、@Posauneさんの「いろふさんの一意性を証明する #irof_history」でした。
いろふさんはやっぱり、謎なんだなと思いました。


さて唐突ですが、本日は、いろふさんを使って、
オレオレ暗号ならぬ、
いろふ・いろふ暗号を作ってみたいと思います。

なぜそんな事をするのか?
何となく、いろふさんは謎なので、鍵にするのなら、
丁度いいと思ったからです。




さて、暗号式の作戦ですが、
鍵にはある程度の複雑さと、ゆらぎが必要ですので、
ここはirofさんのtweetを利用したいと思います。

作戦はこうです。
(1)いろふさんのtweetの中から、ランダムに2件取得
(2)2件のtweetをハッシュ化、XORで1つの秘密KEYを作成
(3)暗号化したい平文メッセージを秘密KEYで暗号化
(4)暗号化したメッセージを今度は復号化してみる

醍醐味は、取得した2件のTweetからは、暗号キーはサクッと作れますが、
暗号キーからは、どのtweetを使用したのか判らないような暗号を作ってみたいと思います。
では、さっそく作ってみましょう♪
 

■まずはTweetからランダムに2件取得


Tweetを取得するにはTwitterのAPIを利用するしかないのですが、
C#には「linq2twitter」という便利なライブラリがあります。


ライブラリを使うと、たったこれだけで、
指定したユーザの最新200件のTweetを取得することができます。
(200件はTwitter1.1の一度に取得できるMAX件数)

あとはこのTweetリストの中から、2件のTweetを選びます。
ランダム取得もLinqを使って1件取得するとなると、

こうなります。

ビバLinq!便利。
早速、プログラムで2件ランダムにTweetを取得します。



つぎは、取得したTweetを使って暗号キーを作成してみます。


 

■2件のTweetから暗号キーを作ってみよう



どのTweetから、作成されたのか判らないようにしたいので、
まずはTweetのメッセージ文章をハッシュ化させてみたいと思います。

ハッシュ化は、MD5を使うと簡単に行えます。

あとは2件のTweetをそれぞれ、ハッシュ化を行ったら、
XORで1つにまとめてみます。
これを秘密キーとします。

早速、プログラムで実装してみます。

 

■秘密キーで暗号化してみよう



作成した秘密キーを使って、平文を暗号化してみたいと思います。
暗号アルゴリズムには現在最強のAESで行ってみたいと思います。
C#では標準でAESアルゴリズムが用意されていますので、
簡単に暗号化する事が出来ます。

それでは、プログラムに実装してみましょう。


 

■暗号化した文章を復号してみよう



復号は先ほどの暗号化とほぼ同じプログラムとなります。


プログラムに実装してみましょう。


無事、復号する事ができました。

 

■いろふ式暗号の特徴



作ってみて判ったのですが、

■特徴その1
圧倒的に、強度が低い(汗
なぜなら、Tweet件数を200件としてしまっているので、
その中から、ランダムに2件選んでいるということは、
200*199回、総当たりされたら、突破されることになります。
瞬殺ですね♪


■特徴その2
時限式暗号で、賞味期限がある!
200件のTweetは古くなると見れ無くなります。
つまり、いろふさんが沢山つぶやくと、そのぶん暗号の賞味期限は短くなります。


あとは、Tweetのコメントを秘密キーにしているので、
似たような内容のコメントが続くと、暗号強度が下がるのですが、
そもそも200*199回の総当たりで突破されるので、どうでもいいです。


一応今回のプログラム(C#4.5)はコチラになります。
https://github.com/kawakawa/IrofCryptographic.git
誰得?ですが置いておきます(汗


明日は、@kazuhito_m さんの「「いろふさん絵描き歌」じゃないヤツ、歌ってみた #irof_history」です。
 

スポンサーサイト

  • 2017.11.25 Saturday
  • 00:24
  • 0
    • -
    • -
    • -
    コメント
    コメントする








        
    この記事のトラックバックURL
    トラックバック