KDE 월렛 매니저

KDE Wallet Manager
개발자KDE
안정화 버전
5.247.0 위키데이터에서 편집하기 / 2023년 12월 20일
저장소github.com/KDE/kwallet
프로그래밍 언어주로 C++ (Qt), 일부 C
운영 체제교차 플랫폼
종류
라이선스다양한 LGPL
웹사이트apps.kde.org/kwalletmanager5/

KDE 월렛 매니저(KDE Wallet Manager)는 유닉스 계열 운영체제를 위해 C++로 작성된 자유 및 오픈 소스 비밀번호 관리 소프트웨어이자 소프트웨어 프레임워크이다. 이 소프트웨어는 KWallet 프레임워크, KWalletManager GUI 애플리케이션, 프레임워크 API를 노출하는 kwalletd 데몬, 그리고 Secret Service D-Bus API를 노출하는 ksecretd 데몬을 포함한다. KDE 월렛 매니저는 리눅스 기반 OS에서 실행되며, 주요 기능은 KDE 지갑(Wallet)에 암호화된 비밀번호를 저장하는 것이다. 사용자의 비밀번호나 ID와 같은 자격 증명을 수집하여 블로피시 대칭형 블록 암호 알고리즘이나 GNU 프라이버시 가드 암호화를 통해 암호화하는 것이 주된 기능이다.

설치

KDE 월렛 매니저(KWallet)는 리눅스 기반 OS와 쿠분투와 같은 KDE 소프트웨어 모음 데스크톱 환경을 필요로 한다.

브라우저 확장 기능

KDE 월렛 매니저(KWallet)는 크롬, 오페라, 엣지를 포함한 다양한 웹 브라우저와 통합될 수 있다.

크롬이나 다른 크로미움 기반 브라우저에서 KDE 월렛 매니저(KWallet) 통합을 사용하려면, 사용자는 --password-store=kwallet5 또는 --password-store=detect 인수를 사용하여 브라우저를 실행해야 한다.

과거에는 파이어폭스를 위한 독립형 애드온이 제공되었다. 이 애드온을 통해 사용자는 파이어폭스의 기본 비밀번호 관리자 대신 KDE 월렛 매니저(KWallet)를 통해 내부적으로 비밀번호를 저장할 수 있었다.

파이어폭스 v57 출시와 XUL 기반 확장 기능에서 브라우저 확장로의 전환 이후, 새로운 파이어폭스를 지원하기 위한 새로운 애드온 개발은 이루어지지 않고 있다.

KDE 웹 브라우저인 Konqueror와 Falkon은 민감한 비밀번호를 암호화하여 저장하기 위해 KDE 월렛 매니저(KWallet)를 사용한다.

API

KDE 월렛 매니저의 API는 애플리케이션이 KDE의 주요 프로세스 간 통신 메커니즘인 DCOP(Desktop Communications protocol)를 통해 요청을 보낼 때 인증 이벤트를 트리거하며, 이는 애플리케이션을 위한 비밀번호 대화 상자를 표시하게 한다. 이로 인해 비밀번호 대화 상자가 KDE 데몬 프로세스에 의해 실행된다. 사용자는 대화 상자를 취소하여 애플리케이션을 종료하거나 비밀번호 상자를 채울 수 있다. 비밀번호 상자가 채워지면 지갑이 자동으로 열린다. KDE 월렛 매니저의 DCOP는 유닉스 로컬 소켓을 통해 처리되는 프로세스 간 통신(IPC) 프로토콜이기 때문에 로컬에서만 액세스할 수 있다.

GUI

KDE 월렛 매니저의 GUI에서 사용자는 모든 지갑과 그에 할당된 비밀번호를 관리할 수 있다.

KDE 월렛 매니저는 사용자가 지갑을 저장하거나 삭제할 수 있게 하며, 저장된 비밀번호에 액세스할 때 애플리케이션이 어느 지갑을 찾아야 하는지 사용자가 지정할 수 있다.

KDE 월렛 매니저(KWallet)의 GUI에서 사용자가 수행할 수 있는 작업 목록은 다음과 같다.

지갑

KWallet에서 지갑 관리하기.

지갑(Wallet)은 KDE 월렛 매니저 소프트웨어에서 사용하는 비밀번호 저장소를 일컫는 용어이다. 지갑은 사용자가 수동으로 생성할 수도 있고, 사용자가 KDE 데스크톱 환경이나 웹사이트에서 비밀번호를 입력할 때 대화 상자를 통해 생성할 수도 있다. 일단 생성되면 지갑은 다양한 비밀번호를 저장할 수 있으며, 하나의 마스터 비밀번호로 제어된다. 이러한 방식을 통해 사용자는 여러 비밀번호를 기억할 필요 없이, 지갑에 대한 마스터 비밀번호 하나만 기억하여 관리할 수 있다. 기본 지갑의 이름은 “kdewallet”이며, 사용자는 필요에 따라 더 많은 지갑을 만들 수 있다.

지갑 관리

사용자는 자신의 KDE 월렛 매니저 창에서 지갑을 관리할 수 있다. 지갑을 묶거나 합치는 작업은 드래그 앤 드롭으로 가능하다. 사용자가 플래시 드라이브와 같은 다른 위치로 정보를 내보내려면, 창에서 데이터를 암호화하여 내보낼지 여부를 선택할 수 있다. 마스터 비밀번호를 제공하면 사용자는 마찬가지로 암호화된 데이터를 가져올 수도 있다.

지갑의 환경 설정도 가능하며, 사용자는 특정 지갑을 기본 지갑으로 설정할 수 있다. 지갑 닫기 설정은 다음 경우에 지갑을 닫도록 활성화할 수 있다.

  • 사용하지 않을 때 닫기
  • 화면 보호기가 시작될 때 닫기
  • 애플리케이션이 지갑 사용을 중단할 때 닫기

비밀번호의 암호화

KDE 월렛 매니저가 저장하는 데이터는 두 가지 주요 방식으로 암호화될 수 있다. 사용자의 리눅스 기반 OS에 GnuPG Made Easy 라이브러리가 설치되어 있으면 GNU 프라이버시 가드(GnuPG 또는 GPG) 알고리즘이 사용된다. 그렇지 않으면 블로피시 대칭형 블록 암호 알고리즘이 사용된다.

KWallet의 암호화 방식.

블로피시 대칭형 블록 암호 알고리즘

KDE 월렛 매니저는 지갑에 저장된 데이터를 CBC 모드의 블로피시 대칭형 블록 암호 알고리즘을 사용하여 암호화한다. 사용자의 정보를 보호하기 위해 블로피시로 암호화된 데이터는 SHA-1 해시 알고리즘으로 인증된다.

KDE 월렛 매니저의 블로피시 암호화는 Khufu, RC5, DES, IDEA 및 Trip-DES에 비해 더 빠른 암호화 성능을 제공한다. 블로피시는 32비트 마이크로프로세서에서 바이트당 18 클럭 사이클의 속도로 암호화한다.

KDE 월렛 매니저의 블로피시 알고리즘은 5k 이내의 메모리에서 실행될 수 있으며, 구조가 단순하여 구현하기 쉽고 알고리즘의 강도를 결정하기 용이하다. 이 알고리즘은 키 길이가 가변적이며 최대 448비트까지 가능하고, 기본적인 워드 덧셈 및 비트 XOR 연산을 허용한다.

GNU 프라이버시 가드 암호화

사용자는 매우 민감한 비밀번호를 저장하기 위해 GNU 프라이버시 가드(GnuPG 또는 GPG) 기반 지갑을 생성할 수 있다. 이를 위해서는 사용자가 GnuPG Made Easy 라이브러리를 설치해야 한다. 라이브러리가 설치되어 있고 소프트웨어가 GNU 프라이버시 가드(GnuPG 또는 GPG)를 발견하면, 사용자에게 새 지갑에 사용할 키를 선택하라는 메시지가 표시된다. GNU 프라이버시 가드 암호화 라이브러리에 DSA/블로피시 대칭형 블록 암호 알고리즘이 포함되어 있으므로, 사용자는 여전히 블로피시 대칭형 블록 암호 알고리즘으로 비밀번호를 암호화할 수 있다.

보안

KDE 월렛 매니저(KWallet)를 사용하는 것이 비밀번호 관리를 편리하게 할 수는 있지만, 사용자 시스템에 더 큰 보안을 보장하지는 않는다. 공격자는 사용자의 다른 비밀번호를 얻는 대신 사용자의 PC를 통해 사용자의 지갑에 대한 마스터 비밀번호를 획득할 수 있다.

KDE 월렛 매니저(KWallet)의 암호화된 파일 디렉터리는 예측 가능한 경로에 위치하므로, 비밀번호 관리 시스템 자체를 표적으로 삼도록 프로그래밍된 바이러스나 웜에 취약할 수 있다.

과거 버전의 알려진 취약점

kwallet 서브모듈

  • "5.12.6 이전 KDE KWallet의 kwallet-pam은 로컬 사용자가 심볼릭 링크 공격을 통해 임의 파일의 소유권을 획득할 수 있도록 허용한다."
  • "KDE kio-extras 20.04.0까지의 fishProtocol::establishConnection은 사용자가 keepPassword 옵션을 설정하지 않은 경우에도 cacheAuthentication을 호출한다. 이는 의도치 않게 비밀번호가 KWallet에 저장되는 결과를 초래할 수 있다."
  • "KDE Applications 14.12.0 이전 KWallet의 kwalletd는 비밀번호 저장소를 암호화할 때 CBC 모드 대신 ECB 모드를 사용한 블로피시를 사용하여, 공격자가 코드북 공격을 통해 비밀번호를 쉽게 추측할 수 있게 한다."

SHA-1 사용

  • KDE 월렛 매니저(KWallet)에서 사용되는 SHA-1 해시 함수는 암호학적으로 깨졌다. 구글과 CWI 암스테르담은 동일한 SHA-1 다이제스트가 두 개의 서로 다른 PDF 내용을 표시할 수 있음을 증명했다. 마이크로소프트를 포함한 여러 기업이 SHA-1 지원을 중단했지만, KDE 월렛 매니저(KWallet)는 4.13 이상의 버전에서 SHA-512를 사용하거나 플러그인 가능한 인증 모듈과 함께 SHA-1 해시 함수를 사용한다.
  • "SHA-1은 충돌 저항성이 없으며, 이는 TLS 1.2에서 SHA-1 사용에 대한 공격에서 입증된 바와 같이 컨텍스트에 따라 공격자가 스푸핑 공격을 수행하기 쉽게 만든다. 참고: 이 CVE는 이 SHA-1 문제를 참조하기 위한 공통 식별자를 제공하기 위해 존재하며, 식별자의 존재 자체가 기술적인 권장 사항은 아니다."
  • "SHA-1 알고리즘에서 발견된 충돌을 사용하여 인증서 디지털 서명을 위조할 수 있는 결함이 발견되었다. 공격자는 이 취약점을 사용하여 위조된 인증서 서명을 생성할 수 있다. 이 문제는 2.2.18 이전 GnuPG 버전에 영향을 미친다."

GnuPG 관련

  • "1.5.6 이전 Libgcrypt, 1.6.6 이전 1.6.x, 1.7.3 이전 1.7.x의 난수 발생기와 1.4.21 이전 GnuPG의 혼합 함수는 이전 4640비트에 대한 지식을 활용하여 공격자가 160비트 값을 더 쉽게 얻을 수 있도록 한다."
  • "GnuPG 2.2.21 및 2.2.22(및 Gpg4win 3.1.12)에는 배열 오버플로가 있어 피해자가 공격자의 OpenPGP 키를 가져올 때 충돌하거나 알 수 없는 다른 영향을 미칠 수 있으며, 이 키에는 AEAD 기본 설정이 있다. 이 오버플로는 g10/key-check.c 오류로 인해 발생한다. 참고: GnuPG 2.3.x는 영향을 받지 않는다. GnuPG 2.2.23은 수정된 버전이다."
  • "1.4.16 이전 GnuPG 1.x는 부채널 공격을 도입하는 특정 패턴의 도입 순서를 사용하여 RSA 암호 키를 생성하며, 이는 물리적으로 가까운 공격자가 복호화 과정에서 선택 암호문 공격과 음향 암호 분석을 통해 RSA 키를 추출할 수 있게 한다. 참고: 일반적으로 애플리케이션은 음향 부채널 공격으로부터 자신을 보호할 것으로 기대되지 않는데, 이는 물리적 장치의 책임으로 간주되기 때문이다. 따라서 이러한 유형의 문제는 일반적으로 CVE 식별자를 받지 않는다. 그러나 이 문제의 경우 개발자가 GnuPG가 부채널 저항력을 제공해야 한다는 보안 정책을 명시했기 때문에, 개발자가 지정한 보안 정책 위반은 CVE 범위 내에 있다."
  • "GnuPG에서 사용되는 1.3.2 이전 Libksba의 ksba_oid_to_str 함수 내 정수 언더플로는 원격 공격자가 조작된 OID를 통해 (1) S/MIME 메시지나 (2) 타원곡선 암호 기반 OpenPGP 데이터에서 서비스 거부(충돌)를 유발할 수 있게 하며, 이는 버퍼 오버플로를 트리거한다."
  • "2.2.8 이전 GnuPG의 mainproc.c는 복호화 및 검증 작업 중에 원본 파일 이름을 잘못 처리하여, 원격 공격자가 "--status-fd 2" 옵션을 사용하는 다른 프로그램에 GnuPG가 파일 디스크립터 2로 보내는 출력을 스푸핑할 수 있게 한다. 예를 들어, OpenPGP 데이터는 GOODSIG 또는 VALIDSIG 상태 코드와 함께 줄 바꿈 문자를 포함하는 원본 파일 이름을 나타낼 수 있다."
  • "암호 피드백(CFB) 모드를 사용하여 암호화된 메시지를 처리할 때 OpenPGP의 무결성 검사 기능은, 메시지 블록의 처음 2바이트를 알고 있고 무결성 검사 실패 여부를 결정할 수 있는 오라클이나 다른 메커니즘이 있는 경우 원격 공격자가 선택 암호문 공격을 통해 평문의 일부를 복구할 수 있게 한다."
  • "대화형으로 실행될 때 GnuPG(gpg) 1.4 및 2.0의 openfile.c 내 ask_outfile_name 함수에 있는 힙 기반 버퍼 오버플로는 공격자가 프롬프트를 구성하는 동안 make_printable_string 함수가 예상보다 긴 문자열을 반환하게 하는 "C-escape" 확장이 포함된 메시지를 통해 임의 코드를 실행할 수 있게 한다."
  • "1.4.6 이하 GnuPG 및 1.1.4 이전 GPGME는 명령줄에서 실행될 때 여러 구성 요소가 있는 OpenPGP 메시지의 서명된 부분과 서명되지 않은 부분을 시각적으로 구분하지 않아 원격 공격자가 감지되지 않고 메시지 내용을 위조할 수 있게 할 수 있다."
  • "2.2.8 이전 GnuPG의 mainproc.c는 복호화 및 검증 작업 중에 원본 파일 이름을 잘못 처리하여, 원격 공격자가 "--status-fd 2" 옵션을 사용하는 다른 프로그램에 GnuPG가 파일 디스크립터 2로 보내는 출력을 스푸핑할 수 있게 한다."
  • "1.4.19 이전 GnuPG, 2.0.27 이전 2.0.x, 2.1.2 이전 2.1.x의 kbx/keybox-search.c는 비트 왼쪽 시프트를 제대로 처리하지 않아 원격 공격자가 서명 확장 및 "중첩 범위의 C 문자열 처리"와 관련된 조작된 키링 파일을 통해 서비스 거부(잘못된 읽기 작업)를 유발할 수 있게 한다."

타사 소프트웨어

  • "Simple Password Store 1.7.2 이전의 pass 1.7.x 내 password-store.sh에서 문제가 발견되었다. 서명 검증 루틴이 불완전한 정규 표현식으로 GnuPG 출력을 파싱하여, 원격 공격자가 구성 파일 및 확장 스크립트의 파일 서명을 스푸핑할 수 있게 한다. 구성 파일을 수정하면 공격자가 제어하는 추가 암호화 키를 삽입하여 공격자에게 비밀번호를 노출시킬 수 있다. 확장 스크립트를 수정하면 공격자가 임의 코드를 실행할 수 있다."

같이 보기

내용주

  1. ↑ LGPL-2.0-only, LGPL-2.0-or-later, LGPL-2.1-or-later, 및 LGPL-3.0-or-later.

각주

  1. ↑ “v5.247.0”. 2024년 1월 9일에 확인함.
  2. ↑ Zhang, Jie; Luo, Xin; Akkaladevi, Somasheker; Ziegelmayer, Jennifer (2009). “Improving multiple-password recall: an empirical study” (영어). 《European Journal of Information Systems》 18 (2): 165–176. doi:10.1057/ejis.2009.9. ISSN 0960-085X. S2CID 7244341.
  3. ↑ Gray, Joshua; Franqueira, Virginia N. L.; Yu, Yijun (2016). 〈Forensically-Sound Analysis of Security Risks of Using Local Password Managers〉. 《2016 IEEE 24th International Requirements Engineering Conference Workshops (REW)》 (PDF). Beijing, China: IEEE. 114–121쪽. doi:10.1109/REW.2016.034. ISBN 978-1-5090-3694-3. S2CID 15971740.
  4. ↑ Toman, Zinah Hussein; Toman, Sarah Hussein; Hazar, Manar Joundy (2019). “An In-Depth Comparison Of Software Frameworks For Developing Desktop Applications Using Web Technologies”. 《Journal of Southwest Jiaotong University》 54 (4). doi:10.35741/issn.0258-2724.54.4.1. ISSN 0258-2724. S2CID 209057621.
  5. 1 2 3 4 Mulligan, J.; Elbirt, A. J. (2005). “Desktop Security and Usability Trade-Offs: An Evaluation of Password Management Systems” (영어). 《Information Systems Security》 14 (2): 10–19. doi:10.1201/1086/45241.14.2.20050501/88289.3. ISSN 1065-898X. S2CID 21253225.
  6. 1 2 Dudášová, Ludmila; Vaculík, Martin; Procházka, Jakub (2021년 12월 29일). “Psychologický kapitál v pracovní, klinické a školní psychologii: přehledová studie”. 《Ceskoslovenska Psychologie》 65 (6): 558–574. doi:10.51561/cspsych.65.6.558. ISSN 0009-062X. S2CID 245578091.
  7. ↑ Mousa, A. (2005). 〈Data encryption performance based on Blowfish〉. 《47th International Symposium ELMAR, 2005》. IEEE. 131–134쪽. doi:10.1109/elmar.2005.193660. ISBN 978-981-10-8671-7. ISSN 1334-2630. S2CID 21814142.
  8. ↑ Aghili, Hamed (2018년 7월 26일), 〈Improving Security Using Blow Fish Algorithm on Deduplication Cloud Storage〉, 《Fundamental Research in Electrical Engineering》, Lecture Notes in Electrical Engineering 480, Singapore: Springer Singapore, 723–731쪽, doi:10.1007/978-981-10-8672-4_54, ISBN 978-981-10-8671-7, S2CID 69654258
  9. ↑ “NVD - CVE-2005-4900”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  10. ↑ “NVD - CVE-2019-14855”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  11. ↑ “NVD - CVE-2016-6313”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  12. ↑ “NVD - CVE-2020-25125”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  13. ↑ “NVD - CVE-2013-4576”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  14. ↑ “NVD - CVE-2014-9087”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  15. ↑ “NVD - CVE-2010-2547”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  16. ↑ “NVD - CVE-2018-12020”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  17. ↑ “NVD - CVE-2005-0366”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  18. ↑ “NVD - CVE-2006-6169”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  19. ↑ “NVD - CVE-2007-1263”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  20. ↑ “NVD - CVE-2018-12020”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  21. ↑ “NVD - CVE-2015-1607”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.
  22. ↑ “NVD - CVE-2018-12356”. 《nvd.nist.gov》. 2022년 5월 27일에 확인함. 이 문서는 퍼블릭 도메인 출처의 본문을 포함합니다.