月別アーカイブ: 7月 2016

問題解決に向けた数学的アプローチまたは、現象の数学的記述による表現

問題解決に向けた数学的アプローチまたは、現象の数学的記述による表現。

過去の偉人はすごいなーと思います。

アグナー・アーラン

クロード・シャノン

プログラミング の効率アップにむけて

プログラミングで、大量に似たような処理を作成するときに、とれるアプローチとして「プログラムを作るプログラムを創る」というのがあります。

これは、ある形式での提出を求められる時に、その形式でプログラムが生成される仕組みを作ることなんです。

ある種の条件を入力値として与えると、求めるプログラムを生成してくれる仕組みを、プログラミングする。つまり作り込むということです。

ちょっと見渡すと、既にその事例は、沢山存在しています。

HTMLは、ハイパーテキストマークアップランゲージですが、まさにランゲージであり言語です。

プログラミング言語と似た様なものです。

当初はWEBページを手軽に作成するツールが高価だったり入手できなかったりで、手作業で一ページづつ、テキストエディターで書いていたりしましたが、今は、結構自動作成される時代になりました。

Frightrada24の画面などは、手作業でかける様なものではなく、最新データをもとに自動生成されています。降雨量や雨雲を見るX-bandレーダーなどもそうです。

HTMLだけではなくて、ほかにXML,VRML,postscriptや Javaなどを自動生成する仕組みも出てきています。

これは、実は、アルゴリズムを自動的に考案するのではなくて、既に考案済みのアルゴリズムを適切に組み合わせることで、求める結果が得られることが判っている部分がについて、自動化を図ったものです。

条件を逸脱したときに、大量のバグを生成しない様に配慮が必要ですし、作成した仕組みに本当にバグが無いかをチェックするのは大切なことであり、実に骨の折れる作業ではありますが、つくれると、大量に高速で生成可能になるので、とても便利です。

電子メールというものについて

電子メールの安全性は、基本、他人がその安全を守れない。言い換えれば電子メールの安全を守れるのは利用者以外にない。と言うことについて。

結局は、受信者にしか判らない方法で、送信者がメールを記述するより無い。

かなり前になりますが、電子メールについて、プロバイダーさんに、質問をしたことが有ります。「電子メールって、第3者に漏洩しますか?」と、その回答は実に的を得た回答でした「電子メールに、どうしても安全をお求めに成りたいのなら、ご自身でしっかり勉強をなさって、電子メールというものについて、熟知してからお使いになるのを、お勧めします。」と言うことでした。その時は、なんて、愛想のない人だろうと思いました。でも、この時頂いた回答は、まさに正解でした。

<他人は電子メールの安全を守れない>
<電子メールは単純なのに、複雑>
<電子メールは安全だと勘違いするシーン>
<空気に録音機能は無いが、メール配送路には記録機能が無い事もない>
<ルータのルーティングと、メール配送経路は別次元>
<完璧な暗号化だと何で判断をすればよいか>
<私の歩いた紆余曲折>

—————————————————————————————————
<他人が電子メールの安全を守れない>
他人は、「使い方を伝授する」とか、「注意換気をする」とか、「便利なツールを紹介する」とか、「どう言うメールアドレスから、どう言うメールアドレスへの送信の場合、何処にリスクがあるかを考慮すると良いよ」とか「何処から送信する場合は注意が必要」だとか「何処で受信する場合は注意が必要」だとか、そういうアドバイスをする事は可能ですが、メールを送受信する人の操作次第で、ヘタをすれば漏れたりしてしまいますから、結局は利用者自身が注意深くメール送受信をする事に成ります。

<電子メールは単純なのに、複雑>
「メールを書いて、送付する。」「メールを受信して読む。」と言うだけの事です。そこに、どんなメカニズムがあるのか?と言う事について、利用者がしっかりわかっているか?というと、これが厄介で、判って無いのじゃないかなと思います。
「メールを読み書きする」という、その行為についてさえ、見た目と、実際の処理メカニズムの認識について、認識がズレていて、正しく理解できていない人は多いと思います。
まず一つ目は、電子メールの方式は一つじゃないと言う事。2つ目は異なる方式間でメール送受信をする例も多いと言う事。3つ目は、送り手から受け手までに経由する経路が、利用者には見えない。
「複雑」だと言う理由ですが、電子メールは、様々な技術を寄せ集めて実現しているので、総合トータルとして安全か、安全ではないかを判断出来るようになるまでは、相当広範囲に深い知識を学ばないと、全容が見えてこない。からです。
方式的に通常のSMTP形式のメール配送だと、受信方式にPOP3とIMAPがあります。

電子メールの方式には、有名なところで、「SMTP形式」と「WEBメール形式」と、「SMS形式」が存在します。

SMTP方式の場合、メールアドレスはPOP3サーバーか、IMAPサーバーにメールアドレスが存在します。そして、メールを預けるサーバーがSMTPサーバーです。プロバイダはSMTPサーバーとPOP3(またはIMAP)サーバーのセットで運用しています。
利用者AとBが同一プロバイダに加入していて、別プロバイダに利用者Cが居る場合を想定では、下記の様になります。
利用者Aから利用者Bへのメールの経路は、利用者AがSMTPにメールを預けると、預けられたSMTPは、宛先を調べます。
そして、宛先がよそのプロバイダではなくて自分のところの契約者の利用者Bだと判ったら次のSMTPにメールを預けずに、自分のところのPOP3にメールを預けます。POP3サーバーはメールを預かり、利用者Bが問い合わせてくるのを待ちます。利用者Bが自分のメールアドレス対応のPOP3サーバーにメール到着確認をすると、到着しているので、ダウンロードをしてメールを読みます。
また、利用者Aが利用者Cにメールを出した時は、利用者AがSMTPにメールを預けますと、メールを預けられたSMTPは宛先をしらべて、自分の加入者じゃなく、よその加入者だとわかると、そのメールアドレス(宛先ドメイン)への方路のSMTPを調べて、そのSMTPにメールを託します。そして、託されたSMTPは同じく宛先ドメインを調べてその方路のSMTPに預けます。そのようにして最終的に宛先ドメインのSMTPに渡ると、そのSMTPサーバは自分のドメインのメールアドレス宛なので、POP3サーバーに預けます。メールを預かった宛先ドメインのPOP3(またはIMAP)サーバは利用者Cが問い合わせに来るのを待ちます。そして、利用者CがPOP3サーバーにメール到着確認に来て、到着を知りダウンロードをします。

smtp

これは、SMTP方式のメール配送の概略です。
また、昨今インターネットが世界的に普及したおかげで、中間のSMTPに預ける例が減り、ほぼ直通で宛先ドメインのSMTPサーバーに預ける確率が高くなりましたが、絶対に直通で預けられるかはケースバイケースであり確約は出来ません。

この方式ですと、SMTPサーバーにメールの痕跡が残るリスクと、第3者がメールを知るリスクが有ります。
またPOP3サーバーやIMAPサーバーへの接続に使うパスワードが漏れると、そこにメールが留まる期間に第3者が利用者のパスワードでログインして見てしまうリスクも有ります。
野良WIFIなどから不用意にメール閲覧をすると、メールアカウントとパスワードを読み取られかねませんから、TLS/SSLで接続を暗号化することで、パスワードの漏洩をガードする事が大事です。

また知識として、POP3方式で言えば、POP3サーバーへの接続に認証が必要か?必要じゃないか?必要ならその認証方式は?とか、SMTPサーバーへの接続に認証が必要か必要じゃないかとか、TLS/SSL暗号化をどのセッションに利用されているかとか、そう言う知識が最低限必要になります。(安全性が確保されたかを厳密に確認する場合に)。

次に、WEBメール形式ですが、これは、代表例がGMAILです。SMTP方式のメールと、どう違うのか?と言うと、メール読み書きにWEBブラウザや専用アプリケーションを使う事で、WEBメールサーバーと端末との接続に、HTTPSと言う暗号化セッションを使う点が異なります。

web

この例では、利用者のA,B,Cについては、WEBメールサーバーとの読み書きの接続はHTTPSの暗号化通信で、読み書きを行いますので、他人がその内容を知るリスクがかなり低いと言えますが、問題は、WEBメールにアカウントを持たない利用者Dへのメール送受信です。利用者Dと利用者A(B,C)の通信は、SMTPサーバーを経由しますので、そこで第3者が知ってしまうリスクが伴います。
関係者全員が一つのWEBメールサーバーにアカウントを持てば、よそのSMTPに預けることがなく、安全だと言えますが、WEBメールサービスを提供する組織にしてみれば、利用者A,B,Cの間のやりとりが時系列的に、全部サーバーに存在するため、そのメンバーの活動をつぶさに知ることが可能となってしまいます。

また、他に有名なメール方式としてSMSが有ります。これは電話番号宛メールといえば判りやすいと思います。これは基本、暗号化はありません。事業者Aの端末利用者から、事業者Bの端末利用者にメールを出す場合に、端末入力された文字列をそのまま渡します。SMSは、ほぼ全世界を網羅していると思います。そもそも、日本では、i-modeメールと言う方式が携帯電話に搭載されましたが、海外ではSMSが主流でした。SMSのメールは制限が多いので、インターネットメールである、SMTP方式やWEBメール方式より表現力が弱いです。文字数制限があるとか、利用できる文字コードに制限があるとか、添付ファイルを付けられないとか、そう言う制限があったと思います。

<電子メールは安全だと勘違いするシーン>
・メール伝送において、7ビット伝送をしている例では、8ビットデータだと勘違いして読もうとすると、まるで暗号文のように文字化けしているが、実は7ビット伝送なので、8ビット伝送用に単純にデータ変換をかければ読めてしまう。

・電子メールに使われるTCP/IP通信はパケット通信であり、文章は細かなパケットに分割されて、相手に渡されるため、途中で盗聴仕様としても、文章の一部しか入手できず、全文を入手するのは困難であると勘違いされがちですが、確かに、ルータやHUBでのモニタリングについては、文章の一部しか一度には入手できず閲覧困難ですが、SMTPメール配送は基本的にはファイル転送方式なのです。つまり、SMTPサーバーからSMTPサーバーへファイル転送されます。同じようにSMTPからPOP3/IMAPサーバーへもファイル転送なんです。そのファイル転送を行う通信手段がTCP/IPのパケット通信なので、途中のルータやHUBでは盗聴はやりづらいですが、SMTPサーバー内部では一つのファイルとして存在する瞬間があるため、このファイルを見られれば、メールを盗聴されてしまいます。

・モバイル端末から出る電波は、電波方式がスペクトラム拡散方式なので、解読は、ほぼ不可能。と言う触れ込みについて、確かにその電波の傍受と解析は困難かもしれないが、通常は、受信者に届く迄に何処かでインターネット回線を経由する部分があり、そこは電波じゃないし、スペクトラム拡散方式でもない。

・送信端末と受信端末の間に、多数の中継サーバーを経由するのが通常だけど、利用者はあまり意識しない。

・多数の中継サーバーの保有会社や団体は、単一の企業一社に収まることは少なく、通常、異なる複数社のサーバーを経由する。そのため、ある組織に対して盗聴したんじゃないかと主張するためには、関連する他の組織の無実を根拠としなくてはならなくなる。

・通信の秘密に関する法律が日本にはあるので、閲覧者が居ても他言できないはず。と思いがちですが、経路が国内に収まる保証がないので、海外のサーバーを経由するときに、海外でデータを閲覧された場合に、国内の憲法を持ち出しても効力が無い。よその国にも通信の秘密に関する法律があると思い込むのは早合点で、無い国は先進国でも多く、仮に通信の秘密に関する法律があったとしてもその内容が日本と異なることも有り、知り得た情報を私的に利活用しないさせない歯止めになっていない

・電子メールのメーラにTLSやSSL対応の暗号化セッションの仕組みを導入して使っているので見えないはず。と思うかもしれませんが、そのTLS/SSLの暗号化セッションは、受信者まで届くセッションではないということ。そのセッションはメーラーと直近のSMTPサーバー間、またはメーラーとPOP3サーバー間までのセッションを暗号化しているに過ぎず、送信においては、直近のSMTPから先は利用者は制御出来ないし、受信においては、自分の直近のPOP3サーバに到達するまでの間について制御できないのです。

<空気に録音機能は無いが、メール配送路には記録機能が無い事もない>
・空気は録音していないので聞き逃すと、話し手にもう一度尋ねるよりありませんが、電子メールは何処かに電子的に保存されているリスクが有ります。

<ルータのルーティングと、メール配送経路は別次元>
・SMTP転送において、あるSMTP-Aから、あるSMTP-Bへのインターネット経路はインターネットの経路ルーティングに左右されます。
しかし、あるSMTPが、次に何処のSMTPに預けるか、(SMTP-AかSMTP-Bか、SMTP−Cかなど)を判断するのは、インターネットのルーティングでは制御出来ません。SMTPサーバの管理者の意向と判断基準により、次にメールを預けるSMTPは決まります。

<完璧な暗号化だと何で判断をすればよいか>
暗号化方式を検証する組織がそんなに無い。利用者としては噂を信じるしか無い。
一例として、ZIP暗号化と言う方式が有りましたが、昨今108秒で解読される時代になりほぼ無意味になりました。
ZIPと言う圧縮方式があり、それに暗号化機能が追加されたものでした。このZIP暗号化はWindowsも正式に対応していたのですが、最近のWINDOWSではZIP圧縮機能は残しているものの、暗号化機能は削除されました。その理由は、ほぼ無意味になった暗号化機能を搭載しておけば、事情をあまり知らない利用者がその暗号化機能を利用してしまうリスクがある事と、無用な安心感を与えてしまう誤解を与えてしまうため、その問題を避けるためだったと思います。

<私の歩いた紆余曲折>
・niftyやasahi-net等複数のBBSに加入しそこでメール機能を利用していました。当初どこのBBSも相互乗り入れをしていませんでした。ですから、加入するBBS毎の自分のUSER-IDやそれに対応したメールアドレスを持っていました。そのため、コメントを書いたり意見を述べた場合に、私にだけ何かメッセージを送りたい方には、私のUSER−IDやそれ対応のメールアドレスに、ご連絡いただくことになります。
相互乗り入れがないので、私宛のメールがよそのBBSに飛ぶなんてことは考える必要はありませんでした。
・やがて、BBS相互間で、相互乗り入れをする事例が出てきました。niftyとconpservが相互乗り入れをしましたので、日本のnifty加入者はアメリカのcompservの、かなり多くの利用者との直接メール送受信が出来る時代になりました。
この時、niftyのUSER-IDをメールアドレスとしていたのを新たなメールアドレスに変更する必要がありメールアドレスは変更になりました。そして、メールアドレス変更の時に届いたのが、今後のメール送受信での注意事項・留意事項というもので、結構な長文で、注意喚起の内容が届きました。メールアドレスを間違った場合、そのメールアドレスが存在するなら、機械的に届くので、取り消しは出来ないと言う事。メールサービス提供を一社でやっていたBBS時代なら、利用者サービスの一環として、今、出したメールを取り消したいという無理な要望にも答えられたかもしれませんが、よその会社との相互接続では、そう言う利用者サービスは、困難だったのではないかと思想像します。文化も法律も異なる海外とつながるので、トラブルについては一切関知できないので自己責任で対処する必要が有ります。と言うようなことだったと思います。

・PHSのキャラメール、ドコモのPHSに閉じたメールで、とうとう最後まで、相互接続はなかった。

・アメリカ以外の、しかもパソコン利用者じゃない人と、メールする必要が生じた。そこで、調べた結果わかったのは、i-modeメールより、SMSの方が当時(2009年ごろ)はメジャーだということ。端末機種ごとに文字コード体系が異なる場合があり、まず、日本語でSMSを送受信できるのは、日本のメーカの端末しかなく、漢字文化圏の端末でも漢字コードが異なると文字化けして全く読めない。せいぜい1-9,a-z,A-Zくらいしか文字を使うことが出来ない。

・BBSアクセスをワードプロセッサ専用機でやっている人たちが居た。パソコンと異なるコード体系を持つワープロ専用機でBBSに書き込みをされると文字化けして読めない。が同じコード体系の機種を持つ人同士は読めていた。つまり海外と相互接続担ったあとも、ワードプロセッサ専用機を持ち出す人のメールはコード体系が異なるので他人が読みづらかった。というか、niftyとcompservが相互接続をやり始めた1986年の頃には、漢字コード体系を搭載するOSとしては、MS-DOSの日本語版とかWINDOWSの日本語版ぐらいしかなくて、海外で一般的に利用されるWINDOWSやMS-DOSで漢字を表示できなかったと思われます。そのため、日本人同士の漢字かな混じりメールを仮に傍受しても、表示が困難だったのではないかと思います。

・S/MIME暗号化方式の練習。FreeCAと言うサイトが現れて、通常は高価な「公開キー/秘密キー」のセットを無料で払いだしてくれた。事が有りまして、友人とS/MIME暗号方式を試しましたが、暗号処理の負荷がかかりまして、PCがあっつあつ。5人なら、5人毎の公開キーをもらって、それぞれに暗号処理をかけて送り出しますので、単純にCcで5人に当ててメールを出すときに、暗号化なしなら、瞬時に送信処理が終わるのに、それぞれに対する暗号化を行いますから時間がかかりました。でも現在の高性能PCなら、瞬時に送れるでしょう。当時はきつかったです。それと、受信したメールは暗号化された状態で保持されるので、閲覧毎に解読処理が必要であり、やっぱりパソコンがアッツアツになった。これも、当時のPCの非力さゆえの出来事であり、今のPCなら、難なくこなせると思います。
暗号化された状態でメーラーで保持されているので、メール検索が出来ない。
暗号化された状態で保持し続けると、やがて、認証キーの有効期限切れで、暗号解読できなくなる。これについては、パソコンの内部時計を戻せばいいじゃないかと思えますが、大量のメールの引越し作業が発生するので辛い。
メーリングリストとS/MIME暗号方式はあまり、なじまない。S/MIME暗号方式はメールアドレスに対応して暗号化をしますので、メーリングリストの場合、どうすんねん。と言う課題が生じます。解決ソリューションは存在しますが。きちんとメールのことを理解してからやらないと、失敗した時に責任の重さに潰されそうになります。取り敢えず、チャレンジするけど、失敗した時はごめんね。でやらせてもらえれば問題はないのです。

・国家間で軋轢があるような報道を見るにつけ、通信の安全を確保する約束が双方の国家間で保たれる努力が正常に行われているか疑問。言い換えれば、ITでシステムを作るときに通信の安全を確保できないと困るわけで、確保するには法的歯止めなどが正常に機能していることが前提なわけであり、それには、各国が仲良く歩調を合わせている事実がを見ないと信用できないわけでして。それが、実現できる日が来るまでは、通信に信頼を置く根拠がないので、切断とか、改ざんとか、盗聴はあるものとして、事に当たらざるを得ない。

・世界のインターネットメール配送網は、複数の異なる会社や団体、個人の設備で成り立っている。
サーバーとサーバー間の回線は電話会社の設備を借りるけど、コンピュータやサーバは電話会社の設備じゃないし。
・迂回路等で、経路は時々刻々変化している。
・サーバー故障時代替サーバーに、瞬時に切り替わる仕組みは何処にでもある。
・インターネットメールとその配送に係るソフトウェアは単一では無く、改造版もある。
・法的に歯止めがかかっていない国家を経由する通信を利用者が認識できる手段も、保証もない。

インターネットメール配送について、届いていればOKじゃん。
安全を求める声を上げて複雑化させることに意味はないのじゃないか。
それよりも、送信者は、受信者にだけ解読できる文面でメールをする事を考えるか、デリケートな内容はメールに書かないほうがいいのじゃないか。

と言う事で、他人のメールの安全を守ってあげることはとても困難だと思えて。

 

コンピュータ古今

日進月歩、秒針分歩のITですから、どんどん変わっていきます。

以前は当たり前だったのが、時間と共にそうじゃなくなる。一つの例としてチャタリングについて、見てみます。

TK-80とかPC-8001の頃って、キーボードの読み取りには「チャタリング対策」が必要な時代でした。アプローチとしてチャタリング防止回路やソフト的にチャタリングを回避する手法などが行われていました。
※チャタリングとは
※チャタリング対策に関して記述されてるブログ

でもやがて、本体とは独立したキーボードが使われる時代に変わりまして、チャタリング対策からプログラマは開放されていきました。チャタリング除去回路やソフトはキーボード内部に配置されるようになりました。PC-8801のキーボードについて調べますと、D8049と言う8ビットマイコンがキーボードに内蔵され、本体と通信していたようです。

全部の処理を本体で行っていたのが、徐々に機能を切り出して、外付けの制御回路なり、もう一台コンピュータ別のコンピュータで行う方式に変化してきて、機能分散や負荷分散をしてゆくようになってきました。その動きの中で、FDDでは、APPLE IIとNECのPC-8001とでアプローチに違いが有りました。

APPLE-IIは、FDDの制御一切を本体側CPUとファームウェアでこなしていたのに対して、NECのPC-8001に接続されたFDDシステムのPC-8031では、FDDの制御一切を本体側は行っておらず、PC-8031側でこなしていました。このように記述しましても、今ひとつピンときませんよね。FDDでの読み書きのタイミングについて、APPLE-IIでは本体側CPUがやっていたのに対して、NECのPC-8001では、そのタイミング制御はPC-8031側がやっていました。本体側のPC-8001は、PC-8031に読み出しや書き込みのオーダーをコマンドと言う形で渡して、その応答を受信するという形で、PC-8001とPC-8031間でコマンドとその応答受け取りの通信をしていたのです。

そのどちらの方式が良いのか?については、利用者がどう言う使い方をしたいかで、双方の持つメリットとデメリットどちらが、良いかは変わってくると思います。

まずAPPLE-IIでは純粋にFDDとの間は、制御ゲーブルでつながってるだけでした。
かたやPC-8031のDISKシステムでは、コマンド送受信の通信インタフェースが必要だったのとコマンド解釈とFDDの制御のために、本体のPC-8001よりも贅沢なコンピュータシステムが入っていました。
何が本体より贅沢か?、と言いますとRAMが48Kも入っていて、本体の32Kよりたくさん搭載されていたのです。
画面表示関連の回路こそ無いものの、演算性能で本体を上回れそうな構成でしたし、値段も本体側16万8千円に対して、DISKシステムが31万円と倍のお値段でした。

と言う事で

APPLE-IIのメリット・デメリットは
・コストが安い。(実際の販売価格は要調査ですが。。。)
・本体側でFDD制御について、相当細かいパラメータまで利用者が変更したり、いじることが出来る。

PC-8031のメリット・デメリットは、
・ハードウェア構成が本体以上とも言えそうな構成でありコストがかかる。
・FDD制御に関する細かいパラメータを利用者がいじるにはやや面倒。
・コマンドを送りつけておけば、開いた時間を利活用するつもりがあれば
(つまりコマンド応答をじっと待つプログラムを組まなければ)本体側は、
FDD制御に時間を取られることがなく、他の処理を進められ、トータル性能を上げる可能性を秘めている。

というようなことだったと記憶しています。が、詳細については、これをご覧になった方々で、また調べていただけたら、幸いです。

さて、本体とつながるものに、キーボード、マウス、FDD,HDD、ディスプレイ、カメラ、その他いろいろなデバイスが有りますが、キーボードがインテリジェント化し、FDDがインテリジェント化し、当然HDDも、ディスプレイも、カメラもインテリジェント化していく中でそれぞれのデバイスの中の制御回路はハードウェアロジックで組んでもいいし、小さなコンピュータで組んでもどちらでもよくて、要はインタフェースをしっかりとしてあればやりとりが出来るんです。

本体とのデータやコマンドの送受信をしっかりとできればよいわけです。

そうそう、コンピュータを習い始めた時に、コンピュータの5代要素として

「入力」と「出力」と、「制御装置」、「演算装置」、「記憶装置」等を図に書いて習ったと思います。

インテリジェントキーボードの場合、入力はキーボードのキーであり、出力は本体に伸びるインタフェースケーブルであり、インテリジェントキーボード内部に制御装置と演算装置と、記憶装置がある。ということになります。5代要素はキーボードにも、FDDにも、HDDにも、存在していますから、システム全体で見れば、5代要素を持つものの集合体になっているという認識になるはずです。

UPS電源なども、昨今マイコンが入っていると思います。UPS電源における、マイコンの御役目はなにか?バッテリー残量を監視するとかでしょうか?いえいえ、UPS電源は短期間の停電をしのぐ機能であり、長時間停電におけるバックアップ電源ではないので、しばらく停電が継続したら、システムを安全にシャットダウンするのが御役目です。

そうです、停電によるシステムクラッシュとそれによるデータ破壊や消滅を回避させることであり、停電時にシステムを正常終了させることが使命です。

そのため、UPS電源にはコンソールケーブルが用意されているものがあるはずです。

このコンソールケーブルをシステムコンソールにつないでおいて、停電が、ある程度継続すると判断された場合に、自動定期にUPS電源のコンピュータがそのコンソールケーブルを通じて、システムにシャットダウンコマンドを送り込み、パッテリーが枯渇するまでに安全なシステム終了をさせるのです。

コンピュータの構成を知り尽くしておかないと、セキュリティーの仕事をこなすのは難しいです。UPS電源のコンピュータにシステムの最高特権レベルのパスワードを教えておくべきか、置かないべきかとか、考えておく必要が有ります。廃棄において、コンピュータに教えた事柄を消す必要があるか、無いかとか。

スタンドアローンのシステムなら、UPSの廃棄で、最高特権レベルのパスワードが漏れても、ネット経由で入られる心配がないので、システムが設置されている建造物への侵入がなされない限り安全ですが、ネットから入れる環境の場合、パスワードが漏れるとかなり危険にさらされることになります。

と言う事で、セキュリティー関連とか、アドミニストレータの上級クラスとか、システムアナリストと言う職種においては、相当広範囲な知識が必要になってきます。

ネットワークに繋がっている、コンピュータはあらゆるところから、侵入されるリスクが有りますから。

さて、ポート番号 と聞いて何を思い浮かべますか?。人によりまちまちなんですが、割り込みの解説で書いたIOポートもポートと呼びますし、USBもUSBポートとか、言いますよね、LANのLANポートとかHUBの空きポートとか、結構ポートという言い方をします。

案外、コンピュータ初心者は、ポートの分別が出来ないのです。英語辞書でポートを調べると、港とか書いてあって、基本的には港と言う概念で良いのですが、他人と会話する中でポートと言う名称を使うときに誤解を生じがちだと思います。

下記の3種類は異なるものですが、それぞれ、ポートと呼びます。
<差込口と言う意味でのポート>
差込口と言う意味で、空きポートがあるか?とか、LANポートがあいているか?、USBポート全部使った。とかそう言う会話をすることが有ります。

<IOポート>
これは、USBのポートや,HUBのポートとは基本的には別の意味です。コンピュータ内部通信で、IOデバイスと、ハンドシェイク通信をするときの、仕組みにおけるデバイスの識別のためのIO空間とそのマッピング対応でのポート番号なのです。

<TCP/IPのポート番号>
これは、TCP/IP通信で、セッションや、サービスを識別するための番号です。

つまり「ポート」とか「ポート番号」と言う言葉で、何を指し示して話したいのかを聞き手が判断するときに、勘違いしないためには、話し手に尋ねることが大切です。いまどの話題でおっしゃっていますか?と、そうやって誤解や勘違い回避する努力をしないと、ちょっとまずい事を起こしてしまいそうに思います。

例えば、事務所にルータやHUBがあって、何も刺さっていない口がある場合に、誰か、部外者が入ってRJ45ポートにケーブルを繋ぐと、ネットから侵入される危険性が有りますから、口の開いているポートに詰め物をして、塞ごうと言う事があると思います。

で、そのたぐいの口を塞げば安全か?といえば、ネットからのリスクを考える場合、TCP/IPのポート番号についても不要なポート番号を塞ぐ措置をしなくてはいけません。

TCP/IPのポート番号を塞ぐ対処が必要です。LAN内部においては、サーバー間でtelnetログインを許可していても、よそからのtelnet接続をさせたくない場合は、ルータで外部から内部へのtelnet接続要求は破棄するようにファイアウォール設定をすると良いと思います。

つまり、telnetd(テルネットデーモン)は、サービス受付をTCP/IPのポート番号23で待ち受けているので、通常telnetクライアントのターミナルソフトで接続要求をかける場合は、該当サーバーのポート23番狙いで接続要求を投げてくるので、外部から内部サーバーのポート23番狙いの接続要求について破棄する設定をルータに設定することでファイアウォールとしてガードするわけです。この辺の会話でですね、TCP/IPのポート番号の話をして、通じない相手の場合、ファイアウォールの基礎知識が薄いとわかりますし、ポートと言う言葉で指し示すあれこれについてしっかりと識別できない相手の場合セキュリティーに関する突っ込んだ話が出来ないと言うことになります。

また、PC利用者が自分のUSBメモリーやUSB接続外部HDDにデータをコピーして持ち去らないようにするには、USBポートを閉めるソフトウェアを導入してコピーさせないようにするなどの処置をすると思います。

その他、PCに拡張ボードを何枚か刺した時とか、USB接続のデバイスをいくつか接続した時にデバイスのIOポート番号がかぶってしまって、デバイスドライバーがうまく動かない。どのデバイスのIOポート番号がかぶっているんだろう?。とかそう言う言い方をすると思うのですが、この辺初心者はわかりづらいと思いますし、案外熟練者でも勘違いしている場合があるんじゃないかと思います。

セキュリティーや、安全確保についてですが、それにはどう言う項目をチェックする必要があるのかをもれなく知っていて、正しい知識と概念で、本来どうあるべきなのか?を理解していることが、望ましいですよね。玄関をコンクリートと鉄筋で完璧に封鎖しましたが、裏口は開きっぱなしです。とかそういうのでは意味がないのです。幌の軽トラックに札束積んで現金護送しようとしてるような感じにならないように。仕組みや特性を十分に理解して、対処案を講じないと効果が出ません。そのためには、相当広範囲に正しい知識を持っている必要があると思います。

コンピュータケースに鍵穴があるタイプが有りますが、あの鍵穴はなにのためにあるのでしょうか?。メモリーを持ち去られないとか、HDDを抜いて持ち去られない為とか、HDDを抜いて、コピーされ、パスワード解析などされない為とか、異なるHDDに差し替えられないようにする為とか、いろいろ考えられます。

昨今はやりの、レンタルサーバーや仮想サーバーにおいて、その仮想サーバーにケースが存在するんだろうか?。と言う疑問が有りますよね。

ベアメタル型というのは、物理サーバーを貸し出すタイプだそうです。

ベアメタル型じゃないのは、物理サーバー上に仮想的にソフトでエミュレーションされた仮想マシンですので、物理的な鍵穴は存在しないということになります。

ソフト的な仮想サーバーにおいては、スナップショットを作るとかコピーを作るというのは案外簡単ですから。HDDを抜いて持ち去られて、コピーした後に戻されるというのと同等なことが、コマンド一発で可能では有ります。事実このブログを書いている私のPCのWordPressを動かしている仮想マシンでは、そう言う方法で、世代毎にバックアップを残しています。

もしも、パスワードを忘れてしまったら、過去に保存した各世代のバックアップを何処かの環境にコピーして動かして、思いつくパスワード全部を試せばいいわけです。そうやって忘れたパスワードを思い出そうとしている間も、原本は、サービス継続していて、何ら影響を受けることはない。

私の場合、自分のブログを残している仮想マシンのクローンへのアタックは、自分が所有する自分のマシンへのアタックであり倫理上も法的にも問題はありません。

でも仮に家族のブログを収めている仮想マシンに対して、家族本人に内緒で、アタックを行う行為については、倫理上問題が有りますし、法的にも問題があるかもしれません。

でも、仮にアタックしたとしても原本じゃなくて、コピーされたクローンへのアタックですので、所有者である家族はなんら、気付くことはないと思います。

そう言う仮想マシンが持つ特性を踏まえますと、あまりデリケートな事柄を仮想マシンに入れるのは、危険だなと思います。

こう言う特性は、仮想マシンに限ったことではなくて、インターネットでつながるすべてのものについて言えることではないかと思います。

閑話休題

スポーツカーのスーパーチャージャーのボタン。
ボタンを押せば、ものすごいパワーで加速することが出来るスポーツカー。
そのボタンを押さないと最高性能は出せないのだという事を知らない人は、アクセルベタ踏みした時の加速が最高性能だと思っているのかもしれません。

電子メールのS/MIME高度暗号化がそんな感じかもしれません。
電子メールを使うメーラーにはS/MIMEによる高度な暗号化を施したりまたは、S/MIMEで送られてきた高度な暗号機能により暗号化された文書を解読する機能は搭載されているのにも関わらず、過去に一度も使ったことがない。とか、そう言う方は、少なからずおられると思います。

この件について、検証をするのは割と簡単です。
「自分は自分のメールアドレスに対応した、公開キーと秘密キーをもっているか?」
「自分のメールアドレスに対応した公開キーを、自分宛てにメールを送ってくれる人に手渡すようにしてあるか?。」
「自分は、メールを送信するにあたり、受取人のメールアドレス対応の公開キーを事前に受け取ってあるか。」
「自分は、メールを送信するにあたり、メーラーに暗号送信をさせる設定をして送信したか?。」
等を確認すれば、結果は直ぐに出ます。

マイクロコンピュータの割り込み処理について

マイコンでは、割り込み処理に関する知識は、とても重要です。割り込み処理に入るトリガーとなるものが、割り込み信号でして、英語で書けば「Interrupt」や「Interrupt signal」とかになると思います。CPUの足の説明などでは「INT」と記述される信号線です。

私が初めて、割り込み処理について勉強をしたのは、高校の1年の夏頃でして、昭和52年頃だった様に思います。

<2種類の割り込み処理>
まず、割り込みシグナルの信号線は、大概のCPUには存在しています。この信号線を通じてCPUに突発的最優先処理課題の発生を通知するのが、ハードウェア割り込みと、言うんだそうです。

それに対して、ソフトウェア割り込みってのがあるそうなんですが、これが、なかなか便利な機能です。

<ハードウェア割り込み>
デバイスへの依頼とその応答について、CPUの時間感覚と、デバイスの時間感覚がかなり違いまして、超高速で動作するCPU内部と、ものすごい遅いデバイスの世界での時間の感覚的相違が、存在します。FDDやHDDに作業依頼をしたあと、CPUのはFDDやHDDからの応答をずっと待っている間どうするか?ですが、まだかな?まだかな?とずっと待つループを組んで、回っていても良いんですが、そう言う事をすると、他の作業が、中断したままになります。

CPUをただ空転させて、デバイスからの応答を待たせるのはもったいないので、デバイスからの応答が帰ってくるまではCPUに他の仕事をさせることが出来ると、限られた時間の中で多くの作業をこなすことが出来ます。

そこで、他の処理をしながら、デバイスとも通信をするには、どうすれば良いか?ですが、②個ほど列挙しますと。

①デバイスが返事を返してきた時にCPUに知らせる仕組みを入れる。

②定期的にデバイスの様子を見に行く。

などが考えられます。

割り込み処理は、上記の①の「デバイスが返事を返したよと、CPUに知らせる仕組み」で使われます。

で、この仕組みを説明する時に、もうひとつDMAと言う言葉が出て来ます。

DMAとはダイレクト・メモリー・アクセスの略でして、これが、何かと言いますと、デバイスや、デバイス制御装置がメモリにアクセスする仕組みです。メモリーへの読み書きはCPUだけがやるのではなくて、デバイスまたは、デバイス制御装置もメモリーに読み書きを行います。

デバイスからの応答と割り込み処理とDMAがセットになるケースが多いと思います。DMAがない場合もあるとは思いますが、かなりの確率で、この3個のキーワードはセットになります。

雑駁な説明ですが、デバイスにはFDDや、HDDや、TAPEやAUDIOや、LANや、ブザーや、USBやその他、たくさん有ります。しかし、CPUに、デバイス毎の割り込み信号線「INT」があるかと言いますと、そんなに何本もありません。

じゃ、どうやって、多くの種類のデバイスの応答を識別するのか?というと、CPUじゃなくて、CPUを補佐する周辺回路で上手に、原因デバイスをCPUに伝えるような仕組みが組まれています。仮にFDDを1番、HDDを2番、TAPEを3番と言う番号で呼ぶとします。そうしますと、CPUへの通知としては、割り込みの何番が発生したかを、通知できれば、どのデバイスからの応答が来ているかをCPUが判断できます。上記の例なら、割り込み原因デバイスの番号が2番だったとしたら、割り込み原因はHDDだとわかります。

そこで、CPUの周辺回路は、割り込みの交通整理をしてメモリの何処かに何番の割り込みが来たかを書いてから、CPUの割り込み信号線をLOからHIにすれば、CPUは現在実行中の処理を中断し、その後、割り込み制御回路が、何番の割り込みだったかを書き残したメモリーをみて、割り込み原因デバイスを特定して、データの受領等の処理を行います。

例えば、HDDの所定のセクター読み出しの依頼をしてあってその処理結果として、読み出し成功と、読みだしたデータをデバイスから受け取るシーンを考えてみます。

まず、デバイスは応答として、処理結果OKと、読み出し要求の処理をして得た、読みだしたデータを、メモリーの所定の場所に書き込みます。この時デバイスやデバイス制御回路が用いるメカニズムがDMAです。

そして、デバイスやデバイス制御回路は、CPUのINT(割り込み信号線)をHIにしてあげます。そうしますと、CPUは所定のメモリーの記述にデバイス番号と、処理結果がOKかNGかをみて、OKなら、所定の場所に読み出されたデータがあるので、これを読み、これを処理するルーチンにデータを引き継ぎます。

過去の具体的な例として、ちょうど、そのへんの質疑がネットに見つかりましたので
そのWEBへのリンクを掲載します。IOポート番号とIRQについてのWEBです。ちなみにIRQとはInterrupt ReQuestだそうです。
http://oshiete.goo.ne.jp/qa/3859633.html

<ソフトウェア割り込み>
ソフトウェア割り込みは、OS(オペレーティングシステム等)でのシステムコール関連で使われるメカニズムです。

<割り込みに関する知識は、コンピュータの挙動を知る上で結構重要>
と言う事で、マイコンに限らずとも、コンピュータ全般における、ハード割り込みとソフト割り込みについての知識は、基軸の知識と言う事になりますが、この知識がないと、ソフトを記述することは出来ないのか?と言えば、そんな事は無くって、そんな事一切知らずとも出来るソフト関連の業務領域は広大です。

<割り込み処理を知っていると、なにが優位なの?>
割り込みに関する知識が必要な領域は何処なのか?といえば、セキュリティー領域とか、システムアナリストや、システム・アドミニストレータの高度な部分では、割り込み関連の知識を知らないとまずいでしょうね、と言う領域があると思います。

いわゆる、コンピューターの本質的挙動を理解する上では避けて通れない、知識領域の一つが割り込み処理なのですが、本質的挙動等は考えず、隠蔽されたブラックボックス内部の出来事として片付けてしまって、最終的に目に見える部分でのソフト業務従事者にとっては、不必要な知識領域です。

割り込み処理関連の知識領域とは、そういうものです。

ちなみに、TK-80でのワンステップ動作を実現するために使われている、割り込み処理について、具体的な解説がWIKIペディアでなされているのに気づきましたので、その場所を記します。

TK-80 Wikipedia  の記載の中で「シングルステップ実行」と言う章がありまして、そこで具体的な解説がなされていました。ちなみにこの解説の中でTK-80の回路図について若干言及されているようですので回路図に関するURLも記します。