質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

2回答

15018閲覧

セキュリティソフトを作りたいのですが。。。

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2015/11/05 18:06

疑問! クラッキングできないようにする、ソフトを作るのは可能ですか?
どうしても、バグって、できちゃいますよね?

あと、セキュリティソフトは、何言語でつくったらいいと思いますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

クラッキングできないようにする、ソフトを作るのは可能ですか?

可能かどうかと問われれば不可能と答えるしかないですね。クラッキングといってもいろいろな手法がありますが、たとえば、実行モジュールを逆アセンブルしてプログラムの仕組みを解析するなどということは防ぎようがありません。あるいは通信のパケットを監視して挙動を観察する(そしてパケットを書き換えて挙動を変える)などということは、技術的には難しいものではありません。

ただ、クラッキングしても無駄と思わせることならできなくはないでしょう。暗号化技術がその一つですね。たとえプログラムを解析されてアルゴリズムが知られたとしても、パスワードあるいは解除キーがなければデータが読めないといった仕組みは様々なシステムで用いられています。
とはいえ、ソフト開発者としては割り切りも必要ですね。ガチガチに防衛策を施そうとすればコストがかさみますし、そのせいで使い勝手が悪くなったらソフトの価値が落ちてしまいますし。まぁ、高度な技術を持ったクラッカーなら、そのソフトにクラックする価値があるかどうかを冷静に見極めることでしょう。

どうしても、バグって、できちゃいますよね?

できちゃいますね……。もちろんソフトの規模にもよります。それなりのプログラマーが「Hello world!」ごときでバグを出すなど考えられません。

可能な限りバグを減らす努力は当然必要ですが、そのためにもバグが出たときにどう対処するかが重要な課題となっています。いち早くバグを発見し、その原因を追跡できるような仕組みを設計段階から意識して取り入れる必要があります。
製品開発における社内テストを「バグ出し」と呼ぶことがあります。その名の通り、テスト担当者が様々な状況を想定してソフトを動かし、「とにかくたくさんバグを発見」して出荷前につぶしてしまおうということです。ただ、それでも漏れはあるわけで、出荷後に見つかった(あるいは出荷までにつぶせなかった……)バグに対しては「パッチ」などとも呼ばれる修正モジュールをネットなどで配布するということはよく行われていますね。

あと、セキュリティソフトは、何言語でつくったらいいと思いますか?

このセキュリティソフトというのが、市販されている○○アンチウィルスとか○○インターネットセキュリティのようなものを指しているのであれば、OSと密接に連携する必要があるので、いわゆるシステムコール(OSが提供する機能)を直接呼び出せる言語ということになります。WindowsやLinuxならCあるいはC++、MacOSならObjective-Cといったところでしょうか。
とはいえ、そういうソフトを1から作るとなると多岐にわたる深い知識が必要ですし運用にも細かいサポートが要求されますから「ハードルはかなり高いですよ」と申し上げておきます。

投稿2015/11/06 04:10

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/11/06 07:28

新しいインターネットは作るのは可能ですか? 
catsforepaw

2015/11/06 09:12

質問の意図がよく判らないのですが、どこかの広域ネットワークをインターネットではない別の何かで構築したいということであれば可能かもしれませんが、あえてコストをかけてそのようなことをする意味はないように思います。すでにあらゆる情報インフラや情報サービスがインターネットを前提に構築されていますから。
guest

0

情報セキュリティ屋さんじゃありませんが回答します.

バグのでない「小さなソフトウェア」を作ることは可能です.
ここで「小さなソフトウェア」は全ての入力パターンに対して,網羅的にテストが行えるものを指すことにします.
極端な例に,AボタンとBボタンのみが存在する入力装置で,入力を一回だけ行うことができるソフトウェアをあげましょう.ボタンが押されたら入力装置は破壊され,二度目の入力はありません.これならば,取り得るすべてのAボタン, Bボタンを入力してテストを行い(入力装置が破壊される前提では,テストにも2台必要です),正当性が確認されれば,バグのないソフトウェアになります.
int型しか入力できないソフトウェアならば,43億回ほどテストをすれば,バグのない完全なソフトウェアが作れるでしょう.

しかし,最近のソフトウェアはそんなに小さくありません.AndroidやiOSなどのように,ボタンがクリックされたから~を実行しようといった,イベント駆動型プログラミングではテストケースが膨大になりがちです.その他,Windowsソフトウェアならば,Windows(親)のバグはほぼどうしようもないでしょう.
今日では,バグのない完全なソフトウェアより,バグの出たときに安全なソフトウェア作りが望まれているようです.穴のないソフトウェアは無理だから,穴を突かれたときに情報を外に出さないようにしていこうという形ですね.

使用言語はOSによって異なるでしょう.Windows向けならば,OSのイベントを取れるC++,C#,.NET当たりですね.OSのイベントを取れない言語をメインにしたとしても,イベントを取るためにどこかで使うことになりそうです.
自分で作るなら,型安全性の高いJavaをメインに,C++をJNI呼び出しで作るでしょうか.WindowsにもJavaにも左右されたくないというときは,思い切ってアセンブリにしましょうかね.

投稿2015/11/05 18:54

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KazuoShimizu

2015/11/06 09:32

ASM 賛成。 冗談では無く、マジで賛成。 でも、その前に、C、C++、JAVA、全部やってみてからでしょうね・・・。 さらにその前に、E が必要だと思う。イングリッシュです。 (冗談ではありません、本気です)
退会済みユーザー

退会済みユーザー

2015/11/06 09:44

正直,私はアセンブラは冗談のつもりでした.E言語?英語?セキュリティの世界に行くなら,英語の文献調査は必須になりそうですね. Windowsの裏でひっそり動くソフトを開発できるなら別ですが,そうでないなら,すべてのソフトウェアを独自実装,場合によってはハードウェアもでしょうね.独自実装はハッキング対象になりにくそうですが.開発コストに見合わなそうです. いっそハードウェア記述言語...
退会済みユーザー

退会済みユーザー

2015/11/09 05:01

はい、そのつもりです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問