Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ๊ณต๊ธ์์์ ์คํํ ์ ์๋ git-remote-gcrypt ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
git-remote-gcrypt - GNU Privacy Guard๋ก ์ํธํ๋ git remote
๊ธฐ์
์๊ฒฉ ๋์ฐ๋ฏธ ํ๋ก๊ทธ๋จ์ ๋คํธ์ํฌ ์ ์ก์ ์ฒ๋ฆฌํ๊ธฐ ์ํด git์ ์ํด ํธ์ถ๋ฉ๋๋ค. ์ด ๋์ฐ๋ฏธ
ํธ๋ค ์งํฌ๋ฆฝํธ:: Google์ ์ฌ์ฉํ์ฌ GPG๋ก ์ํธํ๋ ์๊ฒฉ ์ ์ฅ์์ ์ก์ธ์คํ URL
์ฌ์ฉ์ ์ ์ ํ์.
์ง์๋๋ ์์น๋ ์ง๋ฐฉ์, rsync:// ๊ณผ sftp : //, ์ฌ๊ธฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋
ํ์ผ ์ธํธ ๋๋ ๋์ ์ฌ๊ธฐ์ gcrypt๋ ๋์ผํ ํํ์
์์์ git ์ ์ก์ ํตํด ์ฐ๊ฒฐ๋๋ git ์ ์ฅ์.
๋ชฉํ๋ ๋ค์์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฐ์ ์ธ์ฆ๋ git ์คํ ๋ฆฌ์ง ๋ฐ ํ์ ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
์ผ๋ฐ์ ์ธ ์ ๋ขฐํ ์ ์๋ ํ์ผ ํธ์คํธ ๋๋ ์๋น์ค. ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ์ผ๋ง๋ ์ ์ถฉ์กฑํ๋์ง ํ๊ฐํ ์ ์๋๋ก ๋์์ฃผ์ธ์.
๋์์ธ ๋ชฉํ!
์๋ฆผ:
์ด๊ฒ์ ๊ฐ๋ฐ ๋ฒ์ ์ ๋๋ค -- ๋ฆฌํฌ์งํ ๋ฆฌ ํ์์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
๋น ๋ฅธ ์์
ยท ์ค์นํ๋ค ์์-์๊ฒฉ-gcrypt ์ ๊ณต๋ ์คํ์ผ๋ก ์ค์น.sh ์คํฌ๋ฆฝํธ.
ยท ํธ์ํ์ฌ ์ํธํ๋ ์๊ฒฉ ์์ฑ:
git ์๊ฒฉ ์ถ๊ฐ cryptremote gcrypt::rsync://example.com:repo
git push cryptremote ๋ง์คํฐ
> gcrypt: ์ ์ ์ฅ์ ์ค์
> gcrypt: ์๊ฒฉ ID:id:7VigUnLVYVtZx8oir34R
> [ ๋ ๋ง์ ๋ผ์ธ .. ]
> gcrypt๋ก::[...]
> * [์ ๋ธ๋์น] ๋ง์คํฐ -> ๋ง์คํฐ
๊ตฌ์ฑ
๋ค์ ์์ ๊ตฌ์ฑ(1) ๋ณ์๊ฐ ์ง์๋ฉ๋๋ค:
์๊ฒฉ. .gcrypt ์ฐธ๊ฐ์
gcrypt.์ฐธ๊ฐ์
๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ GPG ํค ์๋ณ์ ๋ชฉ๋ก์ ๋๋ค. ๋ฆฌ๋ชจ์ปจ์ ๋ค์์ผ๋ก ์ํธํ๋ฉ๋๋ค.
์ฐธ๊ฐ์์ ์ด๋ค์ ์๋ช ๋ง ํ์ฉ๋ฉ๋๋ค. gpg -k ๋ชจ๋ ๊ณต๊ฐ ๋ชฉ๋ก
์๊ณ ์๋ ํค.
์ด ์ต์ ์ ์ค์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ํค๋ก ์ํธํํ๊ณ ์ ํจํ ํค๋ฅผ ์๋ฝํฉ๋๋ค.
์๋ช . ์ด ๋์์ ์ฐธ๊ฐ์๋ฅผ ์ค์ ํ์ฌ ๋ช ์์ ์ผ๋ก ์์ฒญํ ์๋ ์์ต๋๋ค.
์ ๊ฐํธํ ์ค์น.
XNUMXD๋ดํ์ gcrypt ์ฐธ๊ฐ์ ๋ฆฌ๋ชจ์ฝ์ ์ค์ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
๋ณ์ gcrypt.์ฐธ๊ฐ์.
์๊ฒฉ. .gcrypt-๊ฒ์-์ฐธ๊ฐ์
gcrypt.publish-์ฐธ๊ฐ์
๊ธฐ๋ณธ์ ์ผ๋ก ์ฐธ๊ฐ์์ gpg ํค ID๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์ํธํํ์ฌ ๊ฐ๋ ค์ง๋๋ค.
gpg -R. ์ด ์ต์ ์ ๋ค์์ผ๋ก ์ค์ ์ฐธ๋ ํด๋น ๋ณด์ ์กฐ์น๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
์ฌ์ฉ ๋ฌธ์ gpg -R gpg๋ ์ํธ๋ฅผ ํด๋ ํ๊ธฐ ์ํด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ ๋น๋ฐ์ ์๋ํฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ํค๋ฅผ ์ฐพ์ ๋๊น์ง ์ฐจ๋ก๋ก ํค๋ฅผ ๋๋ฆ ๋๋ค. ์ด๋ก ์ธํด ๋ถํ์ํ ์ํธ๊ฐ ์์ฑ๋ ์ ์์ต๋๋ค.
ํ๋กฌํํธ.
์๊ฒฉ. .gcrypt ์๋ช ํค
์ฌ์ฉ์ ์๋ช ํค
(์ผ๋ฐ git ๊ตฌ์ฑ์ ํ์) ์๋ช ์ ์ฌ์ฉํ ํค์ ๋๋ค. ๋น์ ์ํด์ผ
์ธํธ ์ฌ์ฉ์ ์๋ช ํค ๊ธฐ๋ณธ ์๋ช ํค๊ฐ ์ฐธ๊ฐ์์ ์ผ๋ถ๊ฐ ์๋ ๊ฒฝ์ฐ
๋ชฉ๋ก. ์๊ฒฉ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์๊ฒฉ ์ฅ์น์ ์๋ช ํ ์ ์์ต๋๋ค.
์ด์ .
ํ๊ฒฝ ๋ณ์
GCRYPT_FULL_REPACK
์ด ํ๊ฒฝ ๋ณ์๋ ํธ์ํ ๋ ์ ์ฒด ์ฌ์์ถ์ ๊ฐ์ ํฉ๋๋ค.
์ฌ์ฉ ์
๋ ๋ช ์ ์ฐธ๊ฐ์๋ฅผ ์ํ ๋ฆฌ๋ชจ์ปจ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ:
git ์๊ฒฉ ์ถ๊ฐ cryptremote gcrypt::rsync://example.com:repo
git config remote.cryptremote.gcrypt-์ฐธ๊ฐ์ "KEY1 KEY2"
git push cryptremote ๋ง์คํฐ
Git ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ:
# ๋์ git repo๊ฐ โโ์ด๋ฏธ ์กด์ฌํด์ผ ํ๋ฉฐ
# `next` ๋ถ๊ธฐ๋ฅผ ๋ฎ์ด์๋๋ค!
git ์๊ฒฉ ์ถ๊ฐ gitcrypt gcrypt::[์ด๋ฉ์ผ ๋ณดํธ]:repo#๋ค์
git push gitcrypt ๋ง์คํฐ
URL ์กฐ๊ฐ(#๋ค์ ์ฌ๊ธฐ)๋ ์ฌ์ฉ๋๋ ๋ฐฑ์๋ ๋ถ๊ธฐ๋ฅผ ๋ํ๋ ๋๋ค.
๋ ธํธ
ํ์
์ฐธ๊ฐ์์ ์ผ์นํ๋๋ก ๊ฐ ํธ์์ ๋ํด ๋งค๋ํ์คํธ์ ์ํธํ๊ฐ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๊ตฌ์ฑ. ๊ฐ ํธ์ ์ฌ์ฉ์๋ ๋ชจ๋ ํ๋ ฅ์์ ๊ณต๊ฐ ํค๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ฉฐ
์ฌ๋ฐ๋ฅธ ์ฐธ๊ฐ์ ๊ตฌ์ฑ.
์ข ์์ฑ
rsync ๊ณผ ์ปฌ ๋ฆฌ๋ชจ์ปจ์ฉ ์ฌ๋๊ธฐํ: ๊ณผ SFTP: ๊ฐ๊ธฐ. ์ฃผ์ ์คํ ํ์ผ
์ง์ํ๋ POSIX ํธํ ์ ธ์ด ํ์ํฉ๋๋ค. ์ง๋ฐฉ์.
GNU ๊ฐ์ธ์ ๋ณด๋ณดํธ ์คํ ์ด๋ธ ๊ฐ๋
GPG 1.4 ๋ฐ 2 ๋ชจ๋ ์ง์๋ฉ๋๋ค. ๊ฐ์ธ GPG ํค๊ฐ ํ์ํฉ๋๋ค. GPG ๊ตฌ์ฑ
๊ณต๊ฐ ํค ์ํธํ, ๋์นญ ์ํธํ ๋ฐ
์๋ช . ๋ณด๋ค ์ฌ๋ gpg
์๊ฒฉ์ํ ID
์๊ฒฉ ID๋ ๋น๋ฐ์ด ์๋๋๋ค. ๋จ์ง ๋ ๊ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ
๋์ผํ ์ฌ์ฉ์๋ฅผ ๊ตฌ๋ณํ ์ ์์ต๋๋ค. ์๊ฒฉ ID๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค.
๋ฆฌ๋ชจ์ปจ์ด ๋ค์ ์์ฑ๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค.
์ ์ฅ์ ํ์ฑ
EncSign(X): GPG ํค ํ๋์ ์๋ช ๋ฐ ์ํธํ
์ํธํ(K,X): ๋์นญ ํค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ํธํ
ํด์(X): SHA-2/256
B: ๋ถ๊ธฐ ๋ชฉ๋ก
L: ํด์ ๋ชฉ๋ก(Hi) ๋ฐ ํค(Ki) ๊ฐ ํฉ ํ์ผ์ ๋ํด
R: ์๊ฒฉ ID
๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
๊ฐ ํฉ ํ์ผ ์ ์ฅ P as ์ํธํ(Ki, P) โ P' ํ์ผ ์ด๋ฆ์ Hi
์ด๋์ Ki ์๋ก์ด ์์์ ๋ฌธ์์ด์ด๊ณ ํด์(P') โ Hi
์คํ ์ด EncSign(B || L || R) ๋งค๋ํ์คํธ์์
์ ์ฅ์๋ฅผ ์ฝ์ผ๋ ค๋ฉด:
GPG ํค๋ง์ ์ฌ์ฉํ์ฌ ๋งค๋ํ์คํธ ๊ฐ์ ธ์ค๊ธฐ, ํด๋ ๋ฐ ํ์ธ โ (NS, L, R)
๋ค์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ R ์ด์ ์ ๋ณธ ์๊ฒฉ ID์ ์ผ์นํ์ง ์์ต๋๋ค.
๊ฐ๊ฐ ์๋ , Ki in L:
ํ์ผ ๊ฐ์ ธ์ค๊ธฐ Hi ์๋ฒ์์ โ P'
ํ์ธ ํด์(P') ์ฑ๋ฅ Hi
ํด๋ P' ์ฌ์ฉ Ki โ P ๊ทธ ๋ค์์ ์ด๋ค. P ์์์ผ๋ก
์ ํ ๋ชฉ๋ก ํ์ผ
์์ ๋งค๋ํ์คํธ ํ์ผ(๊ฐ๊ฒฐ์ฑ์ ์ํด ์ค์ํ ํฌํจ):
$ gpg -d 91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a
542051c7cd152644e4995bda63cc3ddffd635958 refs/heads/next
3c9e76484c7596eff70b21cbe58408b2774bedad refs/heads/master
pack :SHA256:f2ad50316...cd4ba67092dc4 z8YoAnFpMlW...3PkI2mND49P1qm
pack :SHA256:a6e17bb4c...426492f379584 82+k2cbiUn7...dgXfyX6wXGpvVa
keep :SHA256:f2ad50316...cd4ba67092dc4 1
์ ์ฅ์ :id:OYiSleGirtLubEVqJpFF
๊ฐ ํญ๋ชฉ์ ์ ์ค๊น์ง ํ์ฅ๋๋ฉฐ ๋ค์ ์ค ํ๋์ ์ผ์นํฉ๋๋ค.
ํ๋ด ๊ฐ์ฒด ID ๋ฐ ์ฐธ์กฐ
ํฉ : :
ํฉ ํ์ผ ํด์(Hi) ๋ฐ ํด๋น ๋์นญ ํค(Ki).
์ ์ง : :
Packfile ํด์ ๋ฐ ํด๋น ๋ฆฌํฉ ์์ฑ
REPO
์๊ฒฉ ID
๋ด์ ...
๋ณด์กด๋์ง๋ง ์ฌ์ฉ๋์ง ์๋ ํ์ฅ ํ๋.
๊ฐ์ง ์ค GCRYPT REST
git url์ด gcrypt ์ ์ฅ์์ธ์ง ๊ฐ์งํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค. git-remote-gcrypt --check url ์ข ๋ฃ ์ํ if
์ ์ฅ์๊ฐ ์กด์ฌํ๊ณ ํด๋ ํ ์ ์๋ ๊ฒฝ์ฐ 0, ์ ์ฅ์๊ฐ gcrypt๋ฅผ ์ฌ์ฉํ์ง๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ 1
๋ณตํธํ๋๊ณ ์ ์ฅ์๊ฐ gcrypt๋ก ์ํธํ๋์ง ์์ ๊ฒฝ์ฐ(๋๋ ์ก์ธ์คํ ์ ์๋ ๊ฒฝ์ฐ) 100์ ๋๋ค.
์ด๊ฒ์ repo ๋ด์ฉ์ ๋ก์ปฌ git ์ ์ฅ์๋ก ๊ฐ์ ธ์์ผ ํ๋ค๋ ์ ์ ์ ์ํ์ญ์์ค.
gcrypt ์ ์ฅ์๋ฅผ ์ฌ์ฉํ ๋ ์ํ๋ฉ๋๋ค.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ์์ git-remote-gcrypt ์ฌ์ฉ