PicoCrypt 리뷰: 간단하지만 강력한 데이터(파일, 폴더) 보안 툴
PicoCrypt는 매우 간단하면서 강력하게 내 데이터를 보호할 수 있는 오픈소스 보안 앱 입니다. 사용도 매우 쉽고 최신 암호화 알고리즘을 사용하며 굉장히 가벼워 저사양 컴퓨터에서도 얼마든지 사용할 수 있습니다. 많은 분들에게 추천해드리고 싶은 보안 소프트웨어 입니다.
PicoCrypt 설치해놓은지 오래됐는데 저는 거의 사용하지 않고 있다가 과거에 PicoCrypt 리뷰 초안 써놓은 것을 뒤늦게 발견하고 생각난김에 작성하게 됐습니다.
Contents
Picocrypt 특징 및 장점

- 간단함과 사용 편의성: Picocrypt의 가장 큰 장점으로 꼽히는 것은 누구나 1분이면 배워서 사용할 수 있다는 것입니다. 최고의 사용 편의성을 제공해요. 압축 프로그램과 작동 방식이나 사용법이 거의 같습니다. 복잡한 설정 없이 파일을 암호화/복호화할 수 있다는 것은 무엇보다 훌륭한 장점이죠.
- 작은 용량: 운영체제에 따라 다르지만 평균 3MB 정도밖에 안되는 작은 소프트웨어 입니다. (윈도우 기준 2.7메가)
- 빠른 속도: 암호화, 복호화 속도가 빠른 편입니다.
- 강력한 암호화 알고리즘 사용:
- XChaCha20-Poly1305 (Cipher and MAC)
- Argon2(id) (Key Derivation)
- SHA3-512 (Key checking and file corruption checks)
- 파일 손상 방지 및 복구: Reed-Solomon 패리티 바이트를 사용하여 파일 손상을 방지하고 손상된 바이트를 복구할 수 있는 기능이 있습니다.
- 오픈 소스 (FOSS): 코드가 공개되어 있습니다.
- 무료: 완전 무료입니다.
- 보안 감사: 제작자가 4년전에 쓴 글을 읽어보면 보안에 중요한 라이브버리에 대해 감사를 받고싶지만 수천달러가 필요할 것 같다고 말한 부분이 있습니다. 십시일반 돈이 모여서 2024년에 마침에 보안 감사(Audit)를 받았네요! – Penetration Test Report
- 다운로드 방법
- https://github.com/Picocrypt/Picocrypt/releases 에서 운영체제에 맞는 파일을 받으세요.
- macOS Homebrew 사용하시는 분은
brew tap Picocrypt/picocrypt && brew install picocrypt --no-quarantine로 설치하세요.
PicoCrypt 살짝 아쉬운 점
아쉽다기 보다는 다른 부분이라고 할 수 있습니다.
임시 복호화 파일 처리: VeraCrypt, Cryptomator처럼 생성된 “가상 공간” 내부에서 파일을 읽고 쓴 뒤 바로 잠글 수 있는 방식이 아니라 압축 하기 / 압축 풀기와 같은 방식이라 파일 수정이나 추가, 삭제가 잦은 작업에는 어울리지 않습니다. 완전히 풀었다가 다시 암호화 한 뒤 기존 파일은 따로 삭제되는데 용량이 크고 파일이 많으면 매번 반복되는 작업을 하기엔 귀찮을 수 있습니다.

macOS 아이콘 사이즈 맞게 다시 만들어줘.. 이쁘게..
PicoCyprt 사용법
암호화

PicoCrypt를 실행하면 위와 같이 나옵니다. 가장 위에 “Drop files and folders into this window(파일이나 폴더를 이 창에 갖다 놓으세요.“라고 합니다.

그리고 암호를 두 번 입력해주면 됩니다.
Comments는 본인 혹은 이 파일을 전달할 사람에게 보여주기 위한 설명을 입력하는 곳으로 따로 암호화되지 않습니다.
이게 전부입니다.

이렇게 압축, 암호화 됩니다.
복호화

암호화했던 pcv 파일을 끌어다 놓고 설정한 패스워드 입력한 뒤 Decrypt 끝.
Advanced
- Paranod Mode
- XChaCha20과 Serpent를 모두 사용하여 데이터를 계단식으로 암호화하고, BLAKE2b 대신 HMAC-SHA3을 사용하여 데이터를 인증합니다. Argon2 매개변수도 크게 증가합니다. 이 모드는 극비 파일을 보호하는 데 권장되며, 실현 가능한 최고 수준의 실질적인 보안을 제공합니다.
- 대신 속도가 느려집니다.
- 제작자는 파일 해독이 불가능하다고 해도 과언이 아니라고 주장하는데, 기밀급 데이터가 아니라면 실제로 필요하지 않다고 말합니다.
- Reed-Solomon
- 리드-솔로몬 오류 수정 코드를 사용하여 128바이트의 데이터마다 8바이트를 추가하여 파일 손상을 방지.
- 중요한 데이터를 클라우드 서비스나 외부 매체에 장기간 보관할 경우 유용하다고 합니다.
- 옵션 선택시 암호화, 복호화 속도가 매우 느려질 수 있음.
- Deniablilty: 암호화된 파일이라는 것을 숨기기 위한 옵션. 이 모드는 암호화 및 복호화 속도를 저하시키고, 나중에 볼륨 이름을 수동으로 변경해야 하며, 주석을 무용지물로 만들고, 패러노이드 모드의 추가 보안 조치를 무효화하므로, 절대적으로 필요한 경우에만 사용해야 합니다.
- Split into chunks: 파일 분할 입니다. 그 앞에 MiB라고 되어있는 부분에 분할하고 싶은 크기를 입력하시면 됩니다.
- Compress files: Picocrypt는 여러 파일을 암호화할 때 압축되지 않은 zip 파일을 사용하여 파일을 빠르게 병합합니다. 하지만 이러한 파일을 압축하려면 이 확인란을 선택하면 암호화 중에 표준 Deflate 압축 알고리즘이 적용됩니다.
- Delete files: 암호화 또는 복호화가 완료된 후 원본 파일을 안전하게 삭제하는 기능으로, 일반적인 삭제가 아니라, 데이터를 여러 번 덮어쓰는 Secure Wipe 방식으로 삭제됩니다.
- Recursively: 대용량 파일 세트를 개별적으로 암호화 및/또는 복호화하려는 경우, 이 옵션을 사용하면 Picocrypt가 사용자가 입력한 모든 재귀적 파일을 검토하여 개별적으로 암호화/복호화합니다. 예를 들어, 수천 개의 대용량 문서를 암호화하고 전체 문서를 다운로드하고 복호화하지 않고도 특정 문서 하나만 복호화하려는 경우 유용합니다. 이 기능은 매우 복잡하므로 작업 내용을 잘 알고 있는 경우에만 사용해야 합니다.
PicoCrypt와 7Zip 암호화 다른 점은?
이 질문을 한 사람에게 제작자가 직접 댓글로 설명해준 내용입니다.
“감사합니다. 훨씬 훨씬 훨씬 더 안전해졌어요! 우선, 7-Zip은 키 도출에 SHA-512를 사용하는데, GPU는 초당 수만 개의 SHA-512 해시/비밀번호를 해독할 수 있기 때문에 이는 좋지 않은 아이디어입니다.
Picocrypt는 공격자의 속도를 늦추도록 설계된 Argon2id를 사용합니다. Argon2id는 SHA-512보다 훨씬 더 많은 RAM을 사용하고 RAM에 더 많이 쓰기 때문에 GPU가 비밀번호를 해독하는 것을 기하급수적으로 어렵게 만듭니다. 강력한 GPU라도 초당 몇 개의 비밀번호만 해독할 수 있을 것입니다.
또한 7-Zip은 적절한 보안 수준을 갖춘 AES를 사용하지만, Picocrypt가 사용하는 XChaCha20은 더 현대적이고 안전합니다. 전반적으로 Picocrypt는 모든 면에서 7-Zip보다 설계상 더 안전합니다. 또한 크기가 작고 휴대성이 뛰어납니다. Windows용 Picocrypt는 3MB에 불과한 독립 실행형 종속성 없는 실행 파일입니다.” – https://www.reddit.com/r/privacytoolsIO/comments/m8jpu6/comment/grhqavr/
다른 인기 암호화 툴과의 비교
Github 페이지에 소개된 내용을 보기 좋게 한글로 번역해서 올립니다.
다음은 Picocrypt가 다른 인기 있는 암호화 도구들과 어떻게 비교되는지에 대한 내용입니다.
| Picocrypt | VeraCrypt | 7-Zip GUI | BitLocker | Cryptomator | |
|---|---|---|---|---|---|
| 무료 | ✅ 예 | ✅ 예 | ✅ 예 | ✅ 번들 | ✅ 예 |
| 오픈 소스 | ✅ GPLv3 | ✅ 다중 | ✅ LGPL | ❌ 아니요 | ✅ GPLv3 |
| 크로스 플랫폼 | ✅ 예 | ✅ 예 | ❌ 아니요 | ❌ 아니요 | ✅ 예 |
| 크기 | ✅ 3 MiB | ❌ 20 MiB | ✅ 2 MiB | ✅ N/A | ❌ 50 MiB |
| 휴대성 | ✅ 예 | ✅ 예 | ❌ 아니요 | ✅ 예 | ❌ 아니요 |
| 권한 | ✅ 없음 | ❌ 관리자 | ❌ 관리자 | ❌ 관리자 | ❌ 관리자 |
| 사용 편의성 | ✅ 쉬움 | ❌ 어려움 | ✅ 쉬움 | ✅ 쉬움 | 🟧 보통 |
| 암호화 알고리즘 | ✅ XChaCha20 | ✅ AES-256 | ✅ AES-256 | 🟧 AES-128 | ✅ AES-256 |
| 키 유도 방식 | ✅ Argon2 | 🟧 PBKDF2 | ❌ SHA-256 | ❓ 알 수 없음 | ✅ Scrypt |
| 데이터 무결성 | ✅ 항상 | ❌ 아니요 | ❌ 아니요 | ❓ 알 수 없음 | ✅ 항상 |
| 은닉성 (Deniability) | ✅ 지원됨 | ✅ 지원됨 | ❌ 아니요 | ❌ 아니요 | ❌ 아니요 |
| 리드-솔로몬 | ✅ 예 | ❌ 아니요 | ❌ 아니요 | ❌ 아니요 | ❌ 아니요 |
| 압축 | ✅ 예 | ❌ 아니요 | ✅ 예 | ✅ 예 | ❌ 아니요 |
| 원격 측정 (Telemetry) | ✅ 없음 | ✅ 없음 | ✅ 없음 | ❓ 알 수 없음 | ✅ 없음 |
| 감사 완료 여부 | ✅ 예 | ✅ 예 | ❌ 아니요 | ❓ 알 수 없음 | ✅ 예 |
제작자 의견: Picocrypt가 다른 도구들보다 대부분의 면에서 우수하지만, 만능은 아니며 그렇게 되려고 하지도 않는다는 점을 명심하세요. 전체 디스크 암호화와 같은 사용 사례에서는 VeraCrypt와 BitLocker가 더 나은 선택일 수 있습니다. 따라서 Picocrypt는 대다수의 사람들에게 훌륭한 선택이지만, 여전히 스스로 조사하여 자신에게 가장 적합한 것을 사용해야 합니다.
여기까지입니다.블로그에 유용한 앱에 대해 꾸준히 공유하고 있습니다.
Cryptomator 리뷰도 읽어보세요. 주로 클라우드 공간에 안전하게 보관하기 위해 사용하는 매우 좋은 암호화 툴 입니다.
[추가 내용] – 원본 파일 수정 날짜 문제를 해결하고 싶으신 분은 댓글을 참고해보세요. ㅇㅇ님께서 직접 해결 방법을 찾아서 공유해주셨습니다!
수정날짜에 대한 대안을 제미나이를 통해 개발해냈습니다.
1. 암호화 하기전에 원본파일들을 Nirsoft BulkFileChanger 로 원하는 파일들을 드래그앤드롭하고
export 기능으로 txt로 저장하면 수정날짜/만든날짜/액세스날짜 등이 포함된 목록이 저장됨.
2. Picocrypt 로 암호화
3. Picocrypt 로 복호화
4. 아래 파워셸 명령으로 위에서 만든 txt를 드래그앤 드롭해서 실행버튼 누르면 날짜 복원
(길어서 파일첨부하고 싶은데 첨부가 안되네요.)
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# 1. 메인 폼(창) 설정
$form = New-Object System.Windows.Forms.Form
$form.Text = “BulkFileChanger 날짜 복원 도구”
$form.Size = New-Object System.Drawing.Size(480, 180)
$form.StartPosition = “CenterScreen”
$form.FormBorderStyle = “FixedDialog”
$form.MaximizeBox = $false
$form.AllowDrop = $true # 창 전체에 드래그 앤 드롭 허용
# 2. 안내 문구 라벨
$label = New-Object System.Windows.Forms.Label
$label.Text = “BulkFileChanger export txt 경로입력”
$label.Location = New-Object System.Drawing.Point(20, 15)
$label.Size = New-Object System.Drawing.Size(300, 20)
$form.Controls.Add($label)
# 3. 경로 입력 텍스트박스
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(20, 40)
$textBox.Size = New-Object System.Drawing.Size(370, 20)
$textBox.AllowDrop = $true # 텍스트박스 자체에도 드래그 앤 드롭 허용
$form.Controls.Add($textBox)
# 4. 파일 탐색기 (…) 버튼
$browseBtn = New-Object System.Windows.Forms.Button
$browseBtn.Text = “…”
$browseBtn.Location = New-Object System.Drawing.Point(400, 38)
$browseBtn.Size = New-Object System.Drawing.Size(40, 23)
$form.Controls.Add($browseBtn)
# 5. 실행 버튼
$runBtn = New-Object System.Windows.Forms.Button
$runBtn.Text = “실행”
$runBtn.Location = New-Object System.Drawing.Point(20, 85)
$runBtn.Size = New-Object System.Drawing.Size(420, 35)
$form.Controls.Add($runBtn)
# — 드래그 앤 드롭 이벤트 구현 —
$dragOverAction = {
param($sender, $e)
if ($e.Data.GetDataPresent([System.Windows.Forms.DataFormats]::FileDrop)) {
$e.Effect = [System.Windows.Forms.DragDropEffects]::Copy
} else {
$e.Effect = [System.Windows.Forms.DragDropEffects]::None
}
}
$dragDropAction = {
param($sender, $e)
$files = $e.Data.GetData([System.Windows.Forms.DataFormats]::FileDrop)
if ($files.Count -gt 0) {
$textBox.Text = $files[0] # 끌어다 놓은 파일의 경로를 텍스트박스에 입력
}
}
# 창과 텍스트박스 모두에 드래그 앤 드롭 이벤트 연결
$form.add_DragOver($dragOverAction)
$form.add_DragDrop($dragDropAction)
$textBox.add_DragOver($dragOverAction)
$textBox.add_DragDrop($dragDropAction)
# — 버튼 클릭 이벤트 구현 —
# (…) 버튼 클릭 시 OpenFileDialog 실행
$browseBtn.Add_Click({
$fileBrowser = New-Object System.Windows.Forms.OpenFileDialog
$fileBrowser.Title = “BulkFileChanger 텍스트 파일 선택”
$fileBrowser.InitialDirectory = (Get-Location).Path # 현재 파워셸 실행 경로를 기본 폴더로 지정
$fileBrowser.Filter = “텍스트 파일 (*.txt)|*.txt|모든 파일 (*.*)|*.*”
if ($fileBrowser.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
$textBox.Text = $fileBrowser.FileName
}
})
# [실행] 버튼 클릭 시 날짜 복원 로직 구동
$runBtn.Add_Click({
$txtPath = $textBox.Text
if ([string]::IsNullOrWhiteSpace($txtPath) -or -not (Test-Path $txtPath)) {
[System.Windows.Forms.MessageBox]::Show(“올바른 텍스트 파일 경로를 입력하거나 파일을 드래그해 주세요.”, “경고”, [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Warning)
return
}
# 복원 작업 시작 (창을 닫지 않고 백그라운드 콘솔에 로그 출력)
Write-Host “`n[작업 시작] 선택된 파일: $txtPath” -ForegroundColor Cyan
$culture = [System.Globalization.CultureInfo]::GetCultureInfo(“ko-KR”)
$content = Get-Content -Raw -Path $txtPath -Encoding UTF8
$blocks = $content -split “={10,}”
$successCount = 0
$failCount = 0
foreach ($block in $blocks) {
if ([string]::IsNullOrWhiteSpace($block)) { continue }
$filename = $null
$fileSizeStr = $null
$modifiedStr = $null
$createdStr = $null
$accessedStr = $null
foreach ($line in ($block -split “`r?`n”)) {
if ($line -match “^Filename\s*:\s*(.*)$”) { $filename = $matches[1].Trim() }
elseif ($line -match “^File Size\s*:\s*(.*)$”) { $fileSizeStr = $matches[1].Trim().Replace(“,”, “”) }
elseif ($line -match “^Modified Time\s*:\s*(.*)$”) { $modifiedStr = $matches[1].Trim() }
elseif ($line -match “^Created Time\s*:\s*(.*)$”) { $createdStr = $matches[1].Trim() }
elseif ($line -match “^Accessed Time\s*:\s*(.*)$”) { $accessedStr = $matches[1].Trim() }
}
if (-not $filename -or -not $fileSizeStr) { continue }
$fileSize = [int64]$fileSizeStr
# 현재 폴더(.\)에서 파일명과 크기가 일치하는 파일 매칭
$targetFile = Get-ChildItem -Path “.” -Filter $filename | Where-Object { $_.Length -eq $fileSize }
if ($targetFile) {
try {
if ($modifiedStr) { $targetFile.LastWriteTime = [DateTime]::Parse($modifiedStr, $culture) }
if ($createdStr) { $targetFile.CreationTime = [DateTime]::Parse($createdStr, $culture) }
if ($accessedStr) { $targetFile.LastAccessTime = [DateTime]::Parse($accessedStr, $culture) }
Write-Host “복원 성공: $filename” -ForegroundColor Green
$successCount++
}
catch {
Write-Warning “날짜 적용 실패 ($filename): $_”
$failCount++
}
} else {
Write-Warning “일치하는 파일 없음: $filename ($fileSize 바이트)”
$failCount++
}
}
# 완료 알림 팝업
[System.Windows.Forms.MessageBox]::Show(“작업이 완료되었습니다!`n성공: $successCount 건 / 실패 및 미발견: $failCount 건”, “완료”, [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information)
})
# 창 띄우기
$form.ShowDialog() | Out-Null
와 대박 ㅋㅋㅋㅋ 이거 여기에 댓글로 남겨져있기는 너무 아까운데요? ㅜㅜ 본문에 언급이라도 해두겠습니다. 누군가에게 꼭 도움될거예요!
좋은 프로그램 소개 감사합니다
Veracrypt를 쓰는데 문제가 하나 있어 대안을 찾던중인데
이거 꽤 괜찮다 싶었는데 심각한 결점이 하나 있네요.
“원본의 수정날짜가 유지되지 않는다”는 점입니다.
다운로드해서 받아쓰는 데이터가 아닌이상, 수정날짜는 그 자체로 유니크한 특성분류의 기준이 됩니다.
대부분의 백업,복원,싱크 등의 프로그램들도 매번 해시를 할 수 없기 때문에, 수정날짜와 용량을 기준으로 잡습니다.
수정날짜 저장 및 복원기능까지 있다면 정말 애용했을 프로그램인데 너무 아쉽네요.
(수정날짜 보존을 위해 추가 압축작업을 하면 배보다 배꼽이 커지네요. 이미 대상용량의 필요한 여유공간이 3배가 필요해지는데 추가 압축까지 들어가면 4배 5배 더 될수도 있죠. 시간도 시간이구요)
참고로 제가 베라크립트에서 아쉬워한 기능이 “분할 저장”기능입니다.
파일내역을 볼 수 없는 컨테이너와 분할기능이 필요한데,
압축프로그램에서는 암호걸고 분할하면 내역이 나오고
베라크립트에서는 분할기능 자체가 없고
피코크립트에서는 수정날짜 유지기능이 없네요.
다들 뭐 하나씩 중요한 기능이 모자라네요. ㅠㅠ
세상에;; 단순 용도로 사용하다보니 그건 몰랐네요. 이거 개발자에게 한번 건의해볼만한데요..?
이글 보고 구글링 하다보니 베라크립트에서도 Argon2id가 추가될듯하네요
좀더 빨리해주징
https://sourceforge.net/projects/veracrypt/files/VeraCrypt%20Nightly%20Builds/
https://sourceforge.net/p/veracrypt/discussion/technical/thread/5326026904/
ㅇㅇ님 좋은 소식 감사행요!
이렇게 개발 유지해주는 것만으로도 감사합니다 ㅋㅋㅋ 베라크립트 없으면 뭘 써야할지 ㄷㄷ
Argon2id에 대해서 간단하게 써놔야겠군요.
아이콘은 개발자가 맥이 없어서 깔끔하게 만들지 못했던거라고 하네요
다음 업데이트때 새 아이콘 적용해준다고 합니다
앜ㅋㅋㅋㅋㅋㅋ 재원님 고마워요 ㅋㅋㅋㅋㅋ 개발자 귀엽네요 ㅋㅋㅋ