qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Zheng Chuan <zhengchuan@huawei.com>
Cc: zhang.zhanghailiang@huawei.com, quintela@redhat.com,
	linyilu@huawei.com, qemu-devel@nongnu.org,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	alex.chen@huawei.com, ann.zhuangyanying@huawei.com,
	fangying1@huawei.com
Subject: Re: [PATCH v3 05/10] migration/dirtyrate: Record hash results for each sampled page
Date: Fri, 21 Aug 2020 13:30:14 +0100	[thread overview]
Message-ID: <20200821123014.GK348677@redhat.com> (raw)
In-Reply-To: <95894cf7-ba09-9862-357a-1073a192e934@huawei.com>

On Fri, Aug 21, 2020 at 08:22:06PM +0800, Zheng Chuan wrote:
> 
> 
> On 2020/8/21 1:55, Dr. David Alan Gilbert wrote:
> > * Daniel P. Berrangé (berrange@redhat.com) wrote:
> >> On Thu, Aug 20, 2020 at 06:30:09PM +0100, Dr. David Alan Gilbert wrote:
> >>> * Chuan Zheng (zhengchuan@huawei.com) wrote:
> >>>> Record hash results for each sampled page.
> >>>>
> >>>> Signed-off-by: Chuan Zheng <zhengchuan@huawei.com>
> >>>> Signed-off-by: YanYing Zhuang <ann.zhuangyanying@huawei.com>
> >>>> ---
> >>>>  migration/dirtyrate.c | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++
> >>>>  migration/dirtyrate.h |   7 +++
> >>>>  2 files changed, 151 insertions(+)
> >>>>
> >>>> diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
> >>>> index c4304ef..62b6f69 100644
> >>>> --- a/migration/dirtyrate.c
> >>>> +++ b/migration/dirtyrate.c
> >>>> @@ -25,6 +25,7 @@
> >>>>  #include "dirtyrate.h"
> >>>>  
> >>>>  CalculatingDirtyRateState CalculatingState = CAL_DIRTY_RATE_INIT;
> >>>> +static unsigned long int qcrypto_hash_len = QCRYPTO_HASH_LEN;
> >>>
> >>> Why do we need this static rather than just using the QCRYPTO_HASH_LEN ?
> >>> It's never going to change is it?
> >>> (and anyway it's just a MD5 len?)
> >>
> >> I wouldn't want to bet on that given that this is use of MD5. We might
> >> claim this isn't security critical, but surprises happen, and we will
> >> certainly be dinged on security audits for introducing new use of MD5
> >> no matter what.
> >>
> >> If a cryptographic hash is required, then sha256 should be the choice
> >> for any new code that doesn't have back compat requirements.
> >>
> >> If a cryptographic hash is not required then how about crc32 
> > 
> > It doesn't need to be cryptographic; is crc32 the fastest reasonable hash for use
> > in large areas?
> > 
> > Dave
> > 
> >> IOW, it doesn't make a whole lot of sense to say we need a cryptographic
> >> hash, but then pick the most insecure one.
> >>
> >> sha256 is slower than md5, but it is conceivable that in future we might
> >> gain support for something like Blake2b which is similar security level
> >> to SHA3, while being faster than MD5.
> >>
> >> Overall I'm pretty unethusiastic about use of MD5 being introduced and
> >> worse, being hardcoded as the only option.
> >>
> >> Regards,
> >> Daniel
> >> -- 
> >> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> >> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> >> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
> 
> Hi, Daniel, Dave.
> 
> I do compare MD5 and SHA256 with vm memory of 128G under mempress of 100G.
> 
> 1. Calculation speed
> 1) MD5 takes about 500ms to sample and hash all pages by record_ramblock_hash_info().
> 2)  SHA256 takes about 750ms to sample all pages by record_ramblock_hash_info().
> 
> 2. CPU Consumption
> 1)  MD5 may have instant rise up to 48% for dirtyrate thread
> 2)  SHA256 may have instant rise up to 75% for dirtyrate thread
> 
> 3. Memory Consumption
> SHA256 may need twice memory than MD5 due to its HASH_LEN.
> 
> I am trying to consider if crc32 is more faster and takes less memory and is more safer than MD5?

No, crc32 is absolutely *weaker* than MD5. It is NOT a cryptographic
hash so does not try to guarantee collision resistance. It only has
2^32 possible outputs.

MD5 does try to guarantee collision resistance, but MD5 is considered
broken these days, so a malicious attacker can cause collisions if they
are motivated enough.

IOW if you need collision resistance that SHA256 should be used.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



  reply	other threads:[~2020-08-21 12:31 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-17  3:20 [PATCH v3 00/10] *** A Method for evaluating dirty page rate *** Chuan Zheng
2020-08-17  3:19 ` no-reply
2020-08-17  3:20 ` [PATCH v3 01/10] migration/dirtyrate: Add get_dirtyrate_thread() function Chuan Zheng
2020-08-20 16:11   ` Dr. David Alan Gilbert
2020-08-21  9:59     ` Zheng Chuan
2020-08-17  3:20 ` [PATCH v3 02/10] migration/dirtyrate: Add RamlockDirtyInfo to store sampled page info Chuan Zheng
2020-08-20 16:20   ` Dr. David Alan Gilbert
2020-08-21  9:59     ` Zheng Chuan
2020-08-21 12:08       ` Dr. David Alan Gilbert
2020-08-17  3:20 ` [PATCH v3 03/10] migration/dirtyrate: Add dirtyrate statistics series functions Chuan Zheng
2020-08-20 16:28   ` Dr. David Alan Gilbert
2020-08-21  9:59     ` Zheng Chuan
2020-08-17  3:20 ` [PATCH v3 04/10] migration/dirtyrate: move RAMBLOCK_FOREACH_MIGRATABLE into ram.h Chuan Zheng
2020-08-20 16:31   ` Dr. David Alan Gilbert
2020-08-17  3:20 ` [PATCH v3 05/10] migration/dirtyrate: Record hash results for each sampled page Chuan Zheng
2020-08-20 17:30   ` Dr. David Alan Gilbert
2020-08-20 17:51     ` Daniel P. Berrangé
2020-08-20 17:55       ` Dr. David Alan Gilbert
2020-08-21 12:22         ` Zheng Chuan
2020-08-21 12:30           ` Daniel P. Berrangé [this message]
2020-08-21 12:39             ` Dr. David Alan Gilbert
2020-08-21 13:07               ` Zheng Chuan
2020-08-22  6:25               ` Zheng Chuan
2020-08-24  8:57                 ` Dr. David Alan Gilbert
2020-08-17  3:20 ` [PATCH v3 06/10] migration/dirtyrate: Compare page hash results for recorded " Chuan Zheng
2020-08-20 17:36   ` Dr. David Alan Gilbert
2020-08-21 12:01     ` Zheng Chuan
2020-08-21 12:12       ` Dr. David Alan Gilbert
2020-08-17  3:20 ` [PATCH v3 07/10] migration/dirtyrate: skip sampling ramblock with size below MIN_RAMBLOCK_SIZE Chuan Zheng
2020-08-20 17:39   ` Dr. David Alan Gilbert
2020-08-17  3:20 ` [PATCH v3 08/10] migration/dirtyrate: Implement get_sample_page_period() and block_sample_page_period() Chuan Zheng
2020-08-20 17:52   ` Dr. David Alan Gilbert
2020-08-17  3:20 ` [PATCH v3 09/10] migration/dirtyrate: Implement calculate_dirtyrate() function Chuan Zheng
2020-08-20 17:57   ` Dr. David Alan Gilbert
2020-08-21  9:59     ` Zheng Chuan
2020-08-17  3:20 ` [PATCH v3 10/10] migration/dirtyrate: Implement qmp_cal_dirty_rate()/qmp_get_dirty_rate() function Chuan Zheng
2020-08-20 17:17   ` Eric Blake
2020-08-20 18:00     ` Dr. David Alan Gilbert
2020-08-21 10:00       ` Zheng Chuan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200821123014.GK348677@redhat.com \
    --to=berrange@redhat.com \
    --cc=alex.chen@huawei.com \
    --cc=ann.zhuangyanying@huawei.com \
    --cc=dgilbert@redhat.com \
    --cc=fangying1@huawei.com \
    --cc=linyilu@huawei.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=zhang.zhanghailiang@huawei.com \
    --cc=zhengchuan@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).