| dcmsign(1) | OFFIS DCMTK | dcmsign(1) |
نام (NAME)
dcmsign - امضا و اعتبارسنجی فایلهای دایکام (DICOM)
خلاصه دستور (SYNOPSIS)
dcmsign [options] dcmfile-in [dcmfile-out]
توضیحات (DESCRIPTION)
ابزار dcmsign یک فایل دایکام (dcmfile-in) را میخواند، عملیات امضای دیجیتال را روی آن انجام میدهد و در صورت اعمال هرگونه تغییر، شیء دایکام را در یک فایل خروجی (dcmfile-out) مینویسد.
پنج عملیات امضای دیجیتال پشتیبانی میشوند:
- اعتبارسنجی تمام امضاهای موجود در فایل دایکام
- ایجاد یک امضای دیجیتال جدید در مجموعه داده اصلی
- ایجاد یک امضای دیجیتال جدید در یک آیتم از توالی تعبیهشده در مجموعه داده
- حذف یک امضای دیجیتال منفرد از فایل دایکام
- حذف تمام امضاهای دیجیتال از فایل دایکام.
پارامترها (PARAMETERS)
dcmfile-in نام فایل ورودی دایکام برای پردازش ("-" برای ورودی استاندارد)
dcmfile-out نام فایل خروجی دایکام ("-" برای خروجی استاندارد)
گزینهها (OPTIONS)
گزینههای عمومی (general options)
-h --help
چاپ این راهنما و خروج
--version
چاپ اطلاعات نسخه و خروج
--arguments
چاپ آرگومانهای بسطیافته خط فرمان
-q --quiet
حالت بیصدا، عدم چاپ هشدارها و خطاها
-v --verbose
حالت پرگو، چاپ جزئیات پردازش
-d --debug
حالت اشکالزدایی، چاپ اطلاعات دیباگ
-ll --log-level [l]evel: string constant
(fatal, error, warn, info, debug, trace)
استفاده از سطح l برای ثبتکننده وقایع
-lc --log-config [f]ilename: string
استفاده از فایل پیکربندی f برای ثبتکننده وقایع
گزینههای ورودی (input options)
قالب فایل ورودی:
+f --read-file
خواندن قالب فایل یا مجموعه داده (پیشفرض)
+fo --read-file-only
فقط خواندن قالب فایل
-f --read-dataset
خواندن مجموعه داده بدون اطلاعات متای فایل
نحو انتقال ورودی:
-t= --read-xfer-auto
تشخیص خودکار نحو انتقال (پیشفرض)
-td --read-xfer-detect
نادیده گرفتن نحو انتقال تعیینشده در هدر متای فایل
-te --read-xfer-little
خواندن با نحو انتقال صریح VR و little endian
-tb --read-xfer-big
خواندن با نحو انتقال صریح VR و big endian
-ti --read-xfer-implicit
خواندن با نحو انتقال ضمنی VR و little endian
مدیریت عناصر UN با طول مشخص:
-uc --retain-un
نگهداشتن عناصر به عنوان UN (پیشفرض)
+uc --convert-un
تبدیل به VR واقعی در صورت شناختهشده بودن
دستورات امضا (signature commands)
--verify
اعتبارسنجی تمام امضاها (پیشفرض)
+s --sign [p]rivate key file, [c]ertificate file: string
ایجاد امضا در شیء اصلی
+si --sign-item [k]eyfile, [c]ertfile, [i]tem location: string
ایجاد امضا در آیتم توالی
+t --insert-timestamp ts[q]file, ts[r]file [u]idfile: string
درج برچسب زمانی تأییدشده از پاسخ r
به پرسوجوی برچسب زمانی q با UID امضای u
+r --remove [s]ignature UID: string
حذف امضا
+ra --remove-all
حذف تمام امضاها از مجموعه داده
گزینههای عمومی امضا (general signature options)
قالب فایل کلید و گواهی:
-pem --pem-keys
خواندن کلیدها/گواهیها با قالب PEM (پیشفرض)
-der --der-keys
خواندن کلیدها/گواهیها با قالب DER
قالب امضا:
-fn --format-new
استفاده از قالب صحیح امضای دایکام (پیشفرض)
-fo --format-old
استفاده از قالب قدیمی امضای DCMTK (قبل از 3.5.4)؛ در صورتی که امضا
شامل دادههای پیکسل فشردهشده باشد، غیراستاندارد است. این گزینه
تنها باید برای اعتبارسنجی امضاهای قالب قدیمی استفاده شود.
گزینههای اعتبارسنجی امضا (فقط با --verify) (signature verification options)
اعتبارسنجی امضا:
+rv --verify-if-present
اعتبارسنجی امضاها در صورت وجود، و قبولی در غیر این صورت
(پیشفرض)
+rg --require-sig
شکست عملیات در صورت عدم وجود هیچگونه امضا
+rc --require-creator
شکست عملیات در صورت عدم وجود امضای RSA ایجادکننده
+ru --require-auth
شکست عملیات در صورت عدم وجود امضای RSA احراز هویت
+rs --require-sr
شکست عملیات در صورت عدم وجود امضای RSA گزارش ساختاریافته (SR)
اعتبارسنجی برچسب زمانی:
+tv --verify-ts
اعتبارسنجی برچسب زمانی تأییدشده در صورت وجود (پیشفرض)
-tv --ignore-ts
نادیده گرفتن برچسبهای زمانی تأییدشده
+tr --require-ts
شکست عملیات در صورت عدم وجود برچسب زمانی تأییدشده
مرجع صدور گواهی (CA):
+cf --add-cert-file [f]ilename: string
افزودن فایل گواهی معتبر به مخزن گواهیها
+uf --add-ucert-file [f]ilename: string
افزودن فایل گواهی میانی نامعتبر
+cd --add-cert-dir [d]irectory: string
افزودن گواهیهای موجود در d به مخزن گواهیها
+cr --add-crl-file [f]ilename: string
افزودن فایل فهرست ابطال گواهی (مستلزم --enable-crl-vfy)
+cl --enable-crl-vfy
فعالسازی بررسی فهرست ابطال گواهی (CRL)
گزینههای ایجاد امضا (فقط با --sign یا --sign-item) (signature creation options)
رمز عبور کلید خصوصی:
+ps --std-passwd
درخواست رمز عبور از کاربر در ورودی استاندارد (پیشفرض)
+pw --use-passwd [p]assword: string
استفاده از رمز عبور مشخصشده
-pw --null-passwd
استفاده از رشته خالی به عنوان رمز عبور
پروفایل امضای دیجیتال:
-pf --profile-none
عدم اعمال هیچگونه پروفایل امضا (پیشفرض)
+pb --profile-base
اعمال پروفایل پایه امضای RSA
+pc --profile-creator
اعمال پروفایل امضای RSA ایجادکننده
+pa --profile-auth
اعمال پروفایل امضای احراز هویت
+pr --profile-sr
اعمال پروفایل امضای RSA گزارش ساختاریافته (SR)
+pv --profile-srv
اعمال پروفایل امضای RSA گزارش ساختاریافته (اعتبارسنجی)
الگوریتم MAC:
+mr --mac-ripemd160
استفاده از RIPEMD 160 (پیشفرض)
+ms --mac-sha1
استفاده از SHA-1
+mm --mac-md5
استفاده از MD5
+m2 --mac-sha256
استفاده از SHA-256
+m3 --mac-sha384
استفاده از SHA-384
+m5 --mac-sha512
استفاده از SHA-512
هدف امضا:
+lp --list-purposes
نمایش لیست کدهای هدف امضا و خروج
-sp --no-sig-purpose
عدم افزودن هدف امضا (پیشفرض)
+sp --sig-purpose [p]urpose code: integer (1..18)
افزودن کد هدف امضای دیجیتال p
انتخاب تگ:
-t --tag [t]ag: "gggg,eeee" یا نام دیکشنری
امضای تنها تگ تعیینشده
(این گزینه میتواند چندین بار تکرار شود)
-tf --tag-file [f]ilename: string
خواندن لیست تگها از فایل متنی
گزینههای ایجاد برچسب زمانی (فقط با --sign یا --sign-item) (timestamp creation options)
ایجاد برچسب زمانی:
-ts --timestamp-off
عدم ایجاد برچسب زمانی (پیشفرض)
+ts --timestamp-file [t]sq-filename, [u]id-filename: string
ایجاد فایل پرسوجوی برچسب زمانی t و فایل uid با نام u
الگوریتم MAC برچسب زمانی (فقط همراه با --timestamp-file):
+tm2 --ts-mac-sha256
استفاده از SHA-256 (پیشفرض)
+tm3 --ts-mac-sha384
استفاده از SHA-384
+tm5 --ts-mac-sha512
استفاده از SHA-512
+tmr --ts-mac-ripemd160
استفاده از RIPEMD 160
+tms --ts-mac-sha1
استفاده از SHA-1 (توصیه نمیشود)
+tmm --ts-mac-md5
استفاده از MD5 (توصیه نمیشود)
گزینههای مقدار تصادفی (Nonce) برچسب زمانی (فقط همراه با --timestamp-file):
+tn --ts-use-nonce
گنجاندن مقدار تصادفی یکبارمصرف (پیشفرض)
-tn --ts-no-nonce
عدم گنجاندن مقدار تصادفی
گزینههای گنجاندن گواهی برچسب زمانی (فقط همراه با --timestamp-file):
+tc --ts-request-cert
درخواست گواهی TSA در برچسب زمانی (پیشفرض)
-tc --ts-no-cert
عدم درخواست گواهی TSA در برچسب زمانی
گزینههای خطمشی برچسب زمانی (فقط همراه با --timestamp-file):
-tp --ts-no-policy
عدم تعیین خطمشی برچسب زمانی (پیشفرض)
+tp --ts-policy [p]olicy-OID: string
درخواست خطمشی برچسب زمانی p
گزینههای خروجی (output options)
نحو انتقال خروجی:
+t= --write-xfer-same
نوشتن با همان نحو انتقال ورودی (پیشفرض)
+te --write-xfer-little
نوشتن با نحو انتقال صریح VR و little endian
+tb --write-xfer-big
نوشتن با نحو انتقال صریح VR و big endian
+ti --write-xfer-implicit
نوشتن با نحو انتقال ضمنی VR و little endian
کدگذاری طول در توالیها و آیتمها:
+e --length-explicit
نوشتن با طولهای صریح (پیشفرض)
-e --length-undefined
نوشتن با طولهای نامشخص
سایر گزینههای خروجی:
+d --dump [f]ilename: string
تخلیه جریان بایتی ارسالشده به کدک MAC در فایل
(تنها با --sign یا --sign-item)
نکات (NOTES)
فایلها و پارامترها (Files and Parameters)
ابزار dcmsign تعدادی فایل و فرمت فایل را میخواند و مینویسد که در این بخش شرح داده شدهاند.
گواهیهای کلید عمومی با قالب X.509v3 با کدگذاری PEM یا DER مورد انتظار هستند. ابزار dcmsign در حال حاضر از کلیدهای عمومی RSA و DSA پشتیبانی میکند، هرچند تنها کلیدهای RSA در پروفایلهای امنیتی استاندارد دایکام تعریف شدهاند.
کلیدهای خصوصی با کدگذاری PEM یا DER مورد انتظارند. PEM توصیه میشود (و پیشفرض است) زیرا امکان نگهداری کلیدها به صورت رمزگذاریشده را فراهم میکند. به طور کلی توصیه نمیشود رمز عبور رمزگذاری در خط فرمان مشخص شود، زیرا خط فرمان ممکن است برای سایر فرآیندهای سیستم (مانند با دستور "ps -ef") قابل مشاهده باشد.
به طور پیشفرض، dcmsign امضایی ایجاد میکند که تمام عناصر داده در مجموعه داده یا آیتم را پوشش میدهد. این حالت پیشفرض را میتوان با تعیین صریح فهرستی از عناصر داده (تگهای ویژگی) بازنویسی کرد. این لیست میتواند از یک فایل خوانده شود یا در خط فرمان مشخص شود یا هر دو.
در خط فرمان، تگهای ویژگی به این صورت مشخص میشوند:
--tag "gggg,eeee" که در آن gggg و eeee شمارههای هگزادسیمال گروه
و عنصر هستند
--tag "Name" که در آن 'Name' یک نام ویژگی نمادین از دیکشنری
دایکام است.
هنگامی که تگهای ویژگی از طریق گزینه --tag-file از فایل خوانده میشوند، یک فایل متنی ساده مورد انتظار است. تگهای درون فایل یا نامهای نمادین از فرهنگ داده هستند یا قالب (gggg,eeee) (همراه با پرانتز) دارند. تگها با یک یا چند نویسه فاصله سفید از هم جدا میشوند.
پروفایل امضای دیجیتال انتخابشده ممکن است تگهای ویژگی اضافی را که باید در امضا لحاظ شوند مشخص کند، که به طور خودکار اضافه خواهند شد.
عملیات --sign-item نیاز به یک رشته موقعیت مکانی دارد که مشخص میکند امضا در کدام آیتم توالی ایجاد شود. رشته موقعیت مکانی دارای قالب زیر است:
SequenceName[index].SequenceName[index].SequenceName[index](...)
که در آن SequenceName یا نام نمادین ویژگی از فرهنگ داده است یا یک تگ عددی در قالب (gggg,eeee)، و index یک عدد صحیح دهدهی بدون علامت برای شماره آیتم است که از صفر برای اولین آیتم آغاز میشود. برای نمونه، رشته موقعیت زیر:
ReferencedSeriesSequence[0].ReferencedImageSequence[1]
موجب ایجاد امضای دیجیتال در دومین آیتم از ReferencedImageSequence (0008,1140) میشود که در نخستین آیتم ReferencedSeriesSequence (0008,1115) در مجموعه داده اصلی دایکام قرار دارد.
برچسبهای زمانی معتبر (Certified Timestamps)
از نسخه 3.6.6، ابزار dcmsign پشتیبانی از برچسبهای زمانی معتبر بر اساس RFC 3161 را ارائه میدهد. این ابزار میتواند یک درخواست برچسب زمانی (TSQ) را هنگام ایجاد امضا بنویسد، و دستور جدید --insert-timestamp پاسخ برچسب زمانی (TSR) را از فایل خوانده و به امضای دیجیتال دایکام اضافه میکند.
در زمان اعتبارسنجی امضا، وجود برچسب زمانی تشخیص داده شده و اعتبارسنجی میشود مگر اینکه گزینه --ignore-ts استفاده شده باشد. اعتبارسنجی امضا و برچسب زمانی از یک مخزن گواهی مشترک استفاده میکنند. این مخزن میتواند با گزینههای --add-cert-file، --add-cert-dir، --add-ucert-file و --add-crl-file پر شود.
دایرکتوریهای گواهی درهمسازیشده (Hashed Certificate Directories)
به جای افزودن دستی گواهیهای CA و فهرستهای ابطال گواهی (CRL)، کاربر میتواند با استفاده از --add-cert-dir دایرکتوری ایجاد کند که dcmsign در صورت نیاز گواهیها را از آنجا جستجو و بارگذاری کند.
این پوشه باید به ازای هر گواهی یا CRL یک فایل با فرمت PEM و با نامی به صورت hash.N برای گواهی یا hash.rN برای CRL داشته باشد. هش مقداری است که توسط دستورات زیر برگردانده میشود:
openssl x509 -hash -noout -in <filename.pem> (برای گواهی) openssl crl -hash -noout -in <filename.pem> (برای CRL)
پسوند .N یا .rN یک شماره ترتیبی است که از صفر شروع میشود و به ازای هر گواهی یا CRL با مقدار هش یکسان یکی اضافه میشود. وجود فاصله در شمارهها پشتیبانی نمیشود.
فهرستهای CRL تنها زمانی بررسی میشوند که گزینه --enable-crl-vfy مشخص شده باشد.
ثبت وقایع (LOGGING)
سطح خروجی ثبت وقایع ابزارهای خط فرمان و کتابخانههای زیربنایی میتواند توسط کاربر مشخص شود. به طور پیشفرض، تنها خطاها و هشدارها در خروجی استاندارد خطا نوشته میشوند. با استفاده از گزینه --verbose پیامهای اطلاعرسانی مانند جزئیات پردازش نیز گزارش میشوند. گزینه --debug برای دریافت جزئیات بیشتر درباره فعالیتهای داخلی استفاده میشود. در حالت --quiet تنها خطاهای مهلک گزارش میشوند.
در صورتی که خروجی ثبت وقایع باید در فایل نوشته شود، گزینه --log-config میتواند استفاده شود. یک نمونه فایل پیکربندی در <etcdir>/logger.cfg ارائه شده است.
خط فرمان (COMMAND LINE)
تمام ابزارهای خط فرمان از نشانهگذاری زیر برای پارامترها استفاده میکنند: براکتهای مربعی مقادیر اختیاری را احاطه میکنند (0-1)، سه نقطه پایانی نشان میدهد که مقادیر متعدد مجاز است (1-n)، و ترکیبی از هر دو به معنی 0 تا n مقدار است.
گزینههای خط فرمان با علامت پیشوند '+' یا '-' از پارامترها متمایز میشوند. معمولاً ترتیب و موقعیت گزینهها اختیاری است. در صورت ناسازگاری گزینهها، آخرین گزینه در سمت راست اعمال میشود.
علاوه بر این، میتوان فایلهای دستور را با پیشوند '@' تعیین کرد (مانند @command.txt). چنین آرگومانی با محتوای فایل متنی مربوطه جایگزین میشود.
کدهای خروج (EXIT CODES)
ابزار dcmsign هنگام خروج از کدهای زیر استفاده میکند:
عمومی (general)
EXITCODE_NO_ERROR 0 EXITCODE_COMMANDLINE_SYNTAX_ERROR 1 EXITCODE_NOOPENSSL 5
خطاهای فایل ورودی (input file errors)
EXITCODE_CANNOT_READ_INPUT_FILE 20 EXITCODE_NO_INPUT_FILES 21 EXITCODE_CANNOT_READ_TAG_FILE 30 EXITCODE_CANNOT_READ_TSQ_FILE 31 EXITCODE_CANNOT_READ_TSR_FILE 32 EXITCODE_CANNOT_READ_UID_FILE 33
خطاهای فایل خروجی (output file errors)
EXITCODE_CANNOT_WRITE_OUTPUT_FILE 40 EXITCODE_CANNOT_WRITE_SUPPORT_FILE 46
خطاهای پردازش (processing errors)
EXITCODE_CANNOT_ACCESS_SIGNATURE 80 EXITCODE_CANNOT_ACCESS_TS 81 EXITCODE_CANNOT_INSERT_TS 82 EXITCODE_SIGNATURE_REMOVAL_FAILED 83 EXITCODE_SIGNATURE_UID_NOT_FOUND 84 EXITCODE_SIGNATURE_CREATION_FAILED 85 EXITCODE_SYNTAX_ERROR_IN_TAG_FILE 86 EXITCODE_TS_CONSISTENCY_CHECK_FAILED 87
خطاهای ویژه برنامه (application specific errors)
EXITCODE_NO_SIGNATURES_PRESENT 100 EXITCODE_SIGNATURE_VERIFICATION_FAILED 101 EXITCODE_SIGNATURE_VERIFICATION_POLICY 102
متغیرهای محیطی (ENVIRONMENT)
ابزار dcmsign تلاش خواهد کرد فرهنگهای داده دایکام را که در متغیر محیطی DCMDICTPATH مشخص شدهاند، بارگذاری کند. به طور پیشفرض، یعنی اگر متغیر محیطی DCMDICTPATH تنظیم نشده باشد، فایل <datadir>/dicom.dic بارگذاری خواهد شد مگر اینکه فرهنگ داده درون برنامه ساخته شده باشد.
حق نشر (COPYRIGHT)
Copyright (C) 2000-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
| Thu Jul 9 2026 18:43:40 | Version 3.7.0 |