鶴亀メールの「脆弱性」No.11144
たまちゃん さん 04/11/01 18:14
 
すでにご存知だとは思いますが,先日の件についてのものです。

http://jvn.jp/jp/JVN%23E59B594B.html
http://d.hatena.ne.jp/HiromitsuTakagi/20041030#p1
http://www.st.ryukoku.ac.jp/%7Ekjm/security/memo/2004/10.html#20041029_tsuru
kame

[ ]
RE:11144 鶴亀メールの「脆弱性」No.11145
秀まるお さん 04/11/01 18:35
 
 JPCERTさんから言われたことは、証明書の有効期限についてのチェックがなさ
れてないから期限切れの証明書でも警告が出ないということと、あと、証明書に
書いてあるメールアドレスとメールのFrom:が一致してなくても警告が出ないと
いうバグなんですが…。

 それ以上のことは分かりませんけど、とにかくいろいろチェック用の関数を呼
ぶように直したつもりでして、それ以上は僕もよく分かってなかったりします。
何か疑問な点があれば、その辺のソースコード公開してもいいですが…。

 あと、V3.70にて直したので脆弱性への対処という意味ではV3.70で対応したこ
とにはなるんですが、V3.70で1つバグがあって、具体的には送信者が証明書の
持ち主と一致してても一致してないと出る場合があるっていうのがあって、それ
の修正がV3.71でしたという、奥の深い話なんですが…。

 ま、僕もあまり詳しく知らずに作ってるのもなんなので、特にコメントできな
いです。

[ ]
RE:11145 鶴亀メールの「脆弱性」No.11146
たまちゃん さん 04/11/01 18:54
 
お気を悪くなさらないで読んでもらいたいです。:-)

> 僕もあまり詳しく知らずに作ってるのもなんなので

RFC なり関連する文書がたくさんありますので,とくにセキュリティ
に関係する仕様については「十分知った上で」実装をしないといけな
いのではないかと思います。

[ ]
RE:11146 鶴亀メールの「脆弱性」No.11147
秀まるお さん 04/11/02 09:38
 
> RFC なり関連する文書がたくさんありますので,とくにセキュリティ
> に関係する仕様については「十分知った上で」実装をしないといけな
> いのではないかと思います。

 RFC全然読んでないです。すみません。Windowsのセキュリティ関係のAPIの説
明だけ読んで作っているし、さらに言うならテストも不十分です。というのは、
意図的に不正な証明書を作るテストをしてないです。

 不正な証明書とか、不正な認証局とかを意図的に作るのって、難しいような…。
期限切れの証明書のテストはしましたが、エラーコードの種類はまだまだありま
す。

 CertVerifyRevocation関数も、僕の想像では必ずインターネットに接続にいっ
て認証局に問い合わせするはずだと思うんですが、別にインターネットに接続し
てなくても成功して返ってきてしまうし…。それでいいのかなぁと思いつつも、
一応パラメータはドキュメントに書いてある通りで合ってるしなぁと思ってその
ままです。

 他の人はどうしてるんでしょうかねぇ。なんか、自信が無くなってきました。

 証明書については、Windowsの証明書ストアに登録すれば、あとはInternet
Explorerの「ツール・インターネットオプション・コンテンツ・証明書...」か
ら中身を見ることが出来て、期限切れかどうかとか、証明書のパス
(Certificate Chain)も見られるので、本当に心配な人はそれで最終的に確認
すればいいんじゃないかとは思います。というか、実はそこで出てくる証明書の
ウィンドウを鶴亀メールから表示させたいと思ったんですが、やり方が分からな
くて挫折しました。誰か知ってたら教えて欲しいです。

[ ]
RE:11147 鶴亀メールの「脆弱性」No.11148
たまちゃん さん 04/11/02 22:57
 
>他の人はどうしてるんでしょうかねぇ。

私が個人的に知っている作者の方数名は S/MIME ではありませんが,SMTP認証
などの場合には RFCを読んでおられました。

[ ]
RE:11148 鶴亀メールの「脆弱性」No.11150
たまちゃん さん 04/11/04 09:56
 
RFC を読んで何も得ることはないかと一瞬思いますが,これに準拠
して多くのソフトウェアが成り立っていると思います(Outlook 系
の文字化けの件も関連します)。

是非読んでいただいて鶴亀メールをいっそうセキュアなものにして
いただければ1ユーザとしてはこの上ない喜びです。読んで失うも
のはなにもないと思います。

今でも Windows 系 のメールソフトの中では鶴亀メールが一番安全
だと思っていますし,人にもそのように言って勧めています。

えらそうなことを書いてすみませんでした。お手伝いできることが
あれば何でもおっしゃってください。作者とユーザがつくりあげて
きた素晴らしいソフトを今後とも使いたいと切に思っています。

[ ]
RE:11150 鶴亀メールの「脆弱性」No.11151
秀まるお さん 04/11/04 10:58
 
 SMTP認証については、たしかnPOPとかそのほかのソースコードを見ただけで、
例えばCRAM-MD5の暗号化の仕組みとか細かいことは知りませんが…。まぁ、そう
いう作り方をしてるとかってことをいちいちユーザーさんに説明する必要は無い
と思いますけど。たぶん、そこまでつっこまれるのも僕くらいだし、それに返事
するのもなおさら僕だけでしょう。

> お手伝いできることが
> あれば何でもおっしゃってください。

 ソースコードを見せるからチェックしてくれ…って言っても仕方がないので…。

 S/MIME関係で言うなら、出来れば、11145番発言で書いたことを教えて欲しい
です。つまり、IEやOutlook Expressから表示している証明書のウィンドウと同
じ物を表示する方法を教えて欲しいです。

[ ]
RE:11151 鶴亀メールの「脆弱性」No.11371
さわの さん 04/11/29 15:53
 
さわのと申します。

初めて投稿します。フォーラムのことや鶴亀メールのことをよく理解できてませんが、
ちょっと知っていそうなことが話題になっていましたので、どきどきしながら発言し
ます。
はずしていたらごめんなさい。

少し日が経っているので、解決されたかもしれませんが。

知りたいのは、証明書のプロパティのダイアログを表示する方法でしょうか?それで
したら、CryptUIDlgViewContext でできることだと思います。
ただ、すでに、失効リストをローカルに持っていればその旨、表示されますが。その
タイミングで失効の確認などはしてくれないと思います。


また、CertVerifyRevocation ですが、これは、標準では、「インターネットに接続
にいって認証局に問い合わせする」のではなくて、証明書に記載されている失効リス
トのURIを参照して、ゲットして、照合して、その結果を返してくれるものです。
CertVerifyRevocation を「インターネットに接続にいって認証局に問い合わせす
る」ように拡張するプラグインも作れますが、それとともに、対応するサービスが提
供されていることが必要になります。そこらへんについて、http://www.ipa.go.jp/s
ecurity/fy15/reports/sec_api/index.html
の「セキュリティAPIに関する技術調査 報告書 Part3」 で考察されているので、ご
覧になればと思います。




[ ]
RE:11371 鶴亀メールの「脆弱性」No.11372
秀まるお さん 04/11/29 16:10
 
 情報ありがとうございます。CryptUIDlgViewContextって関数は知りませんで
した。僕の普段使っているPlatform SDKのドキュメント(WindowsXPのβ版の時
についてきた物)にはそのような関数が入ってませんでしたが、googleで検索し
たらちゃんと出てきました。

 失効リストの照会についても、やはり僕の想像してたことは的はずれだったっ
てことなんですね。とりあえず証明書の表示が出来ればそれでよさそうな気がす
るので、それだけ対応します。

[ ]
RE:11372 鶴亀メールの「脆弱性」No.11376
さわの さん 04/11/30 11:08
 
ついでで申し訳ありません。
鶴亀メールの電子署名のメールで、気がついたことがあったのですが、

電子署名のデータ signedDataですが、
SignedData のdigestAlgorithms や
SignerInfo の digestAlgorithm のところに
sha1withRSAEncryption が入っていましたが、
RFC 3369 あたりに従うと、
ここはハッシュ関数のOIDを入れるところだと思うので、
sha1 とか md5 とか入れたほうが適切だと思います。

CAPI の CryptSignMessage を使っているなら、
CRYPT_SIGN_MESSAGE_PARA の HashAlgorithm.pszObjId

szOID_OIWSEC_sha1
などを入れるといいと思います。

ちょっと前の話なので、今は訂正されているのかもしれませんが、鶴亀メールのユー
ザーではなくって、連絡先などが良く分からず、そのままにしてました。
m(__)m

では、失礼いたしました。

[ ]
RE:11376 鶴亀メールの「脆弱性」No.11379
秀まるお さん 04/11/30 15:43
 
 またまた詳しい情報ありがとうございます。ご指摘いただいた件ですが、実は
以前にバグとして別のユーザー様から報告があって、たしかに今現在は

    szOID_OIWSEC_sha1

 を指定するようになっていました。なので少し安心しました。

 ちなみに以前はszOID_RSA_SHA1RSAを指定していたようです。

 ちょっとバージョンの古いNetscape Messengerで「改ざんされている」と出て
くるんだったか、そういうバグ修正で直したようです。

 自分でもよく分かってないのがばれてしまいますが…。

 親切にありがとうございます。

[ ]
RE:11372 鶴亀メールの「脆弱性」No.11390
秀まるお さん 04/11/30 22:31
 
 やはりこの関数はかなり新しい関数みたいで、WindowsXP/Windows Server2003
以上でないと使えないみたいです。WindowsXPでもSP2以上でないとダメなのかも
しれないです。(手元のSP1環境で使えなかったし)

 とりあえずやめときます。

[ ]
RE:11390 鶴亀メールの「脆弱性」No.11393
さわの さん 04/12/01 19:05
 
OSのバージョンとIEのバージョンも関係するかも知れませんが、私の環境はSP1で、
下みたいなコードで表示できています。
2年くらい前からです。確か、2000でも表示できてたような気がします。違ってたら
ごめんなさい。
私のみている MSDN ライブラリ 2001 年 10 月リリース では CryptUIDlgViewContex
t は
Requirements
  Windows NT/2000/XP: Included in Windows XP and Windows .NET Server.
  Windows 95/98/Me: Unsupported.
となっています。今は違うみたいですね。アンサポートな機能となってしまいますか
ね。
CAPICOMというのを使ってやる手もあるようです。
いずれにしろこれで、失効の問題が解決できるわけではありませんが。
電子署名や暗号が割りと簡単に出来てしまうのに比べて、証明書の信頼に関してはや
っかいだと思います。頑張ってください。
では、失礼いたしました。

  typedef BOOL (WINAPI *LPFN_CRYPT_UI_DLG_VIEW_CONTEXT)
  (
    IN DWORD dwContextType,
    IN const void *pvContext,
    IN HWND hwnd,
    IN LPCWSTR pwszTitle,
    IN DWORD dwFlags,
    IN void *pvReserved
  );

  HMODULE hDLL = NULL;
  LPFN_CRYPT_UI_DLG_VIEW_CONTEXT lpFunc = NULL;

  hDLL = LoadLibraryEx("cryptui.dll", NULL, 0);
  if (hDLL)
  {
    lpFunc = (LPFN_CRYPT_UI_DLG_VIEW_CONTEXT)GetProcAddress(hDLL, "CryptUIDl
gViewContext");
    if (lpFunc)
    {
      (*lpFunc)(
      CERT_STORE_CERTIFICATE_CONTEXT,
      pCertContext,
      hWnd,
      NULL,
      0,
      NULL);
    }
    FreeLibrary(hDLL);  
  }

[ ]
RE:11393 鶴亀メールの「脆弱性」No.11394
秀まるお さん 04/12/01 21:02
 
 .net frameworkが入ってないとダメなのかと思ったら、ロードするdllが間違
ってました。cryptui.dllですか。

 せっかく情報をいただいた所なので、ぼちぼち対応します。

[ ]
RE:11394 鶴亀メールの「脆弱性」No.11395
秀まるお さん 04/12/01 23:25
 
 よく分からなくなってきたんですけど、こちらのWindowsXP Home Edition SP1
およびWindows2000SP4の中にあるcryptui.dllには、そのCryptUIDlgViewContext
関数はやっぱり入ってないみたいです。「dumpbin /exports cryptui.dll」で見
ても出てこないです。

 いったいどういうことなのかよく分かりませんが…。

 っと一覧を見ていたら、CryptUIDlgViewCertificateという関数はあるようで
す。手元のMSDN(VisualC++.NETに付属のやつ)にはそんな関数は書いてないん
ですけど、googleで検索したら出てきます。ただ、パラメータとして渡す構造体
が大変ややこしいです。

 ちょっと手こずりそうですけど、とにかく挑戦するだけ挑戦してみます。

[ ]
RE:11395 鶴亀メールの「脆弱性」No.11396
秀まるお さん 04/12/01 23:27
 
 すみません。WindowsXP Home Edition SP1に付属のcryptui.dllには、たしか
にCryptUIDlgViewContext関数は入ってました。

 CryptUIDlgViewCertificate関数が面倒な場合はやっぱりそっち使います。

[ ]