Güvenli tasarım araç zinciri

Figma tasarım belgesinden oluşturulan güvenlik izleme çözümü sunmak için güvenlik tasarım araç zincirini kullanın. Bu araç serisini sırayla kullanın.

Güvenlik tasarım derleyicisi, güvenlik monitörünü oluşturmak için sonraki kod oluşturma işlemlerini yönlendirmek üzere güvenlik yapıları üretir. Tasarım derleme ile kod üreten model arasındaki ayrım, kod üreten modelin TCL-3 ISO-26262 derecesi almasını sağlar.

Güvenlik tasarım araç zinciri

Şekil 1. Güvenlik tasarım araç zinciri.

Derleyici yapılar oluşturduktan sonra araç zinciri, bir rapor oluşturur. OEM güvenlik mühendisi, Figma tasarımından oluşturulan yapıları doğrulamak için bu raporu inceleyebilir.

Güvenli tasarım araç zinciri iş akışı

Şekil 2. Güvenlik tasarımının araç zinciri iş akışı.

Tasarım derleyici girişleri

Serileştirilmiş tasarım belgesi, bir tasarım aracından içe aktarılan ve araç seti şemasıyla işlenen bir kullanıcı arayüzü tasarımını temsil eder. Dosya, tasarımdan ayrıştırılan şu bilgileri içerir:

  • Bir tasarımın tam düğüm ağacı
  • Görseller ve bileşenler
  • Ad, sürüm ve son değiştirilme tarihi gibi meta veriler

Tasarımın kök düğümleri, düğüm listesinde tanımlanmalı ve tasarımda tanımlanan güvenlikle ilgili öğelerin kök düğümleri olmalıdır.

Bu dosya, gösterge panelini oluşturmak için Android Automotive OS ile entegre olur ve güvenlikle ilgili olmayan öğeleri, güvenlikle ilgili öğeleri kullanıcıya göstermek için SDV Media'da kaplama olarak çalışan yüksek kullanılabilirlik oluşturucu (HAR) ile görüntüler.

Tasarım derleyici, tasarımdaki güvenlikle ilgili kritik öğelerin görünürlüğünü değiştirmek için çıkış oluşturmak üzere DesignCompose özelleştirmelerini kullanır. Tasarım, Impeller ile gözetimsiz olarak oluşturulur. Özelleştirme değişiklikleri arasında sistem, görüntü yapıları oluşturmak için oluşturma arka ucuna ekran görüntüsü komutları gönderir.

Güvenlik monitörünü oluşturmak için örnek Figma tasarım dosyası

Şekil 3. Güvenlik monitörü oluşturmak için örnek Figma tasarım dosyası.

Çıkış dizini

Bu, derleyicinin oluşturulan yapıları depoladığı yerel dosya sistemindeki konumdur.

JSON yapılandırma dosyası

Genellikle bir OEM güvenlik mühendisi, kullanıcı arayüzü tasarımında yakalanmayan araç güvenliğiyle ilgili bilgileri yakalayan meta verileri içeren JSON yapılandırma dosyasını oluşturur. Bu dosya şu verileri içerir:

  • Güvenlikle ilgili ekranın kökü olarak belirlenen tasarım öğesi. Bu tasarım öğesi, araç ekranına göre boyutlandırılır. Boyut, ekranla aynı çözünürlüğe sahip olmalıdır. Güvenlikle ilgili tüm öğeler bu öğenin alt öğeleri olmalıdır. Doğrudan alt öğeler olmaları gerekmez, ancak ara düğümlere yerleştirilmiş olmaları gerekir. Bu kök, kök düğüm nesnesidir ve adı, tasarım belgesindeki bir düğümle eşleşmelidir.

  • Tasarım için hedef ekran. Birden fazla ekranda öğeler içeren kullanıcı arayüzlerini desteklemek için yapılandırma dosyasında birden fazla tasarım belirtilebilir. Her tasarım, ayrı bir ekranda gösterilmek üzere hedeflenir.

  • Araç veri yolu sinyali adlarının ilişkili kullanıcı arayüzü öğeleri sözlüğü. Bu sözlüğün anahtarları ve değerleri şunlardır:

    • Anahtarlar: Anlam içerecek şekilde araç veri yolu sinyali adı. Bu sinyal etkin olduğunda ilişkili kullanıcı arayüzü öğesi gösterilir. Sinyal etkin olmadığında ilişkili kullanıcı arayüzü öğesi gösterilmez.

    • Değerler: Araç veri yolu sinyali tarafından yönetilen güvenlikle ilgili öğenin Figma düğümü kimliği.

Şu örnek JSON yapılandırma dosyasına bakın:

{
  "documents" : [
    {
    "rootnode" : "#Stage",
    "display_id" : 1,
    "document_id": "GLJJrR1JI4HVEjL1qB40zq",
    "states" : {
      "abs": "#cluster/telltale/abs",
      "airbag": "#cluster/telltale/airbag",
      "low_tire_pressure": "#cluster/telltale/low-tire-pressure",
      "brake": "#cluster/telltale/brake",
      "traction": "#cluster/telltale/traction",
      "lowbeam": "#cluster/telltale/lowbeam",
      "hibeam": "#cluster/telltale/hibeam",
      "park_lights": "#cluster/telltale/park-lights",
      "fog_lights": "#cluster/telltale/fog-lights",
      "seatbelts" : "#cluster/telltale/no-seatbelt"
    }
    }
  ]
  ,
  "displays": [
    {
      "id": 1,
      "width": 1920,
      "height": 720
    }
  ]
 }

Tasarım derleyiciyi çalıştırma

Tasarım derleyicisini çalıştırmak için:

/path/to/safety-design-compiler -c path/to/<input-file>.json
-o path/to/output_directory

Tasarım derleyici girişleri bu tabloda açıklanmıştır:

Giriş Kısa Tür Açıklama
Yapılandırma -c dize Güvenlik yapılandırması JSON dosyasının kaydedileceği yol.
Çıkış -o dize Oluşturulan yapıların kaydedileceği yol.

Tasarım derleyici çıkışı

Tasarım derleyicisi, derleyici aracını çağırdığınızda belirtilen çıkış dizinine çıkış oluşturur ve kaydeder. Bu çıkış, güvenlik monitöründe çalışma zamanı piksel testlerini tanımlamak ve okunabilir rapor oluşturmak için kullanılan başlık dosyalarını oluşturur. Tasarım derleyici çıkışı, aşağıdakileri içeren bir ZIP dosyasında sağlanır:

  • Dışa aktarılan tasarımın yapısını açıklamak için dışa aktarılan öğelerin kök dizininde data.json dosya meta veri dosyası. Dosyadaki tüm yollar bu dosyaya göre belirlenir.

  • Sonraki kod oluşturma sırasında kullanılan, etkin durumdaki güvenlikle ilgili kullanıcı arayüzü öğelerini göstermek için bir dizi izole kullanıcı arayüzü öğesi resmi. Bu resimlerdeki alfa kanalı, güvenliği etkilemeyen piksel bilgileri içerir.

  • Oluşturulan kodu test ederken kullanılmak üzere, etkin ve devre dışı durumlardaki güvenlikle ilgili kullanıcı arayüzü öğelerini gösteren bir dizi tam kullanıcı arayüzü resmi.

  • Derleyici tarafından giriş olarak kullanılan, serileştirilmiş Figma belgesinin güncellenmiş sürümü. HAR, Config.json içinde belirtilen, bilgi veren düğümleri işaretler ve günceller. Bunu, araç seti şemasında RenderOptions::PixelPerfect işaretini ayarlayarak yapar. Böylece düğümler daha fazla işlenir.

Bu şekilde bir Figma tasarım dosyası gösterilmektedir.

Zip dosyasının içeriği

Şekil 4. Zip dosyasının içeriği.

Giriş dosyasını oluşturma

Güvenlik monitörü oluşturucu için data.json giriş dosyası oluşturun. Çıkış, boyut verilerini ve güvenlikle ilgili her bir görüntüleme öğesi için bir resim bağlantısını içeren bir dizi olarak yapılandırılır. Bu çıkış dosyasının yapısı aşağıdaki tabloda açıklanmıştır:

Öğe Tür Birimler Açıklama
static_ui_elements Sözlük Yok Figma dokümanından çıkarılan, güvenlikle ilgili tüm kullanıcı arayüzü öğelerinin meta verilerini içeren yapı.
x int piksel Güvenlikle ilgili öğenin yatay koordinatı.
y int piksel Güvenlikle ilgili öğenin dikey koordinatı.
width int piksel Güvenlikle ilgili öğenin genişliği
height int piksel Güvenlikle ilgili öğenin yüksekliği.
name dize Yok Figma belgesinden çıkarılan, güvenlikle ilgili kullanıcı arayüzü öğesinin adı. Bu öğeyle oluşturulan resimlerin göreli yolunu gösterir.
screen Kullanıcı arayüzünün hedeflediği ekranı açıklayan sözlük.
width int piksel Figma dokümanı kullanıcı arayüzünün genişliği.
height int piksel Figma dokümanı kullanıcı arayüzünün yüksekliği.
build Tasarım derleyicisinin bu çağrılması için derleme bilgilerini içeren sözlük.
figma_document_id dize Yok Bir dizi yapay nesne oluşturmak için kullanılan Figma dokümanının kimliği.
design_compiler_version dize Yok Bir grup yapıyı oluşturmak için kullanılan Design Compiler sürümü.

Bu bölümde, oluşturulan bir data.json dosyasının örneği verilmektedir:

{
 "static_ui_elements": [
   {
     "x": 71,
     "y": 663,
     "width": 38,
     "height": 47,
     "name": "cluster/telltale/no-seatbelt"
   },
   {
     "x": 149,
     "y": 667,
     "width": 40,
     "height": 39,
     "name": "cluster/telltale/low-tire-pressure"
   },
      {
     "x": 1727,
     "y": 676,
     "width": 43,
     "height": 27,
     "name": "cluster/telltale/hibeam"
   },
   {
     "x": 1810,
     "y": 675,
     "width": 43,
     "height": 30,
     "name": "cluster/telltale/lowbeam"
   },
  ...
  ...
 ],
 "screen": {
   "width": 1920,
   "height": 720
 },
 "build": {
   "figma_document_id": "taQnsdPS96wZY8dB1TbzOH",
   "design_compiler_version": "0.1.0"
 }
}

Dışa aktarılan tasarım resimleri

Sistem, güvenlik açısından önemli düğümlerin resimlerini, seri hale getirilmiş tasarım dokümanındaki adlarına göre iç içe geçmiş bir dizin yapısında oluşturur ve kaydeder.

Oluşturulan doğrulama resimlerinin dizin yapısı

Şekil 5. Doğrulama resimleri.

Sistem, belirtilen her gösterge için güvenlikle ilgili öğe bilgisi resimleri oluşturur. Bu resimler, ekranda göründüğünde güvenlikle ilgili kritik öğenin beklenen piksellerini içerir. Güvenlik monitörü, çalışma zamanı piksel testleri için bu resimlerdeki şeffaf pikselleri yoksayabilir.

Sistem, kullanıcı arayüzü testi ve doğrulama görüntüleri de oluşturur. Her bir belirtiyle birlikte kullanıcı arayüzünün tamamının ekran görüntülerini oluşturur ve bunları, güvenlik mühendislerinin güvenlik yapılandırmasını inceleyip onaylayabilmesi için okunabilir bir rapor oluşturmak üzere sağlar.

Bu resimleri, güvenlik monitörünün sonraki testlerinde de kullanabilirsiniz. Sistem, Açık ve Kapalı durumlarındaki tüm göstergeler için doğrulama resimleri oluşturur.

Bu resimlerde, tasarımla ilgili tüm güvenlik öğeleri etkin ve devre dışı olarak gösterilmektedir.

Etkin ve etkin olmayan güvenlikle ilgili öğeler Etkin ve etkin olmayan güvenlikle ilgili öğeler

Şekil 6 ve Şekil 7. Etkin ve etkin olmayan güvenlikle ilgili öğeler.

Şekil 8'de, emniyet kemeri takılı değil uyarı ışığıyla ilgili güvenlikle alakalı bilgiler gösterilmektedir:

Emniyet kemeri takılı değil uyarı ışığıyla ilgili güvenlikle alakalı bilgiler

Şekil 8. Emniyet kemeri takılı değil uyarı ışığı.

Şekil 9'da, gösterge için kullanıcı arayüzü testi ve doğrulama resmi gösterilmektedir.

Gösterge için kullanıcı arayüzü testi ve doğrulama

Şekil 9. Gösterge için kullanıcı arayüzü testi ve doğrulama.

Sistem, derlenmiş yapı klasöründeki her öğe için doğrulama resimleri oluşturur. Sistem, bu görüntüleri kod oluşturma adımında işler ve güvenlik monitöründe çalışma zamanı piksel testlerinde kullanılmak üzere bir üstbilgi dosyasına ekler.

Kullanıcıların okuyabileceği rapor oluşturucu

Bir Figma dokümanından yapay nesneler oluşturduktan sonra, okunabilir bir rapor oluşturabilirsiniz. Rapor oluşturucu, utils/human-readable-report-generator bölümünde bulunur.

Sistem, Design Compiler tarafından oluşturulan güvenlikle ilgili düğümlerin yapıtlarını bir HTML dosyasında özetler. Bu özet, düğümün etkin olduğu kullanıcı arayüzünün ekran görüntüsünü de içerir. Güvenlik monitörünü oluşturmadan önce derlenen yapıları inceleyebilirsiniz.

Rapor oluşturucuyu komut satırından çalıştırın:

cargo run --bin human-readable-report-generator -- -d /path/to/data.json
-o /path/to/output_folder

Bu tabloda, kullanıcıların okuyabileceği rapor oluşturucu girişleri açıklanmaktadır.

Giriş Kısa Tür Açıklama
data_folder -d dize Güvenlik derleyicisi tarafından oluşturulan data.json konumu.
output_path -o dize Oluşturulan raporun kaydedileceği yol.

Güvenlik onayı aracı

Onay jetonu oluşturmak için güvenlik mühendisi, okunabilir raporu inceledikten sonra output.json üzerinde güvenlik onayı komut dosyasını çalıştırabilir. Bu aracı utils/human-readable-report-generator bölümünde de bulabilirsiniz. Örneğin:

cargo run --bin approve-hrr -- -f /path/to/compiler_inspection_output.html -n
"Your Name" -e youremail@domain.com -o output/path

İncelenecek örnek HTML raporu

Şekil 10. Örnek HTML raporu.

Bu bölümde, güvenlik onayı aracı girişleri açıklanmaktadır.

Giriş Kısa Tür Açıklama
file_path -f dize Kullanıcıların okuyabileceği raporun dosya yolu.
approver_name -n dize Onaylayan mühendisin adı.
approver_email -e dize Onaylayan mühendisin e-posta adresi.
output_path -o dize Oluşturulan çıktının hedefi.

Bu bölümde approval_file.json örneği gösterilmektedir.

{
    "approver_name": //Name of the approver
    "approver_email": //Email of the approver
    "file_hash": //SHA-256 hash generated against the human readable report.
}

Referans güvenlik monitörü

Referans güvenlik monitörü, reference/safety-monitor konumunda bulunan Rust tabanlı bir hizmettir. Monitör, Design Compiler tarafından oluşturulan yapay nesneleri kullanarak sistemin durumunu izler ve ekran güvenliği uygunluğunu sağlar.

İzleyici, bağımsız bir ikili dosya (har_safety_monitor) olarak çalışır ve data.json dosyasının yolunu ve yapıların temel yolunu bağımsız değişken olarak alır.

/path/to/har_safety_monitor --data-json-path /path/to/data.json
--artifact-base-path /path/to/artifacts

Monitör aşağıdaki görevleri yerine getirir:

  • Öğe yükleme: Güvenlikle ilgili kullanıcı arayüzü öğelerini ve bunların beklenen konumlarını ve boyutlarını belirlemek için data.json yükler.
  • Referans görüntü karşılaştırması: Mevcut ekran içeriğini, derleyici tarafından oluşturulan güvenlikle ilgili kritik öğelerin referans görüntüleriyle karşılaştırır.
  • Araç verisi entegrasyonu: Her uyarı ışığının beklenen durumunu belirlemek için araç verisi kaynaklarına bağlanır.
  • Uyuşmazlık algılama: Araç verilerine göre beklenenlerle ekranda görünenler arasında uyuşmazlık varsa hata günlüğe kaydedilir.

Güvenlik monitörü, genellikle özel bir APEX içinde olmak üzere sistem görüntüsünün bir parçası olarak oluşturulup dağıtılacak şekilde tasarlanmıştır.