日別アーカイブ: 2016年7月3日

コンピュータ古今

日進月歩、秒針分歩の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で送られてきた高度な暗号機能により暗号化された文書を解読する機能は搭載されているのにも関わらず、過去に一度も使ったことがない。とか、そう言う方は、少なからずおられると思います。

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