12P by neo 2달전 | favorite | 댓글 1개
  • 새 Swift 오픈소스 패키지인 swift-homomorphic-encryption 공개
  • 동형 암호화(HE)는 암호화된 데이터를 복호화하지 않고도 연산할 수 있는 암호화 기술
  • 클라이언트가 암호화된 데이터를 서버에 보내고, 서버는 이를 연산하여 결과를 반환
  • 서버는 원본 데이터를 복호화하거나 복호화 키에 접근하지 않음
  • 클라우드 서비스에서 사용자 데이터의 프라이버시와 보안을 보호하는 새로운 기회 제공

Apple의 활용 사례

  • iOS 18의 새로운 기능인 Live Caller ID Lookup에 동형 암호화 사용
  • Live Caller ID Lookup은 암호화된 쿼리를 서버에 보내 전화번호에 대한 정보를 제공
  • 서버는 요청의 특정 전화번호를 알지 못함
  • live-caller-id-lookup-example 패키지를 통해 기능 테스트 가능

주요 기능

  • Swift on Server, Hummingbird HTTP 프레임워크 및 크로스 플랫폼 지원
  • Benchmark 라이브러리를 통한 쉬운 벤치마킹
  • Swift Crypto의 성능 좋은 저수준 암호화 프리미티브

Private Information Retrieval (PIR)

  • Live Caller ID Lookup은 Private Information Retrieval(PIR)에 의존
  • 클라이언트가 서버에 키워드를 보내고 관련 값을 검색
  • 서버가 키워드를 알지 못하도록 구현
  • 동형 암호화를 사용하여 대규모 데이터베이스를 효율적으로 처리

동형 암호화

  • 동형 암호화는 복호화 없이 암호화된 데이터에 연산 가능
  • 일반적인 워크플로우:
    • 클라이언트가 민감한 데이터를 암호화하여 서버에 전송
    • 서버는 암호문에 대해 연산 수행
    • 서버는 결과 암호문을 클라이언트에 전송
    • 클라이언트는 결과를 복호화
  • Brakerski-Fan-Vercauteren (BFV) HE 스킴 구현
  • BFV는 양자 저항성을 가진 RLWE 문제 기반

동형 암호화 사용 예시

  • 다양한 프라이버시 보호 애플리케이션에 유용
  • 예시 코드:
    import HomomorphicEncryption  
    
    // Bfv 체계에 대한 몇 가지 암호화 파라미터를 선택하는 것으로 시작  
    // *이 암호화 파라미터는 안전하지 않으며 테스트용으로만 적합*  
    let encryptParams = try EncryptionParameters(from: .insecure_n_8_logq_5x18_logt_5)  
    
    // 매개변수를 사용하여 HE 계산을 위한 사전 계산을 수행  
    let context = try Context(encryptionParameters: encryptParams)  
    
    // Coefficient 인코딩을 사용하여 N 값을 인코딩  
    let values: [UInt64] = [8, 5, 12, 12, 15, 0, 8, 5]  
    let plaintext: Bfv.CoeffPlaintext = try context.encode(values: values, format: .coefficient)  
    
    // 비밀 키를 생성하고 이를 사용하여 일반 텍스트를 암호화  
    let secretKey = try context.generateSecretKey()  
    let ciphertext = try plaintext.encrypt(using: secretKey)  
    
    // 일반 텍스트를 해독하면 원래 값을 얻을 수 있음  
    let decrypted = try ciphertext.decrypt(using: secretKey)  
    let decoded: [UInt64] = try decrypted.decode(format: .coefficient)  
    precondition(decoded == values)  
    

GN⁺의 정리

  • 동형 암호화는 데이터 프라이버시를 보호하면서 클라우드 서비스의 새로운 가능성을 열어줌
  • Apple의 iOS 18 기능에 적용되어 실용성을 입증
  • Swift 커뮤니티에서 다양한 프라이버시 보호 애플리케이션 개발 가능
  • 유사한 기능을 제공하는 다른 프로젝트로는 Microsoft SEAL, IBM HELib 등이 있음
Hacker News 의견
  • 전화번호 조회는 동형 암호화가 실제로 작동하지 않는 교과서적인 예시임
  • 동형 암호화는 시뮬레이션을 접근할 수 없는 평행 우주로 이동시키는 것처럼 흥미로움
  • FHE에 관심 있는 사람은 최근 실용적인 FHE를 만든 Zama.ai를 확인해야 함
  • 이는 HE의 첫 번째 실제 사용 사례일 것임. 일반적으로 너무 느려서 유용하지 않다고 여겨졌지만, 이는 훌륭한 사용 사례임
  • 이는 장기적으로 매우 중요한 발표임, 즉각적으로 느껴지지는 않을 것임
    • 이는 AI와 PII 관련 사용 사례에 대한 대규모 발표임
  • Zama.ai의 FHE와 비교하면 어떨지 궁금함
  • FHE는 멋지지만 실제로 얼마나 많은 사용 사례에 적합한지 궁금함. 사용자에게 더 나은 보안 보장을 제공하지만, 조직이 클라우드에서 안전한 실행 환경을 약속한다고 해서 사용자가 정말로 신경 쓸까?
    • 또한 엔지니어링 관점에서 FHE를 사용하려면 흐름을 리팩토링하고 모든 다운스트림 처리를 고정적으로 약속해야 함. 법률이 이를 의무화하지 않는다면 조직이 충분한 동기를 가질까?
  • 이름이 웃김, 왜냐하면 HME는 여러 차원에서 전혀 빠르지 않음
    • 진정한 해결책은 보안 인클레이브라고 생각하지만, 그것도 어려움이 있음
  • FHE에 대해 항상 알고 싶은 점: 현대 암호화의 금본위는 IND-CCA 보안임. FHE는 정의상 그 기준을 충족할 수 없음 (암호문을 변경하여 평문에 예측 가능한 영향을 미치는 것이 선택 암호문 공격의 정의임). 그래서 현대 FHE 스킴은 얼마나 가까운가? 즉, FHE의 장점을 얻기 위해 얼마나 많은 보안을 희생하는가?
  • 서버가 키를 알지 못한 채 암호문을 값과 일치시킬 수 있는 방법을 이해하지 못함. 서버가 암호문이 특정 값에 해당한다고 어떻게 결정하는가? 서버가 이 암호문-값 데이터베이스를 구성하면, 값을 암호문으로 만들고 저장하는 데 어떤 알고리즘을 사용해야 하는지 어떻게 아는가?