68user's page 掲示板

Prev< No. 3591〜3603> Next  [最新発言に戻る] [過去ログ一覧]
No. 3591 # 68user 2004/03/02 (火) 02:56:42
>>3590 へにか
> 暗号技術大全を持ってらしているのですね。
まぁ理解できていませんけどね。

理論を学びたいと思って、他にも以下の本を買ってみました。
理解できたかどうかは聞かないでください。

    暗号理論入門
        http://www.amazon.co.jp/exec/obidos/ASIN/4320120442/249-3448296-8649958
    暗号の代数理論
        http://www.amazon.co.jp/exec/obidos/ASIN/4431708472/249-3448296-8649958
    代数と数論の基礎
        http://www.kyoritsu-pub.co.jp/series/21seiki/01561-4.html

暗号は技術的にも非常に面白いですが、暗号として強いのか
弱いのかが第三者からはっきり評価される世界ですので、
やじうま的視点で見ても、とてもおもしろいです。

    http://x68000.startshop.co.jp/~68user/net/crypt-1.html

で紹介した すずきひろのぶ氏の AES 選定にまつわる話も
そうですが、IPA の CRYPTREC
      http://www.ipa.go.jp/security/enc/CRYPTREC/
に応募したものの、門前払いをくらった暗号がどんなものなのか
調べると、非常に興味深いものがあります。

こんなおもしろい世界を学者のモノだけにしておくのは
もったいない。ぜひ興味を持っていただけると幸いです>All

> このウェブサイトは、まもなく終了します。
これは前々から気になっています。終了されると非常に困る
んですが、webarchive.org (正式にはWayback machine って
いうのかな?) があるから まぁ大丈夫かな、と思っています。

# http://web.archive.org/web/*/http://www.faireal.net/articles/7/01/

> Java Servletは興味から外れたのですか?
諸般の事情から、このサーバでは Java Servlet が動かないのです。
そして仕事でも Servlet はやっていないので、遊べる場所がないのです。

今のわたしの興味は

      暗号 > 逆転裁判3 > 質の高い業務系システムを構築する方法 >>>> WEB > UNIX > Java

です。

No. 3592 # 68user 2004/03/02 (火) 22:56:24
メモ。blowfish による暗号化 & 復号化。

#include <stdio.h>
#include <openssl/blowfish.h>
int
main(int argc, char *argv[]){
    BF_KEY key;
    unsigned char keybuf[]="SECRETKEY!";
    unsigned char plain[128]="This is plain!";
    unsigned char encrypted[128];
    unsigned char decrypted[128];
    unsigned char ivec[8];

    BF_set_key(&key, strlen(keybuf), keybuf);

    printf("plain=[%s]\n", plain);

    memset(ivec, 0, sizeof(ivec));
    BF_cbc_encrypt(plain, encrypted, strlen(plain), &key, ivec, BF_ENCRYPT);

    printf("encrypted=[%s]\n", encrypted);

    memset(ivec, 0, sizeof(ivec));
    BF_cbc_encrypt(encrypted, decrypted, strlen(plain), &key, ivec, BF_DECRYPT);

    printf("decrypted=[%s]\n", decrypted);

    return 0;
}

No. 3593 # へにか [URL] 2004/03/02 (火) 23:13:30
ちゃんと読んでません、と書かれているのに突っ込みを入れるのは
失礼かもしれませんが・・・

#こんなこと言っておきながら、嘘だったらごめんなさい。

http://x68000.startshop.co.jp/~68user/net/crypt-1.html
で紹介している
http://www3.sympatico.ca/wienerfamily/Michael/MichaelPapers/TwokeytripleDES.pdf
ですが、確かに2つの鍵を使う3DESは攻撃方法がある、ということも
書いていますが、どっちかって言いますと、既存の方法、すなわち、
§2の、Merkle-Hellman Attackの方法よりも、早い方法がありますよ、
という論文のような気がします。
恐らく、Merkle-Hellman Attackの方法はA=0となる解を2の56乗用意
して、何とかするけれど、この論文の方法はKnown-Plaintextを用いると、
もっと早く解析できますよ、といっているような。

#そのKnown-Plaintextがなんじゃらほい、というところまでは
#精査していませんが。

それ以降はハードウェアのインプリメンテーションの話ですね。

No. 3594 # 68user 2004/03/03 (水) 00:07:43
>>3593 へにか
ありがとうございます。お返事は後ほど。

で、メモその 2。EVP 版 blowfish 暗号化・復号化。なお、
      http://www.openssl.org/docs/crypto/EVP_EncryptInit.html
は古いバージョンの API。OpenSSL の web は本当にひどい。

#include <stdio.h>
#include <openssl/evp.h>

int do_crypt(FILE *in, FILE *out, int enc_mode){
    unsigned char key[]="SECRET!";
    unsigned char iv[8];
    EVP_CIPHER_CTX ctx;
    char outbuf[256];
    int outlen;

    memset(iv, 0, sizeof(iv));
    EVP_CipherInit(&ctx, EVP_bf_cbc(), key, iv, enc_mode);

    while (1){
        char inbuf[128];
        int inlen;
        inlen = fread(inbuf, sizeof(inbuf[0]), sizeof(inbuf)/sizeof(inbuf[0]), in);
        if ( inlen==0 ){
            break;
        }
        EVP_CipherUpdate(&ctx, outbuf, &outlen, inbuf, inlen);
        fwrite(outbuf, sizeof(outbuf[0]), outlen, out);
    }
    EVP_CipherFinal(&ctx, outbuf, &outlen);
    fwrite(outbuf, sizeof(outbuf[0]), outlen, out);
    return 0;
}

int main(int argc, char *argv[]){
    int enc_mode;
    if ( argc == 1 ){
        printf("Specify enc or dec.\n");
        exit(1);
    }
    if ( strcmp(argv[1], "enc") == 0 ){
        enc_mode = BF_ENCRYPT;
    } else if ( strcmp(argv[1], "dec") == 0 ){
        enc_mode = BF_DECRYPT;
    } else {
        printf("Specify enc or dec.\n");
        exit(1);
    }
    do_crypt(stdin, stdout, enc_mode);
    return 0;
}

No. 3595 # 瀧上 2004/03/03 (水) 16:13:46
>>3587 68user
ご回答ありがとうございます。
.oがsrcと同一ディレクトリに存在するのは基本なのですね。
検討した結果、下記の様な仕様にしました。

単体環境:make終了後*.oは自動削除する。単体で1プログラムを対象(実際には共通ライブラリも含まれますが。。)にmakeするのにタイムスタンプを管理する必要は無いと言う結論です。

結合環境:全コンパイルが必要となる結合以降はsrcファイルと同一ディレクトリに.oを保管する。単体完となっているはずなので、修正のあったファイルをupdateするのみとする。

以上結論報告です。(報告されても。。。と思われるかも知れませんが。。(^^;))

No. 3596 # スナフキン 2004/03/05 (金) 17:26:05
質問するのはお久しぶりです。

つかぬ事をお伺いしますが、VineLinux起動中の停電後の再起動で、
非常に冷や汗モノのメッセージが出現しました。

Mounting proc filesystem: mount /proc/: can't read superblock

これがそのメッセージですが、HDDのブート関連の情報が消えたと言う
事になるのでしょうか・・・(死刑宣告?)
もしその最悪の状態の場合に、その他のパーティションのデータ復旧は
望めないでしょうか。
ちなみになぜかCDブートも出来ない状態です。
ファイルシステムはex3です。

神様仏様どうか最悪の状態では無いように・・・アーメン
何でこんな時に・・・

No. 3597 # スナフキン 2004/03/05 (金) 17:33:49
追加情報ですが、df の表示は /dev/hda6 としか表示されません。
fdisk /dev/hda の結果は、Unable to open /dev/hda です。
う〜ん・・・

No. 3598 # 68user 2004/03/05 (金) 18:11:55
>>3593 へにか
いまだ調査中、というか英文と格闘中です。


>>3595 瀧上
単体環境と結合環境のやり方を変える必要があるのかどうかは疑問です。

Makefile を 2つ作るのか、Makefile は 1つで、環境変数などを見て
単体環境の場合のみ *.o を削除するのか、などの実現方法がわからない
のですが、例えば
    - Makefile に記述した依存関係が不正確だった
    - しかし単体環境では毎回全ソースを build するので影響がなかった
    - ところが結合環境に修正ソースを上げたら、依存関係の不正確さから
        狙いのソースがコンパイルされず、古い版の *.o がリンクされてしまった
などということにならないでしょうか?

ソースが非常に大規模なのでこういう仕組みを作らないと運用できない、
などの理由があるなら仕方ないでしょうが、
      単体と結合でやり方が違う
というのはミスの元ですので、それなりの利点がないなら避けるべきこと
と思います。

> 報告されても。。。と思われるかも知れませんが。。(^^;)
掲示板に質問しておいて結果報告すらしない輩が多いですが、
瀧上さんはちゃんと報告していただけるので、こちらとしても
非常にうれしいことです。


>>3596 スナフキン
そこらへん詳しくないんですが、/proc はカーネル内部のプロセス
状態を見るための覗き穴なので、そこで Can't read superblock とは
奇怪なことです (/proc に superblock なんか存在するのか? という話)。

そもそもこのエラーが出た結果、マウント対象となる HDD が読め
ないなどの異常が発生しているのでしょうか? もしそうなら /proc
マウントにさえ行き着けず、もっと前に /dev/hda などに関する
エラーメッセージが表示されているのではないかと思うのですが。

> fdisk /dev/hda の結果は、Unable to open /dev/hda です。
/dev/hda が / なのでしょうか? /etc/fstab を見せていただけませんか?

あと、/etc/fstab から /proc に関する行をコメントアウトすると
どうなりますか?

で、本当に superblock が飛んでいたりするなら、わたしの手には
負えないです。「ext3 superblock 復旧」などでぐぐると、いくつか
ヒットするようです。

No. 3599 # スナフキン 2004/03/05 (金) 18:54:27
早速の御返答ありがとうございます。

/etc/fstab の中身です。(多分大丈夫だと思いますが書き写し漏れがあるかも)

LAVEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
LABEL=/home /home ext3 defaults 1 2
none /proc /proc defaults 0 0
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
/dev/hda7 swap swap defaults 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
(タブを全角スペースに置き換えしてます)

>あと、/etc/fstab から /proc に関する行をコメントアウトすると
ダメです。Read Only になっているので書き込みが出来ませんし、
そもそも vi が何も反応せずに起動しません…
植物状態って事?(T@T)

不思議なことに、インストーラーCD内のfdiskだとパーティション情報が
正常に表示されますが、HDDのモノだと前記の通りです。

No. 3600 # 68user 2004/03/05 (金) 22:03:48
>>3599 スナフキン
> /etc/fstab の中身です
LABEL=... という記述を初めて見たのですが、Linux には
ラベルという仕組みがあるのですね。

要は /dev/hdx がどのマウントポイントに相当するのか、
知りたかったのですが、これではわからないですね。ログ
ファイルなどに記録が残っていませんか?

> Read Only になっているので書き込みが出来ませんし、
mount -o rw,remount /dev/hdx /hoge などで再マウント
できませんか?

> インストーラーCD内のfdiskだとパーティション情報が
> 正常に表示されますが、HDDのモノだと前記の通りです。
正常に表示、とは何が表示されるのですか?

わたしは Linux に詳しいわけではないのですが、全体的に
情報が少なすぎます。

Q1. そもそもマシンに何個の HDD が付いているのですか?
Q2. そのうちどれが壊れたかわかりますか? その根拠は?
Q3. シングルユーザモードで起動して、一部だけでも手動で
        マウントできませんか?
Q4. どこまでマウントに成功しているのですか? / 以外は
        全滅ですか? /boot も /usr も /home も /var も
        見えないのですか?

No. 3601 # スナフキン 2004/03/05 (金) 23:05:42
ごめんなさい、どんな情報が必要かわからなかったのと、自分でも
何が問題なのかよく判らないもので・・・

>再マウントできませんか?
いろいろと指定を変えて試しています。
ただ、パーティンション情報が間違っている時に rw で書き込んで
大丈夫でしょうか?

A1 HDDはIDEが一台のみです。
A2 メッセージをかいつまんで見る感じでは、superblock が読めない
        と表示されているように思いました。
A3 シングルモードで試してみましたがROでマウントされている状態が
        変わりません。
A4 起動中に /proc へのアクセスが出来なくてエラーとなっているようです。
    /boot /var /usr /proc のマウントが失敗しているようですが、 / に
    /usr /var というファイルが存在しますが、/proc というファイルは
    存在していません。

関連サイトをあさって情報を探していますが、ファイルシステムは(も)
よく判らない状態です・・・

ログは /var へアクセスできないのでお手上げです。

No. 3602 # へにか [URL] 2004/03/06 (土) 00:08:25
"Merkle-Hellman" DESと、Googleで検索をかけたところ、
http://info.isl.ntt.co.jp/~ohta/BOJ-Seminar.pdf
を見つけました。21枚目あたりが参考になるかも知れません。

#なんだか、いらない突っ込みしてしまって、余計な苦労を
#かけてしまったとしたら、申し訳ないです。
#お忙しいでしょうし、僕の意見も間違っている可能性大い
#にあるでしょうから、その内気が向いたらで結構です。

No. 3603 # 68user 2004/03/06 (土) 00:31:48
>>3601 スナフキン
> A3 シングルモードで試してみましたがROでマウントされて
> いる状態が変わりません。
シングルユーザモードで起動すれば、Read Only でマウント
されているものだと思います。狙いは / のみがマウントされ
ている状態にすることで、その後ひとつひとつマウントして
みることで、どの部分が壊れているのか原因がわかると考えました。

あとですね、この fstab では LABEL=/home などとファイル
システムのラベルを指定しています。わたしの知る限り FreeBSD や
Solaris にはこういった機能はないので想像ですが、fstab に
ラベルを指定すると、まず全デバイスのラベル名を取得し、
ラベル名が一致したデバイスを mount しようとするのでは
ないかと思います。

で、マウントしようとしているデバイスとは異なる場合でも、
ラベル取得時に壊れたファイルシステムが原因でエラーに
なるのではないかと想像しました (違うかもしれませんが)。

よって、ラベルを使わず
      # mount -o rw,remount /dev/hdx /hoge
などとデバイス名を指定してマウントしてみてください。

> /usr /var というファイルが存在しますが
マウントポイントは最初から必ず存在します。存在するか
どうかではなく、その下にファイルがあるかどうか、つまり
マウントに成功しているかどうかを教えてください。

> パーティンション情報が間違っている時に rw で書き
> 込んで大丈夫でしょうか?
保証はできませんが、大丈夫だと思います。もしファイル
システムとして認識できなければマウントできません。また、
/usr を /var に間違えてマウントしたとろで、/var/bin
とか /var/sbin とか /var/X11R6 などができてしまう程度
です (当然 umount すれば元通りです)。

ただ、そこでプログラム類が悪さをして /var などの下の
ファイルを操作してもらっては困るので、そういう意味でも
「シングルユーザモードで起動」をお勧めします。

Prev< No. 3591〜3603> Next  [最新発言に戻る] [過去ログ一覧]