[WWDC 2018] 보안 암호 및 보안 코드 자동 입력

11679 단어 iOS12WWDCWWDC2018iOS
Automatic Strong Passwords and Security Code AutoFill의 대략적인 내용 노트.내용과 이미지는 모두 세션 영상에서 가져온 것이다.

암호 자동 입력


지금까지의 암호 관리 및 입력


지금까지 비밀번호 관리는 사용자들에게 고민의 근원이었다.모든 서비스는 안전성이 높은 비밀번호를 준비해야 하지만 비밀번호 관리자를 사용해도 번거롭다.이에 따라 이번에는 비밀번호 걱정 없이 간단하고 안전하게 관리할 수 있게 됐다.
현재 많은 사용자가 iCloud Keychain을 사용하고 있습니다.애플 자체도 키카인에 접근할 수 없기 때문에 키카인의 관리는 생체 측정에 이어 안전하고 간단한 방법이다.이것은 iOS 12에서 더 간단해졌습니다.

iOS 12의 암호 관리 및 입력


새 계정 생성 화면에서 메일 표시줄에 초점을 맞출 때 사용자 이름을 알려 줍니다.요약은 지금까지 Keychain에 저장된 정보를 바탕으로 한다.

다음에 암호란에 초점을 맞출 때 안전성이 강한 암호 후보를 제시합니다.물론 이전 Keychain과 마찬가지로 다른 장치도 비밀번호를 계승하여 사용할 수 있다.몇 번의 클릭만으로 서명이 가능합니다.

이 프로그램에 다시 로그인하면 모든 서비스에 ID와 비밀번호의 후보 설정이 표시됩니다.이 버튼을 클릭하면 생체측정이 시작되며 생체측정에 성공하면 자동으로 ID, 비밀번호 표시줄을 입력한다.

팩스 인증 2개가 필요한 경우 텍스트 메시지를 받을 때 인증 코드가 키보드 위에 표시되며 해당 인증 코드를 클릭해서만 입력할 수 있다.

실현 방법


이 암호의 자동 입력 기술은 웹을 바탕으로 제작된 것이다.QuickTypebar (키보드의 후보 표시줄 보이기) 에 인증 정보를 표시하기 위해서는 입력란이 어떤 서비스인지 판단할 수 있도록 응용 프로그램과 필드가 대응해야 한다.관련은 매우 간단합니다. 응용된entitlements 파일과 서버 측의 인증 정보 파일을 조금만 바꾸면 됩니다.이것에 관해서는 WWDC 2017Introducing Password AutoFill for Apps에 소개됐는데, 이것도 볼 수 있다.
현지인 쪽에서 하는 일은Contenttypes의 설정이 있습니다.적절한 Field에 적합한 type을 지정합니다.
let userTextField = UITextField()
userTextField.textContentType = .username

let passwordTextField = UITextField()
passwordTextField.textContentType = .password
AutoFill은 WKWebview에서도 지원됩니다.암호 관리자의 구체적인 실현 방법은 참고할 수 있다Implementing AutoFill Credential Provider Extensions.
새 계정으로 로그인하면 그 인증 정보를 저장하느냐는 질문을 받을 수 있습니다.여기에 저장하면 다른 디바이스인 Safari도 AutoFill의 혜택을 받을 수 있습니다.

암호 저장 프로세스

  • 예상 로그인 방안
  • 관련 도메인 검사 적응성 기반
  • 사용자 이름과 비밀번호 찾기
  • 로그인 동작 감지
  • 암호를 저장하거나 업데이트할지 묻기
  • 적응성 검사


    비밀번호 저장 주변과 관련해서는 iOS 12에서 새롭지 않지만, 적용성을 확인하려면 다음과 같이 확인한다.
  • Field에 적당한 콘텐츠 type 부여
  • view층에서 로그인 형식 제외
  • view층에서 제외된 후 로그인 폼 지우기
  • 올바른 도메인에 저장
  • SecAddSharedWebCredential()이 더 이상 필요하지 않습니다
  • 주안점

  • 도메인에 적용
  • Field에 적절한 레이블
  • 테스트 로그인
  • 보안 높은 암호 자동 생성


    서명 과정이 간단하고 안전하며 편리하다.사용자는 더 이상 번거로운 일을 고려하지 않고 몇 번만 클릭하면 된다.

    보안 높은 암호 흐름 자동 생성

  • ViewController의 유형 추정
  • 관련 도메인 검사 적응성 기반
  • 대응하는 로그인 폼 요소 검출
  • 사용자 이름 필드에 초점을 맞추면 사용자 이름 알림
  • 암호 필드에 초점을 맞출 때 자동으로 높은 보안 암호 입력
  • 적응성 검사


    ※ 오토파일과 같은 항목
    코드와 관련해서는 사용자 이름의 Field가 AutoFill과 동일하지만 iOS 12에 새로 등장하는 newPassword에 암호를 지정해야 합니다.
    let newPasswordTextField = UITextField()
    newPasswordTextField.textContentType = .newPassword
    
    let confirmPasswordTextField = UITextField()
    confirmPasswordTextField.textContentType = .newPassword
    
    적절한 Field를 감지하기 위해 UItableView에 인증 화면을 만들려면 UITExt Field를 작은 구역에 설정해야 합니다.

    마음에 새기다

  • .username.newPassword 형식을 동일한 화면에 구성
  • 사용자 이름 형식은read-only
  • 암호 변경 형식에도 적용
  • 암호 형식

  • 20자
  • 대문자, 숫자, 하이픈, 소문자 포함
  • 엔트로피 71비트 이상
  • 대부분의 서비스와 호환
  • 사용자 정의 규칙을 만들어서 보안이 강한 암호를 자동으로 생성할 수도 있습니다.
    let newPasswordTextField = UITextField()
    
    let rulesDescriptor = "allowed: upper, lower, digit; required: [$];"
    newPasswordTextField.passwordRules = UITextInputPasswordRules(descriptor: rulesDescriptor)
    
    Password Rules Validation Tool라는 말이 있어서 사용해 볼 수 있어요.

    데모


    Email의 TextField 지정Content Type = Username,Keyboard Type = E-mail Address,Password의 TextField 지정Content Type = New Password,Secure Text Entry = true로 프레젠테이션을 표시합니다.대부분의 경우 여기까지만 설정하면 된다.그러나 이번 서비스는 비밀번호$에 포함되어야 하기 때문에 검증 오류가 발생했습니다.이 경우 암호 생성 규칙을 수정해야 하므로 Password Rules Validation Tool 페이지로 이동하여 required에 "$"를 지정합니다.형이 만들어진 출력은 UIKit용, HTML용입니다.이번에는 UIKit용 교재를 복사해 Storyboard-Password의 TextField-Password Rules 막대에 붙여 넣었다.

    주안점

  • 도메인에 적용
  • Field에 적절한 레이블
  • 테스트 로그인
  • (필요한 경우) 개별 암호 규칙 제정
  • 보안 코드 자동 입력


    텍스트 기반 보안 코드(예: 듀얼 인수 인증)를 자동으로 입력하려면 아래.oneTimeCode와 시스템 키보드가 필요합니다.
    let securityCodeTextField = UITextField()
    securityCodeTextField.textContentType = .oneTimeCode
    
    보안 코드를 포함하는 메시지는 지원하는 모든 언어에 사용할 수 있습니다.
    이 기능은 iOS뿐만 아니라 맥OS에서도 사용할 수 있으며 로컬뿐만 아니라 사파리에서도 사용할 수 있다.또 맥의 사파리에 보안코드가 필요할 때도 아이폰으로 받은 보안코드를 자동으로 입력할 수 있다.

    AutoFill을 Safari에서 사용할 경우 다음 표에 따라 설정합니다.

    Federated 인증


    지금까지 Federated 인증을 사용하려는 상황에서 이런 표현이 나왔다.

    버튼을 한 번만 누르면 사파리와 쿠키를 원활하게 공유할 수 있다.A Swebauthentication Session을 사용하면 다음과 같은 이점이 있습니다.
  • 빠른 로그인 프로세스
  • 타사에서도 특별히 신경 쓰지 않고 사용할 수 있음
  • 암호 자동 입력 및 보안 코드에 대한 자동 입력
  • 단순 블록 기반 API
  • 사용법

    import AuthenticationServices
    guard let oauthURL = URL(string: "https://www.example.com/oauth/...") else {
        return
    }
    self.authenticationSession = ASWebAuthenticationSession(url: oauthURL, callbackURLScheme: nil) { (callbackURL, error) in
        guard error == nil, let callbackURL = callbackURL else {
            // Process error.
            return
        }
        // Process token.
    }
    self.authenticationSession.start()
    

    새 암호 관리 기능


    iCloud keychain에서는 다른 장치에서도 인증 정보를 공유할 수 있습니다.시리에게 "○○ 사이트 비밀번호 알려주세요"라고 말하면 상대방도 입력한다.
    iOS 12에서는 앱의 비밀번호를 설정하는 페이지의 디자인이 변경돼 비밀번호 등을 복사할 수 있고, 에어드롭을 통해 비밀번호를 보낼 수도 있다.이것은 맥OS에서도 마찬가지다.

    또 하나의 큰 변화가 있다.만약 여러 웹 페이지에서 같은 비밀번호를 사용했다면, 같은 비밀번호를 설정한 웹 페이지를 알려주시고, 이 화면에서 비밀번호를 변경할 수 있습니다.

    tvOS에서도 오토파일로부터 혜택을 받을 수 있다.자세한 내용은 What's New in tvOS 12 참조할 수 있습니다.

    총결산

  • AutoFill의 힘
  • 자동 이동
  • 사용 가능 여부를 확인하기 위한 테스트
  • 첨부:관련 문서

  • Enabling Password AutoFill on a Text Input View
  • Password AutoFill
  • ASWebAuthenticationSession
  • 좋은 웹페이지 즐겨찾기