Zgodność eksportu ITSAppUsesNonExemptEncryption podczas testów wewnętrznych?


215

Otrzymałem ten komunikat podczas wybierania kompilacji do testów wewnętrznych. Mówi o ustawianiu ITSAppUsesNonExemptEncryption w info.plist, co to znaczy? czy to konieczne?

wprowadź opis zdjęcia tutaj


3
To dosłownie pytanie, czy korzystasz z jakiejkolwiek kryptografii / czy twoja aplikacja jest zaprojektowana do przechowywania bezpiecznych informacji kryptograficznie.
Andriko13

1
Od 20 września 2016 r. Nie jest to już wymagane. Zobacz moją odpowiedź tutaj: stackoverflow.com/a/40391664/776167 - Możesz powiedzieć, że jesteś zwolniony.
hisnameisjimmy

Odpowiedzi:


217

Zasadniczo <key>ITSAppUsesNonExemptEncryption</key><false/>oznacza wartość logiczną równą NO.

wartość info.plist

Aktualizacja przez @JosepH: ta wartość oznacza, że ​​aplikacja nie używa szyfrowania lub tylko szyfrowanie zwolnione. Jeśli aplikacja używa szyfrowania i nie jest zwolniona, musisz ustawić tę wartość na TAK / prawda.

Czasami wydaje się dyskusyjne, gdy aplikacja rozważa użycie szyfrowania.


1
dzięki - tego właśnie szukałem (jak dodać ten klucz do graficznego pliku listy)
Natalia

2
Ustawienie „ITSAppUsesNonExemptEncryption” na wartość false / NO NIE oznacza, że ​​szyfrowanie w aplikacji nie uległo zmianie. Oznacza to, że aplikacja nie używa szyfrowania, a jedynie szyfrowanie zwolnione. Jeśli aplikacja korzysta z szyfrowania i nie jest zwolniona, musisz ustawić tę wartość na TAK / prawda. Niewiele aplikacji może ustawić tę wartość na NIE; na przykład jeśli jakakolwiek część Twojej aplikacji korzysta z protokołu https, prawie na pewno musisz powiedzieć TAK. Zobacz stackoverflow.com/questions/2135081/...
JosephH

1
@JosephH w porządku, dziękuję bardzo za wgląd, rzeczywiście twoje informacje wydają się poprawne
Elijah Saounkine

23
Zazwyczaj nie trzeba ustawiać na TAK, jeśli używasz protokołu https. Patrz uwaga 4 z kategorii 5 część 2 . W większości przypadków, jeśli głównym celem aplikacji nie jest szyfrowanie, możesz ustawić wartość NIE. Istnieją pewne zastrzeżenia, na przykład to, czy chcesz zrezygnować z informacji na żądanie „właściwego organu”, więc przeczytaj uważnie.
Ben Kane

1
Szyfrowanie HTTPS jest implementowane na poziomie systemu operacyjnego; aplikacja nie ma problemów z szyfrowaniem danych. W moim rozumieniu propozycja Bena Kane'a jest poprawna.
Elijah Saounkine

61

Według WWDC2015 Dystrybucja Co nowego

wprowadź opis zdjęcia tutaj

Ustawienie „ITSAppUsesNonExemptEncryption” na „NIE” w info.plist działa poprawnie. jeśli w Twojej aplikacji nie ma treści kryptograficznych.

wprowadź opis zdjęcia tutaj

Otrzymałem to okienko wyskakujące Podczas wybierania kompilacji do testów wewnętrznych nie dodałem klucza „ITSAppUsesNonExemptEncryption” do mojego info.plist, ale nadal działało dla mnie.

Nawet pomyślnie przesłana nowa aplikacja nie zawierała kluczy „ITSEncryptionExportComplianceCode” i „ITSAppUsesNonExemptEncryption”.

Również Apple Doc.

Ważne: jeśli aplikacja wymaga dostarczenia dodatkowych dokumentów do przeglądu szyfrowania, nie będzie miała statusu Gotowy do sprzedaży w sklepie, dopóki zgodność eksportowa nie przejrzy i nie zatwierdzi dokumentów. Aplikacja nie może być rozpowszechniana w celu przetestowania przedpremierowego, dopóki zgodność eksportowa nie zostanie sprawdzona i zatwierdzona.

Jeśli aplikacja nie korzysta z szyfrowania i nie chcesz odpowiadać na te pytania w momencie przesyłania, możesz podać informacje o zgodności eksportu z kompilacją. Możesz także dostarczyć nową lub zaktualizowaną dokumentację za pośrednictwem iTunes Connect, aby otrzymać odpowiednią wartość ciągu klucza, którą należy uwzględnić w kompilacji przed przesłaniem jej do iTunes Connect.

Aby dodać dokumentację zgodności z eksportem w iTunes Connect:

Przejdź do sekcji Szyfrowanie w części Funkcje. Kliknij znak plus obok odpowiedniej sekcji platformy. Odpowiedz odpowiednio na pytania. Załącz plik po wyświetleniu monitu. Kliknij Zapisz. Twoje dokumenty zostaną natychmiast przesłane do przeglądu, a status dokumentu będzie widoczny w Przeglądu zgodności. Kluczowa wartość zostanie również wygenerowana automatycznie, którą można dołączyć do pliku Info.plist. Aby uzyskać więcej informacji na temat dołączania kluczowej wartości do kompilacji, zobacz sekcję Zasoby i pomoc Zgodność z przepisami.

Możesz przesłać kompilację bez klucza zgodności eksportu. Jeśli podasz klucz, może to oznaczać, że nie potrzebujesz dokumentacji zgodności z eksportem; nie wymaga to zgody. Jeśli podasz klucz, który odwołuje się do określonego dokumentu zgodności z eksportem, dokument ten musi zostać zatwierdzony; nie może być w trybie recenzji ani odrzucenia.

wprowadź opis zdjęcia tutaj

Możesz przejrzeć swoje odpowiedzi w dowolnym momencie, klikając nazwę pliku dokumentu i wybierając Więcej informacji. Jeśli musisz zaktualizować dokumentację lub zmienić dowolną odpowiedź na pytania, musisz powtórzyć powyższe kroki, aby dodać nowy dokument, który odpowiada wprowadzonym zmianom.



51

Dodaj ten klucz do pliku plist ... Wszystko będzie dobrze ..

<key>ITSAppUsesNonExemptEncryption</key>  
<false/>

Po prostu wklej wcześniej </dict></plist>


25

Apple uprościło nasz proces tworzenia, więc nie musisz za każdym razem klikać tego samego pola wyboru. Możesz usprawnić przepływ iTC, kompilując tę ​​flagę w aplikacji.

Tak jest nadal od 2019 r.


17

Aby wybrać z menu rozwijanego, zacznij pisać następujący wiersz:

Aplikacja korzysta z szyfrowania nieobjętego zwolnieniem


12

Należy pamiętać o 2 rzeczach. Możesz ustawić tę wartość na NIE, jeśli albo w ogóle nie korzystasz z szyfrowania , albo jesteś objęty wyłączonymi przepisami . Dotyczy to następujących rodzajów aplikacji:

Źródło: Izba handlowa : https://www.bis.doc.gov/index.php/policy-guidance/encryption/encryption-faqs#15

Aplikacje konsumenckie

  • zapobieganie piractwu i kradzieży oprogramowania lub muzyki;
  • muzyka, filmy, utwory / muzyka, zdjęcia cyfrowe - odtwarzacze, nagrywarki i organizery
  • gry / gry - urządzenia, oprogramowanie uruchomieniowe, interfejsy HDMI i inne komponenty, narzędzia programistyczne
  • Telewizor LCD, Blu-ray / DVD, wideo na żądanie (VoD), kino, cyfrowe nagrywarki wideo (DVR) / osobiste nagrywarki wideo (PVR) - urządzenia, przewodniki multimedialne on-line, integralność i ochrona treści komercyjnych, HDMI i inne elementy interfejsy (nie wideokonferencje);
  • drukarki, kopiarki, skanery, aparaty cyfrowe, kamery internetowe - w tym części i podzespoły
  • narzędzia i sprzęt gospodarstwa domowego

Aplikacje biznesowe / systemowe: obsługa systemów, integracja i kontrola. Kilka przykładów

  • automatyzacja procesów biznesowych (BPA) - planowanie i harmonogramowanie procesów, zarządzanie łańcuchem dostaw, inwentaryzacja i dostawa

  • transport - bezpieczeństwo i konserwacja, monitorowanie systemów i sterowniki pokładowe (w tym systemy lotnicze, kolejowe i komercyjne systemy samochodowe), technologie „inteligentnych autostrad”, operacje transportu publicznego i pobieranie opłat itp.

  • systemy przemysłowe, produkcyjne lub mechaniczne - w tym robotyka, bezpieczeństwo instalacji, media, fabryka i inny ciężki sprzęt, sterowniki systemów obiektów, takie jak alarmy przeciwpożarowe i HVAC

  • medyczne / kliniczne - w tym aplikacje diagnostyczne, harmonogramy pacjentów i poufność zapisów danych medycznych

  • geologia stosowana - górnictwo / wiercenie, pobieranie próbek atmosferycznych / monitorowanie pogody, mapowanie / pomiary, tamy / hydrologia

Badania naukowe / naukowe / analityczne. Kilka przykładów:

  • zarządzanie procesami biznesowymi (BPM) - abstrakcja i modelowanie procesów biznesowych

  • wizualizacja naukowa / symulacja / ko-symulacja (z wyłączeniem takich narzędzi do obliczeń, tworzenia sieci, kryptoanalizy itp.)

  • narzędzia do syntezy danych dla nauk społecznych, ekonomicznych i politycznych (np. ekonomiczne, populacyjne, globalne zmiany klimatu, badanie opinii publicznej itp. prognozowanie i modelowanie)

Bezpieczna dostawa i instalacja własności intelektualnej. Kilka przykładów

  • automatyczne instalatory i aktualizatory do pobierania oprogramowania

  • ochrona klucza licencyjnego i podobna walidacja zakupu

  • projektowanie oprogramowania i sprzętu Ochrona IP

  • oprogramowanie do projektowania wspomaganego komputerowo (CAD) i inne narzędzia kreślarskie

Uwaga: te przepisy dotyczą również testowania aplikacji przy użyciu TestFlight


4

Ten sam błąd rozwiązany w ten sposób

wprowadź opis zdjęcia tutaj

    using UnityEngine;
    using System.Collections;
    using UnityEditor.Callbacks;
    using UnityEditor;
    using System;
    using UnityEditor.iOS.Xcode;
    using System.IO;

public class AutoIncrement : MonoBehaviour {

    [PostProcessBuild]
    public static void ChangeXcodePlist(BuildTarget buildTarget, string pathToBuiltProject)
    {

        if (buildTarget == BuildTarget.iOS)
        {

            // Get plist
            string plistPath = pathToBuiltProject + "/Info.plist";
            var plist = new PlistDocument();
            plist.ReadFromString(File.ReadAllText(plistPath));

            // Get root
            var rootDict = plist.root;

            // Change value of NSCameraUsageDescription in Xcode plist
            var buildKey = "NSCameraUsageDescription";
            rootDict.SetString(buildKey, "Taking screenshots");

            var buildKey2 = "ITSAppUsesNonExemptEncryption";
            rootDict.SetString(buildKey2, "false");


            // Write to file
            File.WriteAllText(plistPath, plist.WriteToString());
        }
    }
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

    [PostProcessBuild]
    public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
    {
        //A new build has happened so lets increase our version number
        BumpBundleVersion();
    }


    // Bump version number in PlayerSettings.bundleVersion
    private static void BumpBundleVersion()
    {
        float versionFloat;

        if (float.TryParse(PlayerSettings.bundleVersion, out versionFloat))
        {
            versionFloat += 0.01f;
            PlayerSettings.bundleVersion = versionFloat.ToString();
        }
    }
    [MenuItem("Leman/Build iOS Development", false, 10)]
    public static void CustomBuild()
    {
        BumpBundleVersion();
        var levels= new String[] { "Assets\\ShootTheBall\\Scenes\\MainScene.unity" };
        BuildPipeline.BuildPlayer(levels, 
            "iOS", BuildTarget.iOS, BuildOptions.Development);
    }

}

dodano pokrewną linię kodu, aby programista mógł użyć niezbędnych kluczy
Rıfat Erdem Sahin

Rozumiem, usunąłem mój komentarz. Dzięki
Bhargav Rao

4

Apple zmieniło zasady w tym zakresie. Przeczytałem wszystkie dokumenty Apple i tyle amerykańskich rejestrów eksportowych, ile mogłem znaleźć.

Moje zdanie na ten temat było do niedawna nawet przy użyciu HTTPS dla większości aplikacji, co oznaczało, że Apple wymagałoby certyfikatu eksportowego. Niektóre aplikacje, takie jak bankowość, byłyby w porządku, ale w przypadku wielu aplikacji nie należą one do kategorii wyłączonej, która jest bardzo, bardzo szeroka.

Jednak firma Apple wprowadziła obecnie opcję zwolnienia dla kategorii zwolnionych dla aplikacji, które TYLKO używają protokołu https. Nie wiem, kiedy to zrobili, ale myślę, że był to grudzień 2016 lub styczeń 2017. Teraz przesyłamy nasze aplikacje bez certyfikatu rządowego USA.


1
Link do dokumentacji „wynoś się”? Nie mogę ustalić, czy HTTPS jest w porządku, czy nie.
gbhall

@gbhall Niepotrzebne dla HTTPS. Możesz spróbować złożyć podanie, a nawet nie przejdziesz już przez formularz wniosku ze stron GOV. (nie pamiętam nazwy)

@Sneak OK na zdrowie, stary. Mamy nadzieję, że tak będzie nadal w przyszłości.
gbhall

@Sneak cheers man. Ten najnowszy przykład wydaje się wskazywać, że musisz przesyłać raport roczny: stackoverflow.com/a/44396900/333733
gbhall

1
@ Zapoznaj się zdecydowanie z czymś więcej. Dzięki za linki. W tej chwili tylko HTTPS.
gbhall
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.