رمزگذاری و رمزگشایی داده ها با Cloud KMS

۱. مرور کلی

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

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

  • نحوه فعال کردن رابط برنامه‌نویسی کاربردی Cloud KMS
  • نحوه ایجاد یک حلقه کلید Cloud KMS
  • نحوه ایجاد کلید رمزنگاری 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-symmetric-key با هدف encryption درون حلقه کلیدی که ایجاد کرده‌اید، ایجاد کنید.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

۵. رمزگذاری داده‌ها

یک فایل با داده‌هایی برای رمزگذاری ایجاد کنید و از ابزار خط فرمان gcloud برای رمزگذاری داده‌های موجود در فایل استفاده کنید:

$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file ./data.txt \
    --ciphertext-file ./data.txt.enc

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

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

Cloud KMS هیچ یک از متن‌های ساده‌ای که شما ارائه می‌دهید را ذخیره نمی‌کند. شما باید این متن رمز شده را در مکانی امن ذخیره کنید زیرا برای بازیابی مقدار متن ساده به آن نیاز خواهید داشت.

۶. رمزگشایی داده‌ها

متن رمز شده را با استفاده از ابزار خط فرمان gcloud از فایل رمزگشایی کنید:

$ gcloud kms decrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file - \
    --ciphertext-file ./data.txt.enc

ابزار خط فرمان gcloud متن رمز شده را از فایل می‌خواند و آن را با استفاده از Cloud KMS رمزگشایی می‌کند. توجه داشته باشید که این مثال آرگومان --plaintext-file را به صورت - مشخص می‌کند. این به gcloud دستور می‌دهد که نتیجه را در ترمینال چاپ کند.

کنسول my-contents چاپ خواهد کرد که همان مقدار متنی ساده از فایل بالا است.

۷. چرخاندن کلیدها

در Cloud KMS، یک کلید رمزنگاری در واقع مجموعه‌ای از نسخه‌های کلید رمزنگاری است. شما می‌توانید نسخه‌های کلید رمزنگاری جدیدی برای انجام چرخش کلید ایجاد کنید. Cloud KMS همچنین می‌تواند کلیدها را به طور خودکار و طبق یک برنامه زمانی بچرخاند .

برای چرخاندن دستی یک کلید، یک نسخه کلید رمزنگاری جدید ایجاد کنید و آن را به عنوان نسخه اصلی تنظیم کنید:

$ gcloud kms keys versions create \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --primary

تمام درخواست‌های آینده برای رمزگذاری داده‌ها از این کلید جدید استفاده خواهند کرد. کلیدهای قدیمی‌تر هنوز برای رمزگشایی داده‌هایی که قبلاً با استفاده از آن کلیدها رمزگذاری شده‌اند، در دسترس هستند. Cloud KMS به طور خودکار کلید رمزگشایی مناسب را بر اساس متن رمز ارائه شده تعیین می‌کند - لازم نیست مشخص کنید که از کدام نسخه کلید رمزنگاری برای رمزگشایی استفاده کنید.

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

$ gcloud kms keys versions disable "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key"

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

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

تمیز کردن

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

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

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

مجوز

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