Replies: 4 comments
-
As a new method would probably be a good start. The drive status in terms of whether it is frozen will need to be determined when the drives are enumerated and then a sequence initiated that sends the computer to sleep for 5 seconds and then wakes it which will unfreeze the drive so that the erase command can be issued. The interface will also need to cope with the selection of standard and enhanced ATA secure erase. Adding secure erase is a major bit of work that will involve working in every part of nwipe. It will need extensive testing. re: aes-ctr prng |
Beta Was this translation helpful? Give feedback.
-
Another consideration with secure erase is how progress is represented. We don't know how far the wipe has progressed. Depending on the drive it could take seconds to several hours to complete. It's not just SSDs that support secure erase. The drive does provide a estimate of how long it would take which we can use, but representing that as a percentage in my opinion would not be good as it might complete before it reaches 100% or after which would make our percentage progress look broken. I would prefer a T-value/T+value much like a countdown to rocket launch. The T- being estimated time to completion T-HH:MM:SS. If it tools over it goes T+00:00:01 etc. So the GUI would need to be aware of the estimated wipe time obtained from the drive and maintain that. In terms of methods you could have a standard Secure Erase and a Enhanced secure erase. You would also want a third method that combined Secure erase, immediately followed by a prng wipe and maybe a fourth secure erase plus zero. You also need to think about verification. You can't assume the drive secure erases with zeros, some erase with a pattern. The verification code would need to examine several hundred random blocks on the disc and determine what method the drive used. Was it all zeros, all ones or a pattern, does the pattern repeat in a consistent way. Is it random data in which case it can't be verified. Depending on the pattern or whether it's zeros or ones the verification pass would need to choose the correct verification to use. So I'm essence we would need a smart verification function, in addition to the existing random and zeros verification functions. Because this delves into almost all parts of nwipe there is a large possibility of breaking existing code so you really need to understand how every part of nwipe works together so you don't break existing code. If it was me and I had only just started working on the code I'd start with something smaller like adding a option to select either a zeros or ones blanking pass. You would need to look at all the methods, the GUI code for adding the ones blanking option and presumably you could utilize the existing write ones function. Why ones blanking pass? Some people prefer writing ones to a SSD than zeros. Personally for SSDs I prefer the secure erase followed by a prng pass as I like to makesure there are no stuck bits in data buses which might be missed by a all zeros or all ones pass. |
Beta Was this translation helpful? Give feedback.
-
Oh I see! This will be a tough one. I was expecting, Secure Erase would always set all blocks to zero. But if there is no standardized method it will require quite a lot of work it seems. But I think we can do it :) Regarding AES: Can you maybe try the variant in my aes-ctr-cpp-smartptr branch? I'm curretly trying to reproduce this issue. Unfortunately i only have 7 hard drives, maybe it only occurs with much more. |
Beta Was this translation helpful? Give feedback.
-
Just to reinforce what @***@***.***> wrote, some SSDs have all-zeros and all-ones reserved sectors/blocks so that writing either merely changes the sector/block pointer to one of the reserved ones, meaning the original sector/block is untouched and still may contain sensitive data. Pointing all sectors/blocks to a reserved block may be what’s happening with the SSD’s built-in secure erase as it finishes in seconds. Nwipe’s purpose is to make sure all data is erased beyond recovery, so the PRNG methods should be used, and (again from previously reading white papers) the all-ones write as last pass may result in lower power consumption for the SSD. And, we cannot depend on any one model’s documentation as subsequent SSD firmware could change the behavior of reserved blocks and the built-in secure erase function. We have to assume any SSD’s firmware is using the quick “cheat” of repointing blocks to the reserved ones and therefore needs to have all blocks overwritten.
From: PartialVolume ***@***.***>
Sent: Sunday, March 31, 2024 21:43
To: martijnvanbrummelen/nwipe ***@***.***>
Cc: Subscribed ***@***.***>
Subject: Re: [martijnvanbrummelen/nwipe] Implementing ATA Secure Erase (Discussion #568)
Another consideration with secure erase is how progress is represented. We don't know how far the wipe has progressed. Depending on the drive it could take seconds to several hours to complete. It's not just SSDs that support secure erase. The drive does provide a estimate of how long it would take which we can use, but representing that as a percentage in my opinion would not be good as it might complete before it reaches 100% or after which would make our percentage progress look broken. I would prefer a T-value/T+value much like a countdown to rocket launch. The T- being estimated time to completion T-HH:MM:SS. If it tools over it goes T+00:00:01 etc. So the GUI would need to be aware of the estimated wipe time obtained from the drive and maintain that.
In terms of methods you could have a standard Secure Erase and a Enhanced secure erase. You would also want a third method that combined Secure erase, immediately followed by a prng wipe and maybe a fourth secure erase plus zero.
You also need to think about verification. You can't assume the drive secure erases with zeros, some erase with a pattern. The verification code would need to examine several hundred random blocks on the disc and determine what method the drive used. Was it all zeros, all ones or a pattern, does the pattern repeat in a consistent way. Is it random data in which case it can't be verified. Depending on the pattern or whether it's zeros or ones the verification pass would need to choose the correct verification to use. So I'm essence we would need a smart verification function, in addition to the existing random and zeros verification functions.
Because this delves into almost all parts of nwipe there is a large possibility of breaking existing code so you really need to understand how every part of nwipe works together so you don't break existing code.
If it was me and I had only just started working on the code I'd start with something smaller like adding a option to select either a zeros or ones blanking pass. You would need to look at all the methods, the GUI code for adding the ones blanking option and presumably you could utilize the existing write ones function. Why ones blanking pass? Some people prefer writing ones to a SSD than zeros. Personally for SSDs I prefer the secure erase followed by a prng pass as I like to makesure there are no stuck bits in data buses which might be missed by a all zeros or all ones pass.
—
Reply to this email directly, view it on GitHub<#568 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ANGK2PQXSUZL37WEQ3IHKVLY3DCTLAVCNFSM6AAAAABFQYJJJKVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4DSNRYGU3DS>.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.******@***.***>>
|
Beta Was this translation helpful? Give feedback.
-
Hey, how are you doing.
I am currently gathering some random ideas in my head regarding the ATA secure erase method.
Currently i am starting with a stand alone C implementation, and if it works properly i will try to port it to nwipe.
How should it look like inside the GUI?
That's my current approach.
Beta Was this translation helpful? Give feedback.
All reactions