CryptoKit təlimatı. İOS13 tətbiqlərində CryptoKit-dən necə istifadə etmək olar

Unsplash-də Zac Wolff-un şəkli

Bu yazıda, WWDC19-da Apple tərəfindən təqdim edilmiş CryptoKit üçün bir giriş təlimatı və bunun iOS13 üçün hazırlanmış tətbiqlərdə necə istifadə olunacağını görəcəyik. CryptoKit, məsələn, açıq və şəxsi açarların mübadiləsinə imkan verir ki, orada bir kriptovalyutalar (məsələn, Bitcoin) ilə bir iPhone-dan alış-veriş edə biləsiniz.

CryptoKit inkişaf etdiricilərə imkan verir:

  • Hasaları yaradın və müqayisə edin.
  • Simmetrik kriptoqrafiya istifadə edərək mesaj şifrələməsi və identifikasiyası.
  • Rəqəmsal imza yaratmaq və qiymətləndirmək üçün açıq açarlardan istifadə.

CryptoKit-in istifadəsi sadədir və aşağı səviyyəli API bilik və ya əl ilə yaddaş idarəetmə tələb etmir.

CryptoKit ilə həyata keçirilə bilən əsas əməliyyatlar

Hashing

Hash funksiyaları, ümumiyyətlə, bəzi məlumatlardan unikal açar yaradır. Giriş məlumatları eyni olsa da, əldə edilən açar eyni olacaq, bu da onları istifadə etməyə imkan verir, məsələn, bir faylın dəyişdirilib-dəyişdirilmədiyini bilmək üçün (əgər dəyişdirilibsə, hash fərqli olacaq). CryptoKit, HashFunction protokolunun köməyi ilə üç fərqli tətbiqə görə bir hash əldə etməyə imkan verir:

  • SHA256
  • SHA384
  • SHA512

Bu yolla hash dəyərlərini əvvəlkindən daha sadə bir şəkildə əldə edirik:

Apple, geri uyğunluğu səbəbindən MD5 və SHA1 kimi təhlükəli hesab etdiyi bəzi alqoritmlərə girişi təmin edir. Bunun üçün enum etibarlılığından istifadə etməliyik:

Rəqəmsal imza yaradın və təsdiq edin

Rəqəmsal imzalar mesajın və ya məlumatların həqiqiliyini yoxlamaq üçün istifadə olunur. Bu prosedur gündə bir çox dəfə ya e-poçtda, maliyyə əməliyyatlarında və ya https səhifələrinə daxil olarkən edilir. Cryptokit rəqəmsal imzaları yaratmaq və yoxlamaq üçün dörd fərqli yolu dəstəkləyir:

  • Əyri25519
  • P521
  • P384
  • Səh256

Bu sistemdən istifadə etmək üçün əvvəlcə açıq və özəl açar yaratmalıyıq:

Məzmunu imzalamaq üçün əldə etdiyimiz şəxsi açardan (açıq açarı da daxil olmaqla) istifadə edirik:

Açıq açarla rəqəmsal imzanın etibarlı olub olmadığını yoxlaya bilərik:

Məlumat şifrələmə

İndiki vaxtda məlumat şifrələməsi çox vacibdir, çünki məxfiliyinizə imkan verir. CryptoKit iki növ şifrələmə alqoritmini dəstəkləyir:

  • AES-GCM
  • ChaChaPoly (daha sürətli olduğu üçün mobil mühitlərdə buna üstünlük verilir).

Verilənlərin şifrələməsini və şifrələməsini sadə bir şəkildə edə bilərik:

Bu vəziyyətdə, məlumat şifrələməsində ChaChaPoly.SealedBox tipli bir obyekt əldə edirik (yalnız şifrləmə açarı ilə əldə edilə bilən bir məlumat konteyneridir). Bu obyekt öz növbəsində üç xassəni özündə birləşdirən birləşmiş əmlaka daxildir:

  • nonce: məlumat şifrələməsində istifadə olunan ixtiyari bir nömrədir.
  • şifrə: giriş məlumatları ilə eyni ölçüdə olan şifrəli məlumatlardır.
  • etiket: bu bir identifikasiya etiketidir və məlumatların bizə fərq etmədən dəyişdirilməsinin qarşısını alır.

Açar paylaşım

Açar razılaşma protokolu, iki tərəfin bir-biri ilə bölüşmək istədikləri məlumatları imzalamaq və şifrələmək üçün istifadə edilə bilən ortaq bir şifrələmə açarını etibarlı seçdiyi bir müddətdir. Bu da icazəsiz tərəflərə məlumatları əldə etməyə imkan verir.

Birincisi, duz üçün bir dəyər yaradırıq, yəni bir əsas törəmə funksiyasındakı girişlərdən biri kimi istifadə olunan təsadüfi bitlərdən ibarət olan bir dəyər yaradırıq. Məsələn, aşağıdakı kimi bir dəyər əldə edə bilərik:

İndi hər iki tərəf açıq açarlarını dərc edə və bir-birləri ilə paylaşa bilərlər (A istifadəçisinin açıq açarı B istifadəçisidir və əksinə):

Sonradan A istifadəçisi şəxsi açarı ilə B. istifadəçisinin açıq açarı ilə bir sirr paylaşır. İstifadəçi B eyni şeyi etməli və əldə edilmiş açarların eyni olduğunu yoxlamalıdır:

İndi yaradılan simmetrik açarı əvvəlcədən gördüyümüz kimi (ya AES-GCM alqoritmi və ya ChaChaPoly vasitəsilə) şifrələmək üçün istifadə edə bilərik.

Nəticə

Məlumatı şifrələmək üçün Apple-da istifadə olunan əvvəlki sistemdən fərqli olaraq (CommonCrypto), CryptoKit yüksək səviyyədədir, buna görə istifadə etmək çox sadədir. Buraya ən çox yayılmış şifrələmə alqoritmləri, həmçinin ən çox istifadə olunan əməliyyatlar daxildir: hashing, şifrələmə və açar paylaşımı.

Əvvəlcə 17 fevral 2020-ci ildə https://www.raulferrergarcia.com saytında yayımlandı.