トップページ⇒tech
1001コメント276KB

スレ立てるまでもない質問はここで 109匹目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG?S★(532000)
質問する前にGoogleで検索しましょう。http://www.google.co.jp

プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。

前スレ
スレ立てるまでもない質問はここで 108匹目
http://hibari.2ch.net/test/read.cgi/tech/1287477677/
0446デフォルトの名無しさん2011/01/08(土) 09:05:43
pthread_joinで全部のスレッドを順番にやればよい
0447デフォルトの名無しさん2011/01/08(土) 11:44:20
RSA暗号についてですが、実行プログラムだけで簡単に解析可能でしょうか
もしも簡単に解析できるのであれば通信を暗号化する意味がないような気がします。

ここでいう簡単に解析とは、C言語を理解できるぐらいの理解力がある人が
書籍などで勉強して一週間程度で解析できることとします。
0448デフォルトの名無しさん2011/01/08(土) 11:59:57
>>447
現在使われてる暗号っていうのはな
仮に実行プログラムのソースが手に入ってそれを理解できたとしても

そのソフト同士の通信を傍受しても解読できないの
そういう暗号があるの
04494402011/01/08(土) 12:02:03
>>445,446
ありがとう。

Windows なので WaitForMultipleObjects を利用しようと思う。
これならスレッドのハンドルだけで判定できるんだな。
完全に忘れてたよ。。。
0450デフォルトの名無しさん2011/01/08(土) 12:08:32
>>447
ていうか普通に暗号について勉強しろと
0451デフォルトの名無しさん2011/01/08(土) 12:10:20
RSA 暗号は、大きな数の素因数分解が困難であることを利用した方式。

困難であるだけで、不可能ではない。
不可能ではないが、お前の秘密を暴くためにスーパーコンピュータを貸しきりなんてする価値ないから事実上不可能。
実際、その暗号化のタネはそれ系企業のトップシークレット。

でもまえに NHK の番組で、素因数分解を容易にやれるようになるかも知れない。
その場合にはいまの通信の秘密性を維持できなくなってタイヘン、的なことを言ってたね。
0452デフォルトの名無しさん2011/01/08(土) 12:21:34
>>448 >>450

今暗号については勉強中で、先ほどウィキペディアでwinnyについて調べていたら
下のように書かれていました。
ウィキペディアの情報が正しいならプログラムによっては通信の暗号化は意味が無いような気がしたので
質問しました


だが、公開鍵暗号を使わないでいると、第三者のなりすまし攻撃を受ける可能性がある。そのため Winny では公開鍵暗号が使われており、同時に固定鍵がWinny内部に内蔵されている。

しかしデバッガを使えばその固定鍵を取り出すことができる
0453デフォルトの名無しさん2011/01/08(土) 12:29:49
>>452
それは winny の実装の問題。鍵をプログラムに埋め込まず、実行時に鍵を都度乱数で生成するなどの方法がとれるのでは?
0454デフォルトの名無しさん2011/01/08(土) 12:38:17
>>453
>>実行時に鍵を都度乱数で生成するなどの方法がとれるのでは?
これだと遅いらしいです。どれくらい遅いのかは分かりませんが


公開鍵暗号は遅いらしいので、一般的には早い共通鍵暗号でデータを暗号化し
その共通鍵暗号の鍵を公開鍵暗号で暗号化するらしいのですが
共通鍵暗号の鍵の保管方法について疑問を感じてます。
winnyの保管方法だと暗号化自体意味がなくなってしまうと思います。
0455デフォルトの名無しさん2011/01/08(土) 12:57:54
だからなんだってんだ?
ちゃんと勉強してから質問してくれ
0456デフォルトの名無しさん2011/01/08(土) 13:08:39
Winnyは秘密鍵が生のまま交換されるデータの中に含まれていた。
本来秘密鍵は秘匿すべきもので、鍵を交換するときは鍵を交換するための
特別なプロトコルを使わなければいけないのにそれをやっていなかった。
つまり、正しい暗号の使い方をしていなかった。

Winnyがどうこう言い出すならまず「Winnyの技術」と「Winnyはなぜ破られたのか」ぐらい
読んでくれ。疑問を感じる前にまず基本を勉強しろ。
0457デフォルトの名無しさん2011/01/08(土) 14:24:05
というか次々にああだこうだ言うから要点がどっか行ってるぞ
質問しなおせ
0458デフォルトの名無しさん2011/01/08(土) 14:43:52
>>457

結局私が知りたいのは、「実行プログラムだけで通信を傍受することができるのか」です。
例えば実行プログラムのバイナリにデバック機能を付けるツールがあれば、通信の暗号化は無意味になるような気がします。
0459デフォルトの名無しさん2011/01/08(土) 14:45:29
これまでのレスで理解できないのであれば、何を言っても無駄だな
0460デフォルトの名無しさん2011/01/08(土) 14:46:23
>>458
>デバック
きっと君はそのままずっと理解できないと思う
0461デフォルトの名無しさん2011/01/08(土) 14:47:22
まずは基本情報技術者試験からチャレンジしよう^^
0462デフォルトの名無しさん2011/01/08(土) 14:51:03
実行プログラムがローカルにある限り、
最終的にはリバースエンジニアリングされます
0463デフォルトの名無しさん2011/01/08(土) 14:53:25
理解できてない人まで寄ってきたじゃねえか
0464デフォルトの名無しさん2011/01/08(土) 15:00:35
凍ったこんにゃくゼリー食べて人が死んだから、こんにゃくゼリーを売るのは取り締まるべきな気がします
0465デフォルトの名無しさん2011/01/08(土) 15:07:06
疑問を持ったり調べたり時には質問したりする事は、プログラマにとって必要な事でありすばらしい事。
しかし、勉強不足で根拠も薄くしかも聞く耳持たずの質問者は、ただの愚か者。
0466デフォルトの名無しさん2011/01/08(土) 15:08:20
窓がガラスだから玄関に鍵かけても意味ないみたいな理屈だな
今日から鍵つかわずに生活しろ
0467デフォルトの名無しさん2011/01/08(土) 15:40:32
実際、玄関の鍵なんてあまり意味ないけどな
0468デフォルトの名無しさん2011/01/08(土) 15:42:05
屁がでる
0469デフォルトの名無しさん2011/01/08(土) 16:39:21
実がでる
0470デフォルトの名無しさん2011/01/08(土) 16:44:09
奇跡へ
0471デフォルトの名無しさん2011/01/08(土) 16:45:11
序章
0472デフォルトの名無しさん2011/01/08(土) 16:53:55
>>454
論点を整理しましょう。

「公開鍵暗号は共通鍵暗号よりも処理が遅い」
これはそのとおりです。

「公開鍵暗号の鍵を生成する」
巨大桁の素数を乱数をもとに二つ発見することであり、
これも負荷の高い作業ではあります。

「共通鍵暗号でデータを暗号化しその共通鍵暗号の鍵を公開鍵暗号で暗号化する」
これもそのとおりです。

そして共通鍵暗号の鍵は乱数を使って生成すればいいでしょう。乱数の生成自体は遅くはありません。
winny の実装は確かに問題がありました。

>>>実行時に鍵を都度乱数で生成するなどの方法がとれるのでは?
>これだと遅いらしいです。どれくらい遅いのかは分かりませんが
共通鍵暗号の鍵の生成の場合は、都度生成しても遅い(負荷の多い)というわけではありません。
0473デフォルトの名無しさん2011/01/08(土) 16:59:26
>>458
暗号化、というのはたとえばA と B が暗号通信しているときに、第三者が通信中のログを除いて解読することを防ぐことですよね。
プログラムに鍵がうめこんであり、そのプログラムが広く入手可能である場合には、バイナリハックして鍵をとりだすことで、
暗号化は無意味になりますね。

でも、 AとBが、通信の都度に鍵を変えて通信すれば、(第三者がいくらプログラムを解析しても)鍵は通信の都度つくられて AB 以外の第三者には
わかりようがないですから、暗号通信は意味があることですよね。
0474デフォルトの名無しさん2011/01/08(土) 17:51:32
今回の質問では、具体的な説明はしていませんでしたが、私が暗号化を行おうとしているのは、サーバークライアント方式の
通信プログラムで、通信のプロトコルだけ暗号化しようと考えています。暗号化はある程度勉強していてopensslで実装しています

簡単に説明すると
サーバ側
�A「Hello」を受信すると、そのクライアントにクライアントから受け取った公開鍵で暗号化したプロトコルを送信

クライアント側
�@サーバーに通信開始の文字列を暗号化をしないで送る「Hello」など
 同時に公開鍵も送る
�A公開鍵暗号方式の秘密鍵で暗号化したプロトコルを復号化する

通常はデータを共通鍵暗号方式で暗号化し、共通鍵暗号方式の鍵を公開鍵暗号方式で、暗号化するらしいのですが、今回はプロトコルのサイズが小さいので
公開鍵暗号方式だけで暗号化しようと考えています

今回質問した経緯は、上記の勉強している過程で、通信の暗号化は場合によっては無意味になると思ったので、質問しました
※例えばリバースエンジニアリングやP2Pのプログラムなど(P2Pはサーバがない為、確実に安全な通信は不可能ではないかと思ってます)

> 暗号化、というのはたとえばA と B が暗号通信しているときに、第三者が通信中のログを除いて解読することを防ぐことですよね。
> プログラムに鍵がうめこんであり、そのプログラムが広く入手可能である場合には、バイナリハックして鍵をとりだすことで、
> 暗号化は無意味になりますね。
そうですよね。
ただ全く暗号化していないよりは安全性はあると思います
(一般の素人にはバイナリハックはできないので)
>
> でも、 AとBが、通信の都度に鍵を変えて通信すれば、(第三者がいくらプログラムを解析しても)鍵は通信の都度つくられて AB 以外の第三者には
> わかりようがないですから、暗号通信は意味があることですよね。
この方法だと、バイナリハックしても暗号通信は意味があると思います。

だた、気になる点があってVCなどでデバッグしているときにメモリの内容を見ることができますが
実行プログラムに、VCのデバッグ機能のようなものを実行プログラムに埋め込むツールがあれば
暗号化したプロトコルも復号化することができるのではと思い質問しました
0475デフォルトの名無しさん2011/01/08(土) 17:53:12
出来るもんならやってみろよ
0476デフォルトの名無しさん2011/01/08(土) 18:05:09
埋め込むツールなんかなくてもopensslはソース公開されてるんだからいじり放題じゃないか
デバッグ機能を使おうが使わなかろうが、メモリの内容を見ようが見まいが、
正しい鍵があれば復号できるし、正しい鍵がなければ復号できない
それ以外になにがあるっていうんだ
0477デフォルトの名無しさん2011/01/08(土) 18:10:05
>>474
>だた、気になる点があってVCなどでデバッグしているときにメモリの内容を見ることができますが
>実行プログラムに、VCのデバッグ機能のようなものを実行プログラムに埋め込むツールがあれば
>暗号化したプロトコルも復号化することができるのではと思い質問しました

通信当事者であるA, B で実行しているプログラムに仕掛けをつければ、通信中に使用している鍵を拾い出すことは原理的には不可能ではないと思います。
しかし暗号化は当事者A, B 以外の第三者Cが通信を覗き見することを防止することで、C が A, B のプログラムに仕掛けをつけることはできません。
C に対しては暗号化は意味があります。
プログラム使用者 A, B に対してプロトコルの解析を防止するためには、暗号化は効力を持ちません。
0478デフォルトの名無しさん2011/01/08(土) 18:17:51
AやBにウイルス踏ませたいんですけどって話だな
0479デフォルトの名無しさん2011/01/08(土) 18:31:18
既存の方式なら定石通りにやればいいだけだし
独自方式なら好きなように勝手にどうぞ
質問することなんかないだろ
0480デフォルトの名無しさん2011/01/08(土) 18:53:46
ぼくのかんがえたさいきょうのシェアウェアプロテクト、でも発明して発表したいんだろ。

そんなもんがあったらとっくに使われてるわ。あいつらの必死っぷりったらないからな。
確か何年か前にコンテストとかもやってた記憶がある。
0481デフォルトの名無しさん2011/01/08(土) 18:56:49
現状では定石通りが一番安全なのに馬鹿な素人が勝手にいじるから穴が開くんだろ
0482デフォルトの名無しさん2011/01/08(土) 18:58:12
法則 : 売れないソフトに限ってプロテクトに必死
0483デフォルトの名無しさん2011/01/08(土) 19:00:58
プログラムを改変された時点で暗号もクソもあったもんじゃねえよな
0484デフォルトの名無しさん2011/01/08(土) 19:14:08
暗号したけりゃしとけ
復号でシンでもしらんが
はい次どうぞ
0485デフォルトの名無しさん2011/01/08(土) 20:22:37
ネットでC言語のソースを見てて初めてgoto文を見たのですが
私は今でgoto文を仕事でも趣味でも使ったことがありません。
そのソースではエラー処理で使われていて、これはいいなぁと思ったのですが
会社でC言語などでgoto文を使うとやっぱり何か言われるのでしょうか?
0486デフォルトの名無しさん2011/01/08(土) 20:29:43
つかうな。そしたら関数化してしのげ。
gotoをリターンやブレイクに返還しろ。
0487デフォルトの名無しさん2011/01/08(土) 20:31:03
後藤真希
0488デフォルトの名無しさん2011/01/08(土) 20:31:14
>>485
あなたが説明説得できるレベルであれば使えばいいと思うよ
0489デフォルトの名無しさん2011/01/08(土) 20:39:02
突然、処理を止めるにはリターンでいいって。これで代換えできるって。
0490デフォルトの名無しさん2011/01/08(土) 20:40:14
代換えって、最近妙に聞くようになったがこれも2ch用語かね
0491デフォルトの名無しさん2011/01/08(土) 20:40:34
具体的に。
gotoを含む場所、gotoのある場所をひとつの関数としたら
returnとgotoは同じ意味。
0492デフォルトの名無しさん2011/01/08(土) 20:49:41
                      ____    、ミ川川川彡
                    /:::::::::::::::::::::::::""'''-ミ       彡
                   //, -‐―、:::::::::::::::::::::三  ギ  そ  三
            ___    巛/    \::::::::::::::::三.  ャ  れ  三
        _-=三三三ミミ、.//!       l、:::::::::::::三  グ  は  三
     ==三= ̄      《|ll|ニヽ l∠三,,`\\::三  で       三
        /              |||"''》 ''"└┴‐` `ヽ三   言  ひ  三
         !             | /          三   っ  ょ  三
       |‐-、:::、∠三"`    | ヽ=     U   三.  て   っ  三
       |"''》 ''"└┴`       | ゝ―-        三  る  と  三
       | /           ヽ ""        ,. 三   の   し  三
        | ヽ=   、    U    lヽ、___,,,...-‐''"  三   か  て  三
.        | ゝ―-'′          |  |::::::::::::_,,,...-‐'"三  !?    三
          ヽ ""        ,.    | | ̄ ̄ ̄      彡      ミ
        ヽ、___,,,...-‐''"  ,,..-'''~             彡川川川ミ
          厂|  厂‐'''~      〇
        | ̄\| /
0493デフォルトの名無しさん2011/01/08(土) 20:52:50
>>485
個人的には、現在書いてるコードのラインより上に飛ぶgotoは禁止してる。
ほんとにスパゲッティになるからね。
0494デフォルトの名無しさん2011/01/08(土) 20:57:04
gotoが悪いのではなく、gotoでスパゲティになるようなコードを書く奴が悪い。
0495デフォルトの名無しさん2011/01/08(土) 20:59:23
クソコード書く奴かどうか事前には分からないから、goto禁止。
0496デフォルトの名無しさん2011/01/08(土) 21:00:15
コーディング禁止でいいよ
0497デフォルトの名無しさん2011/01/08(土) 21:02:01
本当のプログラマはgotoを恐れない、みたいなパロディ無かったっけ。


>>485
絶対にgotoを使わないと書けないという処理というのは極めて少ないのと、
Cにあまり習熟していない人が使うと悲惨なことになるかもしれない……というのは周知の通り。

趣味ならともかく、会社だと自分が書いたソースを別の人が保守することもあるわけで、
会社やプロジェクトの方針でgotoを禁止するというのも、あながち間違った判断ではないと思う。


>>490
発祥は2chでもないし、生まれも最近じゃない。
正しい読み方なのか間違った読み方なのかはともかく、かなり昔から使われてる言い方だよ。
0498デフォルトの名無しさん2011/01/08(土) 21:05:41
gotoを禁止する前に、Cにあまり習熟していない人を開発に使うプロマネを首にしろ。
0499デフォルトの名無しさん2011/01/08(土) 21:07:32
お前だって最初は素人だろ。いつから玄人になったんだよ
0500デフォルトの名無しさん2011/01/08(土) 21:09:07
Cならエラー処理にgotoは常道
これ禁止する人は大体聞きかじりでgoto絶対ダメと妄信してる人だけ
0501デフォルトの名無しさん2011/01/08(土) 21:12:01
>>499
お前は癌になって素人に手術してもらえばいい
0502デフォルトの名無しさん2011/01/08(土) 21:12:33
goto無しでは書けないプログラムは存在しないので使うな。
0503デフォルトの名無しさん2011/01/08(土) 21:12:55
>>500
> Cならエラー処理にgotoは常道
> これ禁止する人は大体聞きかじりでgoto絶対ダメと妄信してる人だけ

私もそう思いますが、会社で禁止しているケースもあるのでは
0504デフォルトの名無しさん2011/01/08(土) 21:13:42
馬鹿な会社だな
0505デフォルトの名無しさん2011/01/08(土) 21:14:27
> 本当のプログラマはgotoを恐れない、みたいなパロディ無かったっけ。

Real Programmers Don't Use PASCAL に "Real Programmers aren't afraid to use GOTOs." ってあるけど。
0506デフォルトの名無しさん2011/01/08(土) 21:14:46
gotoを禁止する会社には、底辺ITドカタしかいない
0507デフォルトの名無しさん2011/01/08(土) 21:16:16
PHPにはGOTOないだろ。ver.6からは入るらしいが。
0508デフォルトの名無しさん2011/01/08(土) 21:17:56
gotoを禁止しない会社を挙げてくれ
0509デフォルトの名無しさん2011/01/08(土) 21:18:31
教えてやってもいいが、お前の就職口はないよ
0510デフォルトの名無しさん2011/01/08(土) 21:19:28
gotoを禁止しない会社を挙げろ
0511 ◆QZaw55cn4c 2011/01/08(土) 21:19:53
>>486
もうしわけないが、for が多重に入れ子になった中から一挙にすべての for をぬけるには、goto が一番簡便。
http://hibari.2ch.net/test/read.cgi/tech/1291471791/676
http://codepad.org/RMU1H5jZ
0512デフォルトの名無しさん2011/01/08(土) 21:19:53
goto を許可すると、以上のような無意味な議論を繰り返すアホが出没して迷惑だから禁止。
0513デフォルトの名無しさん2011/01/08(土) 21:20:09
google
0514デフォルトの名無しさん2011/01/08(土) 21:21:28
>>513
お前の会社名を挙げろよカス
0515デフォルトの名無しさん2011/01/08(土) 21:21:43
>>511
終了フラグ作れ
0516デフォルトの名無しさん2011/01/08(土) 21:21:51
×誤:goto を許可すると、以上のような無意味な議論を繰り返すアホが出没して迷惑だから禁止。

○正:goto を禁止すると、以上のような無意味な議論を繰り返すアホが出没して迷惑。

0517デフォルトの名無しさん2011/01/08(土) 21:22:14
gotoを禁止する会社には、底辺ITドカタしかいない ソース>>506
0518デフォルトの名無しさん2011/01/08(土) 21:22:39
>>497 ども、知らなかった
0519デフォルトの名無しさん2011/01/08(土) 21:28:45
>>511

int match(char *exp, char *dic) {
for () {
for () if () {
flag = 0;
goto jump;
}
}
jump:
return flag;
}


これですむぞ。

int match(char *exp, char *dic) {
for () {
for () if () {
return 0;
}
}
return flag;
}


0520デフォルトの名無しさん2011/01/08(土) 21:33:51
これでいいか。flgつかうこともない。

int match(char *exp, char *dic) {
for () {
for () if () {
return 0;
}
}
return 1;
}
0521デフォルトの名無しさん2011/01/08(土) 21:37:09


goto無しでは書けないプログラムは存在しない


0522デフォルトの名無しさん2011/01/08(土) 21:37:14
自分がコード書くなら後者だけど、ライブラリ作者は前者で書くんじゃなかろうか
インライン展開してくれるかどうかなんて知らないし
0523デフォルトの名無しさん2011/01/08(土) 21:37:46
全部チューリングマシンでいいよ
0524 ◆QZaw55cn4c 2011/01/08(土) 21:38:55
>>519
なるほど、他の goto も書き換え可能かもしれませんね。
というか、>>511 で使っている goto のほとんどが、「探索等を打ち切って次にすすむ」という効率化のためであり、別に goto がなくてもいいものですしね。
0525デフォルトの名無しさん2011/01/08(土) 21:41:33
馬鹿な人って、ひとつの特殊な事例を一般化するよね
0526デフォルトの名無しさん2011/01/08(土) 21:59:58
凍らせたこんにゃくゼリーで死亡者が出ているんです
全面的にこんにゃくゼリーを禁止すべきです
0527デフォルトの名無しさん2011/01/08(土) 22:04:08
消防調査では全部で432例あり、中身を大別すると以下のようになります。

もち:77例
ご飯(おにぎり含む):61例
パン:47例
あめ:22例
すし(食品成分表で分類できないのでその他扱い):22例
おかゆ:11例
だんご:8例
流動食(食品成分表で分類できないのでその他扱い):8例
カップ入りゼリー:8例
ゼリー:4例
しらたき:4例

と言うことで、NO1のもち禁止に。次にご飯禁止
0528後藤2011/01/08(土) 22:07:48
そんなに嫌わないでくれ。
0529デフォルトの名無しさん2011/01/08(土) 22:07:51
消費量ベースで計算すればこんにゃくゼリーの圧倒的な殺傷度が高いことが明白です
即刻禁止すべきです
0530デフォルトの名無しさん2011/01/08(土) 22:08:11
いや一酸化二水素こそ前面禁止すべき
0531デフォルトの名無しさん2011/01/08(土) 22:09:45
全体的な質量で計算すればこんにゃくゼリーの圧倒的な殺傷度が高いことが明白です
即刻禁止すべきです
0532デフォルトの名無しさん2011/01/08(土) 22:15:28
規制主義者
0533デフォルトの名無しさん2011/01/08(土) 22:20:13
状態遷移なんかにgoto使ってもいいと思うの
0534デフォルトの名無しさん2011/01/08(土) 22:22:09
状態遷移には=を使うのがいいよ。
0535デフォルトの名無しさん2011/01/08(土) 22:26:38
状態遷移には関数呼び出しを使うのがいいよ
0536デフォルトの名無しさん2011/01/08(土) 23:36:44
状態遷移はExcelからマクロでコードジェネレートするのが楽よ
0537デフォルトの名無しさん2011/01/09(日) 00:12:21
初めからLISP使えよ
0538デフォルトの名無しさん2011/01/09(日) 11:34:28
えらいつれるな
0539デフォルトの名無しさん2011/01/09(日) 11:43:13
えびぞうとか政治家とかテレビでいろいろ問題おこしてるやん
まったくの他人事なんでどうでもいいwwwwwwwwwwwwww
0540デフォルトの名無しさん2011/01/09(日) 11:51:03
もしかして業界ではこういうのが冗談でまかりとおってるの?
きもちわるっ!
0541デフォルトの名無しさん2011/01/09(日) 11:56:57
何に対してだよ
0542デフォルトの名無しさん2011/01/09(日) 13:42:29
尖閣ビデオのコメントで嘘吐いてた政治家が多過ぎてひどす
0543デフォルトの名無しさん2011/01/09(日) 16:17:45
リスト作っとけよ
0544デフォルトの名無しさん2011/01/09(日) 16:21:57
VisualStudioって良くできてるなぁと、PHPに手を出して思いました。
0545デフォルトの名無しさん2011/01/09(日) 16:30:59
PHP(言語)とツールを比較するな。
■ このスレッドは過去ログ倉庫に格納されています