VeraCrypt
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Translations/Language.ko.xml24
-rw-r--r--src/Common/Dlgcode.c33
-rw-r--r--src/Main/TextUserInterface.cpp18
3 files changed, 55 insertions, 20 deletions
diff --git a/Translations/Language.ko.xml b/Translations/Language.ko.xml
index 853834d3..635a17eb 100644
--- a/Translations/Language.ko.xml
+++ b/Translations/Language.ko.xml
@@ -269,8 +269,8 @@
<entry lang="ko" key="IDT_ACCELERATION_OPTIONS">하드웨어 가속</entry>
<entry lang="ko" key="IDT_ASSIGN_HOTKEY">바로가기</entry>
<entry lang="ko" key="IDT_AUTORUN">자동 실행 설정 (autorun.inf)</entry>
- <entry lang="ko" key="IDT_AUTO_DISMOUNT">자동 꺼냄</entry>
- <entry lang="ko" key="IDT_AUTO_DISMOUNT_ON">다음과 같은 경우 모두 해제하십시오:</entry>
+ <entry lang="ko" key="IDT_AUTO_DISMOUNT">자동으로 마운트 해제</entry>
+ <entry lang="ko" key="IDT_AUTO_DISMOUNT_ON">다음과 같은 경우 모두 해제:</entry>
<entry lang="ko" key="IDT_BOOT_LOADER_SCREEN_OPTIONS">부트 로더 화면 옵션</entry>
<entry lang="ko" key="IDT_CONFIRM_PASSWORD">암호 확인:</entry>
<entry lang="ko" key="IDT_CURRENT">현재 암호</entry>
@@ -732,7 +732,7 @@
<entry lang="ko" key="CANT_DISMOUNT_VOLUME">볼륨을 마운트 해제 할 수 없습니다.</entry>
<entry lang="ko" key="FORMAT_NTFS_FAILED">Windows에서 볼륨을 NTFS/exFAT/ReFS로 포맷하지 못했습니다.\n\n가능한 경우 다른 유형의 파일 시스템을 선택하고 다시 시도하세요. 또는 볼륨을 포맷하지 않고 (파일 시스템으로 '없음'을 선택)이 마법사를 종료하고 볼륨을 마운트 한 다음 시스템 또는 타사 도구를 사용하여 마운트 된 볼륨을 포맷 할 수 있습니다(볼륨은 암호화 된 상태로 유지됨).</entry>
<entry lang="ko" key="FORMAT_NTFS_FAILED_ASK_FAT">Windows에서 볼륨을 NTFS/exFAT/ReFS로 포맷하지 못했습니다.\n\n대신 볼륨을 FAT로 포맷 하시겠습니까?</entry>
- <entry lang="ko" key="DEFAULT">태만</entry>
+ <entry lang="ko" key="DEFAULT">기본값</entry>
<entry lang="ko" key="PARTITION_LOWER_CASE">분할</entry>
<entry lang="ko" key="PARTITION_UPPER_CASE">분할</entry>
<entry lang="ko" key="DEVICE">장치</entry>
@@ -882,7 +882,7 @@
<entry lang="ko" key="INSTALL_COMPLETED">설치 완료.</entry>
<entry lang="ko" key="CANT_CREATE_FOLDER">폴더 '%s'을 (를) 만들지 못했습니다.</entry>
<entry lang="ko" key="CLOSE_TC_FIRST">VeraCrypt 장치 드라이버를 언로드 할 수 없습니다.\n\n열려있는 모든 VeraCrypt 창을 먼저 닫으세요. 문제가 해결되지 않으면 Windows를 다시 시작한 다음 다시 시도하세요.</entry>
- <entry lang="ko" key="DISMOUNT_ALL_FIRST">VeraCrypt를 설치하거나 제거하기 전에 모든 VeraCrypt 볼륨을 분리해야합니다.</entry>
+ <entry lang="ko" key="DISMOUNT_ALL_FIRST">VeraCrypt를 설치하거나 제거하기 전에 모든 VeraCrypt 볼륨의 마운트를 해제해야합니다.</entry>
<entry lang="ko" key="UNINSTALL_OLD_VERSION_FIRST">VeraCrypt의 구식 버전이 현재이 시스템에 설치되어 있습니다. 이 새 버전의 VeraCrypt를 설치하려면 먼저 제거해야합니다.\n\n이 메시지 상자를 닫으면 이전 버전의 제거 프로그램이 시작됩니다. VeraCrypt를 제거 할 때 볼륨이 암호 해독되지 않습니다. VeraCrypt의 이전 버전을 제거한 후 새 버전의 VeraCrypt 설치 프로그램을 다시 실행하세요.</entry>
<entry lang="ko" key="REG_INSTALL_FAILED">레지스트리 항목 설치가 실패했습니다.</entry>
<entry lang="ko" key="DRIVER_INSTALL_FAILED">장치 드라이버 설치에 실패했습니다. Windows를 다시 시작한 다음 VeraCrypt를 다시 설치하세요.</entry>
@@ -975,7 +975,7 @@
<entry lang="ko" key="SYSTEM_FAVORITES_DLG_TITLE">VeraCrypt - 시스템 즐겨 찾기 볼륨</entry>
<entry lang="ko" key="SYS_FAVORITES_HELP_LINK">시스템 선호 볼륨은 무엇입니까?</entry>
<entry lang="ko" key="SYS_FAVORITES_REQUIRE_PBA">시스템 파티션/드라이브가 암호화되지 않은 것 같습니다.\n\n시스템 부팅 볼륨 사전 인증 암호 만 사용하여 시스템 선호 볼륨을 마운트 할 수 있습니다. 따라서 시스템 즐겨 찾기 볼륨을 사용하려면 먼저 시스템 파티션/드라이브를 암호화해야합니다.</entry>
- <entry lang="ko" key="DISMOUNT_FIRST">진행하기 전에 볼륨을 분리하세요.</entry>
+ <entry lang="ko" key="DISMOUNT_FIRST">진행하기 전에 볼륨의 마운트를 해제하세요.</entry>
<entry lang="ko" key="CANNOT_SET_TIMER">오류: 타이머를 설정할 수 없습니다.</entry>
<entry lang="ko" key="IDPM_CHECK_FILESYS">파일 시스템 검사</entry>
<entry lang="ko" key="IDPM_REPAIR_FILESYS">파일 시스템 복구</entry>
@@ -1011,10 +1011,10 @@
<entry lang="ko" key="HK_AUTOMOUNT_DEVICES">자동 마운트 장치</entry>
<entry lang="ko" key="HK_DISMOUNT_ALL">모두 마운트 해제</entry>
<entry lang="ko" key="HK_WIPE_CACHE">캐시 지우기</entry>
- <entry lang="ko" key="HK_DISMOUNT_ALL_AND_WIPE">모든 지우기 캐시 마운트 해제</entry>
- <entry lang="ko" key="HK_FORCE_DISMOUNT_ALL_AND_WIPE">모든 지우기 캐시를 강제로 제거합니다.</entry>
- <entry lang="ko" key="HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT">강제 모두 제거, 캐시 지우기 끝내기</entry>
- <entry lang="ko" key="HK_MOUNT_FAVORITE_VOLUMES">좋아하는 볼륨 마운트</entry>
+ <entry lang="ko" key="HK_DISMOUNT_ALL_AND_WIPE">전체 마운트 해제 및 캐시 삭제</entry>
+ <entry lang="ko" key="HK_FORCE_DISMOUNT_ALL_AND_WIPE">전체 마운트 강제 해제 및 캐시 삭제</entry>
+ <entry lang="ko" key="HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT">전체 마운트 강제 해제 및 캐시 삭제 후 종료</entry>
+ <entry lang="ko" key="HK_MOUNT_FAVORITE_VOLUMES">자주찾는 볼륨 마운트</entry>
<entry lang="ko" key="HK_SHOW_HIDE_MAIN_WINDOW">주 VeraCrypt 창 표시/숨기기</entry>
<entry lang="ko" key="PRESS_A_KEY_TO_ASSIGN">(여기를 클릭하고 키를 누르십시오)</entry>
<entry lang="ko" key="ACTION">동작</entry>
@@ -1026,11 +1026,11 @@
<entry lang="ko" key="SYS_ENC_HIBERNATION_PREVENTED">오류 또는 비 호환성으로 인해 VeraCrypt가 최대 절전 모드 파일을 암호화하지 못합니다. 따라서 최대 절전 모드가 차단되었습니다.\n\n참고: 컴퓨터가 최대 절전 모드로 전환되거나 절전 모드로 전환되면 시스템 메모리의 내용이 시스템 드라이브에있는 최대 절전 모드 저장 파일에 기록됩니다. VeraCrypt는 암호화 키를 방지 할 수 없으며 RAM에서 열린 민감한 파일의 내용이 암호화되지 않은 상태에서 최대 절전 모드 저장 파일에 저장되지 않습니다.</entry>
<entry lang="ko" key="HIDDEN_OS_HIBERNATION_PREVENTED">최대 절전 모드가 차단되었습니다.\n\nVeraCrypt는 추가 부팅 파티션을 사용하는 숨겨진 운영 체제에서 최대 절전 모드를 지원하지 않습니다. 부팅 파티션은 미끼와 숨겨진 시스템에서 공유됩니다. 따라서 최대 절전 모드에서 다시 시작하는 동안 데이터 누출 및 문제를 방지하기 위해 VeraCrypt는 숨겨진 시스템이 공유 부팅 파티션에 쓰거나 최대 절전 모드로 전환하는 것을 방지해야합니다.</entry>
<entry lang="ko" key="VOLUME_MOUNTED_AS_DRIVE_LETTER_X_DISMOUNTED">%c:로 마운트 된 VeraCrypt 볼륨이 마운트 해제되었습니다.</entry>
- <entry lang="ko" key="MOUNTED_VOLUMES_DISMOUNTED">VeraCrypt 볼륨이 분리되었습니다.</entry>
- <entry lang="ko" key="VOLUMES_DISMOUNTED_CACHE_WIPED">VeraCrypt 볼륨이 분리되었으며 암호 캐시가 지워졌습니다.</entry>
+ <entry lang="ko" key="MOUNTED_VOLUMES_DISMOUNTED">VeraCrypt 볼륨이 마운트 해제되었습니다.</entry>
+ <entry lang="ko" key="VOLUMES_DISMOUNTED_CACHE_WIPED">VeraCrypt 볼륨이 마운트 해제되었으며 암호 캐시가 지워졌습니다.</entry>
<entry lang="ko" key="SUCCESSFULLY_DISMOUNTED">성공적으로 마운트 해제 됨</entry>
<entry lang="ko" key="CONFIRM_BACKGROUND_TASK_DISABLED">경고: VeraCrypt 백그라운드 작업을 사용하지 않으면 다음 기능이 비활성화됩니다.\n\n1) 핫 키\n2) 자동 마운트 해제 (예: 로그 오프, 부주의 한 호스트 장치 제거, 시간 초과 등)\n3 ) 좋아하는 볼륨의 자동 마운트\n4) 알림 (예: 숨겨진 볼륨의 손상이 방지 된 경우)\n5) 트레이 아이콘\n\n참고: VeraCrypt 트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 백그라운드 작업을 종료 할 수 있습니다. '종료'를 선택하세요.\n\nVeraCrypt 백그라운드 작업을 영구적으로 비활성화 하시겠습니까?</entry>
- <entry lang="ko" key="CONFIRM_NO_FORCED_AUTODISMOUNT">경고 :이 옵션을 사용하지 않으면 열려있는 파일/디렉토리가있는 볼륨을 자동 마운트 해제 할 수 없습니다.\n\n이 옵션을 비활성화 하시겠습니까?</entry>
+ <entry lang="ko" key="CONFIRM_NO_FORCED_AUTODISMOUNT">경고 :이 옵션을 사용하지 않으면 열려있는 파일/디렉토리가있는 볼륨을 자동으로 마운트 해제 할 수 없습니다.\n\n이 옵션을 비활성화 하시겠습니까?</entry>
<entry lang="ko" key="WARN_PREF_AUTO_DISMOUNT">경고: 열린 파일/디렉토리가있는 볼륨은 자동으로 마운트 해제되지 않습니다.\n\n이렇게하려면이 대화 상자 창에서 다음 옵션을 활성화하십시오: '볼륨에 열려있는 파일이나 디렉토리가 있어도 자동 마운트 해제를 강제하십시오'</entry>
<entry lang="ko" key="WARN_PREF_AUTO_DISMOUNT_ON_POWER">경고: 노트북 배터리 전원이 낮 으면 컴퓨터가 절전 모드로 전환 될 때 Windows에서 실행중인 응용 프로그램으로 적절한 메시지를 보내지 않을 수 있습니다. 따라서 VeraCrypt는 이러한 경우 자동 볼륨 마운트 해제에 실패 할 수 있습니다.</entry>
<entry lang="ko" key="NONSYS_INPLACE_ENC_RESUME_PROMPT">파티션/볼륨의 암호화/암호 해독 프로세스를 예약했습니다. 프로세스가 아직 완료되지 않았습니다.\n\n지금 프로세스를 재개 하시겠습니까?</entry>
diff --git a/src/Common/Dlgcode.c b/src/Common/Dlgcode.c
index 78aa3844..4ea10aaa 100644
--- a/src/Common/Dlgcode.c
+++ b/src/Common/Dlgcode.c
@@ -14240,9 +14240,11 @@ BOOL BufferHasPattern (const unsigned char* buffer, size_t bufferLen, const void
return bRet;
}
-/* Implementation borrowed from KeePassXC source code (https://github.com/keepassxreboot/keepassxc/blob/release/2.4.0/src/core/Bootstrap.cpp#L150)
+/* Implementation borrowed from KeePassXC source code (https://github.com/keepassxreboot/keepassxc/blob/2.7.8/src/core/Bootstrap.cpp#L121)
*
* Reduce current user acess rights for this process to the minimum in order to forbid non-admin users from reading the process memory.
+ * Restrict access to changing DACL's after the process is started. This prevents the creator of veracrypt process from simply adding
+ * the permission to read memory back to the DACL list.
*/
BOOL ActivateMemoryProtection()
{
@@ -14252,6 +14254,8 @@ BOOL ActivateMemoryProtection()
HANDLE hToken = NULL;
PTOKEN_USER pTokenUser = NULL;
DWORD cbBufferSize = 0;
+ PSID pOwnerRightsSid = NULL;
+ DWORD pOwnerRightsSidSize = SECURITY_MAX_SID_SIZE;
// Access control list
PACL pACL = NULL;
@@ -14292,8 +14296,19 @@ BOOL ActivateMemoryProtection()
goto Cleanup;
}
+ // Retrieve CreaterOwnerRights SID
+ pOwnerRightsSid = (PSID) HeapAlloc(GetProcessHeap(), 0, pOwnerRightsSidSize);
+ if (pOwnerRightsSid == NULL) {
+ goto Cleanup;
+ }
+
+ if (!CreateWellKnownSid(WinCreatorOwnerRightsSid, NULL, pOwnerRightsSid, &pOwnerRightsSidSize)) {
+ goto Cleanup;
+ }
+
// Calculate the amount of memory that must be allocated for the DACL
- cbACL = sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE) + GetLengthSid(pTokenUser->User.Sid);
+ cbACL = sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE) + GetLengthSid(pTokenUser->User.Sid)
+ + sizeof(ACCESS_ALLOWED_ACE) + GetLengthSid(pOwnerRightsSid);
// Create and initialize an ACL
pACL = (PACL) HeapAlloc(GetProcessHeap(), 0, cbACL);
@@ -14315,6 +14330,17 @@ BOOL ActivateMemoryProtection()
goto Cleanup;
}
+ // Explicitly set "Process Owner" rights to Read Only. The default is Full Control.
+ if (!AddAccessAllowedAce(
+ pACL,
+ ACL_REVISION,
+ READ_CONTROL,
+ pOwnerRightsSid
+ )) {
+ goto Cleanup;
+ }
+
+
// Set discretionary access control list
bSuccess = (ERROR_SUCCESS == SetSecurityInfo(GetCurrentProcess(), // object handle
SE_KERNEL_OBJECT, // type of object
@@ -14333,6 +14359,9 @@ Cleanup:
if (pACL != NULL) {
HeapFree(GetProcessHeap(), 0, pACL);
}
+ if (pOwnerRightsSid != NULL) {
+ HeapFree(GetProcessHeap(), 0, pOwnerRightsSid);
+ }
if (pTokenUser != NULL) {
HeapFree(GetProcessHeap(), 0, pTokenUser);
}
diff --git a/src/Main/TextUserInterface.cpp b/src/Main/TextUserInterface.cpp
index 0de76c6b..94919296 100644
--- a/src/Main/TextUserInterface.cpp
+++ b/src/Main/TextUserInterface.cpp
@@ -668,7 +668,7 @@ namespace VeraCrypt
{
parentDir = wxT(".");
}
- if (wxDirExists(parentDir) && wxGetDiskSpace (parentDir, nullptr, &diskSpace))
+ if (options->Type == VolumeType::Normal && wxDirExists(parentDir) && wxGetDiskSpace (parentDir, nullptr, &diskSpace))
{
AvailableDiskSpace = (uint64) diskSpace.GetValue ();
if (maxVolumeSize > AvailableDiskSpace)
@@ -678,10 +678,13 @@ namespace VeraCrypt
if (options->Size == (uint64) (-1))
{
- if (AvailableDiskSpace)
+ if (options->Type == VolumeType::Hidden) {
+ throw_err (_("Please do not use maximum size for hidden volume. As we do not mount the outer volume to determine the available space, it is your responsibility to choose a value so that the hidden volume does not overlap the outer volume."));
+ }
+ else if (AvailableDiskSpace)
{
// caller requesting maximum size
- // we use maxVolumeSize because it is guaranteed to be less of equal to AvailableDiskSpace
+ // we use maxVolumeSize because it is guaranteed to be less or equal to AvailableDiskSpace for outer volumes
options->Size = maxVolumeSize;
}
else
@@ -702,14 +705,17 @@ namespace VeraCrypt
throw MissingArgument (SRC_POS);
uint64 multiplier = 1024 * 1024;
- wxString sizeStr = AskString (options->Type == VolumeType::Hidden ? _("\nEnter hidden volume size (sizeK/size[M]/sizeG/sizeT/max): ") : _("\nEnter volume size (sizeK/size[M]/sizeG.sizeT/max): "));
+ wxString sizeStr = AskString (options->Type == VolumeType::Hidden ? _("\nEnter hidden volume size (sizeK/size[M]/sizeG/sizeT): ") : _("\nEnter volume size (sizeK/size[M]/sizeG.sizeT/max): "));
if (sizeStr.CmpNoCase(wxT("max")) == 0)
{
multiplier = 1;
- if (AvailableDiskSpace)
+ if (options->Type == VolumeType::Hidden) {
+ throw_err (_("Please do not use maximum size for hidden volume. As we do not mount the outer volume to determine the available space, it is your responsibility to choose a value so that the hidden volume does not overlap the outer volume."));
+ }
+ else if (AvailableDiskSpace)
{
// caller requesting maximum size
- // we use maxVolumeSize because it is guaranteed to be less of equal to AvailableDiskSpace
+ // we use maxVolumeSize because it is guaranteed to be less or equal to AvailableDiskSpace for outer volumes
options->Size = maxVolumeSize;
}
else