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

1. بررسی اجمالی

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

شما یاد خواهید گرفت

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

2. راه اندازی و الزامات

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

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

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJHHXieCvXw5 Zw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aTQz5GpG0T

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3UUUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3UUUO1A8CXUF

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

  1. در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورت‌حساب را در Cloud Console فعال کنید .

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

Cloud Shell را راه اندازی کنید

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

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZqZP1BX1BX1BXVZQ1BX1BXVZQ1BX1BX1VZQ1BH1W1W1VBHZQ1BH1W1D

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

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2Df6fetVgUGU0

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را بسیار افزایش می دهد. مگر اینکه دستور دیگری داده شود، تمام دستورات را از این پوسته اجرا کنید.

3. Cloud KMS Service را فعال کنید

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

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

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

4. کلید 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"

5. داده ها را امضا کنید

برخلاف رمزگذاری، رمزگشایی داده‌هایی که با استفاده از یک کلید نامتقارن 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 است.

6. بررسی داده ها

با کلیدهای نامتقارن، 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

7. تبریک می گویم!

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

پاک کن

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

  • به کنسول Cloud Platform بروید
  • پروژه ای را که می خواهید تعطیل کنید انتخاب کنید، سپس روی "حذف" در بالا کلیک کنید. این پروژه را برای حذف برنامه ریزی می کند.

بیشتر بدانید

مجوز

این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.