ぺんぎんさんのおうち

日記です。たまに日記じゃないこともあります。

zlibに対する攻撃を考える

あるCTFでこれを使った問題が出ていたので勉強のために.

 

zlibで圧縮したものを暗号化する場合, 平文と暗号文の長さが同じになるアルゴリズムを使うのは危ないよという話. 例えばAES-CTRとかRC4とか.

16bytes等のパディングをした方が良さそう.

 

基本的な内容は以下のサイトに書いてある.

www.sjoerdlangkemper.nl

要するに, 

data = zlib.compress(SECRET + your_input) 

 dataがわかるとき, 同じ文字列が複数回含まれるデータをzlib圧縮すると圧縮後のデータ数が小さくなるのを利用してSECRETが何かを推測することができる.

 

例えば

SECRET が "koresuki" であるとして

c1 = "koresuki" + "a" * 20

c2 = "koresuki" + "b" * 20

...

"koresuki" +  [a-z]を20回繰り返した文字列 を c1, c2, ...

それぞれ圧縮して長さを見てみると

"koresuki" + "i" * 20

のときだけ小さくなる.

 

最後の文字が "i" であることがわかったので, 次は

"koresuk" + "[a-z] + i" * 20

を試すと "ki" が得られる.

 

これを繰り返していくと SECRET を得ることができる.

 

 

以上を踏まえて検証してみた.

test

 

それぞれの文字を与えたときの圧縮後のデータ長を確認して最も小さいものを候補としている.

このコードだとSECRETに連続して同じ文字が使われている場合に対応できないので注意. 

 

実行結果は

[('a', 26), ('b', 26), ('c', 26), ('d', 26), ('e', 26)]
augimugi_suko

 1文字目が復元できていないが, SECRET = "secret_mugimugi_suko" となっていればちゃんと

[('m', 31), ('a', 32), ('b', 32), ('c', 32), ('d', 32)]
mugimugi_suko

:ok_hand:

むぎむぎすこだぞ

 

近況

ykm11.hatenablog.com

 

あ”ー あ"ー 

 

 

少し前に高専セキュリティコンテストに参加したり, 東京のマジカルミライに行ったりしました.

夏休みもあと半分ですね. 後期の授業は前期に比べてかなり楽(実習も受験もない)なので余裕ですね. ガハハw

友人と30日OS本の読書会をやったり, 最高の9月にしたいですね. 学会もあるので研究最優先ですが..

 

家もそろそろ本格的に探していきたいなぁと. 

 

 

ところで今日母が入院しました. 手術して1週間ほど入院するそうです.

 

Slack用にemojiを回転させたい

おさかな・‪‪とり組のゆうけむです.

 

いきなりですがemojiを回転させてSlackで使いたいじゃないですか.

これを 

f:id:ushiromiya3:20180830195337p:plain

 こう

f:id:ushiromiya3:20180830195400g:plain

 

寿司を

f:id:ushiromiya3:20180830210500p:plain

こう(元画像大きくて笑う)

f:id:ushiromiya3:20180830210534g:plain

f:id:ushiromiya3:20180830210738g:plain

 

 

bashコマンドを駆使して回転画像(gif)を作成するエントリもありましたが, 以前試してもうまく動いてくれなかったので自分でスクリプトを書きました.

 

処理の流れとしては

 

1. 入力画像をcv2で読み込んで 128 * 128 にリサイズ (Salckのemojiサイズ規定)

2. ある角度(angle * i; i = {0, 1, 2, ...})回転させた画像を配列imagesに格納

2.1 OpencvはBGR, PILはRGB形式で画像を表現するので変換しておく

2.2 透過画像だと透過部分が[0, 0, 0]で表示するときに真っ黒になるので[255, 255, 255]に変換

2.3 cv2で読み込んだ画像(配列)をPILオブジェクトとして再読み込み

3. 一定の角度回転された複数の画像がimagesに入っているのでそれらをGIFとして保存

 

# パラメータ

- img_file : 入力画像

- angle : 回転角度. 正数だと反時計, 負数だと時計周りに回転

- duration : 1周するまでの時間. 単位は [ms] なのでここを小さくするとより早く回転する.

 

for slack emoji

入力画像のサイズが(n, n)じゃないと見切れる部分が黒くなるのを確認しています.

いい感じに直してみてください.

電気通信大学 編入推薦入試の話

聞かれたことのメモ. 

筆者の他エントリを読んだことがある人は既にご存知かもしれないが, このブログではいい加減な内容のみを扱っているのであまり信用しないでほしい.

 

それでも読みたいという奇特な読者のためにメモを残しておこうと思う.

繰り返すが, 当てにしないでほしい. 

入試からある程度日が経っているのでそろそろ情報が漏れても大丈夫なはず(確証はないわ, 公開すんのやめとくか). 

 

 

面接

・じゃあまず年齢を教えてくれるかな

高専で勉強している内容と, 入学してから何をしたいか

勉強と言われると漠然とした答えしか出ないので研究の話をした. 食いつきは..ナオキです. 入学してからは色々なイベントや勉強会に積極的に参加したいみたいなことを答えた. 

 

・なぜセキュリティの勉強をしたいと思っているのか, セキュリティの分野は広いけど特にどの分野に興味があるのか

理由は割愛, 分野は暗号に興味があると答えた. Cryptoのプロになりたいよね.

「研究でも機械学習やっているので数学, 暗号が好きです, 数学得意です」みたいなことを言った気がする.

 

・英語について

ここでTOEICが〜とか英検が〜とか言ってるうちはダメ. 

僕はすかさず切り札,  レッドアイズ・ダークネスメタルドラゴンを召喚 留学の話をした. 授業でプレゼンした話とか. TOEIC810回受けるより1回海外行く方が良いのかなと.

 

・卒業後はどうしたいか

とりあえず美少女メイドになりたい

 

 

MMAの話が出た. 

 

 

数学

2つの問題から選ぶタイプ.

パッと見て線形代数を選択したのでもう片方はちゃんと見てない. 関数論だったかも?

 

固有値とは何か

・与えられた行列の行列式を答える問題

・上の問題で与えられた行列に変数aがあり, 固有値λが0のときのaを求める

・"固有値表現の基底を求めよ"みたいな感じの問題だった気がする

    固有ベクトルを求めるだけ

 

 

専門

4つほどある分野の中から1つ選ぶタイプ

僕は情報を選んだ(他わからん)

 

割り算の筆算で6.7割が不定になってる, 所謂虫食い算.

複数の値を持つものがあり, とりあえず解答はできたけど他の値を試すところで時間切れになった.

 

 

 

結果は言わずもがな, 合格である. 

私からアドバイスできることは多分ない. 

というかここまで読んでいる読者はきっと受験生ではないだろう. 

セキュリティキャンプ2018乾燥機

応募課題で提出したやつ

ykm11.hatenablog.com

そういえば編入試験がどうとかって話を上記エントリでしてましたが, 無事合格できたので来年からは東京の人間になります.

 

セキュリティの勉強とかキャンプに応募したきっかけとかの話は割愛します.

優秀な皆さんなら脳内で補完ができるはずです.

 

僕(たち)はTLS1.3/暗号ゼミでTLS1.3対応のサーバを自作しました. 僕は暗号の部分を担当しました. 

やったこととしては, "RFCを読んで実装" これだけです.

 

これ読めばTLS1.3対応のサーバーが自作できます.

 

.

.

.

.

 

140文字以上の文章を書こうとすると発作が起きるのであとは他の人の参加記を参考にしてください.  時間があるときにまた書き直すかもしれません. 僕はこれから肉を焼きに行くので一旦筆を置きます.

 

 

DAY0 移動日

 

DAY1

DAY2

DAY3

DAY4

DAY5

 

 

 

違うんですよ

いや違うんですよ.

キャリーバッグは普通に歩いて駅向かってたらキャスターが取れて, 

バックパックの方はキャンプ前からチャックが調子悪くて, 直そうとしたら完全に破壊してしまっただけなんですよ.

 

"ておくれ"ではないので. 本当に.

 

乾燥機

Amazon.co.jp

🙏今日は僕の誕生日ではありませんが, プレゼントはいつでもおまちしておりますよ🙏