スポンサーサイト

  • 2016.05.30 Monday

一定期間更新がないため広告を表示しています

  • 0
    • -
    • -
    • -

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

    • 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」です。
     

    スポンサーサイト

    • 2016.05.30 Monday
    • 00:24
    • 0
      • -
      • -
      • -
      コメント
      コメントする








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

      PR

      calendar

      S M T W T F S
        12345
      6789101112
      13141516171819
      20212223242526
      2728293031  
      << August 2017 >>

      selected entries

      categories

      archives

      recommend

      recommend

      recommend

      recommend

      profile

      search this site.

      others

      mobile

      qrcode

      powered

      無料ブログ作成サービス JUGEM