우선, 나는 자신을 보안 전문가라고 말하지는 않지만이 질문에 대답 해야하는 입장에 있습니다. 내가 알게 된 것은 조금 놀랐습니다 . 완전히 안전한 시스템은 없습니다 . 글쎄, 완전히 안전한 시스템은 서버가 모두 꺼져있는 시스템 일 것입니다 :)
당시 나와 함께 일한 누군가 가 침입자 에게 막대 를 올리는 관점에서 안전한 시스템을 설계하는 것을 설명했습니다 . 따라서 각 보안 계층은 공격의 기회를 줄입니다.
예를 들어 개인 키를 완벽하게 보호 할 수 있어도 시스템은 완전히 안전 하지 않습니다 . 그러나 보안 알고리즘을 올바르게 사용하고 패치를 최신 상태로 유지하면 막대가 높아집니다. 그러나, 강력하고 충분한 시간이 주어진 슈퍼 컴퓨터는 암호화를 깨뜨릴 수 있습니다. 나는이 모든 것이 이해된다고 확신하므로 질문을 다시받을 것입니다.
질문은 분명하므로 먼저 각 요점을 해결하려고 노력할 것입니다.
키가 파일 시스템의 보안 모델에 의해 보호된다고 가정하십시오. 그러나 (악의적 인) 수퍼 유저 또는 그러한 충실도를 제공하지 않는 플랫폼은 어떻습니까?
예, Windows 키 저장소 또는 암호로 암호화 된 TLS 개인 키 와 같은 것을 사용하면 개인 키에 대한 암호 (또는 액세스)가있는 사용자에게 노출됩니다. 그러나 나는 당신이 그 기준을 높이는 데 동의 할 것이라고 생각합니다. 파일 시스템 ACL (적절하게 구현 된 경우)은 상당히 우수한 보호 수준을 제공합니다. 그리고 수퍼 유저를 개인적으로 조사하고 알 수있는 위치에 있습니다.
또는 키는 소프트웨어 바이너리로 하드 코딩되지만 항상 디 컴파일 될 수 있으며 오픈 소스 소프트웨어 또는 해석 된 코드는 어떻습니까?
예, 바이너리로 하드 코드 된 키를 보았습니다. 다시, 이것은 바를 약간 올립니다. 이 시스템을 공격하는 사람 (Java 인 경우)은 Java가 바이트 코드 등을 생성한다는 것을 이해해야하며 디 컴파일 방법을 이해해야합니다. 기계 코드에 직접 쓰는 언어를 사용하는 경우 이로 인해 막대가 약간 높아지는 것을 알 수 있습니다. 이상적인 보안 솔루션은 아니지만 일정 수준의 보호 기능을 제공 할 수 있습니다.
키가 생성되면 그러한 알고리즘은 결정적이어야하고 (아마도) 동일한 문제가 시드에 적용됩니다.
예, 본질적으로 알고리즘은 개인 키를 만들기위한 개인 키 정보가됩니다. 따라서 이제 보호해야합니다.
따라서 보안 정책, 키 관리 와 관련된 핵심 문제를 파악했다고 생각합니다 . 보안 시스템을 제공하려면 핵심 관리 정책을 마련해야합니다. 그리고 그것은 꽤 광범위한 주제 입니다.
문제는 시스템 (및 개인 키)이 얼마나 안전해야합니까? 시스템에서 막대를 얼마나 높이 올려야합니까?
이제, 기꺼이 지불한다면, 거기에 해결책을 제시하는 사람들이 있습니다. 우리는 HSM (Hardware Security Module)을 사용했습니다 . 기본적으로 하드웨어 키가 포함 된 변조 방지 서버입니다. 그런 다음이 키를 사용하여 암호화에 사용되는 다른 키를 만들 수 있습니다. 여기서 아이디어는 (올바르게 구성된 경우) 키 가 HSM을 떠나지 않는다는 것 입니다. HSM 은 많은 비용이 듭니다 . 그러나 일부 비즈니스에서는 신용 카드 데이터를 보호하면 위반 비용이 훨씬 높습니다. 균형이 있습니다.
많은 HSM은 기능 유지 관리 및 관리에서 키 카드를 사용합니다. 키를 변경하려면 쿼럼 키 카드 (5/9는 실제로 서버에)를 넣어야합니다. 따라서 이것은 수퍼 유저 쿼럼이 충돌하는 경우에만 위반을 허용함으로써 막대를 상당히 높입니다.
HSM과 유사한 기능을 제공하는 소프트웨어 솔루션이있을 수 있지만 그 기능이 무엇인지 모르겠습니다.
나는 이것이 질문에 대답하는 데 도움이되는 방법이라는 것을 알고 있지만 이것이 도움이되기를 바랍니다.