[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-users:01333] Re: 電子カルテの3条件についての試行



----- Original Message -----
From: "中山裕雄" <hnaka@xxxxxxxxxxxxxxx>
To: <orca-users@xxxxxxxxxxxxxx>
Sent: Tuesday, August 27, 2002 10:04 PM
Subject: [orca-users:01332] 電子カルテの3条件についての試行


> 中山裕雄@鳥取県です。
>
> このMLでも電子カルテの3条件について色々議論がありました。
>
> 当院では過去5年分は電子データになっていますが、
> 3条件を具体的にどの程度クリアすれば良いか不明だったので
> 一応紙にも印刷してきました。この度思い切って最近の一年分以外
> は電子データのみで保存しようと思います。
>
> 3条件のうちの保存性と見読性はCD-Rに焼いて
> ノートPC上のソフトから直接参照したり、印刷が可能なら
> 特に問題は無いと考えました。
>
> 問題は真正性です。
>
> 真正性に関してはCD-Rに焼いただけでは不十分である点に関しては
> ここでは議論しません。当然不可と考えます。
>                   ~~~~~
> 真正性に関してもリアルタイムに保たれているかということと
> 過去のデータに関して分けて、ここでは過去保存分について
> まずクリアしたいと思います。
>
> ここに(CD-Rの中とネットワーク上)1995年末から本年春までの
> 電子カルテデータが5ファイルあります。
>
> このCD-Rを封印してどこかに預ければ、その分に関してはある程度
> 真正性は証明できるでしょうがその後、もっと小刻みに証明タイミングを
> 細かく、頻回に行うための準備と考えると、現実的ではありませんね。
>
> そこで以前から話題になるハッシュ(MessageDigest)を実装してみました。
> 議論にはなってもメーカー以外の個人ユーザーが実運用しているのはまだ
> 少ないと思いますが、問題点や既に運用しているよ、とかご助言をいただければ
> 幸いです。ただし、一部を改竄して、同じハッシュ値に揃える可能性については
> それができることを実行して証明されるまでは、不可能であると考えます。
>
> 自己責任による証明なので、現実的にきわめて難しい理論上の可能性を
> 議論していても先に進めないからです。
>
> まずshadigest.java という以下のようなプログラムを作りました。
>
> import java.security.MessageDigest;
> import java.io.FileInputStream;
>
> public class shadigest {
>     public static void main(String filename[]) {
> try {
>     MessageDigest md = MessageDigest.getInstance("SHA-1");
>     for(int i=0; i<filename.length; i++) {
> FileInputStream fin = new FileInputStream(filename[i]);
> byte[] buffer = new byte[256];
> while(true) {
>     int len = fin.read(buffer);
>     if(len < 0) break;
>     md.update(buffer, 0, len);
> }
> fin.close();
> byte[] bytes = md.digest();
>
> char[] digits = {'0','1','2','3','4','5','6','7',
> '8','9','a','b','c','d','e','f'};
>
> System.out.print("SH1 (" + filename[i] + ") = ");
> StringBuffer s = new StringBuffer(bytes.length * 2);
> for(int j=0; j<bytes.length; j++) {
> byte b = bytes[j];
> s.append(digits[(b & 0xf0) >> 4]);
> s.append(digits[b & 0x0f]);
> }
> System.out.print(s.toString());
> System.out.println();
>     }
> } catch (Exception e) {
>     e.printStackTrace();
> }
>     }
> }
>
> このプログラムでCD-Rに焼いてある6個のプログラムのMessageDigestをSHA-1とい
う
> アルゴリズムで算出すると以下のようになります。
>
> 上記をjavacして
> java shadigest D:¥* として実行します。
>
> SH1 (d:\19951201_19970331.mdb) = 8227f65a63f2a7ed209e2b1ecd3b681053d09c8f
> SH1 (d:\19970401_19980331.mdb) = 7a4ea866a83fce3832f1232f12ed94233ad62c93
> SH1 (d:\19980401_19990331.mdb) = de54242dccded5dddfd3732c349b9aa40c121333
> SH1 (d:\19990401_20000331.mdb) = 3644200acb86fb0c5ea8d248b100c2e16cf814a6
> SH1 (d:\20000401_20010331.mdb) = c0b80b7feb74894733dabc8ea8c6cc4ad7a84d43
> SH1 (d:\20010401_20020331.mdb) = 56ff5013f32d07352a11b291363844e1d514c026
>
> 今回はこのorca-usersを利用して上記ハッシュ値を公開しましたので、
> 公開の現時点以降はファイルは改竄していない証明とします。
> つまりファイルを開く前にプログラムを動作させて、ハッシュ値を提示し、
> 本日のMLの書き込みの値と同じならば、本日以降は内容に手を加えてない
> ということです。
>
> これをもっと細かく行えば、真正性を証明できると思いますがいかがでしょう。
> 問題はメーリングリストをこの目的で使い続ける訳には行きませんので、
> 多くの電子カルテユーザーがファイルのハッシュ値を公開する目的のMLを末永く
> 運用できる組織(日医総研など)が提供すれば、少なくともハッシュ値を公開した
> ファイルと公開以降の真正性は証明できるのではと考えました。
> もちろんMLがWebで公開されいることや、簡単に消滅したり書き換えられないよう
に
> メンテナンスされていることが前提です。
> MLでもいけるのではないかということは 有家さん(先生)の案を採用してみまし
> た。
>
> 問題点、御批判がいただければ幸いです。
>
> 中山小児科内科医院
> 中山裕雄
>
>
>
>
>