Transcript 완성본

Secure Data Deletion
for USB Flash Memory
성균관대학교 윤 재 성
시스템 컨설턴트
Contents
NOR vs NAND
Sun et al.'s method
Lee et al.’s method
Proposed method
비교 및 결론
YAFFES
StrictMode
Page  2
NOR vs NAND
Differences between NOR and NAND
NOR
NAND
Write Unit
Byte or Word
Page
Erase Unit
Block
Block
Page Size
-
4 KB(typically)
# of Page per Block
-
32 KB(typically)
Block Size
64 KB(typically)
128 KB(typically)
Block Endurance
104 - 105 times
104 - 106 times
`NOR : byte or word 단위로 읽기/쓰기를 하며, random access 방식
`NAND : Page단위로 읽기/쓰기를 하며, page단위의 순차적인 접근방식을
사용
Page  3
Sun et al.'s method(Hybrid method)
Zero-overwrite process
Deleted page
0x00
Valid page
Valid page
Deleted page
0x00
…
…
Empty page
Empty page
Empty page
Empty page
block
Page  4
zero-overwrite
block
Sun et al.'s method(Hybrid method)
Block erase process
Page  5
Deleted page
0xFF
Valid page1
Valid page1
0xFF
Valid page2
Deleted page
0xFF
Valid page3
…
0xFF
…
Valid page2
0xFF
Empty page
Valid page3
0xFF
Empty page
block
block
other block
Lee et al.’s method(Encryption method)
Data storing in encryption method
Encryption key
Store on header block
Encrypted page
Encrypted page Other file’s key1
Encryption
Data
Page  6
Empty page
Other file’s key2
…
…
Data block
Header block
Lee et al.’s method(Encryption method)
Data deletion in encruption method
Copy to another header block
OxFF
Other file’s key1
Other file’s key1
OxFF
Other file’s key1
Other file’s key2
OxFF
Empty page
…
OxFF
…
Header block
Header block
Header block
Encrypted page
Encrypted page
Empty page
…
Page  7
Data block
Encrypted page
Encrypted page
Empty page
…
Data block
Proposed method
Key generation process
Step 1
CSPRNG()
FEKi
Used to
encrypt files
File Encryption
Step 2
EMasterKey(FEKi)
MasterKey
N-times Hash Func
User password
Page  8
…
Header Block
Proposed method
Key generation process
Step 1
CSPRNG()
FEKi
Cryptographically seucre pseudo-random number
generator
ANSI 표준(X9.82, NIST SP 800-90 and PKCS#14)
FEKi = CSPRNG()
Page  9
Proposed method
Key generation process
Step 2
EMasterKey(FEKi)
MasterKey
N-times Hash Func
User password
…
Header Block
SHA-1과 같은 해쉬함수를 사용
Brute Force를 방해하기 위해 적어도 1000이상 수행
Masterkey = Hn(user password) =>EMaster key (FEKi)
Page  10
Proposed method
Data encryption process
Page  11
Proposed method
Data deletion(Overwrite process)
Encrypted page
Encrypted page Other file’s key1
Empty page
Other file’s key2
…
…
Data block
Header block
Overwrite
with 0x00
Encrypted page
0x00
Encrypted page Other file’s key1
Page  12
Empty page
Other file’s key2
…
0xFF
Data block
Header block
Proposed method
Data deletion(Eraseure process)
0x00
0x00
Overwrite
with 0x00
0x00
0xFF
Erase
0xFF
0x00
0x00
0xFF
0x00
0x00
0xFF
Header block
Header block
Header block
Page  13
Proposed method
Data store
FEKi
Stored on header block
Encrypted page
Data
Page  14
Encryped
Data
Encrypted page
.....
Empty page
.....
…
…
Data block
Header block
비교 및 결론(1/4)
Page  15
비교 및 결론(2/4)
Page  16
비교 및 결론(3/4)
3가지 방법의 실행 시간
Page  17
비교 및 결론(4/4)
3가지 방법의 실행 시간
Page  18
YAFFES(1/7)
YAFFES(Yet Another Flash File System)
NAND 플래시 메모리 전용 파일 시스템
LFS(log-structured file system) 방식을 사용하므로, 마운트 시에 플래시
메모리 전체를 스캔해야 하므로 메모리가 클수록 마운팅 시간이 길어짐
Chunk : YAFFES의 페이지를 이르는 용어
- 파일의 내용(Data)과 파일 속성 정보(Header)가 저장되고, 각 Chunk는 file id와
Chunk number로 구분 가능.
Tag : YAFFES의 스페어를 이르는 용어
- Tag의 관리정보는 Chunk에 저장된 내용이 어떤 파일의 것인지에 대한 식별자,
파일 내부의 Chunk의 위치, 갱신 연산 시 증가되는 일련번호, chunk내에 유효한
바이트 수, 에러검출을 위한 ECC 등으로 구성됨.
Page  19
YAFFES(2/7)
Chunk 구조
Page  20
YAFFES(3/7)
Chunk 구조
Page  21
YAFFES(4/7)
메타데이터와 데이터와의 관계
Page  22
YAFFES(5/7)
메인 메모리 구조
Page  23
YAFFES(6/7)
YAFFES Object Data Structure
Page  24
YAFFES(7/7)
YAFFES Object Data Structure
Page  25
StrictMode
[사용 예]
StrictMode의 정의
- 전체 어플리케이션에 StrictMode 설정
public
void onCreate() { 추가된 일종의 개발툴로 개발자가 실수하는 것들을
진저브래드에서부터
if (DEVELOPER_MODE)
{ 수 있도록 돕는 모드
감지하고
해결할해결 할
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
(실재로 수정하지는 않음 단지 알려줌)
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
// or .detectAll() for all detectable problems
StrictMode의
주요기능
.penaltyLog()
메인 스레드에서
디스크 접근, 네트워크 접근등의 비효율적인 작업을
.build());
하려는
것을 감지하여 프로그램
이 부드럽게 작동하도록 돕고, 빠른 응답을
StrictMode.setVmPolicy(new
StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
가지도록
함
.detectLeakedClosableObjects()
안드로이드의
파일 시스템인 YAFFS(Yet Another Flash File System)
.penaltyLog()
.penaltyDeath()
파일 시스템은
I/O 작업을 할 때 Global 범위의 lock이 사용됨.
.build());
간단히
말하면 전체 디바이스 상에서 오직 한 번에 하나의 디스크작업만이
}
super.onCreate();
가능한
것
}  26
Page