68user's page 掲示板

Prev< No. 3593〜3594> Next  [最新発言に戻る] [過去ログ一覧]
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;
}

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