https://cexplorer.io/article/how-one-shot-signatures-will-strengthen-cardano-s-security
Cardano는 무엇보다도 KES(Key-Evolving Signature) 체계를 사용하여 원장의 불변성을 보호합니다. KES 체계는 소위 순방향 보안을 제공합니다. SPO의 서명 키가 손상된 경우 이를 악용하여 원장 기록을 덮어쓸 수 없습니다. 이는 Cardano의 프로토콜에 블록 서명에 사용되는 키가 순환되고 이전 키가 삭제되는 메커니즘이 포함되어 있기 때문입니다. 보안 가정 중 하나는 스테이킹 풀 운영자(SPO)가 이전 키를 삭제한다는 것입니다. 원샷 서명(OSS) 시스템은 모든 새 블록에 서명한 후 서명 키가 자동 소멸되도록 하여 Cardano의 보안을 강화합니다. 블록에 다시 서명하는 것은 불가능합니다. 서명할 수 있는 키가 없기 때문입니다.
전방보안과 KES
순방향 보안은 현재 키가 손상되더라도 다른 키가 사용되었기 때문에 과거 세션의 비밀이 손상되지 않도록 보장하는 암호화 시스템의 속성입니다.
즉, 공격자가 암호 해독 키를 얻을 수 있더라도 이를 사용하여 과거 통신을 해독할 수는 없습니다. 이는 각 세션이 사용 후 삭제되거나 업데이트되는 고유 키를 사용하기 때문입니다.
Cardano에서는 블록 서명을 위해 유사한 원칙이 사용됩니다.
SPO의 비밀 키가 특정 시점에 손상되면 해당 시점 이전에 생성된 서명은 유효한 상태로 유지되며 위조할 수 없습니다.
이는 서명자의 수명을 기간으로 나누고 각 기간마다 다른 비밀 키를 사용하여 달성됩니다. 각 기간의 비밀키는 이전 비밀키에서 파생되며, 사용 후 삭제됩니다. 공개 키는 모든 기간 동안 동일하게 유지됩니다.
KES는 각 비밀 키의 범위를 특정 기간(현재 90일)으로 제한하고 오래된 비밀 키가 지워지고 복구할 수 없도록 보장합니다. 따라서 공격자가 특정 기간 동안 비밀 키를 획득하더라도 해당 기간 동안만 서명을 위조할 수 있으며 이전 또는 미래 기간에 대해서는 서명을 위조할 수 없습니다.
공격자가 단일 운영자의 서명 키를 획득하면 키가 활성화된 기간 동안 이 운영자가 생성한 블록만 덮어쓸 수 있습니다. 이는 상대적으로 적은 수의 블록일 수 있습니다. 슬롯 리더는 스테이크에 따라 무작위로 추첨됩니다. Cardano 네트워크에는 수많은 SPO가 있습니다. 공격자가 Cardano를 손상시킬 기회를 가지려면 단일 키뿐만 아니라 수많은 SPO로부터 많은 키를 얻어야 합니다.
서명 키를 얻는 한 가지 방법은 SPO에서 이를 훔치는 것입니다. SPO가 이전 키를 삭제하면 도난당할 수 없습니다. 그러나 키 삭제를 강제할 수는 없습니다. SPO는 이론적으로 이전 키를 유지할 수 있습니다.
OSS 시스템은 오용될 수 있는 키가 없기 때문에 공격 실행을 방지할 수 있습니다. 각각의 새로운 블록은 일회성 서명용으로만 생성되는 고유 키로 서명됩니다.
원샷 서명
이전 글에서는 원샷 서명의 기본 원리에 대해 설명했습니다. 이 양자 암호화는 활용 가능성이 매우 높습니다. 카르다노의 보안을 강화하기 위해 어떻게 활용될 수 있는지 살펴보겠습니다.
일회성 서명은 순서화된 서명, 즉 일련의 메시지나 블록의 유효성을 확인할 수 있는 특정 메커니즘을 구현하는 데 사용될 수 있습니다.
OSS 시스템은 모든 비밀 키를 사용하여 단일 메시지에만 서명한 다음 자체 파괴될 수 있는 서명 유형입니다. 이 개념은 블록의 무결성과 순서를 유지하는 것이 중요한 블록체인 기술의 맥락에서 특히 유용합니다.
블록의 순서는 특정 시점의 블록체인 상태를 결정하기 때문에 매우 중요합니다. 블록의 순서가 변경되면 블록체인의 상태가 달라집니다.
디지털 서명은 이러한 순서를 유지하는 데 중요한 역할을 합니다. 새로운 블록이 생성되면 블록 생성자가 서명합니다. 이 서명은 블록의 진위와 체인 내 위치를 확인하는 인장 역할을 합니다.
각 서명에 고유한 키를 사용하면 추가적인 보안 계층을 제공할 수 있습니다. 각 키는 한 번만 사용할 수 있으므로 다른 블록에 서명하거나 기존 블록의 순서를 변경하기 위해 키를 재사용하는 것은 불가능합니다. OSS를 사용하면 Cardano 원장의 기록을 덮어쓸 수 없습니다.
따라서 본질적으로 일회성 서명의 순서가 지정된 순서는 사용자가 어떤 블록이 유효하고 어떤 블록이 유효하지 않은지 결정적으로 식별하여 블록체인의 무결성과 순서를 보장하는 데 도움이 될 수 있습니다.
순서가 지정된 서명은 각각 고유한 키가 포함된 일련의 잠긴 상자처럼 생각할 수 있습니다. 이 상자는 특정 순서로 배열됩니다. 각 상자에 있는 열쇠는 한 번만 사용하여 시리즈의 다음 상자를 잠금 해제할 수 있으며, 그 후에는 자동으로 파괴됩니다. 이는 각 비밀 키(또는 상자의 고유 키)를 사용하여 단일 메시지에 서명할 수 있음을 의미합니다. 서명의 순서는 상자의 순서에 따라 결정됩니다.
KES의 맥락에서 순서화된 서명은 서명을 위해 특정 순서로 사용되는 일련의 키로 볼 수 있습니다. 이 시퀀스의 각 키는 한 번만 사용할 수 있으며 그 후에는 자동으로 소멸됩니다. 이는 동일한 기간 내에라도 서로 다른 블록에 서명하는 데 서로 다른 키가 사용된다는 의미입니다. 오늘날처럼 특정 기간 동안 단일 키가 아닙니다.
이러한 변화는 특정 유형의 공격에 대한 저항력을 강화함으로써 Cardano 네트워크의 보안을 잠재적으로 강화할 수 있습니다. 예를 들어, 공격자가 이전 키를 사용하여 블록체인의 기록을 다시 쓰려고 시도하는 장거리 공격을 방지하는 데 도움이 될 수 있습니다.
순서가 지정된 서명이 작동하는 방식에 대한 기본 개념을 설명하겠습니다.
당사자가 메시지에 서명할 때 그는 또한 태그 t를 지정합니다. 서명 키를 사용하면 모든 메시지에 서명할 수 있지만 요구 사항은 t가 증가하는 순서대로만 메시지에 서명할 수 있다는 것입니다. 즉, 메시지가 t0 태그에서 서명되면 이전 태그(t1 < t0)에서 메시지에 서명하는 것이 불가능해집니다. 따라서 모든 메시지는 태그 t와 관련하여 서명됩니다.
공개 키는 원샷 서명 체계의 공개 키가 됩니다.
태그 t에서 메시지에 서명하려면 새로운 원샷 서명 공개 키와 개인 키 쌍을 구성하고 이를 새 공개 키에 위임해야 합니다. 위임 서명 시 전체 공개 키/태그/메시지 트리플에 서명하세요.
서명은 원래 공개 키부터 최신 공개 키까지 전체 서명 체인으로 구성됩니다.
검증에는 서명 체인의 검증과 체인의 태그가 오름차순으로 발생하는지 확인이 필요합니다.
새로운 서명을 생성하는 유일한 방법은 이를 서명 체인에 추가하는 것입니다.
따라서 공격자가 태그 t0에서 서명을 생성하면 그는 태그 t1 < t0에서 생성할 모든 서명을 약속한 것입니다. 만약 그가 t1에서 다른 메시지에 서명하려고 시도한다면, 이는 체인의 포크를 구성하여 일회성 보안 속성을 위반하게 됩니다.
OSS는 Cardano에 대한 공격을 어떻게 방지합니까?
현재 OSS 시스템이 어떻게 구현될 수 있는지에 대한 자세한 내용은 알려져 있지 않습니다. 그럼에도 불구하고 그러한 시스템이 어떻게 작동할 수 있는지 가정하는 것은 가능합니다.
이전 섹션에서 설명한 대로 시스템은 태그를 사용하여 작업할 수 있습니다. 태그는 블록의 시퀀스 번호를 정의할 수 있습니다. 새 블록에 서명할 때 태그(순서 번호)를 증가시켜야 합니다.
블록이 서명되고 태그가 증가되면 고유 식별자가 생성됩니다. 이 고유 식별자는 블록(블록은 해시로 표시될 수 있음), 서명 및 태그의 특정 조합과 연결됩니다.
간단한 예를 들어 설명해 보겠습니다.
당신이 친구(당신은 SPO)와 함께 블록 쌓기 게임을 하고 있다고 상상해 보십시오. 여러분 각자는 고유한 블록 세트를 가지고 있으며 함께 탑을 쌓고 있습니다. 각 블록은 일련의 거래 또는 데이터 조각을 나타내며, 타워는 블록체인을 나타냅니다.
원샷 서명은 블록을 타워에 추가할 때 각자가 블록에 붙이는 고유한 스티커와 같습니다. 이 스티커는 매우 특별해서 한 번만 사용할 수 있으며 사용 후 사라집니다(열쇠는 자동으로 파괴됩니다). 마치 마술봉과도 같은 비밀열쇠를 이용해 만들어졌습니다. 하지만 여기에 문제가 있습니다. 마술 지팡이는 스티커를 하나만 만들 수 있고 그 후에는 깨집니다.
이제 블록(또는 트랜잭션)이 올바른 순서로 타워(또는 블록체인)에 추가되었는지 확인하고 싶다고 가정해 보겠습니다. 태그와 고유 식별자가 들어오는 곳입니다.
마술봉(또는 비밀 키)으로 만든 각 스티커(또는 서명)에는 고유한 태그 또는 식별자가 있습니다. 이 태그는 각 스티커마다 다른 숫자나 코드일 수 있습니다. 블록을 타워에 올려놓으면 모든 사람이 스티커의 태그를 볼 수 있고 순서대로 어디에 맞는지 정확히 알 수 있습니다.
따라서 누군가가 블록을 이리저리 옮기거나 엉뚱한 곳에 블록을 추가하려고 하면 스티커의 태그가 어긋나기 때문에 알 수 있습니다. 이것이 순서화된 서명이 블록체인에서 올바른 블록 순서를 보장하는 데 도움이 되는 방법입니다.
그리고 마술 지팡이(또는 비밀 열쇠)는 어떻습니까? 글쎄, 지팡이를 사용하여 스티커를 만든 후에는 깨지거나 자폭합니다. 이는 누군가가 부러진 지팡이를 발견하더라도 이를 사용하여 새 스티커를 만들거나 타워의 블록 순서를 엉망으로 만들 수 없다는 것을 의미합니다.
누군가가 다른 마술 지팡이(열쇠)를 사용하여 동일하거나 유사한 블록 순서(태그 순서)로 다른 타워(블록체인)를 건설하는 것을 막는 것이 무엇인지 물어볼 수 있습니다.
원래 블록체인의 순서와 일치하는 다른 블록체인을 만드는 것은 말처럼 간단하지 않습니다.
각 마술 지팡이(열쇠)는 고유하며 특정 블록에 대한 스티커(서명)만 만들 수 있습니다. 따라서 적들은 이미 스티커가 있는 블록에 스티커를 만들기 위해 다른 지팡이를 사용할 수 없습니다.
장거리 공격에서는 공격자가 과거의 어느 시점부터 다른 블록체인을 생성하려고 시도합니다. 이는 가운데부터 다른 탑을 쌓으려는 것과 같습니다. 하지만 이전 블록의 스티커(서명)는 이미 거기에 있으므로 변경할 수 없다는 점을 기억하세요. 따라서 적들은 이를 새로운 것으로 교체할 수 없습니다.
블록체인에서 블록의 순서는 합의 메커니즘에 의해 결정됩니다. 이것은 타워의 블록 순서가 모든 플레이어가 함께 결정한다는 우리 게임의 규칙과 같습니다. 따라서 적이 스스로 블록의 순서를 변경할 수는 없습니다.
결론
Cardano에 OSS가 구현되면 보안 보장이 훨씬 더 높아질 것입니다. 장거리 공격을 한다는 것은 거의 상상할 수 없는 일입니다. 공격자는 블록에 서명한 후 즉시 자체 파괴된 키를 얻을 수 없습니다.