- 締切済み
テキストの暗号化
ソフトウェアの情報(インストールした日付・パスワード等)をテキストに書き込む時に暗号化してカキコむように しようと思います。しかし、字を3文字ずらす・アスキー コードに変換するなどでは、簡単に破られるのではないかと 思います。フリーのソフトでも、文字化けのような 状態のテキストファイルなどをみますが、あのような 複雑な暗号はどのように作られるのでしょうか? 「暗号」などで検索してみたのですが、そのやり方については、詳しくは記載されてはいませんでした。(暗号化を詳しくかいたら暗号にならないですよね)しかし、例でこういうやり方があるんだ、というのを是非教えて下さい。 また、このよう情報を書き込むのは通常テキストファイル などでよいのでしょうか?レジストリでしょうか? レジストリなどに書き込んでいるソフトなども見られますが、一般的にはどこに書き込むものなのでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- kakudaikyo
- ベストアンサー率66% (2/3)
暗号は復号できるので、パスワードの保存には復号が困難なハッシュ関数を使うと良いと思います。パスワードを暗号化した場合は解読されるとそのままパスワードが発覚しますが、ハッシュ化しておけば計算結果だけは発覚しますが、そのもともとの入力は計算が困難です。そして計算結果が同じになる入力の場合だけ認証します。md5やsha-1は脆弱なので、ハッシュ関数の選択は注意が必要です。 パソコン上で使う暗号は、普通は暗号化したいテキストの符号化、符号の置換、転置で成り立っています。公開鍵暗号のように暗号化と復号化の手順が異なる場合もありますが、手間がかかるので鍵だけに対してこの処理を行っています。 公開鍵暗号は暗号化と復号化の手順がすべて公開されています。それでも安全に使えるのは、第三者が鍵を計算するには地球の年齢以上に時間がかかるため、さらに鍵は毎回ランダムに作っているのであてずっぽうも無効なためです。 これらの値をレジストリに書き込むとパソコンの起動速度が低下する可能性があるので、量が多いならなるべくファイル化して保存すると良いと思います。
>けっこう独自で作られている方がおおいのでしょうか。 一般の暗号使用者の方々の場合は.「暗号を使っている」という意識がなくて使っています。 一例として.Https:....で示されるサイトの利用や.KDD.NTTの通常の通話(途中にマイクロウェーブによる送信が入るので.この区間.つまり.電話局間通話が暗号化されています)があります。 特に最近は.WindowsというOSがhttpsをサポートしているために.比較的簡単に暗号が使えるようになっています。 ただ.独自に作った暗号の場合.使用頻度が極端に少なければ.解読する側がその労力をかける価値がないとされるばあいがあり.一般の暗号解読ソフト(一例としてZIPファイルのパスワード解読ソフト)が存在しない.作る価値がない.という利点があります。 ですから.独自の考え方の暗号を利用することが.利点といえば.利点です。 なお.ゲームソフト等の場合に.一部を暗号化して実行形式のファイルを保存することで.コピープロテクトに使われていた時代があります。
私が使っている暗号ソフトは自作です。 復元することを考えると.文字16進コード2桁ですが.分布に偏りがあり.ずらす型の暗号では簡単に分布からもとの文字が検討つきます。 そこで.使っているコードを全体に均一にする必要があります。簡単なものでは.LZHやPKZIPのような圧縮ソフトを使い.ほぼ均一なコードの分布に変えます。 このような圧縮ソフトの場合.先頭に特定のデータが書き込まれていますから.単に暗号化すると.先頭文字が常に同じ値になってしまいます。これを防ぐために.256バイトなり.適当な長さに書き換えて.順序を入れ替えます。必要に応じて.使いもしない変な文字を書き込みます(私のソフトは水からの実行形式のデータを入れたり.ディスクに存在するファイル名を暗号化した内容を入れたり.適当な実行形式のファイルの中身を引き抜いたりしています)。 再度圧縮し.コードを均一化します。 これを何回かくりかえし.必要もない無意味なないようを入れてファイルサイズを大きくします。組み込み関数の乱数の内容も使っています。 乱数表で定めた返還をして 先頭からXORをかけます。 このときにHDDの特定のセクターを入れ替える作業を含めて行います。HDDの特定のセクターに特定の管理情報を書き込んでおくのです。これで特定の機会しかうごかないソフトが出来ます(昔ロータス123が行っていた方法)。パスワードが正しいのであれば.HDDのセクターは元に戻りますが.パスワードを間違えると.HDDの中身は書き換わります。2度と動かないHDDが完成します。このような自己保護をかけているソフトを使っています。ウイルスというかトロイの木馬のようなソフトです。
- how-do-you-do
- ベストアンサー率56% (59/104)
Crypt API等を使用して独自に暗号化を作成するとか... このAPIを使用したシェアですが、 http://www.nsgd.co.jp/nsd/NSDGoods/msvb_fn/msvb_fn_07angou.htm#vbFileCrypt 生産コストを考えると有料のことも視野に入れたほうが良いのでは?
お礼
回答ありがとうございます。 有料なのはいたいですが「Crypt API」を利用して 暗号・複合化できると知りました。 ありがとうございます。 有料のことも視野にいれていますが、お金のとれる ソフトを作るというのも難しいですね。 フリーでいいソフトがたくさんあるので。 アドバイスありがとうございます。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 とりあえず、1つ見つけました。 http://dobon.net/vb/dotnet/string/encryptfile.html ここにあるマイクロソフトのページも覗いてみるといいでしょう。 とりあえず、参考までに。
補足
さっそくの回答ありがとうございます。 私の開発環境を記載していませんでした。 VB6なんです。 しかし参考URLにのっているのがVB6でも できるかどうか試してみます。
補足
回答ありがとうございます。 う~ん難しいですね。私にしてはかなり高度な 技術です。しかしだいたいの暗号化の流れはわかりました。 勉強して、edogawaranpoさんのやられていることを 解読してみます。 こういう暗号化というのはけっこう独自で作られている方 がおおいのでしょうか。 ありがとうございます。