امضا و تأیید داده ها با Cloud KMS (نامتقارن)

۱. مرور کلی

Cloud KMS یک سرویس مدیریت کلید مبتنی بر ابر است که به شما امکان می‌دهد کلیدهای رمزنگاری را برای سرویس‌های ابری خود به همان روشی که در محل انجام می‌دهید، مدیریت کنید. این سرویس شامل پشتیبانی از رمزگذاری، رمزگشایی، امضا و تأیید با استفاده از انواع و منابع کلید مختلف از جمله Cloud HSM برای کلیدهای پشتیبانی‌شده توسط سخت‌افزار است. این آموزش به شما نحوه امضا و تأیید داده‌ها با استفاده از کلیدهای نامتقارن Cloud KMS را آموزش می‌دهد.

یاد خواهی گرفت.

  • نحوه فعال کردن رابط برنامه‌نویسی کاربردی Cloud KMS
  • چگونه یک حلقه کلید درست کنیم
  • نحوه ایجاد کلید رمزنگاری برای امضا/تأیید نامتقارن

۲. تنظیمات و الزامات

تنظیم محیط خودتنظیم

  1. وارد Cloud Console شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. (اگر از قبل حساب Gmail یا G Suite ندارید، باید یکی ایجاد کنید .)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aTQz5GpG0T

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5 OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه‌های Google Cloud (نام بالا قبلاً گرفته شده و برای شما کار نخواهد کرد، متاسفیم!). بعداً در این آزمایشگاه کد به آن PROJECT_ID گفته خواهد شد.

  1. در مرحله بعد، برای استفاده از منابع گوگل کلود، باید پرداخت را در Cloud Console فعال کنید .

اجرای این آزمایشگاه کد، اگر اصلاً هزینه‌ای نداشته باشد، نباید هزینه زیادی داشته باشد. حتماً دستورالعمل‌های بخش «پاکسازی» را که به شما نحوه خاموش کردن منابع را آموزش می‌دهد، دنبال کنید تا پس از این آموزش، متحمل هزینه نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

شروع پوسته ابری

در این آزمایشگاه کد، از Cloud Shell ، یک محیط مجازی رایگان که روی Google Cloud اجرا می‌شود، استفاده خواهید کرد. از کنسول GCP، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

آماده‌سازی و اتصال به محیط فقط چند لحظه طول می‌کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

این ماشین مجازی با تمام ابزارهای توسعه‌ای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و روی فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. مگر اینکه دستورالعمل دیگری داده شده باشد، تمام دستورات را از این پوسته اجرا کنید.

۳. سرویس Cloud KMS را فعال کنید

قبل از اینکه بتوانید از Cloud KMS استفاده کنید، ابتدا باید سرویس را در پروژه خود فعال کنید. این کار فقط یک بار در هر پروژه باید انجام شود. برای فعال کردن سرویس Cloud KMS، دستور زیر را اجرا کنید:

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

فعال‌سازی آن می‌تواند تا یک دقیقه طول بکشد. پس از اتمام، دستور موفقیت‌آمیز بودن آن را گزارش می‌دهد.

۴. ایجاد کلید KMS

یک حلقه کلید Cloud KMS ایجاد کنید. در Cloud KMS، یک حلقه کلید مجموعه‌ای منطقی از کلیدهای رمزنگاری است. حلقه کلید شامل ابرداده‌هایی در مورد کلیدها مانند مکان آنها است. یک حلقه کلید با نام my-keyring در منطقه global ایجاد کنید:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

حالا یک کلید رمزنگاری با نام my-asymmetric-signing-key با هدف asymmetric-signing درون حلقه کلیدی که ایجاد کرده‌اید، ایجاد کنید.

$ gcloud kms keys create "my-asymmetric-signing-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "asymmetric-signing" \
    --default-algorithm "rsa-sign-pkcs1-4096-sha512"

۵. امضا کردن داده‌ها

برخلاف رمزگذاری، رمزگشایی داده‌هایی که با استفاده از کلید نامتقارن Cloud KMS رمزگذاری شده‌اند، نیاز به دسترسی آنلاین به سرویس Cloud KMS دارد. متن رمز شده را از فایل با استفاده از ابزار خط فرمان gcloud رمزگشایی کنید:

یک فایل حاوی داده‌ها برای امضا ایجاد کنید و از ابزار خط فرمان gcloud برای امضای داده‌ها با کلید Cloud KMS استفاده کنید:

$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-signing-key" \
    --version "1" \
    --digest-algorithm "sha512" \
    --input-file ./data.txt \
    --signature-file ./data.txt.sig

امضا در فایل data.txt.sig روی دیسک ذخیره می‌شود. اگر فایل data.txt.sig را باز کنید، متوجه خواهید شد که دارای کاراکترهای عجیب و غیرقابل چاپ است. دلیل این امر این است که داده‌های حاصل در قالب دودویی هستند.

هنگام ذخیره امضا در پایگاه داده یا ارسال آن به عنوان بخشی از یک درخواست HTTP، ممکن است نیاز به رمزگذاری داده‌ها داشته باشید. یک مکانیزم رمزگذاری رایج، base64 است.

۶. داده‌ها را تأیید کنید

با کلیدهای نامتقارن، Cloud KMS مستقیماً تأیید را انجام نمی‌دهد. در عوض، دسترسی به یک کلید عمومی را فراهم می‌کند و شما داده‌ها را با استفاده از آن کلید عمومی از طریق رمزنگاری کلید عمومی تأیید می‌کنید. با کلیدهای نامتقارن، تأیید می‌تواند کاملاً آفلاین انجام شود و نیازی به دسترسی به Cloud KMS یا هر API دیگر Google Cloud نیست. تأیید با استفاده از یک ابزار رمزنگاری مانند openssl یا با یک زبان برنامه‌نویسی یا کتابخانه‌ای که از رمزنگاری کلید عمومی پشتیبانی می‌کند، انجام می‌شود.

کلید عمومی را از Cloud KMS دانلود کنید:

$ gcloud kms keys versions get-public-key "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-signing-key" \
    --output-file ./key.pub

با استفاده از ابزار خط فرمان openssl امضا را در برابر کلید عمومی تأیید کنید:

$ openssl dgst -sha256 \
    -verify ./key.pub \
    -signature ./data.txt.sig ./data.txt

کنسول یک پیام موفقیت‌آمیز چاپ می‌کند که نشان می‌دهد امضای دیجیتال معتبر است.

Verified OK

۷. تبریک می‌گویم!

شما رابط برنامه‌نویسی کاربردی Cloud KMS را فعال کردید، یک کلید امضای نامتقارن ایجاد کردید و داده‌ها را امضا و تأیید کردید! Cloud KMS یک محصول قدرتمند است و امضا/تأیید فقط بخش کوچکی از قابلیت‌های آن است.

تمیز کردن

اگر کاوش شما تمام شد، لطفاً حذف پروژه خود را در نظر بگیرید.

  • به کنسول پلتفرم ابری بروید
  • پروژه‌ای را که می‌خواهید خاموش کنید انتخاب کنید، سپس روی «حذف» در بالا کلیک کنید. این کار پروژه را برای حذف زمان‌بندی می‌کند.

اطلاعات بیشتر

مجوز

این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.