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

[orca-users:15600] Re: HPKI 署名用秘密鍵による署名時データのパディング処理について



電子処方箋のフォーマットでちょっと間違って解釈していたかもしれません。

処方箋で医師側が電子署名するのは、
・最初に処方を起こした時
・タイムスタンプ付きの文書を確認した時
など何回かあるので、以下のタグに適宜 Reference を設定し、このタグごと
暗号化するようです。

<SignedInfo>
 <Reference><DigestValue>処方情報のハッシュ値</DigestValue></Reference>
 <Reference><DigestValue>証明書諸々のハッシュ値</DigestValue></Reference>
</SignedInfo>

ところで、電子処方箋が今ひとつ普及しない理由の一つにフォーマットのわかりにくさが
あると思います。
基本的には Xades(シャディス)というそれなりに普及しているフォーマットに従っているのは
いいんですが、ところどころ独自仕様が入っています。
XADESでは、署名対象と実際の署名との関係で、ENVELOPED, ENVELOPING, Detached という
3つの形式を想定しているのですが、電子処方箋で採用されたフォーマットはそのどれでもなく
内部 Detached というものです。
独自仕様を採用したのなら、
・なぜその仕様を採用したのか
・既存仕様との違いは何なのか
説明するのが明快だと思うのですが、逆に希薄になっている印象を受けます。

やっていること自体は間違ってないんでしょうが、物事の進め方自体にパンチがないというか
説得力に欠けますよね。


HPKI カードドライバの件も同様。
普及度からいって、windows を重視するのはわかるんですが、中には Mac で電子処方箋を発行したい
という医療者もいるわけで、その人たちへのケアが全くないというのは何かおかしいですよね。
「windows でしか動かないから、普及しなくてもしょうがない」ならわかるんでですが、
「特定の環境(windows )でしか動作を保証できないが、みなさん使ってください」という言い分は
分別ある思慮深い大人なら言わないことですし、法律的にみてもまずいんじゃないかと思います。


ところで、

>上野さん
私が、「Mac でも電子処方箋は対応可能ではないか」と漏らした時、「電子署名モジュール」なるものを
勧められたけど、
https://ml.orca.med.or.jp/orca-users/msg15510.html
ここら辺、こう言ったものを使わなくていけない何か「大人の事情」でもあるのですか。
windows でも同様だと思うけど、汎用ライブラリを経由してコマンド送るより、USB-ICカードリーダーを
直接操作した方が、処理速度・制御の面でも有利ですよね。
これは私だけが言っているだけでなく、ある程度、スキルある人だったら、そういう発想になると思います。
例えば https://qiita.com/gebo/items/5e58babe8123d48603d6 など参照。

ORCA も電子処方箋対応はできているようですが、「署名モジュール」使ってますね。
ローカル署名くらいだったら、独自実装した方が設計的に明快だと思うんですが、しないのですか?



猪股弘明
精神保健指定医
*****************************************************************************
Hiroaki Inomata
MD: Psychiatry BA: Physics
PHAZOR, LLC: CEO https://phazor.info
-- Medical Open Source Software Activities --
OsiriX (open-source ver): contributor, Horos: contributor
HorliX: developer https://phazor.info/HorliX
OpenDolphin-2.7m: developer
https://github.com/Hiroaki-Inomata/OpenDolphin-2.7m (source code)
...etc

2024年5月6日(月) 15:23 Hiroaki Inomata <inomatah0612@xxxxxxxxx>:
>
> パディング云々に関してちょっと間違っていたかもしれません。
>
> 実際の電子処方箋サービスのサンプルで試してみました。
>
> X509署名用公開鍵証明書から公開鍵を取り出して、SignatuteValue を復号すると
>
> 3031 300d 0609 6086 4801 6503 0402 0105
> 0004 2095 b69d 3e1d 20bd 055e bead 0405
>  60c7 217d 15c3 a239 3a0a 109b 1966 ef9f
> 1327 2c
>
> という51byte長のバイナリ列が得られます。
> (openssl のコマンドで確認できます)
>
> パディングした256byteではありません。
>
> 電子処方箋サービス側のサーバがパディングに対応していれば、問題ないのですが
> そのような例はないようなので、パディングなしで送付するのがいいのかなと思います。
>
> なお、
> 95 b69d 3e1d 20bd 055e bead 0405
>  60c7 217d 15c3 a239 3a0a 109b 1966 ef9f
> 1327 2c
> が、署名したい対象のハッシュ値です。
> この値は、
> <PrescriptionDocument id="PrescriptionDocument">謎の文字列</PrescriptionDocument>
> からも直接求められます。
>
> だから、両者が一致すれば、この文書を作成したのは、公開鍵とペアで作成された
> 秘密鍵の持ち主であることが保障される、というのが電子署名の理屈です。
>
> しかし、以前に提示したサンプルが実際の仕様にあってないとか、ちょっと
> どうなのか?とは思います。
>
>
> 猪股弘明
> 精神保健指定医
>
> ーーーー電子処方箋サンプルーーーーーー
> <?xml version="1.0" encoding="UTF-8"?>
> 略
> <PrescriptionDocument
> id="PrescriptionDocument">U0oxCjEsMSw4MDAwMDEwLDk5LOaknOiovOeUqOeXhemZogoyLDg1Mi04MTU0LOmVt+W0juecjOmVt+W0juW4ggozLDAzLTM3NzUtMzExMSwwMy0zNzc1LTMxMTIs44Gd44Gu5LuW6YCj57Wh5YWI77yQ77yRCjQsMiwwMSzlhoXnp5EKNSwwMDAwMDAwMDAwMDAwMDEs772y7728772s7727776M776e776b772zLOWMu+iAheOAgOS4iemDjgoxMSwwMDAwMDAwMDAwMDAwMDEs6Zu75Yem44CA5pyJ5Yq55LqU5LqMLO++g+++nu++ne+9vO+9riDvvpXvvbPvvbrvvbPvvbrvvp7vvoYKMTIsMgoxMywyMDExMDEwMQoxNCwxCjIxLDEKMjIsMzExMzA4NDIKMjMsMjAyMiwwMTAwMDEsMSwwMQoyNCwxMDAsMTAwCjI1LDEKMjcsMjkxMjM0NTYsMTIzNDU2NwoyOCwyOTEyMzQ1NiwxMjM0NTY3CjI5LDI5MTIzNDU2LDEyMzQ1NjcKMzAsOTkxMjM0NTYtMDEyMzQ1Njc4OTA5OTEyMzQ1Ni0wMTIzNDU2Nzg5MCw5OTEyMzQ1Ni0wMTIzNDU2Nzg5MDk5MTIzNDU2LTAxMjM0NTY3ODkwCjMxLDExMTEKNTEsMjAyMzAzMDYKNTIsMjAyMzEyMzEKNjIsMQo4MSwxLDEs5YKZ6ICD77yQ77yRCjgyLDEsMTAwMDAwMDAwMDAwMDAwMQoxMDEsMSwxLCwxNAoxMTEsMSwzLDEwMTExMDAwMDAwMDAwMDAs77yR5pel77yR5Zue5bCx5a+d5YmN44CA5pyN55SoLDEKMTgxLDEsMSws55So5rOV6KOc6Laz5oOF5aCx77yQ77yRLCwKMjAxLDEsMSwxLDIsNjIyNjg4MTAxLOODn+ODi+ODquODs+ODoeODq+ODiO+8r++8pOmMoO+8ku+8lc68772HLDIsMSzpjKAKMjExLDEsMSwxMDEKMjIxLDEsMSwxLjI1LDEsLCwsLCwsLAoyMzEsMSwxLDAsMCwwLDAKMjQxLDEsMSwxLDEKMjgxLDEsMSwxLCzolqzlk4Hoo5zotrPmg4XloLHvvJDvvJEsCjEwMSwyLDMsLDEKMTExLDIsMywxMDUwVzIwMDAwMDAwMDAwLOmBqeWunOOAgOacjeeUqCwxCjE4MSwyLDEsLOeUqOazleijnOi2s+aDheWgse+8kO+8kSwsCjIwMSwyLDEsMSwyLDY2MjY0MDY4MyzjgqLjg6vjg6Hjgr/ou5/oho/jgIDvvJDvvI7vvJHvvIUsMSwxLOacrAoyMTEsMiwxLDEwMQoyMjEsMiwxLDEuMjUsMSwsLCwsLCwsCjIzMSwyLDEsMCwwLDAsMAoyNDEsMiwxLDEsMQoyODEsMiwxLDEsLOiWrOWTgeijnOi2s+aDheWgse+8kO+8kSw=</PrescriptionDocument>
> 略
> <ds:SignatureValue
> Id="value-id-b41c08068e007d77655c7df7d0636a8c">hFIxB6Ki963Suxh7M6/xViA5o/Fw2AyVsTsnp07EtZCghk7eCeZOqAVcj5r8TTXeTEi9zYAJ6CPHvozFsUMxkiNX4DF9Mwn0f+CZYEVfYUJQsn6JA7NOBwry/+ZAzt6fiWpemofNtOaEenlAnGiEOB1mOJ5PazqtXbj5RbF9z++HMUHVUK9O+pmIFrG8XKsCDR2iqiqUUAsaNAjsgNkaYYZ4yquu+/EbnHHojFrEZIUiYR+pLD+Qc/Eb9kQD5fOoxvSfPvWQqWhnpbPfMy7eIkhk8IVzH7OtmG5UrY7LuIlckaax0cFgxil70M3GObDFCyu/OSEqruZ27g6sPDC2aA==</ds:SignatureValue>
> 略
> <ds:X509Data><ds:X509Certificate>MIIFgjCCBGqgAwIBAgICAUswDQYJKoZIhvcNAQELBQAwZjELMAkGA1UEBhMCSlAx
> DjAMBgNVBAoMBU1FRElTMRYwFAYDVQQLDA1NRURJUyBIUEtJIENBMS8wLQYDVQQD
> DCZIUEtJLTAxLU1lZGlzU2lnbkNBMi1mb3JOb25SZXB1ZGlhdGlvbjAeFw0yMTA4
> MDYxNTAwMDBaFw0yNjA4MDYxNDU5NTlaMGQxCzAJBgNVBAYTAkpQMSIwIAYDVQQK
> DBlNRURJUyBVTklWRVJTSVRZIEhPU1BJVEFMMRwwGgYDVQQDDBNOaWp1cm9rdSBL
> YWd1cmF6YWthMRMwEQYDVQQFEwpUZXN0MTE3MTE3MIIBIjANBgkqhkiG9w0BAQEF
> AAOCAQ8AMIIBCgKCAQEAugxS30KQWi17lR58HPr1S3gO+csFcpEC8fA5sZTBEtCt
> OayBRt4wkpGDiHas/tLizKEC5bbF40CPAwa1qCt6UEbZqPEyi01sQDvFE79i3/64
> gRfAyTasK0GzgeiS4fatTq6CePrMLDW5iEM9kMcQV6AImbcLu9dT++afXsrYkFk2
> g25xL1vE3GmC/iTk+Pr8EpY8W4KE/JDQnoYjAzU4xP2Q3bbuwPCN4jltB870EYgh
> n4snljZQh8JOLu0vuvCMGleABWJW4akQGcd6HE1PkiG2idErxsfHyiCJ+mYDZtAK
> F/vsNNU2yq66x1V+r+XveLlEAjJvjhN71gVu7nUW9wIDAQABo4ICOjCCAjYwgcgG
> A1UdIwSBwDCBvYAUndYTUkXvvV54UshYjni8VB4/luahgaGkgZ4wgZsxCzAJBgNV
> BAYTAkpQMS8wLQYDVQQKDCZNaW5pc3RyeSBvZiBIZWFsdGgsIExhYm91ciBhbmQg
> V2VsZmFyZTE8MDoGA1UECwwzRGlyZWN0b3ItR2VuZXJhbCBmb3IgUG9saWN5IFBs
> YW5uaW5nIGFuZCBFdmFsdWF0aW9uMR0wGwYDVQQLDBRNSExXIEhQS0kgUm9vdCBD
> QSBWMoIBBDAdBgNVHQ4EFgQUislqxazPp+ZpHjz59xhQfflUeDcwDgYDVR0PAQH/
> BAQDAgZAMHIGA1UdEQRrMGmkZzBlMQswCQYDVQQGEwJKUDEhMB8GA1UECgwY5Yy7
> 55mC5oOF5aCx5aSn5a2m55eF6ZmiMR4wHAYDVQQDDBXnpZ7mpb3lnYLjgIDkuozl
> jYHlha0xEzARBgNVBAUTClRlc3QxMTcxMTcwOwYDVR0fBDQwMjAwoC6gLIYqaHR0
> cDovL2NlcnQubWVkaXMub3IuanAvc2lnbi9jcmwtc2lnbjIuY3JsMD0GA1UdCQQ2
> MDQwMgYGKIGFQgABMSgxJjAkoCIxIKAMBgoqgwiGkQ8BBgEBohAMDk1lZGljYWwg
> RG9jdG9yMEoGA1UdIAEB/wRAMD4wPAYMKoMIhpEPAQUBAQABMCwwKgYIKwYBBQUH
> AgEWHmh0dHA6Ly93d3cubWVkaXMub3IuanAvOF9ocGtpLzANBgkqhkiG9w0BAQsF
> AAOCAQEAQy3GVQSOnJ+DDxZzunthjFgVn1Cxr0OhqGFavWyehhVSkVjiCvIfc6n6
> fC1aig726Kjq2ZH9TxoE4i5AYBBrrPOD7GrnrDG0mzuSISw/1pypfD6hCoHii/jU
> /dnWy5QgQWu9FCgTNLEzIx7M12LgfoUpfPlbHBVCwGQ/VHWXeDWCYrHhT71Th5YF
> 9iH+woLpszbHxzG737uDgdWMNFi0KpElnNplvlPKBYXLF3PZFwNvice3E9iG4UwW
> ogigOs+eJt9tt5cg/zdhQGdkn8ut1PrlGlTlIdQhysRvaq0wvprkGDDStJGVqr6h
> 3gELp07jwcvFMgWpp0+GKL7USGphsA==</ds:X509Certificate></ds:X509Data>
>
>
>
>
> *****************************************************************************
> Hiroaki Inomata
> MD: Psychiatry BA: Physics
> PHAZOR, LLC: CEO https://phazor.info
> -- Medical Open Source Software Activities --
> OsiriX (open-source ver): contributor, Horos: contributor
> HorliX: developer https://phazor.info/HorliX
> OpenDolphin-2.7m: developer
> https://github.com/Hiroaki-Inomata/OpenDolphin-2.7m (source code)
> ...etc
>
> 2024年5月1日(水) 10:51 Hiroaki Inomata <inomatah0612@xxxxxxxxx>:
> >
> > ある程度、自己解決できたので、報告。
> >
> > 参考にした署名サンプルコードが、PKCS#11使用していたため、パディングに
> > 関しては PKCS#1 v1.5 が自動で適用になっていたようです。
> > (それでパディングされていた)
> >
> > 実運用的には、署名した xml を送付する際には、署名時にどのアルゴリズムを使ったか
> > 記述するタグがあるため、送信する側が適当な値を設定すれば、管理サービス側は
> > それに従って復号、(処方箋情報を反映した)メッセージを取り出すことができる、
> > という理屈のようです。
> >
> > 猪股
> > *****************************************************************************
> > Hiroaki Inomata
> > MD: Psychiatry BA: Physics
> > PHAZOR, LLC: CEO https://phazor.info
> > -- Medical Open Source Software Activities --
> > OsiriX (open-source ver): contributor, Horos: contributor
> > HorliX: developer https://phazor.info/HorliX
> > OpenDolphin-2.7m: developer
> > https://github.com/Hiroaki-Inomata/OpenDolphin-2.7m (source code)
> > ...etc
> >
> > 2024年4月30日(火) 12:41 Hiroaki Inomata <inomatah0612@xxxxxxxxx>:
> > >
> > > HPKI 署名云々について、
> > > これまでのところをコマンドラインツールにして公開。
> > > https://github.com/Hiroaki-Inomata/HPKI-tools
> > >
> > > この時点で需要あるとは思いませんが、使い方・注意点などは
> > > https://github.com/Hiroaki-Inomata/HPKI-tools/issues/2
> > > で。
> > >
> > > 猪股弘明
> > > 精神保健指定医
> > > *****************************************************************************
> > > Hiroaki Inomata
> > > MD: Psychiatry BA: Physics
> > > PHAZOR, LLC: CEO https://phazor.info
> > > -- Medical Open Source Software Activities --
> > > OsiriX (open-source ver): contributor, Horos: contributor
> > > HorliX: developer https://phazor.info/HorliX
> > > OpenDolphin-2.7m: developer
> > > https://github.com/Hiroaki-Inomata/OpenDolphin-2.7m (source code)
> > > ...etc
> > >
> > > 2024年4月28日(日) 12:52 Hiroaki Inomata <inomatah0612@xxxxxxxxx>:
> > > >
> > > > Mac Java からも HPKI カードとお話しできました。
> > > > https://twitter.com/H_Inomata/status/1784425323842727948
> > > > (とりあえず署名アプリを選択しています)
> > > >
> > > > ところで、返値
> > > >  PC/SC terminal Circle CIR125 ICC
> > > > を見て気がつきましたが、このカードリーダー PC/SC 規格に準拠してますね。
> > > >
> > > > おそらくですが、(少なくとも Windows Java からアクセスする場合)デバドラも不要でしょう。
> > > > Mac Java の javax.smartcardio パッケージがデバドラを使っているかどうかは、よくわかりません。
> > > >
> > > > OpenDolphin に「署名モジュール」を使わない電子処方箋発行機能を付け加えるかは
> > > > 時間との兼ね合いになります。
> > > >
> > > >
> > > > 猪股弘明
> > > > 精神保健指定医
> > > > *****************************************************************************
> > > > Hiroaki Inomata
> > > > MD: Psychiatry BA: Physics
> > > > PHAZOR, LLC: CEO https://phazor.info
> > > > -- Medical Open Source Software Activities --
> > > > OsiriX (open-source ver): contributor, Horos: contributor
> > > > HorliX: developer https://phazor.info/HorliX
> > > > OpenDolphin-2.7m: developer
> > > > https://github.com/Hiroaki-Inomata/OpenDolphin-2.7m (source code)
> > > > ...etc
> > > >
> > > > 2024年4月28日(日) 4:43 Hiroaki Inomata <inomatah0612@xxxxxxxxx>:
> > > > >
> > > > > https://ml.orca.med.or.jp/orca-users/msg15582.html
> > > > > の続き。
> > > > >
> > > > > マイナカード風に
> > > > > 0x80, 0x2A, 0x00, 0x80, 0x34
> > > > > という APDU コマンドでも
> > > > > パディングしない
> > > > > 0x00, 0x2A, 0x9e, 0x9a, 0x34
> > > > > というコマンドでも署名値は返ってきますが、
> > > > > パディング処理した時とは、値が違ってました。
> > > > >
> > > > > 仕様書でも示唆されていましたが、パディング処理したデータの
> > > > > 署名値を埋め込んで当局に送付するのが適正な処理のようです。
> > > > >
> > > > > このパディング処理がどのレベルで決まっているかは未調査です。
> > > > >
> > > > > なお、処方箋 CSV からハッシュ値を求めるとき、たまに SHA1 と
> > > > > 紹介されているサイトもあるようですが、おそらく SHA256 です。
> > > > >
> > > > > また、(PC のドライバに頼らず)ブラウザの機能を使って
> > > > > マイナカードを操作できないかという議論はマイナカード普及期にも
> > > > > あったようです。
> > > > > https://twitter.com/shao1555/status/1279752796657430528
> > > > > デジ庁の中の人の主張は少々苦しいような気がします。
> > > > > https://twitter.com/masanork/status/1279783955965767681
> > > > >
> > > > >
> > > > > 猪股弘明
> > > > > 精神保健指定医
> > > > > *****************************************************************************
> > > > > Hiroaki Inomata
> > > > > MD: Psychiatry BA: Physics
> > > > > PHAZOR, LLC: CEO https://phazor.info
> > > > > -- Medical Open Source Software Activities --
> > > > > OsiriX (open-source ver): contributor, Horos: contributor
> > > > > HorliX: developer https://phazor.info/HorliX
> > > > > OpenDolphin-2.7m: developer
> > > > > https://github.com/Hiroaki-Inomata/OpenDolphin-2.7m (source code)
> > > > > ...etc