2010. 6. 11. 14:15
.NET Framework
Using Cryptography Application Block
Enterprise Library 소개하는 시리즈에서 암호화 블록을 건너 뛰었나 보다…빨리 내 사이트에도 이런 거 말해주는 고마운 이가 있었음 조케따...-_-
이번 강좌도 쫌 길다.. 맘 단디 묵기 바란다.
암호화를 사용하는 이유는 굳이 설명하지 않아도 될 듯 하다. 엔터프라이즈 어플리케이션이든 그렇지 않든 민감하고도 중요한 정보들(사용자 관련 정보/회사 기밀 사항)은 암호화를 통해 보호해야만 한다.
Cryptography Application Block을 사용하는 방식은 역시나 매우 간단하며 역시나 구성파일로 암호화 알고리즘과 같은 암호화 방식을 변경할 수 있도록 설계되었다.
일단 함 들이대자.
구성파일로 구성하기
Enterprise Library Configuration을 실행하고 아래의 화면 처럼 어플리케이션을 만들고 Cryptography Application Block 을 추가하면, Hash Providers와 Symmetric Providers가 존재한다. 즉 해시와 대칭형 암호화 두가지 종류의 암호화를 정의할 수 있다는 것이다.
해시 암호화는 조금 다른 의미를 지닌다고 알고 있다. 해시를 사용하는 목적은 네트웍을 통해 중요 정보 자체를 흘려보내고 싶지 않은 경우에 사용한다.
데이터에 대한 해시값은 원본 데이터를 기준으로 생성한 유일한 값으로서 동일한 원본 데이터를 입력하지 않으면 동일한 해시 값이 나올수 없다는 메커니즘으로서 암호화 기능을 부여한다. (자세한 건 암호화 관련 서적을 보시라 (-_-!!) )
해시 암호화 제공자를 하나 만들고 Type은 SHA256Managed를 선택하도록 한다.
도움말 님이 말해주듯이 MS에서 권고하는 해시/대칭형 암호화 알고리즘은
SHA256과 AES(Rijndael)이다.
대칭형 암호화 알고리즘 제공자를 만들고 Type은 RijndealManaged를 선택하도록 한다.
Type을 선택하고 나면 아래 화면이 표시되고, 여기서는 대칭형 암호화를 키를 생성하라고 한다. 새로운 키를 생성하도록 한다.
Generate를 선택해서 암호화 키를 생성하도록 한다.
생성한 암호화 키를 파일로 저장해야 한다. 아래에서 저장할 파일을 지정한다.
데이터 보호 모드를 결정하는 화면이 나오는데 여기서 user mode를 선택하면 현재 로그온한 사용자만이 아까 생성된 키로서 암/복호화를 할 수 있다는 뜻이고, Machine mode는 이 컴퓨터를 사용하는 모든 사용자는 아까 생성된 키로서 암/복호화를 할 수 있다는 뜻이다.
대칭형 암호화에서 가장 중요한 것은 이 키 파일에 대한 보호이다. 이 키 파일이 누출되면 암호화된 데이터를 누군가 획득하여 그대로 복호화할 수 있는 가능성이 있기 때문이다.
(컴퓨터가 다르면 키 파일을 획득해도 암호화된 데이터를 획득한 키 파일로서 복호화 할 수 없다.)
결과로 생성된 두 암호화 제공자이다.
어플리케이션 작성 과정
Microsoft.Practices.EnterpriseLibrary.Common.dll,
Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll
어셈블리를 찹조 추가 합니다.
그리고 아래의 Using 문을 삽입합니다.(Optional)
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
대칭형 암호화를 이용해 데이터 암호화
구성을 하고 나면 사용하는 것은 매우 쉽다. 우리가 지정한 암호화 제공자의 이름 "MySymmProvider", "MyHashProvider"만 제공해 주면 우리가 구성 시에 정의했던 암호화 알고리즘을 사용해서 암호화가 이루어 지게 된다.
아래는 byte 배열 형태로 데이터를 암호화 하는 코드이다.
대칭형 암호화를 이용해 데이터 복호화
암호화에 사용한 암호화 제공자"MySymmProvider"를 사용해서 복호화할 수 있다.
해시값 구하기
해시 값을 특정 데이터와 일치하는지 확인하기
일치여부는 곧 제공된 텍스트 stringToCompare를 가지고 제공된 해시값 generatedHash이 생성되었었는지를 검증해 준다.
지금까지는 Cryptography Application Block을 구성하고 활용하는 방법을 보았다.
하지만, 현업에 적용해서 사용하려면 고려해야 할 것이 많을 것이다.
강력한 암호화 알고리즘일수록 그만큼 많은 비트의 암호화 키를 사용할 것이고, 또한 복잡한 계산을 수행할 것이므로 성능이 떨어진다고 보는게 맞을 것이다. 즉 암호화의 강도와 성능은 반비례한다고 봐야 한다. 그래서 이 둘 간의 타협점을 찾는 것이 보안 담당자와 시스템 개발자 간의 논쟁거리일거 같은데, 아직 싸우는 것은 못봤다.
필자가 현업에서 닥친 문제는 위의 타협의 문제가 아니라 바로 대칭형 키 파일의 배포 문제이다.
EL 도움말 님이 머라고 가이드 하고 있지만 암만 봐도 이건 내가 원하는 바가 아니다. 말하자면, 스마트 클라이언트 어플리케이션들이 배포가 되는 환경이고, 스마트 클라이언트 어플리케이션들은 서버 측 웹 서비스를 호출함으로써 비즈니스 로직을 호출하게 되는 구조이다.
그래서 클라이언트 측에서 암호화를 해서 서버측에 전달하면 서버 측에서 복호화를 해야 한다.
키 파일 생성 시에도 보았지만, user mode, machine mode는 둘다 한 컴퓨터 내를 가정하고 있다. 즉 컴퓨터가 다르면 동일한 키파일을 복사한다고 하더라도 A 컴퓨터에서 암호화한 데이터를 B 컴퓨터에서 (키 파일을 가지고) 복호화 할수 없다. 복잡한 알고리즘에 의해 머신/사용자의 고유정보를 섞기 때문일 것이다.
그래서 도움말 님 한테 물어보니까, 도움말 님이 아래처럼 하라고 한다. 그래서 해본다.
두 컴퓨터에서 동일한 대칭형 암호화 키를 사용하도록 하려면 암호화 키 파일을 배포해야 한다.
암호화 키 파일 배포하기(두 컴퓨터에서 동일한 대칭 암호화 키 사용하기)
테스트 시나리오
컴퓨터 A: 원본 암호화 파일 소유 (키 파일 위치 C:\SymmKey.key), TestApp
컴퓨터 B: 암호화 키 파일 배포 대상, TestApp
두 컴퓨터에서 동일한 어플리케이션 TestApp를 구동하고 A에서 암호화한 텍스트를 B에서 복호화 해보기로 한다.
컴퓨터 A에서,
Enterprise Configuration에서 아래처럼 키 파일을 export 한다.
그리고 export 할 (텍스트) 파일을 지정하고 암호를 입력한다.
ExportedKey.txt를 컴퓨터 B에게 복사한다.
컴퓨터 B에서,
대칭 암호화 제공자를 추가한다.
컴퓨터A에서 사용한 것과 동일한 암호화 알고리즘을 선택한다.
아래처럼 import key file 를 선택한다.
컴퓨터 A에서 복사해온 ExportedKey.txt 파일을 선택한다.
컴퓨터 A에서 export 할 때 사용한 암호를 입력한다.
대칭 암호화 키를 저장할 키 파일 위치를 지정한다.
여기서 컴퓨터A와 동일한 경로인 c:\SymmKey.key로 지정한다.
그리고 컴퓨터 A와 동일한 Machine Mode를 선택한다.(user mode로 해도되는지는 테스트 해봐야 안다. 해보시기 바란다! 안될거 같다..)
그리고 마지막으로 대칭 암호화 제공자 이름을 컴퓨터 A에서 지정한 것과 동일하게 변경한다.
위의 키 파일 경로와 이름을 컴퓨터 A와 동일하게 하는 것은 절대 그렇게 해야 하는 것이 아니라 단지 이 테스트를 위해 컴퓨터 B에서 구성파일 변경을 해야 하는 번거러움을 방지하기 위함이다. 착오 없길 바란다.
이제 테스트를 하자.. 두 컴퓨터에서 구동되는 TestApp는 동일한 어플리케이션으로서 내부 코드는 동일한 대칭 암호화 제공자 "MySymmProvider"를 사용해서 처리하도록 되어 있다.
컴퓨터 A에서 암호화 : enc를 눌러서 "password"라는 문자열을 암호화
암호화된 텍스트를 그대로 B의 어플리케이션 enc 옆에 있는 텍스트 박스에 붙여 놓고 복호화(dec) 함
이제 해봤다 잘 된다….자 그럼 된건가…? 아니다….(__!) 위의 방식대로 하려면 모든 클라이언트에 Enterprise Library 깔고, Enterprise Configuration 띄워서 어플리케이션 구성파일 열어서 키 import 해서 다시 암호화 제공자 만든 후에야 비로소 서버와 동일한 암호화 키를 사용해 암/복호화 할 수 있게된다. 즉 서버에서 온 암호화 데이터를 복호화 할 수 있고 그 반대도 수행할 수 있는 것이다. 누가 이 짓을 할 것인가?... 해결책이 아닌 것이다.
프로그래밍 적으로 위 테스트 컴퓨터 B에서 했던 작업을 수행할 수 있어야만 사용가능한 해결책이 된다. 가능할까? 도움말님이 그런다. "아 고거는 쪼매 어려분데…나도 해보진 않았어… 니가 해바바.."
도움말님이 무책임하게 던진 "Modifying the Key Management Code" 이라는 섹션을 보라..
위에서 했던 테스트는 웹팜 환경에서 서버 간에 공유되는 대칭 암호화 키를 안전하게 유지할 수 있는 방법이 될 수는 있으리라 본다.
클라이언트들까지 확대하려면… 아직은 잘 모르겠지만, 굳이 하려면 보안이 설정된(인증을 요구하는) 웹 서비스를 마련하여 암복호화 서비스를 제공해 주는 것도 하나의 방법이라고 할 수 있을 것이다. (성능이 문제 겠지만) 그러면 인증된 사용자만이 암/복호화가 가능한 것이 되므로 위안을 삼을 만 한다.
Enterprise Library 강좌는 여기까지…끝.
하려고 했는데, 궁금해서 잠이 안올거 같아 함 해봤다.
결국 아래와 같은 솔루션을 도출하게 되었다.
위와 같이 하게되면 컴퓨터 A든 B든 상관없이 export된 key 파일(ExportedKey.txt)에서 대칭 암호화 키 스트림을 자기 컴퓨터 정보를 반영하여 복원을 한다. 복원된 암호화 키로서 TestApp 어플리케이션이 사용하는 암호화 키파일(C:\MySymmKeyFile.key)을 생성하거나 덮어쓰게 되니까, 컴퓨터 A와 컴퓨터 B는 이제 동일한 암호화 키를 사용하여 암/복호화를 상호간에 수행할 수 있게 된다. (이제 컴퓨터 B에는 ExportedKey.txt 파일만을 배포하면 된다.)
아 오늘 욕봤다..그럼 진짜 엔터프라이즈 라이브러리 시리즈 끝.
출처 : http://www.ensimple.net/enSimple/
Enterprise Library 소개하는 시리즈에서 암호화 블록을 건너 뛰었나 보다…빨리 내 사이트에도 이런 거 말해주는 고마운 이가 있었음 조케따...-_-
이번 강좌도 쫌 길다.. 맘 단디 묵기 바란다.
암호화를 사용하는 이유는 굳이 설명하지 않아도 될 듯 하다. 엔터프라이즈 어플리케이션이든 그렇지 않든 민감하고도 중요한 정보들(사용자 관련 정보/회사 기밀 사항)은 암호화를 통해 보호해야만 한다.
Cryptography Application Block을 사용하는 방식은 역시나 매우 간단하며 역시나 구성파일로 암호화 알고리즘과 같은 암호화 방식을 변경할 수 있도록 설계되었다.
string encData = Cryptographer.EncryptSymmetric("symmProvider", "SensitiveData");
// Decrypt the string
string readableString;
readableString = Cryptographer.DecryptSymmetric("symmProvider", encData);
일단 함 들이대자.
구성파일로 구성하기
Enterprise Library Configuration을 실행하고 아래의 화면 처럼 어플리케이션을 만들고 Cryptography Application Block 을 추가하면, Hash Providers와 Symmetric Providers가 존재한다. 즉 해시와 대칭형 암호화 두가지 종류의 암호화를 정의할 수 있다는 것이다.
해시 암호화는 조금 다른 의미를 지닌다고 알고 있다. 해시를 사용하는 목적은 네트웍을 통해 중요 정보 자체를 흘려보내고 싶지 않은 경우에 사용한다.
데이터에 대한 해시값은 원본 데이터를 기준으로 생성한 유일한 값으로서 동일한 원본 데이터를 입력하지 않으면 동일한 해시 값이 나올수 없다는 메커니즘으로서 암호화 기능을 부여한다. (자세한 건 암호화 관련 서적을 보시라 (-_-!!) )
해시 암호화 제공자를 하나 만들고 Type은 SHA256Managed를 선택하도록 한다.
도움말 님이 말해주듯이 MS에서 권고하는 해시/대칭형 암호화 알고리즘은
SHA256과 AES(Rijndael)이다.
대칭형 암호화 알고리즘 제공자를 만들고 Type은 RijndealManaged를 선택하도록 한다.
Type을 선택하고 나면 아래 화면이 표시되고, 여기서는 대칭형 암호화를 키를 생성하라고 한다. 새로운 키를 생성하도록 한다.
Generate를 선택해서 암호화 키를 생성하도록 한다.
생성한 암호화 키를 파일로 저장해야 한다. 아래에서 저장할 파일을 지정한다.
데이터 보호 모드를 결정하는 화면이 나오는데 여기서 user mode를 선택하면 현재 로그온한 사용자만이 아까 생성된 키로서 암/복호화를 할 수 있다는 뜻이고, Machine mode는 이 컴퓨터를 사용하는 모든 사용자는 아까 생성된 키로서 암/복호화를 할 수 있다는 뜻이다.
대칭형 암호화에서 가장 중요한 것은 이 키 파일에 대한 보호이다. 이 키 파일이 누출되면 암호화된 데이터를 누군가 획득하여 그대로 복호화할 수 있는 가능성이 있기 때문이다.
(컴퓨터가 다르면 키 파일을 획득해도 암호화된 데이터를 획득한 키 파일로서 복호화 할 수 없다.)
결과로 생성된 두 암호화 제공자이다.
어플리케이션 작성 과정
Microsoft.Practices.EnterpriseLibrary.Common.dll,
Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll
어셈블리를 찹조 추가 합니다.
그리고 아래의 Using 문을 삽입합니다.(Optional)
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
대칭형 암호화를 이용해 데이터 암호화
구성을 하고 나면 사용하는 것은 매우 쉽다. 우리가 지정한 암호화 제공자의 이름 "MySymmProvider", "MyHashProvider"만 제공해 주면 우리가 구성 시에 정의했던 암호화 알고리즘을 사용해서 암호화가 이루어 지게 된다.
string encData = Cryptographer.EncryptSymmetric("MySymmProvider", "password");
아래는 byte 배열 형태로 데이터를 암호화 하는 코드이다.
byte[] valueToEncrypt = Encoding.Unicode.GetBytes("password");
byte[] encryptedContents = Cryptographer.EncryptSymmetric("MySymmProvider", valueToEncrypt);
// Clear the byte array memory that holds the password.
Array.Clear(valueToEncrypt, 0, valueToEncrypt.Length);
대칭형 암호화를 이용해 데이터 복호화
암호화에 사용한 암호화 제공자"MySymmProvider"를 사용해서 복호화할 수 있다.
string readableString; readableString
= Cryptographer.DecryptSymmetric("MySymmProvider", encDataString);
//암호화돤 byte 배열 데이터에 대한 복호화
byte[] decDataBytes = Cryptographer.DecryptSymmetric("MySymmProvider", encDataBytes);
string plainText = (new UnicodeEncoding()).GetString(decDataBytes);
해시값 구하기
byte[] valueToHash = (new UnicodeEncoding()).GetBytes("password");
byte[] generatedHash = Cryptographer.CreateHash("MyHashProvider", valueToHash);
// Clear the byte array memory.
Array.Clear(valueToHash, 0, valueToHash.Length);
해시 값을 특정 데이터와 일치하는지 확인하기
// generatedHash contains a hash value for a previously hashed string.
byte[] stringToCompare = (new UnicodeEncoding()).GetBytes("TestValue");
bool comparisonSucceeded = Cryptographer.CompareHash("MyHashProvider", stringToCompare, generatedHash);
일치여부는 곧 제공된 텍스트 stringToCompare를 가지고 제공된 해시값 generatedHash이 생성되었었는지를 검증해 준다.
지금까지는 Cryptography Application Block을 구성하고 활용하는 방법을 보았다.
하지만, 현업에 적용해서 사용하려면 고려해야 할 것이 많을 것이다.
강력한 암호화 알고리즘일수록 그만큼 많은 비트의 암호화 키를 사용할 것이고, 또한 복잡한 계산을 수행할 것이므로 성능이 떨어진다고 보는게 맞을 것이다. 즉 암호화의 강도와 성능은 반비례한다고 봐야 한다. 그래서 이 둘 간의 타협점을 찾는 것이 보안 담당자와 시스템 개발자 간의 논쟁거리일거 같은데, 아직 싸우는 것은 못봤다.
필자가 현업에서 닥친 문제는 위의 타협의 문제가 아니라 바로 대칭형 키 파일의 배포 문제이다.
EL 도움말 님이 머라고 가이드 하고 있지만 암만 봐도 이건 내가 원하는 바가 아니다. 말하자면, 스마트 클라이언트 어플리케이션들이 배포가 되는 환경이고, 스마트 클라이언트 어플리케이션들은 서버 측 웹 서비스를 호출함으로써 비즈니스 로직을 호출하게 되는 구조이다.
그래서 클라이언트 측에서 암호화를 해서 서버측에 전달하면 서버 측에서 복호화를 해야 한다.
키 파일 생성 시에도 보았지만, user mode, machine mode는 둘다 한 컴퓨터 내를 가정하고 있다. 즉 컴퓨터가 다르면 동일한 키파일을 복사한다고 하더라도 A 컴퓨터에서 암호화한 데이터를 B 컴퓨터에서 (키 파일을 가지고) 복호화 할수 없다. 복잡한 알고리즘에 의해 머신/사용자의 고유정보를 섞기 때문일 것이다.
그래서 도움말 님 한테 물어보니까, 도움말 님이 아래처럼 하라고 한다. 그래서 해본다.
두 컴퓨터에서 동일한 대칭형 암호화 키를 사용하도록 하려면 암호화 키 파일을 배포해야 한다.
암호화 키 파일 배포하기(두 컴퓨터에서 동일한 대칭 암호화 키 사용하기)
테스트 시나리오
컴퓨터 A: 원본 암호화 파일 소유 (키 파일 위치 C:\SymmKey.key), TestApp
컴퓨터 B: 암호화 키 파일 배포 대상, TestApp
두 컴퓨터에서 동일한 어플리케이션 TestApp를 구동하고 A에서 암호화한 텍스트를 B에서 복호화 해보기로 한다.
컴퓨터 A에서,
Enterprise Configuration에서 아래처럼 키 파일을 export 한다.
그리고 export 할 (텍스트) 파일을 지정하고 암호를 입력한다.
ExportedKey.txt를 컴퓨터 B에게 복사한다.
컴퓨터 B에서,
대칭 암호화 제공자를 추가한다.
컴퓨터A에서 사용한 것과 동일한 암호화 알고리즘을 선택한다.
아래처럼 import key file 를 선택한다.
컴퓨터 A에서 복사해온 ExportedKey.txt 파일을 선택한다.
컴퓨터 A에서 export 할 때 사용한 암호를 입력한다.
대칭 암호화 키를 저장할 키 파일 위치를 지정한다.
여기서 컴퓨터A와 동일한 경로인 c:\SymmKey.key로 지정한다.
그리고 컴퓨터 A와 동일한 Machine Mode를 선택한다.(user mode로 해도되는지는 테스트 해봐야 안다. 해보시기 바란다! 안될거 같다..)
그리고 마지막으로 대칭 암호화 제공자 이름을 컴퓨터 A에서 지정한 것과 동일하게 변경한다.
위의 키 파일 경로와 이름을 컴퓨터 A와 동일하게 하는 것은 절대 그렇게 해야 하는 것이 아니라 단지 이 테스트를 위해 컴퓨터 B에서 구성파일 변경을 해야 하는 번거러움을 방지하기 위함이다. 착오 없길 바란다.
이제 테스트를 하자.. 두 컴퓨터에서 구동되는 TestApp는 동일한 어플리케이션으로서 내부 코드는 동일한 대칭 암호화 제공자 "MySymmProvider"를 사용해서 처리하도록 되어 있다.
컴퓨터 A에서 암호화 : enc를 눌러서 "password"라는 문자열을 암호화
암호화된 텍스트를 그대로 B의 어플리케이션 enc 옆에 있는 텍스트 박스에 붙여 놓고 복호화(dec) 함
이제 해봤다 잘 된다….자 그럼 된건가…? 아니다….(__!) 위의 방식대로 하려면 모든 클라이언트에 Enterprise Library 깔고, Enterprise Configuration 띄워서 어플리케이션 구성파일 열어서 키 import 해서 다시 암호화 제공자 만든 후에야 비로소 서버와 동일한 암호화 키를 사용해 암/복호화 할 수 있게된다. 즉 서버에서 온 암호화 데이터를 복호화 할 수 있고 그 반대도 수행할 수 있는 것이다. 누가 이 짓을 할 것인가?... 해결책이 아닌 것이다.
프로그래밍 적으로 위 테스트 컴퓨터 B에서 했던 작업을 수행할 수 있어야만 사용가능한 해결책이 된다. 가능할까? 도움말님이 그런다. "아 고거는 쪼매 어려분데…나도 해보진 않았어… 니가 해바바.."
도움말님이 무책임하게 던진 "Modifying the Key Management Code" 이라는 섹션을 보라..
위에서 했던 테스트는 웹팜 환경에서 서버 간에 공유되는 대칭 암호화 키를 안전하게 유지할 수 있는 방법이 될 수는 있으리라 본다.
클라이언트들까지 확대하려면… 아직은 잘 모르겠지만, 굳이 하려면 보안이 설정된(인증을 요구하는) 웹 서비스를 마련하여 암복호화 서비스를 제공해 주는 것도 하나의 방법이라고 할 수 있을 것이다. (성능이 문제 겠지만) 그러면 인증된 사용자만이 암/복호화가 가능한 것이 되므로 위안을 삼을 만 한다.
Enterprise Library 강좌는 여기까지…끝.
하려고 했는데, 궁금해서 잠이 안올거 같아 함 해봤다.
결국 아래와 같은 솔루션을 도출하게 되었다.
//컴퓨터 A(원본 키파일 소유자)에서 export 했던 파일의 Stream을 얻다.
System.IO.FileStream fs = System.IO.File.Open("C:\\ExportedKey.txt", System.IO.FileMode.Open);
//새로이 생성할 대칭 암호화 키 파일의 Stream을 얻다.(없으면 만들고, 있으면 덮어 쓰자..)
System.IO.FileStream fs2 = System.IO.File.Open("C:\\MySymmKeyFile.key", System.IO.FileMode.Create);
//export된 key 파일의 내용을 가지고 암호화 키를 복원한다.
//두번째 파라미터는 key export 할때 사용했던 암호
ProtectedKey symmKey =
Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.KeyManager.RestoreKey(
((System.IO.Stream)fs),
"******",System.Security.Cryptography.DataProtectionScope.LocalMachine);
//복원한 암호화 키 Stream을 암호화 키 파일을 생성한다.(덮어쓴다. )
Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.KeyManager.Write(
((System.IO.Stream)fs2), symmKey);
fs.Close();
fs2.Close();
위와 같이 하게되면 컴퓨터 A든 B든 상관없이 export된 key 파일(ExportedKey.txt)에서 대칭 암호화 키 스트림을 자기 컴퓨터 정보를 반영하여 복원을 한다. 복원된 암호화 키로서 TestApp 어플리케이션이 사용하는 암호화 키파일(C:\MySymmKeyFile.key)을 생성하거나 덮어쓰게 되니까, 컴퓨터 A와 컴퓨터 B는 이제 동일한 암호화 키를 사용하여 암/복호화를 상호간에 수행할 수 있게 된다. (이제 컴퓨터 B에는 ExportedKey.txt 파일만을 배포하면 된다.)
아 오늘 욕봤다..그럼 진짜 엔터프라이즈 라이브러리 시리즈 끝.
출처 : http://www.ensimple.net/enSimple/