암호화 기술이 계속해서 발전하고 우리 삶에서 새롭고 더욱 중요한 용도를 찾으면서 이러한 기술이 수행하는 프로세스는 더욱 복잡해졌습니다. 간단한 암호화 기본 요소를 사용하여 엄청난 양의 작업을 수행할 수 있지만 가장 흥미로운 것은 결합했을 때 수행할 수 있는 작업입니다.
더욱 인상적인 것은 일부 암호화 프로토콜이 하드웨어 설명 기능으로 설계되어 보편적인 문제를 해결할 수 있는 힘을 부여한다는 아이디어입니다. "프로그래밍 가능한 암호화"라고 불리는 이 아이디어는 Brian Gu의 말을 빌리자면 새로운 프로토콜을 설계하는 수학적 문제를 기존 프로토콜을 결합하는 프로그래밍 문제로 전환함으로써 더 복잡한 작업을 가능하게 할 것을 약속합니다.
이 기사에서는 이러한 아이디어가 어디서 나오는지 이해하기 위해 높은 수준의 목표부터 낮은 수준의 알고리즘까지 암호화 적용 계층을 살펴보겠습니다. 그러면 그들이 어디로 가는지 살펴보겠습니다.
시작하기 전에, 암호학자들이 자신의 기술을 탐구하게 만드는 근본적인 동기에 대해 잠시 생각해 보겠습니다. 결국, 새로운 프로토콜이 안전하고 실행 가능하며 기존 모델에 비해 의미 있는 개선이라는 수학적 증거를 연구하는 것보다 집에 머물면서 아무것도 하지 않는 것이 훨씬 쉽습니다.
우리가 저장, 공유, 처리하는 디지털 데이터의 중요성이 점점 더 커지고 있기 때문에 개인 정보 보호를 보장하고 해당 데이터를 변조로부터 보호하는 새롭고 향상된 방법이 필요합니다. 암호 해독가들이 아침에 침대에서 일어나게 만드는 것은 그러한 요구를 충족시키려는 욕구입니다.
요즘 온라인에서 얼마나 많은 정보가 처리되는지 생각하면 정말 놀랍습니다. 대부분의 사람들에게 더 즉각적인 것은 몇 년 전보다 현재 데이터와 상호 작용하는 데 얼마나 더 많은 시간을 소비하는지입니다. 그들이 생산하고, 다루며, 검토하고, 보내는 이 모든 정보는 적절하게 보호되지 않을 경우 염탐, 도난 또는 조작될 위험이 있습니다.
이것이 항상 암호화가 필요한 이유입니다. 이것이 바로 데이터를 비공개로 유지하는 새롭고 향상된 방법이 계속 개발되는 이유입니다.
다른 많은 분야와 마찬가지로 암호화는 작업이 더욱 흥미로워짐에 따라 확장되는 간단한 개념을 기반으로 합니다. 현대 암호화에서 "암호 기본 요소"라고 불리는 이러한 간단한 개념은 그 자체로 기본인 경우가 많지만 결합하여 복잡한 것을 만들 수 있습니다.
예를 들어, 가장 오래된 코드 중 하나인 Cesar 암호를 생각해 보세요. 가장 유명한 사용자의 이름을 딴 이 코드에는 원본 메시지에서 세 글자 뒤로 이동한 암호문에 단어를 쓰는 작업이 포함됩니다. 이 경우 "the"라는 단어는 "qeb"로 작성됩니다. 각 문자는 영어 알파벳에서 그 앞에 있는 세 자리씩 이동되었습니다.
이 코드는 매우 간단하지만 잘 테스트되고 유용하며 전혀 실험적이지 않습니다. 데이터를 암호화해야 하는 경우 이렇게 하면 데이터가 암호화됩니다. 세계에서 가장 안전한 코드는 아니지만 다른 기술과 결합하여 더욱 강력하게 만들 수도 있습니다.
또 다른 예를 들면, Vigenère 암호는 여러 가지 Cesar 암호를 사용하여 메시지를 인코딩하는 도구입니다. 이 시스템에서는 각 메시지가 키와 결합됩니다. 각각 "독수리"와 "레몬"을 상상해 봅시다. 키는 메시지의 문자를 몇 자리나 이동할지 알려주지만, 각 문자마다 이동 횟수가 다릅니다. 레몬의 "L"은 메시지의 첫 번째 문자를 12칸 이동하라는 의미입니다. L은 영어 알파벳의 12번째 문자이기 때문입니다. "E"는 두 번째 문자를 5개의 공백으로 이동하라는 의미입니다.
따라서 "apple"은 "peszr"이 됩니다. 키에 액세스하지 않으면 메시지를 해독하기가 훨씬 더 어려워집니다. 여전히 세자르 암호의 약점이 있지만, 충분한 시간이 주어지면 무차별 대입 계산을 통해 메시지가 무엇인지 결정할 수 있습니다. 기존 도구를 새로운 방식으로 결합하면 보안 수준이 극적으로 높아집니다.
짐작할 수 있듯이, 새로운 시스템을 만드는 것보다 새롭고 더 복잡한 방식으로 기존 암호를 결합하는 것이 훨씬 더 쉽습니다. Cesar는 오래전에 세상을 떠났고, 우리는 아직도 그의 코드북을 사용하고 있습니다.
오래된 코드의 지혜가 지속되는 것처럼 현대 암호화 기술의 대부분도 비슷한 기반 위에 서 있습니다. 새로운 시스템이 디지털 비밀을 안전하게 유지할 것이라는 새로운 증거를 암호 작성자에게 작성하게 하는 것은 환상적이지만 시간이 많이 걸리고 작동이 보장되지 않습니다. 반면 RSA(Rivest-Shamir-Adleman), AES(Advanced Encryption Standard) 또는 디지털 서명 시스템과 같은 암호화 기본 요소는 작동하는 것으로 알려져 있으며 광범위한 문제에 쉽게 적용될 수 있습니다. 예를 들어 RSA는 보안 데이터 전송에 널리 사용되는 반면 AES는 민감한 데이터를 암호화하는 표준입니다. 이들을 결합하면 혁신적인 기능을 제공하고 단독으로 수행할 수 있는 것보다 더 복잡한 문제를 해결할 수 있습니다.
간단한 방법을 함께 결합하는 것은 더 복잡한 시스템을 만드는 좋은 방법이지만 여기에는 한계가 있습니다. 이러한 기본 요소 각각은 특정 작업을 잘 수행하도록 설계되었으며, 이를 결합할 때 약점이 노출되는 실수가 발생하는 것은 드문 일이 아닙니다.
낮은 수준의 기본 요소를 기반으로 하는 중간 수준 프로토콜은 보다 고급 기능을 목표로 합니다. 다음에서는 가장 널리 채택되고 논의되는 중간 수준 프로토콜 중 일부를 살펴보겠습니다.
동형암호는 암호화된 데이터를 먼저 해독하지 않고도 처리할 수 있도록 하는 프로토콜입니다. 그 예는 오늘날에도 존재하지만 아직은 비교적 초기 단계입니다. 2009년에야 실용성이 입증되었습니다. 기존 모델은 암호화된 데이터에 대해 수행할 수 있는 프로세스가 제한되는 경우가 있습니다.
그러나 이 개념은 매우 흥미롭고 많은 응용 가능성이 있습니다. 의료 기록이나 신용 정보와 같이 민감하면서도 유용한 데이터가 도움을 받기 위해 액세스해야 하는 조직에서 얼마나 자주 도난당하는지 생각해 보세요. 암호화된 의료 정보를 해독하지 않고도 상호 작용할 수 있다면 어떨까요? 보안에 대한 이러한 개선의 이점은 말할 필요도 없습니다.
MPC(Multi-Party Computation)는 공통 출력에 대해 함께 작업하는 다양한 행위자가 제공하는 입력을 숨기는 도구입니다. 이는 종종 “백만장자 문제”로 묘사됩니다.
두 명의 백만장자가 그들 중 누가 더 많은 돈을 가지고 있는지 알고 싶어한다고 상상해 보십시오. 그러나 그들은 그냥 나와서 그들의 순자산이 무엇인지 말하고 싶어하지 않습니다. MPC를 사용하여 이 문제를 해결할 수 있습니다. 첫 번째 백만장자는 자신의 암호화된 순자산을 두 번째 백만장자에게 보내기 전에 그 가치를 비교하도록 설계된 프로그램에 추가할 수 있습니다. 두 번째 백만장자는 자신의 순자산을 더할 때 첫 번째 가치를 볼 수 없습니다.
그런 다음 출력을 해독하고 그 중 어느 것이 더 큰 값을 입력했는지 알아낼 수 있습니다. 동시에 입력 중 하나를 볼 수는 없습니다.
마지막으로 영지식증명(ZKP)에 대해 살펴보겠습니다. 이것들은 널리 사용되기 때문에 독자들에게도 잘 알려져 있을 것이므로 간략하게 살펴보겠습니다. ZKP는 증명 자가 다른 사람(종종 검증 자라고 함)에게 다른 말을 하지 않고도 무언가가 사실임을 알릴 수 있도록 하는 데 매우 능숙합니다. 일반적으로 이 서비스는 단일 사용자에게 제공됩니다. 어떤 사람이 증거를 요구하면 증거를 얻습니다. zk-SNARK 및 zk-STARK를 포함하여 다양한 ZKP가 있습니다. 각각에는 고유한 장점과 단점이 있습니다.
이러한 고급 프로토콜에 대한 연구가 진행됨에 따라 범용 암호화 프로토콜 개발에 초점이 확대되었습니다. 이러한 이니셔티브의 목표는 암호화를 통해 보편적인 계산을 안전하고 비공개적으로 수행하는 것이 가능하다는 것을 증명하는 것입니다. 처음에 이러한 노력은 순전히 이론적이었고 실제 구현 효율성보다 타당성을 우선시했습니다. 그러나 연구가 심화됨에 따라 암호학자들은 이러한 개념을 실제로 적용할 수 있도록 관심을 전환했습니다. 그들은 새로운 프로토콜과 구성요소를 강화하고, 결합하고, 발명합니다. 종종 궁극적인 프로토콜은 여러 접근 방식의 장점을 활용하는 하이브리드가 됩니다. 예를 들어, 동형 암호화는 범위 증명에 영지식 증명을 활용하여 계산이 유효한 범위 내에 유지되도록 합니다. 한편 MPC 프로토콜은 비선형 작업을 실행하기 위해 동형 요소를 통합할 수 있습니다.
수많은 실험 프로토콜 중에서 일부는 실제 개발을 위한 길을 닦은 실용적인 유용성에 충분히 근접했습니다. 이러한 도구는 컴파일러와 유사하게 작동하여 고급 언어를 해석하고 이를 암호화 프로토콜이 처리할 수 있는 회로로 변환합니다. 이러한 변환은 소프트웨어를 CPU 레지스터 작업으로 변환하거나 Solidity를 EVM 상태 전환으로 변환하는 것과 유사합니다. 튜링 완전 계산 지원과 함께 컴파일러와 유사한 기능을 달성하는 것은 우리가 프로그래밍 가능한 암호화라고 부르는 기술의 출현을 의미합니다. 지나치게 낙관적인 것처럼 보일 수도 있지만 현실은 미묘합니다. 예를 들어, 비트별 해시 함수는 영지식 증명 프로토콜에서 효율적이지 않지만, 모듈식 곱셈을 통해 실행되는 해시는 뛰어난 효율성을 제공합니다. 따라서 SHA-3과 같은 알고리즘은 피하는 것이 좋습니다. 더욱이, 암호화 프로토콜은 주로 유한 필드 내에서 작동하므로 부동 소수점 계산을 피하는 것이 일반적인 관행입니다. 프로그래밍 가능한 암호화를 현실로 만들 때 이와 같은 트릭은 어디에나 존재합니다.
프로그래밍 가능한 암호화는 여전히 새로운 개념이지만 매우 복잡한 문제를 훨씬 간단하게 만들 수 있는 기회를 제공합니다. 어떤 방향으로 갈지 추측하기는 쉽습니다. 모든 종류의 암호화 도구를 사용하여 프로그래밍하려는 시도가 있을 것이라는 것은 거의 확실하지만, 이를 통해 발견할 성공 수준은 결정됩니다.
그러나 이러한 실험 중 일부는 효과가 있을 것입니다. 그 중 일부는 잘 작동할 것이고, 잘 작동하는 것들은 암호 작성자가 하나의 응용 프로그램에 대한 새로운 시스템을 만드는 데 드는 비용을 들이지 않고도 강력한 기능과 높은 수준의 보안을 제공할 것입니다. 이러한 가능성만으로도 해당 분야에 많은 관심을 불러일으킬 것입니다.
기존 시스템과 함께 작동하는 방식으로 이를 수행하는 방법에 대한 문제는 해결되어야 하며, 상호 작용해야 하는 데이터와 효율적으로 작동하는 것이 채택될 가능성이 높습니다.
이 기술이 데이터 보안, 개인 정보 보호 및 더 넓은 디지털 보안 분야에 미치는 영향은 아무리 강조해도 지나치지 않습니다. 수많은 복잡한 작업을 구현하기가 더 쉬워질 것입니다. 잘못된 프로그래밍은 항상 그렇듯이 기술이 작동하는 곳에서는 문제를 일으키지만 보안이 향상되고 개인 정보 보호 시스템이 더욱 강력해집니다.
아마도 가장 고무적인 점은 이 기술의 사용 측면에서 아직 초기 단계라는 점입니다. ZK 증명은 1980년대에 고안되었지만 2012년이 되어서야 가능해졌습니다. 아직 누구도 꿈도 꾸지 못한 메커니즘과 메커니즘의 조합이 많이 있을 수 있습니다. 세상을 뒤흔드는 다음 아이디어가 내일 도착할 수도 있습니다. 우리는 그것이 무엇을 할 것인지 추측조차 할 수 없을 수도 있습니다.