2018年01月10日

DHE鍵交換の仕組み

たまにはセキュリティの話でも。

DHE鍵交換の仕組みの式を解説してみる

サーバーは任意の(g,p)を選択する。この時pは大きな素数であることが望ましい

作成したgとpをクライアントへ送信する(これは非暗号通信なので盗聴される可能性がある)

クライアント、サーバーは任意の数字 a , b を決定する。この数字はお互いに知り得ない情報である。

サーバーがa、クライアントがbを用いて以下の値を計算する(nがa、bに相当)

A= ga mod p

B= gb mod p

計算したAとBを送受信する(これも盗聴される可能性がある)

受信したAとBに対して、以下の計算を行う

KA= Ba mod p
KB = Ab mod p 


このとき、KA と KBは同じ値になるので、これを暗号キーとして用いる

同じ値になる理由についてもっと詳しく説明する

多項式の性質として、以下が成り立つ場合は

r= a mod p

次の式が成り立つ。

an mod p = rn mod p



二項定理で分解していけば、最後の rn以外はpの次数が1以上なのでmodでは消せるためである。

とすると、Ba mod p  = gba mod pとなり、

Ab mod p  = gab mod pとなるので、同じ値になるわけである。



gとpとAとBは盗聴されてしまうかもしれないけれど、そこからaとbを計算することが難しいので、
成り立っている暗号方式である。例えばある数Xを7で割った余りが3だったとわかっていても、Xは3,10,17,24,..... と無限に可能性があるためです。


posted by koteitan at 13:49| Comment(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2017年12月21日

[python]simpy のメモ

キューイングの見積もりに使ってみたので、備忘録。
見様見真似だったので、間違いとかあるかもしれんです。

  • 処理はenv.process()でシミュレーションステージに乗せる
  • yieldで処理のスイッチ。
  • 待ち行列理論を使う場合、到着の間隔を指数の乱数の逆数で取ればポアソン分布に従う
  • yield、とにかくyieldの動きについてよく理解すること

(´・ω・`)こんなところかね。
回り道のようだけど、チュートリアルをひとつずつ確実にやって理解していく方が早いと思ったです。

3つ目のは、理屈はよくわからんがそういうことらしい。
つまり、

transactionRate=単位時間/アクセス数  #ここは実測や、キャパシティ見積もりから入れる
generate_timimg = random.expovariate(1.0/transactionRate)

待ち行列理論とか読んでみたがめちゃくちゃ難しいな。
学生の頃の柔軟な頭ならどうにかなったんだろうかもだが、オッサンにはきびしい。
posted by koteitan at 13:48| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

2017年12月07日

aixでモジュールが32bitか64bitか判別する方法

linuxとかだとfileコマンドでいいんだが、AIXではRS600の実行モジュールだ!ドヤァ としか出てくれないので、
dumpコマンドを使う。

dump -ov ファイル でMagicのところを確認する。
64bitの場合は dump-ovx64  とやるみたい。
間違っている場合はエラーが出るので、どっちでもいいわけかな。




posted by koteitan at 15:31| Comment(0) | aix | このブログの読者になる | 更新情報をチェックする

2017年12月01日

why File#lastModified() returns zero ?

because  it's mistake  "p->p.getFileName().toFile().lastModified() ".
The correct Answer is "p->p.toAbsolutePath().toFile().lastModified()".


o......rz

lastModified() returns 0 means I/O Error occured  ってstackoverflowとかで見たのに、
ファイルシステムキャッシュか?とか仮想マシンのキャッシュか?とか迷走した結果、
このバグ発見に2日かかりました。
getFileName()だと文字どおりファイル名しか帰ってこないので、Servlet実行時のカレント相対で探しに行くから
そりゃファイルあるわけないんだよ。(´・ω・`)

自戒を込めて備忘録しとこ。



posted by koteitan at 10:55| Comment(0) | Java | このブログの読者になる | 更新情報をチェックする

2017年11月07日

M/M/sの窓口理論とsimpy

うん、難しい数学の話はよくわからんので、無し。(´・ω・`)
工学屋としてはいいから結果と道具を寄越せ、理屈は任せるスタンスで。
(ある程度は理解しないとあかんけどねぇ・・。)

んで、何かというと WebSphereのコネクションプールとか、スレッドプールとかの
キューイングネットワークの設定するときによく使われる窓口理論なんだけど式がややこしいあれ。
なんとか過程とか分布とかいわれても統計学やってないとさっぱりだと思う。
ならばシミュレーションしてみよう。
理屈はよくわからんが、どのぐらい必要かわかればよいのだ(ぉ

(1)pythonを用意しよう
(2)pip install simpy

あとはsimpyのチュートリアルとにらめっこして、youtubeのチュートリアルを見て
コネコネしてみる。

・コネコネしていてわかったこと

  シミュレーション単位はミリ秒でやったほうがよい。少数秒でやるとpythonの処理の遅延でうまくシミュレートできない。
  
  random.expovariate(1.0/transactionTime) の意味は 収束させたい数(transactionTime)の逆数を引数に入れる。
  間隔が指数分布になっていると到着率がポアソン分布になるので、結果がマルコフ過程に\(^o^)/ウボア

  リソースの獲得待ちはwithで
          with self.res.request() as req:
               yield req

  時間を消費するのを待つところ
    yield env.timeout(generate_timimg)

  このgenerate_timimgの扱いがよくわかってない(´・ω・`)
  これも指数分布にしていいのか、なんでもいいのか、固定値なのか、で結果変わります。

  15分分シミュレーションするなら、以下のように(ミリ秒単位)
  env.run(until=1000*60*15)  # 15分シミュレーション(unit=msec)
  
珍しく備忘録だな、こりゃ。(゚Д゚)


posted by koteitan at 11:30| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

2017年11月02日

Windowsのみでファイル行数をカウント

セキュリティ目的とはいえなんのスクリプトもツールも無しで
手足を奪ってから効率効率って、いうね(´・ω・`)

無いなら無いでなんとかするけど、プチっとイラっとするね。
いちいちエディタで開いて行を確認して、エクセルにコピペとかやってんですかね?

こちらを参考にコマンドプロンプトでどうにかしました。
%%iはバッチファイルに書くときの書き方なので、コマンドプロンプトに直接入力する場合は、
%を一つ減らして、%iと書いてね。




コマンドプロンプトでファイルの行数を数える方法

for /F %%i in ( filelist.txt ) do type "%%i" | find /c /v "" >> num.txt
posted by koteitan at 14:05| Comment(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2017年09月22日

拡張行サイズ

これで4Kだ8Kだ16Kだのページ制限から開放されて、クッソ大量のカラムをもつリレーショナルなんて糞食らえな
テーブルが作成できるぜ!ィヤッホゥ!☆-(ノ゚Д゚)八(゚Д゚ )ノイエーイ

んなわけあるか。ヽ(`Д´)ノウワァァァン!! やめてくれ。
こんな機能はマイグレーション時やシステム移行時の一時的な救済措置にだけ使え。
はみ出たデータは内部的にはblobやclobだ、Reorg時にもペナルティ食らうぞ。
金貰ってるんだからちゃんと設計しろ!

(;´Д`)ハァハァ よし、愚痴言い切った!

詳しくはここ

今北産業用
  • 拡張可能なものはvarchar/vargraphic (またはそれに準ずるもの)だけ(要は可変長だけ)
  • 一定サイズ以下の場合は拡張されずに行内に保存(varcharは24 vargraphicは12)
  • 拡張が適用されてもメタ情報が埋め込まれるので、そのカラムのバイトは1でも0でもない、24だ

行サイズはこのへんを見ながらちまちま計算するよろし。
posted by koteitan at 10:16| Comment(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2017年09月19日

IBMJREでの7.0と7R1(いわゆる7.1)の区別について

なんでこんなめんどくさい表記なのかわからないけど、普通にjava -version ってやっても7.1とはでてくれない。
7.0か7.1かを判別するにはJ9のバージョンを確認する。

7.0であればbuild 2.6
7.1であればbuild 2.7

(´・ω・`)こんなん役に立つかどうかわからんけど、
fix適用時とかにバージョンワカンネってなったときはどうぞ。


他のバージョンはちゃんと1.5とか1.8とか出るので、気にしなくていいんですが。

posted by koteitan at 14:39| Comment(0) | Java | このブログの読者になる | 更新情報をチェックする

2017年09月08日

cloc がコードメトリクスツールとして便利

windows版もあるしperl版もあるみたい。

Ubuntuなら、apt-get install clocでおk。
コマンドラインで各種メトリクスや差分、更新量がわかるので
プロジェクト管理とかにもいいかもですなぁ。
テキストやCSV,XMLで出せるので管理資料とも相性がよいかもですぞ。
VHDLにまで対応してたりしてすげぇなと思う。もうこれだけでいいんじゃないかってレベル。



posted by koteitan at 14:40| Comment(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2017年09月07日

V9でjythonが一気に2.7に!

今更遅いよ、って感はあるよね。(´・ω・`)
2.1から2.7まで一気に上げたみたいなので、
既存のscript、いろいろ問題でるでしょう。
予約語だって変わってるし。

マニュアル

リリース情報


ここから 備忘録 

pythonで予約語列挙するには

つ __import__('keyword').kwlist

pythonのバージョンを出力するには

つ sys.version

posted by koteitan at 18:24| Comment(0) | WebSphere | このブログの読者になる | 更新情報をチェックする