Android 13 이상을 실행하는 기기에서 Android는 처음 사용 시 신뢰 (TOFU) 인증 방식(RFC7435)을 지원합니다. 이는 사용자가 서버에 사용되는 루트 CA를 설치하고 저장된 네트워크에 도메인 이름을 설정함으로써 엔터프라이즈(EAP) 네트워크를 신뢰할 수 있는 방법입니다. TOFU를 사용하면 사용자가 엔터프라이즈 네트워크에 최초로 연결할 때 기기가 인증되지 않은 공개 키를 가져오고 후속 연결을 위해 이 키를 유지할 수 있습니다.
배경
비밀번호만 있으면 되는 개인 네트워크와 달리 엔터프라이즈 네트워크에서는 PKI(공개 키 인프라) 인증을 사용하므로 클라이언트가 인증서를 사전 설치해야 합니다. Android 11 이하의 경우 사용자는 네트워크 설정에서 서버 CA 인증서에 확인하지 않음 옵션을 선택하여 서버 측 인증서 유효성 검사를 우회할 수 있습니다. 그러나 보안을 강화하고 WPA R2 사양을 준수하고자 Android 12에는 엔터프라이즈 네트워크가 서버 인증서의 유효성을 검사하도록 하는 요구사항이 도입되었습니다. 이 추가 요구사항으로 인해 사용자가 이러한 네트워크에 CA 인증서를 설치해야 하므로 일종의 장벽이 생겼습니다. TOFU는 사용자가 루트 CA를 수락하기만 하면 PKI 기반 엔터프라이즈 네트워크에 연결되는 방법을 제공합니다.
기능 동작
사용자가 이미 설치된 인증된 공개 키가 없는 엔터프라이즈 네트워크에 연결할 경우 TOFU를 지원하는 기기는 다음과 같은 동작을 보입니다.
Wi-Fi 선택도구를 통해 새 네트워크에 연결
Wi-Fi 선택도구에서 새 엔터프라이즈 네트워크를 선택합니다.
네트워크가 신뢰할 수 있는 것인지 확인하라는 대화상자(그림 1)가 기기에 표시됩니다.
네트워크 연결을 수락하려면 예, 연결을 탭하고 거부하려면 연결 안 함을 탭합니다.
예, 연결을 탭하면 기기에서 자동으로 보안 매개변수를 구성하고 네트워크에 연결하며 네트워크 자동 연결을 사용 설정합니다.
연결 안 함을 탭하면 기기가 네트워크에서 연결 해제되고 네트워크 자동 연결이 사용 중지됩니다.
그림 1. TOFU 기능 대화상자
자동 연결이 사용 설정된 기존 네트워크에 연결
자동 연결이 사용 설정되어 있지만 유효한 CA 인증서가 없는 엔터프라이즈 네트워크에 연결되면 기기가 자동으로 연결된 후 고정(닫을 수 없는) 알림을 표시합니다.
알림을 탭합니다.
네트워크가 신뢰할 수 있는 것인지 확인하라는 대화상자(그림 1)가 기기에 표시됩니다.
네트워크 연결을 수락하려면 예, 연결을 탭하고 거부하려면 연결 안 함을 탭합니다.
예, 연결을 탭하면 기기에서 자동으로 보안 매개변수를 구성하고 네트워크에 연결하며 네트워크 자동 연결을 사용 설정합니다.
연결 안 함을 탭하면 기기가 네트워크에서 연결 해제되고 네트워크 자동 연결이 사용 중지됩니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2023-10-18(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2023-10-18(UTC)"],[],[],null,["# Trust on First Use (TOFU)\n\nFor devices running Android 13 or higher, Android\nsupports the Trust on First Use (TOFU) authentication approach\n([RFC7435](https://datatracker.ietf.org/doc/html/rfc7435.html)),\nwhich lets users trust an enterprise (EAP) network by installing the root CA\nused by the server and setting its domain name in a saved network. TOFU allows\nthe device to obtain an unauthenticated public key when a user first connects\nto an enterprise network and retain the key for subsequent connections.\n\nBackground\n----------\n\nCompared to personal networks that just require a password, enterprise networks\nuse public key infrastructure (PKI) authentication, which requires the client\nto preinstall certificates. In Android 11 or lower, users can select the\n*Do not validate* option for the server CA certificate in the network settings,\nbypassing the validation of the server side certificate. However, to strengthen\nsecurity and comply with the WPA R2 specification, Android 12 introduced a\nrequirement for enterprise networks to have server certificate validation. This\nadditional requirement created a barrier for users as they need to install a CA\ncertificate for such networks. TOFU provides a way for users to connect to a\nPKI-based enterprise network by simply accepting its root CA.\n\nFeature behavior\n----------------\n\nDevices that support TOFU display the following behavior when a user connects\nto an enterprise network that doesn't have an *already-installed*\nauthenticated public key.\n\n### Connect to new network through Wi-Fi picker\n\n1. Select a new enterprise network in Wi-Fi picker.\n\n The device displays a dialog (Figure 1) to confirm whether the\n network is trusted.\n2. Tap **Yes, connect** to accept the network connection, or tap **No, don't\n connect** to decline.\n\n - If you tap **Yes, connect**, the device automatically configures the\n security parameters, connects to the network, and enables autoconnect\n for the network.\n\n | **Note:** Misconfigured networks that use invalid or expired certificates might not allow any security validation by the device. In such cases, the device fails to connect to the network.\n - If you tap **No, don't connect**, the device disconnects from the\n network and disables autoconnect for the network.\n\n **Figure 1.** Dialog for the TOFU feature\n\n### Connect to existing network with autoconnect enabled\n\nWhen connecting to an enterprise network that has autoconnect enabled but\ndoesn't have a valid CA certificate, the device connects automatically, then\ndisplays a sticky (nondismissable) notification.\n\n1. Tap the notification.\n\n The device displays a dialog (Figure 1) to confirm whether the\n network is trusted.\n2. Tap **Yes, connect** to accept the network connection, or tap **No, don't\n connect** to decline.\n\n - If you tap **Yes, connect**, the device automatically configures the\n security parameters, connects to the network, and enables autoconnect\n for the network.\n\n | **Note:** Misconfigured networks that use invalid or expired certificates might not allow any security validation by the device. In such cases, the device fails to connect to the network.\n - If you tap **No, don't connect**, the device disconnects from the\n network and disables autoconnect for the network.\n\nImplementation\n--------------\n\nTo support the TOFU feature, implement the supplicant HALs provided in the\nAndroid Open Source Project (AOSP) at\n[`/hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant).\n\nThe following public APIs are available in Android 13\nfor use by apps:\n\n- [`WifiManager#isTrustOnFirstUseSupported()`](https://developer.android.com/reference/android/net/wifi/WifiManager#isTrustOnFirstUseSupported()): Indicates whether the device supports TOFU.\n- [`WifiEnterpriseConfig#enableTrustOnFirstUse(boolean)`](https://developer.android.com/reference/android/net/wifi/WifiEnterpriseConfig#enableTrustOnFirstUse(boolean)): Enables TOFU.\n- [`WifiEnterpriseConfig#isTrustOnFirstUseEnabled()`](https://developer.android.com/reference/android/net/wifi/WifiEnterpriseConfig#isTrustOnFirstUseEnabled()): Indicates whether TOFU is enabled.\n\nValidation\n----------\n\nTo validate the implementation of TOFU on your device, use the following tests:\n\n- CTS: `CtsWifiTestCases`\n- VTS: `VtsHalWifiSupplicantStaNetworkTargetTest`"]]