رمزگذاری و رمزگشایی داده ها با 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-encryption-key با هدف asymmetric-encryption درون حلقه کلیدی که ایجاد کرده‌اید، ایجاد کنید.

$ gcloud kms keys create "my-asymmetric-encryption-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "asymmetric-encryption" \
    --default-algorithm "rsa-decrypt-oaep-4096-sha512"

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

با کلیدهای نامتقارن، 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-encryption-key" \
    --output-file ./key.pub

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

$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \
    -in ./data.txt \
    -inkey ./key.pub \
    -pkeyopt "rsa_padding_mode:oaep" \
    -pkeyopt "rsa_oaep_md:sha512" \
    -pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc

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

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

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

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

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

$ gcloud kms asymmetric-decrypt \


    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-encryption-key" \
    --version "1" \
    --plaintext-file - \
    --ciphertext-file ./data.txt.enc

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

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

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

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

تمیز کردن

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

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

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

مجوز

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