gamzatti: February 2020 Archives

初めての確定申告

gamzatti
Vote 0 Votes

今年度は、個人的に謝金をもらうお仕事もそれなりにあったので、人生で初の確定申告をしました。

確定申告は税務署に行かなければいけないイメージでしたが、最近は全て電子化されていて、支払いもクレジット払いで完了しました。

必要なのは、マイナンバーカードとe-Taxのスマホアプリさえあれば、税務署に行く必要も、書類を郵送する必要もありません。

PCでも出来る様ですが、マイナンバーカードを読み取るためのカードリーダが必要らしいので、スマホアプリが一番便利かと思います。

歴史と暗号

gamzatti
Vote 0 Votes

休日の夜は映画を見ることが多いのですが、最近見て印象に残った映画を2つ。

1つは"イミテーション・ゲーム"。
コンピュータの創始者と呼ばれるイギリスのアラン・チューリングが、第二次世界大戦時に敵対するドイツ軍が使っていたエニグマ暗号の解読に挑むノンフィクションです。特にITや技術が好きな人はきっと楽しめますし、セキュリティ関係者なら見ておいて損はない映画だと思います。
チューリングがエニグマ暗号の解読に使用した装置が、現在のコンピュータの元になっているとも言われています。
暗号解読手法などの技術的な詳しい部分は割愛されているので、詳しく知りたい方は、サイモン・シンさんの"暗号解読"を読むと、とても詳しくかつ分かりやすく解説されています。

2つ目は"ふたりの女王 メアリーとエリザベス"。
16世紀のスコットランドとイギリスと舞台にした、2人の美しく聡明な女王の王権を掛けた静かなる戦いが描かれたノンフィクションです。
私がこの映画を見た契機は、実は上記、"暗号解読"でした。

暗号解読"は、大部分がエニグマ暗号の解読について書かれていますが、それ以外にも、暗号の歴史的エピソードが綴られており、その1つとして、メアリー側の勢力が、エリザベス暗殺計画についての情報をやり取りする際に用いられた暗号について書かれています。
サイモン・シンさんの書籍の素敵なところは、技術解説だけでなく、人物像や歴史的背景なども書かれていて、読み物としても楽しめるところだと思います。


私は歴史が大の苦手ですが、2人の女王に興味を惹かれ、映画を見てみました(女王って、男性主義の日本では遠い概念なので、女性が国を統率するということに純粋に興味が湧きました)。
ちなみに映画では、暗号に関することには一切触れられていませんが、ドロドロして人間味のある王室の内部の実態や、2人の女王の気高さと苦悩などが描かれていて、印象的でした。

イミテーション・ゲームで描かれるドイツ軍は暗号が解読されたことによって敗戦に追い込まれ、メアリー陣も暗号文が敵に解読されてしまったことによって、悲劇にも命を落とすことになります。
現在だと、暗号が解読されても情報漏洩程度の被害であることが多いですが、昔は命がけの暗号、復号対決だったのですね。。

ADに対する攻撃のシグネチャ検知に、こちらの記事で書いていたアカウント名とSIDの不一致を検知するコードを追加してみました(compareSID関数)。

https://github.com/sisoc-tokyo/Real-timeDetectionAD_jornal/blob/master/tools/detectionTools/signature_detection.py

pythonを使っている人は多いと思いますが、リモートホストにあるプログラムをローカルマシンからデバッグしたいことがあると思います。

大概のIDEはリモートデバッグの機能を持っていますが、多くのIDEはリモートホストの新たなポートをデバッグ用に開放して、そのポートにつなぎに行くというものが多いと思いかと思います。

PyCharmには前述形式に加えて、sshで接続し、リモートデバッグする機能を持っています。

PyCharmはcommunity版とPro版があり、sshのリモートデバッグはPro版しか使えない様ですが、Pro版を持っている方は便利なので是非使ってみてください。手順は以下です。

1)プログラムをリモートホストへコピーする

2)PyCharmのpreference->Project InterpreterでSSH Interpreterを追加。その際に、リモートホストのIPアドレス、ID、パスワード、Pythonのパスを指定し、ローカルとリモートのプログラム位置のマッピングを行う(下図)

View image

3)後は、プロジェクトのRun configurationでPython Interpreterとして、2)で設定したSSH Interpreterを選び、実行するだけ

ローカルとリモートのプログラムを自動的に同期する機能もあり、その場合ローカルで直したコードが自動的に

リモートホストに反映されます。アップロードし直しが不要なので、便利ですが、いきなり本番環境のコードが書き換わってしまうというリスクもありますので、onにすべきかどうかは、ケースバイケースで検討が必要です。

以下のサイトも参考になります。

https://qiita.com/masahiro-fukushima/items/67959a0dfede69c9d653

ラズパイ4でWifiの接続は不安定な問題に直面し、検索したところ、以下の記事が。

画面を2560x1440の解像度に設定すると、電波が干渉して、2.4GHz帯のWi-Fiに繋がりにくくなるそうです。

実際に、解像度を変更したところ、問題が解消されたので正に以下の問題だったことが分かりました。

解像度とwifi、想像もつかないところですが、記事の著者は、よく問題を特定しましたね。。。

助けられました。

https://gigazine.net/news/20191206-raspberry-pi-4-wifi-problem/

python-opcua

gamzatti
Vote 0 Votes

最近、ICSに対するセキュリティリスクやIndustory 4対応などでOPC UAが注目を集めていますが、OPC UAに対応している製品はまだ少ないのかなと思います。

また、実際の製品を買うのは効果なので、お手軽にOPC UAを試せる方法がないかなぁと調べていると、便利なPythonのライブラリがありました。Python OPC-UAというライブラリです。

https://github.com/FreeOpcUa/python-opcua

OPCサーバ、クライアント両方実装でき、便利なサンプルも用意されているので、Pythonの実行環境さえあれば、すぐに動かせて、OPC UAの動きを確認できます。OPC UAのメリットである暗号化や認証の機能も用意されています。

Examples配下にサンプルがあり、単に動かしたいだけならserver-minimal.pyとclient-minimal.pyを動かせばOKです。

折角なので、暗号化や認証の機能を使いたい場合、サーバはserver-with-encryption.pyをそのまま使えますが、クライアント側はぱっと見、暗号化や認証を行なっているサンプルコードがなかったので、作成してみました。使い方などはHowToUse.pdfを見てください。

https://github.com/sisoc-tokyo/AttackDemoTookkit_Industry4/tree/master/tools/opc-ua/examples

流れとしては、サーバ・クライアントそれぞれの証明書と秘密鍵を作り、set_security()関数で、セキュリティポリシーや証明書、秘密鍵を指定する必要があります。

設定が正しくできると、通信が暗号化されるのが分かります。WiresharkはOPC UAを理解してくれるので、便利ですね。

クライアントの認証方式には、証明書とパスワードがある様ですが、この辺りの挙動の違いなども、追って検証していきたいと思います。

なお、OPC DAをOPC UAに変換するCogent DataHubというソフトもあるのですが、構成が複雑になる上に、製品固有の仕様に引っ張られて理解が難しかったです。

個人的には、OPC UAの仕様を理解したいだけなら、OPC UAのライブラリを使って自作した方がシンプルで分かりやすいかなぁと感じました。

About this Archive

This page is an archive of recent entries written by gamzatti in February 2020.

gamzatti: January 2020 is the previous archive.

gamzatti: March 2020 is the next archive.

Find recent content on the main index or look in the archives to find all content.